<?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>232411</bug_id>
          
          <creation_ts>2021-10-27 17:14:26 -0700</creation_ts>
          <short_desc>[GPU Process] Pattern should hold SourceImage which can be converted to a NativeImage only when needed</short_desc>
          <delta_ts>2022-02-11 13:26:58 -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>Canvas</component>
          <version>WebKit Local Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=236005</see_also>
          <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>
          <dependson>235467</dependson>
          <blocked>234165</blocked>
    
    <blocked>236508</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Cameron McCormack (:heycam)">heycam</reporter>
          <assigned_to name="Said Abou-Hallawa">sabouhallawa</assigned_to>
          <cc>annulen</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>hi</cc>
    
    <cc>joepeck</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>pangle</cc>
    
    <cc>pdr</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sabouhallawa</cc>
    
    <cc>schenney</cc>
    
    <cc>sergio</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1809501</commentid>
    <comment_count>0</comment_count>
    <who name="Cameron McCormack (:heycam)">heycam</who>
    <bug_when>2021-10-27 17:14:26 -0700</bug_when>
    <thetext>Currently all uses of createPattern() requires the GPU process to send a copy of the pattern source image data to the Web process, because CanvasPattern (and Pattern underneath it) works with a NativeImage.  We should be able to avoid this, and leave the pattern source data in the GPU process.  Maybe making Pattern work on ImageBuffers would help?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1811721</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-11-03 17:15:19 -0700</bug_when>
    <thetext>&lt;rdar://problem/84998738&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1815226</commentid>
    <comment_count>2</comment_count>
      <attachid>444306</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2021-11-15 14:45:26 -0800</bug_when>
    <thetext>Created attachment 444306
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1815328</commentid>
    <comment_count>3</comment_count>
      <attachid>444334</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2021-11-15 20:20:33 -0800</bug_when>
    <thetext>Created attachment 444334
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1815332</commentid>
    <comment_count>4</comment_count>
      <attachid>444336</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2021-11-15 20:36:16 -0800</bug_when>
    <thetext>Created attachment 444336
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1815339</commentid>
    <comment_count>5</comment_count>
      <attachid>444339</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2021-11-15 20:57:10 -0800</bug_when>
    <thetext>Created attachment 444339
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1815343</commentid>
    <comment_count>6</comment_count>
      <attachid>444341</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2021-11-15 21:08:49 -0800</bug_when>
    <thetext>Created attachment 444341
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1815345</commentid>
    <comment_count>7</comment_count>
      <attachid>444342</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2021-11-15 21:32:22 -0800</bug_when>
    <thetext>Created attachment 444342
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1815610</commentid>
    <comment_count>8</comment_count>
      <attachid>444423</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2021-11-16 12:44:44 -0800</bug_when>
    <thetext>Created attachment 444423
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1815627</commentid>
    <comment_count>9</comment_count>
      <attachid>444423</attachid>
    <who name="Cameron McCormack (:heycam)">heycam</who>
    <bug_when>2021-11-16 13:43:22 -0800</bug_when>
    <thetext>Comment on attachment 444423
Patch

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

&gt; Source/WebCore/ChangeLog:3
&gt; +        [GPU Process ] Pattern should hold an ImageBuffer which can be converted to a NativeImage when needed

&quot;[GPU Process]&quot; (without the space)

&gt; Source/WebCore/ChangeLog:67
&gt; +        Pass the HosWindow to SVGRenderingContext::createImageBuffer() so it can

&quot;HostWindow&quot;

&gt; Source/WebCore/ChangeLog:74
&gt; +        so  it can create a remote ImageBuffer if the GPU Process DOM rendering

&quot;so it&quot; (without the extra space)

&gt; Source/WebKit/ChangeLog:3
&gt; +        [GPU Process ] Pattern should hold an ImageBuffer which can be converted to a NativeImage when needed

&quot;[GPU Process]&quot; (without the space)

&gt; Source/WebKit/ChangeLog:8
&gt; +        Handle encoding amd decoding the SourceImage for recording and replaying

&quot;and&quot;

&gt; Source/WebCore/html/canvas/CanvasRenderingContext2DBase.cpp:1997
&gt; +    return RefPtr&lt;CanvasPattern&gt; { CanvasPattern::create(imageBuffer.releaseNonNull(), repeatX, repeatY, originClean) };

Can drop the `&lt;CanvasPattern&gt;`

&gt; Source/WebCore/platform/graphics/SourceImage.cpp:57
&gt; +    auto nativeImage = ImageBuffer::sinkIntoNativeImage(WTFMove(imageBuffer));

sinkIntoNativeImage takes a RefPtr&lt;ImageBuffer&gt;, but imageBuffer here is a Ref&lt;ImageBuffer&gt;, so WTFMove isn&apos;t doing anything useful.

&gt; Source/WebCore/platform/graphics/SourceImage.cpp:80
&gt; +    auto imageBuffer = ImageBuffer::create(nativeImage-&gt;size(), RenderingMode::Unaccelerated, 1, DestinationColorSpace::SRGB(), PixelFormat::BGRA8);

We shouldn&apos;t use sRGB unconditionally here. It&apos;s really dependent on what the caller wants. So for a CanvasPattern object it would be the color space of the canvas. (I think this will cause a failure of some tests I added for wide gamut canvas and patterns, but sadly it won&apos;t show up on EWS, since wide gamut canvas is only available in Monterey+.)

&gt; Source/WebCore/platform/graphics/SourceImage.h:43
&gt; +    NativeImage* nativeImageIfExists() const;
&gt; +    NativeImage* nativeImage();
&gt; +
&gt; +    ImageBuffer* imageBufferIfExists() const;
&gt; +    ImageBuffer* imageBuffer();

nativeImage() and imageBuffer() will switch the current m_image value to be a NativeImage or ImageBuffer, respectively. Can we ever get into a situation where we alternate between wanting a NativeImage and an ImageBuffer? If so that would result in a bunch of churn.

&gt; Source/WebCore/platform/graphics/displaylists/DisplayListItems.h:290
&gt; +        encoder &lt;&lt; state.strokePattern-&gt;tileImageIdentifier();

Instead of grabbing out the tileImageIdentifier() here, should we add an encode() implementation for SourceImage and write out state.strokePattern-&gt;tileImage() here instead?

&gt; Source/WebKit/GPUProcess/graphics/QualifiedResourceHeap.h:164
&gt; -        ASSERT(std::holds_alternative&lt;Ref&lt;T&gt;&gt;(iterator-&gt;value));
&gt; -        return std::get&lt;Ref&lt;T&gt;&gt;(iterator-&gt;value).ptr();
&gt; +        if (auto* value = std::get_if&lt;Ref&lt;T&gt;&gt;(&amp;iterator-&gt;value))
&gt; +            return value-&gt;ptr();
&gt; +        return nullptr;

I&apos;m wondering if this is a valuable assertion to keep. Maybe it would be better to encode in the IPC arguments whether we&apos;re using a NativeImage or an ImageBuffer, rather than trying both when looking up the resource?

&gt; Source/WebKit/WebProcess/GPU/graphics/RemoteDisplayListRecorderProxy.cpp:419
&gt; +void RemoteDisplayListRecorderProxy::recordResourceUse(SourceImage&amp; image)

Where do we call this from?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1815636</commentid>
    <comment_count>10</comment_count>
      <attachid>444423</attachid>
    <who name="Cameron McCormack (:heycam)">heycam</who>
    <bug_when>2021-11-16 14:08:03 -0800</bug_when>
    <thetext>Comment on attachment 444423
Patch

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

&gt;&gt; Source/WebCore/platform/graphics/SourceImage.cpp:57
&gt;&gt; +    auto nativeImage = ImageBuffer::sinkIntoNativeImage(WTFMove(imageBuffer));
&gt; 
&gt; sinkIntoNativeImage takes a RefPtr&lt;ImageBuffer&gt;, but imageBuffer here is a Ref&lt;ImageBuffer&gt;, so WTFMove isn&apos;t doing anything useful.

Ignore that. RefPtr(Ref&lt;T&gt;&amp;&amp;) will obviously do something useful.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1819589</commentid>
    <comment_count>11</comment_count>
      <attachid>444423</attachid>
    <who name="Cameron McCormack (:heycam)">heycam</who>
    <bug_when>2021-12-01 23:22:56 -0800</bug_when>
    <thetext>Comment on attachment 444423
Patch

Clearing review awaiting replies to the comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1833197</commentid>
    <comment_count>12</comment_count>
      <attachid>444423</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2022-01-23 22:06:32 -0800</bug_when>
    <thetext>Comment on attachment 444423
Patch

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

&gt;&gt; Source/WebCore/html/canvas/CanvasRenderingContext2DBase.cpp:1997
&gt;&gt; +    return RefPtr&lt;CanvasPattern&gt; { CanvasPattern::create(imageBuffer.releaseNonNull(), repeatX, repeatY, originClean) };
&gt; 
&gt; Can drop the `&lt;CanvasPattern&gt;`

No we can&apos;t because the return type is ExceptionOr&lt;RefPtr&lt;CanvasPattern&gt;&gt;.  The compiler can&apos;t deduce the type of the RefPtr template in this case.

&gt;&gt; Source/WebCore/platform/graphics/SourceImage.cpp:80
&gt;&gt; +    auto imageBuffer = ImageBuffer::create(nativeImage-&gt;size(), RenderingMode::Unaccelerated, 1, DestinationColorSpace::SRGB(), PixelFormat::BGRA8);
&gt; 
&gt; We shouldn&apos;t use sRGB unconditionally here. It&apos;s really dependent on what the caller wants. So for a CanvasPattern object it would be the color space of the canvas. (I think this will cause a failure of some tests I added for wide gamut canvas and patterns, but sadly it won&apos;t show up on EWS, since wide gamut canvas is only available in Monterey+.)

This function is only called form InspectorCanvas::buildArrayForCanvasPattern() which uses sRGB. If any other call is introduced in the future we can pass DestinationColorSpace as a parameter to this function.

&gt;&gt; Source/WebCore/platform/graphics/SourceImage.h:43
&gt;&gt; +    ImageBuffer* imageBuffer();
&gt; 
&gt; nativeImage() and imageBuffer() will switch the current m_image value to be a NativeImage or ImageBuffer, respectively. Can we ever get into a situation where we alternate between wanting a NativeImage and an ImageBuffer? If so that would result in a bunch of churn.

This is true but most of the time we create a temporary ImageBuffer and then sink it to a NativeImage. This method will delay creating the NativeImage till we actually need it. This is exactly what we need for applying the pattern in the GPUProcess where we create the ImageBuffer in the WebProcess but we need the NativeImage in GPUProcess.

&gt;&gt; Source/WebCore/platform/graphics/displaylists/DisplayListItems.h:290
&gt;&gt; +        encoder &lt;&lt; state.strokePattern-&gt;tileImageIdentifier();
&gt; 
&gt; Instead of grabbing out the tileImageIdentifier() here, should we add an encode() implementation for SourceImage and write out state.strokePattern-&gt;tileImage() here instead?

This is done in r288412.

&gt;&gt; Source/WebKit/GPUProcess/graphics/QualifiedResourceHeap.h:164
&gt;&gt; +        return nullptr;
&gt; 
&gt; I&apos;m wondering if this is a valuable assertion to keep. Maybe it would be better to encode in the IPC arguments whether we&apos;re using a NativeImage or an ImageBuffer, rather than trying both when looking up the resource?

This assertion was removed in r287911.

&gt;&gt; Source/WebKit/WebProcess/GPU/graphics/RemoteDisplayListRecorderProxy.cpp:419
&gt;&gt; +void RemoteDisplayListRecorderProxy::recordResourceUse(SourceImage&amp; image)
&gt; 
&gt; Where do we call this from?

This is called from 

Recorder::appendStateChangeItem()
{
    recordResourceUse(pattern-&gt;tileImage());
}


Recorder::drawFilteredImageBuffer()
{
    recordResourceUse(feImage.sourceImage())
}</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1833198</commentid>
    <comment_count>13</comment_count>
      <attachid>449781</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2022-01-23 22:06:51 -0800</bug_when>
    <thetext>Created attachment 449781
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1833206</commentid>
    <comment_count>14</comment_count>
      <attachid>449781</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-01-23 23:26:26 -0800</bug_when>
    <thetext>Comment on attachment 449781
Patch

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

&gt; Source/WebCore/html/canvas/CanvasRenderingContext2DBase.cpp:1956
&gt; +    return RefPtr&lt;CanvasPattern&gt; { CanvasPattern::create({ nativeImage.releaseNonNull() }, repeatX, repeatY, originClean) };

Since you are touching these source lines, it’s worth noting we can probably change them to RefPtr instead of RefPtr&lt;CanvasPattern&gt; now.

&gt; Source/WebCore/platform/graphics/Pattern.h:68
&gt; +    SourceImage&amp; tileImage() const { return m_tileImage; }

Can we change this to return a const reference? As far as I can tell, this is only used for encoding, and so there&apos;s no need for this to return a non-const reference, even though this still needs to be mutable in the class of rthe benefit of the tileNativeImage() and tileImagebuffer() functions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1833218</commentid>
    <comment_count>15</comment_count>
      <attachid>449788</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2022-01-24 01:36:50 -0800</bug_when>
    <thetext>Created attachment 449788
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1833226</commentid>
    <comment_count>16</comment_count>
      <attachid>449791</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2022-01-24 01:55:25 -0800</bug_when>
    <thetext>Created attachment 449791
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1833238</commentid>
    <comment_count>17</comment_count>
      <attachid>449781</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2022-01-24 02:34:32 -0800</bug_when>
    <thetext>Comment on attachment 449781
Patch

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

&gt;&gt; Source/WebCore/html/canvas/CanvasRenderingContext2DBase.cpp:1956
&gt;&gt; +    return RefPtr&lt;CanvasPattern&gt; { CanvasPattern::create({ nativeImage.releaseNonNull() }, repeatX, repeatY, originClean) };
&gt; 
&gt; Since you are touching these source lines, it’s worth noting we can probably change them to RefPtr instead of RefPtr&lt;CanvasPattern&gt; now.

The type can&apos;t be dropped. Because the function returns ExceptionOr&lt;RefPtr&lt;CanvasPattern&gt;&gt;, the compiler can&apos;t to deduce the type of the returned RefPtr template and gives this error message:

No viable constructor or deduction guide for deduction of template arguments of &apos;RefPtr&apos;

&gt;&gt; Source/WebCore/platform/graphics/Pattern.h:68
&gt;&gt; +    SourceImage&amp; tileImage() const { return m_tileImage; }
&gt; 
&gt; Can we change this to return a const reference? As far as I can tell, this is only used for encoding, and so there&apos;s no need for this to return a non-const reference, even though this still needs to be mutable in the class of rthe benefit of the tileNativeImage() and tileImagebuffer() functions.

Yes it can. Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1833555</commentid>
    <comment_count>18</comment_count>
      <attachid>449781</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-01-24 16:38:45 -0800</bug_when>
    <thetext>Comment on attachment 449781
Patch

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

&gt;&gt;&gt; Source/WebCore/html/canvas/CanvasRenderingContext2DBase.cpp:1956
&gt;&gt;&gt; +    return RefPtr&lt;CanvasPattern&gt; { CanvasPattern::create({ nativeImage.releaseNonNull() }, repeatX, repeatY, originClean) };
&gt;&gt; 
&gt;&gt; Since you are touching these source lines, it’s worth noting we can probably change them to RefPtr instead of RefPtr&lt;CanvasPattern&gt; now.
&gt; 
&gt; The type can&apos;t be dropped. Because the function returns ExceptionOr&lt;RefPtr&lt;CanvasPattern&gt;&gt;, the compiler can&apos;t to deduce the type of the returned RefPtr template and gives this error message:
&gt; 
&gt; No viable constructor or deduction guide for deduction of template arguments of &apos;RefPtr&apos;

I will fix that &quot;no viable&quot; thing. That is a bug where RefPtr can’t deduce from Ref for some reason, but should be easy to fix in RefPtr.h or Ref.h. No need to worry about it in this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1833636</commentid>
    <comment_count>19</comment_count>
      <attachid>449904</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2022-01-25 01:55:24 -0800</bug_when>
    <thetext>Created attachment 449904
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1833979</commentid>
    <comment_count>20</comment_count>
      <attachid>449994</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2022-01-25 20:41:37 -0800</bug_when>
    <thetext>Created attachment 449994
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1833985</commentid>
    <comment_count>21</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2022-01-25 22:20:07 -0800</bug_when>
    <thetext>The crash on mac-AS-debug-wk2 due to deleting the NativeImage not on the main thread does exist without this change and it has been slowing down this bot: https://ews-build.s3-us-west-2.amazonaws.com/macOS-AppleSilicon-Big-Sur-Debug-WK2-Tests-EWS/r449984-22190/results.html.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1834211</commentid>
    <comment_count>22</comment_count>
      <attachid>449994</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2022-01-26 11:45:17 -0800</bug_when>
    <thetext>Comment on attachment 449994
Patch

I fixed two layout tests failures; one of them exists before this patch. The patch has changed significantly since it was r+ed. So I am setting the r? back for the final version.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1834626</commentid>
    <comment_count>23</comment_count>
      <attachid>449994</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-01-27 11:39:36 -0800</bug_when>
    <thetext>Comment on attachment 449994
Patch

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

&gt; Source/WebCore/platform/graphics/SourceImage.cpp:108
&gt; +            return IntSize();

Maybe just use &quot;{ }&quot; instead of &quot;IntSize()&quot;.

&gt; Source/WebCore/platform/graphics/SourceImage.cpp:110
&gt; +            }
&gt; +        );

I would outdent these two lines by 4 spaces.

&gt; Source/WebCore/platform/graphics/displaylists/DisplayListResourceHeap.h:45
&gt; +    virtual std::optional&lt;SourceImage&gt; getSourceImage(RenderingResourceIdentifier) const = 0;

WebKit coding style tells us to not use get for all these function names, but it seems we have diverged from that tradition here in DisplayList.

&gt; Source/WebCore/platform/graphics/displaylists/DisplayListResourceHeap.h:82
&gt; +            return SourceImage(*nativeImage);

I might have written:

    return { { *nativeImage } };

Or, if one of these works and helps with reference count churn (not sure either works):

    return { { WTFMove(*nativeImage) } };
    return { { nativeImage.releaseNonNull() ) } };

&gt; Source/WebCore/platform/graphics/displaylists/DisplayListResourceHeap.h:85
&gt; +            return SourceImage(*imageBuffer);

Ditto.

&gt; Source/WebKit/GPUProcess/graphics/QualifiedResourceHeap.h:98
&gt; +            return WebCore::SourceImage(*nativeImage);

Ditto.

&gt; Source/WebKit/GPUProcess/graphics/QualifiedResourceHeap.h:101
&gt; +            return WebCore::SourceImage(*imageBuffer);

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1835766</commentid>
    <comment_count>24</comment_count>
      <attachid>450475</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2022-01-31 16:48:18 -0800</bug_when>
    <thetext>Created attachment 450475
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1835807</commentid>
    <comment_count>25</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-01-31 18:58:33 -0800</bug_when>
    <thetext>Committed r288865 (246617@main): &lt;https://commits.webkit.org/246617@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 450475.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>444306</attachid>
            <date>2021-11-15 14:45:26 -0800</date>
            <delta_ts>2021-11-15 20:20:28 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-232411-20211115144525.patch</filename>
            <type>text/plain</type>
            <size>41700</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg1Nzk2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmQ1YWJmYjdlYThmZGY3
ODJlN2EyM2Q0NTQxY2RjOWFiN2U1NzUxNy4uYjM1YTRkODE2MDY1YzlmODA3NDQwZTU0NjExMTE3
ZThlZjQ5ZjIwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU2IEBACisyMDIxLTExLTE1ICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2VzcyBd
IFBhdHRlcm4gc2hvdWxkIGhvbGQgYW4gSW1hZ2VCdWZmZXIgd2hpY2ggY2FuIGJlIGNvbnZlcnRl
ZCB0byBhIE5hdGl2ZUltYWdlIHdoZW4gbmVlZGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzI0MTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgdGhlIG5ldyB0eXBlIGNhbGxlZCAnU291cmNlSW1h
Z2UnIHdoaWNoIGlzIGEgdmFyaWFudCBvZiBOYXRpdmVJbWFnZSAKKyAgICAgICAgYW5kIEltYWdl
QnVmZmVyLiBNYWtlIFBhdHRlcm4gaG9sZCBhIFNvdXJjZUltYWdlIGFuZCBwcm92aWRlIGdldHRl
cnMgdG8gCisgICAgICAgIHJldHJpZXZlIHRoZSBOYXRpdmVJbWFnZSBhbmQgSW1hZ2VCdWZmZXIu
IEluIHRoZXNlIGdldHRlcnMgd2UgY29udmVydAorICAgICAgICBmcm9tIGltYWdlIHNvdXJjZSB0
byB0aGUgb3RoZXIuCisKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6CisgICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFzUGF0dGVybi5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDYW52YXNQYXR0ZXJuOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFz
UGF0dGVybjo6Q2FudmFzUGF0dGVybik6CisgICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFzUGF0
dGVybi5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJh
c2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6
Y3JlYXRlUGF0dGVybik6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhcy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDYW52YXM6OmJ1aWxkQXJyYXlGb3JDYW52YXNQ
YXR0ZXJuKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9QYXR0ZXJuLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlBhdHRlcm46OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpQYXR0ZXJu
OjpQYXR0ZXJuKToKKyAgICAgICAgKFdlYkNvcmU6OlBhdHRlcm46OnRpbGVOYXRpdmVJbWFnZSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpQYXR0ZXJuOjp0aWxlSW1hZ2VCdWZmZXIgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6UGF0dGVybjo6dGlsZUltYWdlSWRlbnRpZmllciBjb25zdCk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvUGF0dGVybi5oOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL1NvdXJjZUltYWdlLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL1BhdHRlcm4uY3BwLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2NnL1BhdHRlcm5DRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYXR0ZXJuOjpjcmVhdGVQbGF0
Zm9ybVBhdHRlcm4gY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0
OjpTZXRTdGF0ZTo6YXBwbHkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmg6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6
U2V0U3RhdGU6OmVuY29kZSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlz
cGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlckltcGwuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVySW1wbDo6cmVjb3JkUmVzb3VyY2VVc2UpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29y
ZGVySW1wbC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdFJlcGxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjphcHBs
eVNldFN0YXRlSXRlbSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVRp
bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVUaWxlOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUp
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6cGF0dGVybkZvckRlc2NyaXB0aW9uKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR1Jlc291cmNlUGF0dGVybi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJT
VkdSZXNvdXJjZVBhdHRlcm46OmJ1aWxkUGF0dGVybik6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJTVkdSZXNvdXJjZVBhdHRlcm46OmNyZWF0ZVRpbGVJbWFnZSBjb25zdCk6CisgICAgICAgICog
cmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNWR1JlbmRlcmluZ0NvbnRleHQ6OmNyZWF0ZUltYWdlQnVmZmVyKToKKyAgICAgICAgKiByZW5k
ZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0NvbnRleHQuaDoKKyAgICAgICAgQWxsb3cgY3JlYXRpbmcg
cmVtb3RlIEltYWdlQnVmZmVycyBmb3IgU1ZHIGRyYXdpbmcuCisKIDIwMjEtMTEtMTQgIFNhaWQg
QWJvdS1IYWxsYXdhICA8c2FpZEBhcHBsZS5jb20+CiAKICAgICAgICAgW0dQVSBQcm9jZXNzXSBS
ZW1vdmUgdGhlIHJlZmVyZW5jZSB0byBGaWx0ZXIgZnJvbSBGaWx0ZXJFZmZlY3QKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5k
ZXggYWY2Nzc1NzUwNDliZjE3ODA1OTQ4ODU2NjkwZGI2MmQxYjQwZWM2OC4uYWFkYWMzZWE1OTY0
ZTQyN2Q1OTFiMTgyNWYzMDMwOTU0NjVjZmI4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAor
MjAyMS0xMS0xNSAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWlkQGFwcGxlLmNvbT4KKworICAgICAg
ICBbR1BVIFByb2Nlc3MgXSBQYXR0ZXJuIHNob3VsZCBob2xkIGFuIEltYWdlQnVmZmVyIHdoaWNo
IGNhbiBiZSBjb252ZXJ0ZWQgdG8gYSBOYXRpdmVJbWFnZSB3aGVuIG5lZWRlZAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMyNDExCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSGFuZGxlIGRlY29kaW5nIHRo
ZSBTb3VyY2VJbWFnZSBmb3IgcmVwbGF5aW5nIHRoZSBTZXRTdGF0ZSBpdGVtIGluIEdQVVByb2Nl
c3MuCisKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZURpc3BsYXlMaXN0UmVj
b3JkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyOjpz
ZXRTdGF0ZVdpdGhRdWFsaWZpZWRJZGVudGlmaWVycyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlclByb3h5LmNwcDoKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlclByb3h5OjpyZWNvcmRSZXNvdXJjZVVz
ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlRGlzcGxheUxpc3RS
ZWNvcmRlclByb3h5Lmg6CisKIDIwMjEtMTEtMTQgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNl
ckBhcHBsZS5jb20+CiAKICAgICAgICAgQXR0YWNoIElPSElERXZlbnQgdGltZXN0YW1wcyB0byB3
aGVlbCBldmVudHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagppbmRleCA5OTgxMGViODIwM2NjZGE2YjVjOWUzODE2MTRiNjJiZTZlZjJhMWNj
Li4zZGFiZTJiNDgxNDg1Mzc5YzJkOTQyN2E3ODJjMjg2MjY2YzM4OGE3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yMjkxLDYg
KzIyOTEsNyBAQAogCQk3MUYwNUY4MDI1MTI0NDJFMDA3MUU2OTMgLyogQ1NTUHJvcGVydHlBbmlt
YXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcx
RjA1RjdFMjUxMjQ0MEMwMDcxRTY5MyAvKiBDU1NQcm9wZXJ0eUFuaW1hdGlvbi5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTcyMTQ0MzMzMjIzRUM4
QjAwMEYxMkZGNyAvKiBTVkdQcm9wZXJ0eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTVFRTUzNjMyMjNCMkEyNDAwRkJBOTQ0IC8qIFNWR1Byb3BlcnR5
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzIx
NDQzMzQyMjNFQzkxNjAwRjEyRkY3IC8qIFNWR1Byb3BlcnR5T3duZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU1RUU1MzYwMjIzQjJBMjEwMEZCQTk0
NCAvKiBTVkdQcm9wZXJ0eU93bmVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKKwkJNzIxNEI5QTkyNzQyRkI5OTAwM0JFNkRGIC8qIFNvdXJjZUltYWdl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MjE0QjlB
ODI3NDJGNjI5MDAzQkU2REYgLyogU291cmNlSW1hZ2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3MjFCNDk3NDI1MTJCQTNCMDBGRTlEM0IgLyog
SW1hZ2VCaXRtYXBCYWNraW5nLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA3MjFCNDk3MDI1MTJBQzA0MDBGRTlEM0IgLyogSW1hZ2VCaXRtYXBCYWNraW5n
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzIy
ODNGMEUyMzBCMjY4QzAwRjVEODI4IC8qIEltYWdlUGFpbnRpbmdPcHRpb25zLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MkMxOEEzRjIzMEIwNEI3MDA2
ODQ3QzcgLyogSW1hZ2VQYWludGluZ09wdGlvbnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3MjRFRDMzMjFBM0E4QjIzMDBGNUYxM0MgLyogSlNF
WFRCbGVuZE1pbk1heC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNzI0RUQzMzAxQTNBOEIyMzAwRjVGMTNDIC8qIEpTRVhUQmxlbmRNaW5NYXguaCAqLzsg
fTsKQEAgLTEwODQ3LDYgKzEwODQ4LDcgQEAKIAkJNzFGRjg1MTgyMkEzRjgxRjAwNUQ1OTU5IC8q
IE5hdmlnYXRvck1heFRvdWNoUG9pbnRzLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBOYXZp
Z2F0b3JNYXhUb3VjaFBvaW50cy5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcy
MTQ0MzQ1MjI0MEM4QkEwMEYxMkZGNyAvKiBTVkdBbmltYXRlZFZhbHVlUHJvcGVydHkuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gU1ZHQW5pbWF0ZWRWYWx1ZVByb3BlcnR5Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTcyMTQ0MzQ2MjI0MENBRDIwMEYxMkZGNyAvKiBTVkdWYWx1ZVByb3BlcnR5
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFNWR1ZhbHVlUHJvcGVydHkuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJNzIxNEI5QTgyNzQyRjYyOTAwM0JFNkRGIC8qIFNvdXJjZUltYWdlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFNvdXJjZUltYWdlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTcyMUI0OTZGMjUxMkFDMDQwMEZFOUQzQiAvKiBJbWFnZUJpdG1hcEJhY2tpbmcuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gSW1hZ2VCaXRtYXBCYWNraW5nLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNzIxQjQ5NzAyNTEyQUMwNDAwRkU5RDNCIC8qIEltYWdlQml0bWFwQmFja2lu
Zy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBJbWFnZUJpdG1hcEJhY2tpbmcuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNzIyQTgxNUMyMzhGRDUwNTAwQzAwNTgzIC8qIEFuaW1hdGlvbkZyYW1l
UmF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBBbmltYXRpb25GcmFtZVJhdGUuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTI4MDM0LDYgKzI4MDM2LDcgQEAKIAkJCQkxREQxMjdBQzI1NkUz
QTg3MDBCMjI3RDcgLyogU291cmNlQnVmZmVyUHJpdmF0ZS5jcHAgKi8sCiAJCQkJQ0Q2NDFFQjIx
ODE4RjVFRDAwRUU0QzQxIC8qIFNvdXJjZUJ1ZmZlclByaXZhdGUuaCAqLywKIAkJCQlDREM4QjVB
QzE4MDRBRTVEMDAxNkU2ODUgLyogU291cmNlQnVmZmVyUHJpdmF0ZUNsaWVudC5oICovLAorCQkJ
CTcyMTRCOUE4Mjc0MkY2MjkwMDNCRTZERiAvKiBTb3VyY2VJbWFnZS5oICovLAogCQkJCTdDODNE
RTg1MUQwNENCRDQwMEZFQkNGMyAvKiBTcHJpbmdTb2x2ZXIuaCAqLywKIAkJCQlCMjM1NDBGMDBE
MDA3ODJFMDAyMzgyRkEgLyogU3RyaW5nVHJ1bmNhdG9yLmNwcCAqLywKIAkJCQlCMjM1NDBGMTBE
MDA3ODJFMDAyMzgyRkEgLyogU3RyaW5nVHJ1bmNhdG9yLmggKi8sCkBAIC0zNjEwOSw2ICszNjEx
Miw3IEBACiAJCQkJQ0RDOEI1QUIxODA0N0ZGMTAwMTZFNjg1IC8qIFNvdXJjZUJ1ZmZlclByaXZh
dGVBVkZPYmpDLmggaW4gSGVhZGVycyAqLywKIAkJCQlDREM4QjVBRDE4MDRBRTVEMDAxNkU2ODUg
LyogU291cmNlQnVmZmVyUHJpdmF0ZUNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODRBODFG
NDIwRkM3RTAyNzAwOTU1MzAwIC8qIFNvdXJjZUdyYXBoaWMuaCBpbiBIZWFkZXJzICovLAorCQkJ
CTcyMTRCOUE5Mjc0MkZCOTkwMDNCRTZERiAvKiBTb3VyY2VJbWFnZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJRDAxQTI3QUUxMEM5QkZEODAwMDI2QTQyIC8qIFNwYWNlU3BsaXRTdHJpbmcuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTYyNkNERTBGMTE0MDQyNEMwMDFFNUE2OCAvKiBTcGF0aWFsTmF2aWdh
dGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTM0OTUwQ0QyNTM5NDM2MTAwOTlGMTcxIC8qIFNw
ZWVjaFJlY29nbml0aW9uLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL0NhbnZhc1BhdHRlcm4uY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvQ2FudmFzUGF0dGVybi5jcHAKaW5kZXggOGYxOTM4MmNiMjAzZDJlNDExYmNhOTU3YTY5
MWIxZmFjOThhMmNhMS4uNjBjZTNkZWE2MWUyNGZhN2JkNDllMjhmMTdlN2U0NDhjZGIyMDgyYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUGF0dGVybi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUGF0dGVybi5jcHAKQEAgLTM0
LDEyICszNCwxMiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlZjxDYW52YXNQYXR0ZXJu
PiBDYW52YXNQYXR0ZXJuOjpjcmVhdGUoUmVmPE5hdGl2ZUltYWdlPiYmIGltYWdlLCBib29sIHJl
cGVhdFgsIGJvb2wgcmVwZWF0WSwgYm9vbCBvcmlnaW5DbGVhbikKK1JlZjxDYW52YXNQYXR0ZXJu
PiBDYW52YXNQYXR0ZXJuOjpjcmVhdGUoU291cmNlSW1hZ2UmJiBpbWFnZSwgYm9vbCByZXBlYXRY
LCBib29sIHJlcGVhdFksIGJvb2wgb3JpZ2luQ2xlYW4pCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgQ2FudmFzUGF0dGVybihXVEZNb3ZlKGltYWdlKSwgcmVwZWF0WCwgcmVwZWF0WSwgb3Jp
Z2luQ2xlYW4pKTsKIH0KIAotQ2FudmFzUGF0dGVybjo6Q2FudmFzUGF0dGVybihSZWY8TmF0aXZl
SW1hZ2U+JiYgaW1hZ2UsIGJvb2wgcmVwZWF0WCwgYm9vbCByZXBlYXRZLCBib29sIG9yaWdpbkNs
ZWFuKQorQ2FudmFzUGF0dGVybjo6Q2FudmFzUGF0dGVybihTb3VyY2VJbWFnZSYmIGltYWdlLCBi
b29sIHJlcGVhdFgsIGJvb2wgcmVwZWF0WSwgYm9vbCBvcmlnaW5DbGVhbikKICAgICA6IG1fcGF0
dGVybihQYXR0ZXJuOjpjcmVhdGUoV1RGTW92ZShpbWFnZSksIHsgcmVwZWF0WCwgcmVwZWF0WSB9
KSkKICAgICAsIG1fb3JpZ2luQ2xlYW4ob3JpZ2luQ2xlYW4pCiB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNQYXR0ZXJuLmggYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9DYW52YXNQYXR0ZXJuLmgKaW5kZXggZTQ2ZDIxYmM1MTM1ZDlhNzRmNDU3NWM5
ZGQ2NWU5Y2VjZGNiOGQyYS4uYTA3ZTU2OTdiYTlhZDcxOGVkOTQ0M2Q1MTkyNTc1YTkyMWFjZWFk
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUGF0dGVybi5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1BhdHRlcm4uaApAQCAtMjYs
MTkgKzI2LDE5IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkV4Y2VwdGlvbk9yLmgiCisj
aW5jbHVkZSAiU291cmNlSW1hZ2UuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1
ZGUgPHd0Zi9SZWYuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLWNsYXNzIE5hdGl2ZUltYWdlOwogY2xhc3MgUGF0dGVybjsKIHN0cnVjdCBE
T01NYXRyaXgyREluaXQ7CiAKIGNsYXNzIENhbnZhc1BhdHRlcm4gOiBwdWJsaWMgUmVmQ291bnRl
ZDxDYW52YXNQYXR0ZXJuPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxDYW52YXNQYXR0ZXJu
PiBjcmVhdGUoUmVmPE5hdGl2ZUltYWdlPiYmLCBib29sIHJlcGVhdFgsIGJvb2wgcmVwZWF0WSwg
Ym9vbCBvcmlnaW5DbGVhbik7CisgICAgc3RhdGljIFJlZjxDYW52YXNQYXR0ZXJuPiBjcmVhdGUo
U291cmNlSW1hZ2UmJiwgYm9vbCByZXBlYXRYLCBib29sIHJlcGVhdFksIGJvb2wgb3JpZ2luQ2xl
YW4pOwogICAgIH5DYW52YXNQYXR0ZXJuKCk7CiAKICAgICBzdGF0aWMgYm9vbCBwYXJzZVJlcGV0
aXRpb25UeXBlKGNvbnN0IFN0cmluZyYsIGJvb2wmIHJlcGVhdFgsIGJvb2wmIHJlcGVhdFkpOwpA
QCAtNTEsNyArNTEsNyBAQCBwdWJsaWM6CiAgICAgRXhjZXB0aW9uT3I8dm9pZD4gc2V0VHJhbnNm
b3JtKERPTU1hdHJpeDJESW5pdCYmKTsKIAogcHJpdmF0ZToKLSAgICBDYW52YXNQYXR0ZXJuKFJl
ZjxOYXRpdmVJbWFnZT4mJiwgYm9vbCByZXBlYXRYLCBib29sIHJlcGVhdFksIGJvb2wgb3JpZ2lu
Q2xlYW4pOworICAgIENhbnZhc1BhdHRlcm4oU291cmNlSW1hZ2UmJiwgYm9vbCByZXBlYXRYLCBi
b29sIHJlcGVhdFksIGJvb2wgb3JpZ2luQ2xlYW4pOwogCiAgICAgUmVmPFBhdHRlcm4+IG1fcGF0
dGVybjsKICAgICBib29sIG1fb3JpZ2luQ2xlYW47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuY3BwCmluZGV4
IDZkZWZlYjgxMmMzNzIyYzM4ZWEyZmM4ZDA3OTFmYWUyOWIxNjBkNmUuLjFlMDY2NDdkZGU3ZmZl
NzA4MTYwNWEzYWY3MjBkOTQ0ZTU0MjIwZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuY3BwCkBAIC0x
OTk0LDcgKzE5OTQsNyBAQCBFeGNlcHRpb25PcjxSZWZQdHI8Q2FudmFzUGF0dGVybj4+IENhbnZh
c1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmNyZWF0ZVBhdHRlcm4oSAogCiAgICAgdmlkZW9FbGVt
ZW50LnBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0KGltYWdlQnVmZmVyLT5jb250ZXh0KCksIEZs
b2F0UmVjdChGbG9hdFBvaW50KCksIHNpemUodmlkZW9FbGVtZW50KSkpOwogICAgIAotICAgIHJl
dHVybiBSZWZQdHI8Q2FudmFzUGF0dGVybj4geyBDYW52YXNQYXR0ZXJuOjpjcmVhdGUoSW1hZ2VC
dWZmZXI6OnNpbmtJbnRvTmF0aXZlSW1hZ2UoV1RGTW92ZShpbWFnZUJ1ZmZlcikpLnJlbGVhc2VO
b25OdWxsKCksIHJlcGVhdFgsIHJlcGVhdFksIG9yaWdpbkNsZWFuKSB9OworICAgIHJldHVybiBS
ZWZQdHI8Q2FudmFzUGF0dGVybj4geyBDYW52YXNQYXR0ZXJuOjpjcmVhdGUoaW1hZ2VCdWZmZXIu
cmVsZWFzZU5vbk51bGwoKSwgcmVwZWF0WCwgcmVwZWF0WSwgb3JpZ2luQ2xlYW4pIH07CiB9CiAK
ICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNh
bnZhcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzLmNwcApp
bmRleCBlODQ3ZmU2ODExMjczMjUwNmIxZDA4NDZmNjMzZGFjNGI5NjlkMTY1Li4wMzE5Y2MzN2Rm
MjVmMmM2NmY5NmMyNTk2MTIxMTVjODkzODNjNzdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yQ2FudmFzLmNwcApAQCAtMTMzNiwxMCArMTMzNiw3IEBAIFJlZjxKU09O
OjpBcnJheU9mPEpTT046OlZhbHVlPj4gSW5zcGVjdG9yQ2FudmFzOjpidWlsZEFycmF5Rm9yQ2Fu
dmFzR3JhZGllbnQoY29uCiAKIFJlZjxKU09OOjpBcnJheU9mPEpTT046OlZhbHVlPj4gSW5zcGVj
dG9yQ2FudmFzOjpidWlsZEFycmF5Rm9yQ2FudmFzUGF0dGVybihjb25zdCBDYW52YXNQYXR0ZXJu
JiBjYW52YXNQYXR0ZXJuKQogewotICAgIGF1dG8mIHRpbGVJbWFnZSA9IGNhbnZhc1BhdHRlcm4u
cGF0dGVybigpLnRpbGVJbWFnZSgpOwotICAgIEZsb2F0UmVjdCByZWN0ID0geyB7IH0sIHRpbGVJ
bWFnZS5zaXplKCkgfTsKLSAgICBhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0
ZSh0aWxlSW1hZ2Uuc2l6ZSgpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0
aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKLSAgICBpbWFn
ZUJ1ZmZlci0+Y29udGV4dCgpLmRyYXdOYXRpdmVJbWFnZSh0aWxlSW1hZ2UsIHRpbGVJbWFnZS5z
aXplKCksIHJlY3QsIHJlY3QpOworICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBjYW52YXNQYXR0ZXJu
LnBhdHRlcm4oKS50aWxlSW1hZ2VCdWZmZXIoKTsKIAogICAgIFN0cmluZyByZXBlYXQ7CiAgICAg
Ym9vbCByZXBlYXRYID0gY2FudmFzUGF0dGVybi5wYXR0ZXJuKCkucmVwZWF0WCgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0dGVybi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXR0ZXJuLmNwcAppbmRleCA2MzUzMjM3Njlm
ODAzM2RlMzI4ZThkNDRlNTc5NzVhMWQzY2Q2MDY1Li5lYmNhNTVhNDZlZTgyM2JkZTAxMjg3OGI0
NTBjNGQ5MWQzZjAzMGNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9QYXR0ZXJuLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Q
YXR0ZXJuLmNwcApAQCAtMjcsMTYgKzI3LDE4IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5j
bHVkZSAiUGF0dGVybi5oIgogCisjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCiAjaW5jbHVk
ZSAiSW1hZ2UuaCIKKyNpbmNsdWRlICJJbWFnZUJ1ZmZlci5oIgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLVJlZjxQYXR0ZXJuPiBQYXR0ZXJuOjpjcmVhdGUoUmVmPE5hdGl2ZUltYWdlPiYmIHRp
bGVJbWFnZSwgY29uc3QgUGFyYW1ldGVycyYgcGFyYW1ldGVycykKK1JlZjxQYXR0ZXJuPiBQYXR0
ZXJuOjpjcmVhdGUoU291cmNlSW1hZ2UmJiB0aWxlSW1hZ2UsIGNvbnN0IFBhcmFtZXRlcnMmIHBh
cmFtZXRlcnMpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUGF0dGVybihXVEZNb3ZlKHRp
bGVJbWFnZSksIHBhcmFtZXRlcnMpKTsKIH0KIAotUGF0dGVybjo6UGF0dGVybihSZWY8TmF0aXZl
SW1hZ2U+JiYgaW1hZ2UsIGNvbnN0IFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCitQYXR0ZXJuOjpQ
YXR0ZXJuKFNvdXJjZUltYWdlJiYgaW1hZ2UsIGNvbnN0IFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMp
CiAgICAgOiBtX3RpbGVJbWFnZShXVEZNb3ZlKGltYWdlKSkKICAgICAsIG1fcGFyYW1ldGVycyhw
YXJhbWV0ZXJzKQogewpAQCAtNDksNCArNTEsNDkgQEAgdm9pZCBQYXR0ZXJuOjpzZXRQYXR0ZXJu
U3BhY2VUcmFuc2Zvcm0oY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuU3BhY2VUcmFuc2YK
ICAgICBtX3BhcmFtZXRlcnMucGF0dGVyblNwYWNlVHJhbnNmb3JtID0gcGF0dGVyblNwYWNlVHJh
bnNmb3JtOwogfQogCitOYXRpdmVJbWFnZSogUGF0dGVybjo6dGlsZU5hdGl2ZUltYWdlKCkgY29u
c3QKK3sKKyAgICBpZiAoYXV0byogbmF0aXZlSW1hZ2UgPSBzdGQ6OmdldF9pZjxSZWY8TmF0aXZl
SW1hZ2U+PigmbV90aWxlSW1hZ2UpKQorICAgICAgICByZXR1cm4gbmF0aXZlSW1hZ2UtPnB0cigp
OworCisgICAgYXV0byBpbWFnZUJ1ZmZlciA9IHN0ZDo6Z2V0PFJlZjxJbWFnZUJ1ZmZlcj4+KG1f
dGlsZUltYWdlKTsKKworICAgIGF1dG8gbmF0aXZlSW1hZ2UgPSBJbWFnZUJ1ZmZlcjo6c2lua0lu
dG9OYXRpdmVJbWFnZShXVEZNb3ZlKGltYWdlQnVmZmVyKSk7CisgICAgaWYgKCFuYXRpdmVJbWFn
ZSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBtX3RpbGVJbWFnZSA9IG5hdGl2ZUlt
YWdlLnJlbGVhc2VOb25OdWxsKCk7CisgICAgcmV0dXJuIHN0ZDo6Z2V0PFJlZjxOYXRpdmVJbWFn
ZT4+KG1fdGlsZUltYWdlKS5wdHIoKTsKK30KKworSW1hZ2VCdWZmZXIqIFBhdHRlcm46OnRpbGVJ
bWFnZUJ1ZmZlcigpIGNvbnN0Cit7CisgICAgaWYgKGF1dG8qIGltYWdlQnVmZmVyID0gc3RkOjpn
ZXRfaWY8UmVmPEltYWdlQnVmZmVyPj4oJm1fdGlsZUltYWdlKSkKKyAgICAgICAgcmV0dXJuIGlt
YWdlQnVmZmVyLT5wdHIoKTsKKworICAgIGF1dG8gbmF0aXZlSW1hZ2UgPSBzdGQ6OmdldDxSZWY8
TmF0aXZlSW1hZ2U+PihtX3RpbGVJbWFnZSk7CisKKyAgICBGbG9hdFJlY3QgcmVjdCA9IHsgeyB9
LCBuYXRpdmVJbWFnZS0+c2l6ZSgpIH07CisgICAgYXV0byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVm
ZmVyOjpjcmVhdGUobmF0aXZlSW1hZ2UtPnNpemUoKSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVy
YXRlZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9ybWF0OjpCR1JB
OCk7CisgICAgaWYgKCFpbWFnZUJ1ZmZlcikKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAg
ICBpbWFnZUJ1ZmZlci0+Y29udGV4dCgpLmRyYXdOYXRpdmVJbWFnZShuYXRpdmVJbWFnZSwgbmF0
aXZlSW1hZ2UtPnNpemUoKSwgcmVjdCwgcmVjdCk7CisKKyAgICBtX3RpbGVJbWFnZSA9IGltYWdl
QnVmZmVyLnJlbGVhc2VOb25OdWxsKCk7CisgICAgcmV0dXJuIHN0ZDo6Z2V0PFJlZjxJbWFnZUJ1
ZmZlcj4+KG1fdGlsZUltYWdlKS5wdHIoKTsKK30KKworUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyIFBhdHRlcm46OnRpbGVJbWFnZUlkZW50aWZpZXIoKSBjb25zdAoreworICAgIHJldHVybiBX
VEY6OnN3aXRjaE9uKG1fdGlsZUltYWdlLAorICAgICAgICBbJl0gKGNvbnN0IFJlZjxOYXRpdmVJ
bWFnZT4mIG5hdGl2ZUltYWdlKSB7CisgICAgICAgICAgICByZXR1cm4gbmF0aXZlSW1hZ2UtPnJl
bmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcigpOworICAgICAgICB9LAorICAgICAgICBbJl0gKGNv
bnN0IFJlZjxJbWFnZUJ1ZmZlcj4mIGltYWdlQnVmZmVyKSB7CisgICAgICAgICAgICByZXR1cm4g
aW1hZ2VCdWZmZXItPnJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcigpOworICAgICAgICB9Cisg
ICAgKTsKK30KKwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvUGF0dGVybi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0dGVybi5o
CmluZGV4IDFjOTYxZmJmNDZlODM2ZjQwMDdlNjBhOTgxNDFmNDkxMjRiNTQ1MDMuLjA3ZTZmNTk1
ZDY5OTE1MDMyYzc0YmM2ZDM3NjkwM2VmZDVjZjRhYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BhdHRlcm4uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9QYXR0ZXJuLmgKQEAgLTI4LDcgKzI4LDcgQEAKICNwcmFnbWEgb25jZQog
CiAjaW5jbHVkZSAiQWZmaW5lVHJhbnNmb3JtLmgiCi0jaW5jbHVkZSAiSW1hZ2UuaCIKKyNpbmNs
dWRlICJTb3VyY2VJbWFnZS5oIgogCiAjaW5jbHVkZSA8d3RmL1JlZi5oPgogI2luY2x1ZGUgPHd0
Zi9SZWZDb3VudGVkLmg+CkBAIC01Miw3ICs1Miw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
Y2xhc3MgQWZmaW5lVHJhbnNmb3JtOwogY2xhc3MgR3JhcGhpY3NDb250ZXh0OwotY2xhc3MgSW1h
Z2U7CiAKIGNsYXNzIFBhdHRlcm4gZmluYWwgOiBwdWJsaWMgUmVmQ291bnRlZDxQYXR0ZXJuPiB7
CiBwdWJsaWM6CkBAIC03MCwxMCArNjksMTQgQEAgcHVibGljOgogICAgICAgICBib29sIHJlcGVh
dFk7CiAgICAgfTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8UGF0dGVybj4gY3Jl
YXRlKFJlZjxOYXRpdmVJbWFnZT4mJiB0aWxlSW1hZ2UsIGNvbnN0IFBhcmFtZXRlcnMmID0geyB9
KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPFBhdHRlcm4+IGNyZWF0ZShTb3VyY2VJ
bWFnZSYmIHRpbGVJbWFnZSwgY29uc3QgUGFyYW1ldGVycyYgPSB7IH0pOwogICAgIFdFQkNPUkVf
RVhQT1JUIH5QYXR0ZXJuKCk7CiAKLSAgICBOYXRpdmVJbWFnZSYgdGlsZUltYWdlKCkgY29uc3Qg
eyByZXR1cm4gbV90aWxlSW1hZ2UuZ2V0KCk7IH0KKyAgICBTb3VyY2VJbWFnZSYgdGlsZUltYWdl
KCkgY29uc3QgeyByZXR1cm4gbV90aWxlSW1hZ2U7IH0KKyAgICBOYXRpdmVJbWFnZSogdGlsZU5h
dGl2ZUltYWdlKCkgY29uc3Q7CisgICAgSW1hZ2VCdWZmZXIqIHRpbGVJbWFnZUJ1ZmZlcigpIGNv
bnN0OworICAgIFdFQkNPUkVfRVhQT1JUIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciB0aWxl
SW1hZ2VJZGVudGlmaWVyKCkgY29uc3Q7CisKICAgICBjb25zdCBQYXJhbWV0ZXJzJiBwYXJhbWV0
ZXJzKCkgY29uc3QgeyByZXR1cm4gbV9wYXJhbWV0ZXJzOyB9CiAKICAgICAvLyBQYXR0ZXJuIHNw
YWNlIGlzIGFuIGFic3RyYWN0IHNwYWNlIHRoYXQgbWFwcyB0byB0aGUgZGVmYXVsdCB1c2VyIHNw
YWNlIGJ5IHRoZSB0cmFuc2Zvcm1hdGlvbiAndXNlclNwYWNlVHJhbnNmb3JtJwpAQCAtODgsOSAr
OTEsOSBAQCBwdWJsaWM6CiAgICAgYm9vbCByZXBlYXRZKCkgY29uc3QgeyByZXR1cm4gbV9wYXJh
bWV0ZXJzLnJlcGVhdFk7IH0KIAogcHJpdmF0ZToKLSAgICBQYXR0ZXJuKFJlZjxOYXRpdmVJbWFn
ZT4mJiwgY29uc3QgUGFyYW1ldGVycyYpOworICAgIFBhdHRlcm4oU291cmNlSW1hZ2UmJiwgY29u
c3QgUGFyYW1ldGVycyYpOwogCi0gICAgUmVmPE5hdGl2ZUltYWdlPiBtX3RpbGVJbWFnZTsKKyAg
ICBtdXRhYmxlIFNvdXJjZUltYWdlIG1fdGlsZUltYWdlOwogICAgIFBhcmFtZXRlcnMgbV9wYXJh
bWV0ZXJzOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvU291cmNlSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NvdXJj
ZUltYWdlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uYzgwMTlmNTc5YTYwMWIyNDNkMTkzMDVlNzIyZjViM2RhMGFm
OWQ1YQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L1NvdXJjZUltYWdlLmgKQEAgLTAsMCArMSwzNSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAy
MSBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitjbGFzcyBJbWFnZUJ1ZmZlcjsKK2NsYXNzIE5hdGl2ZUltYWdlOworCit1c2luZyBTb3Vy
Y2VJbWFnZSA9IHN0ZDo6dmFyaWFudDxSZWY8TmF0aXZlSW1hZ2U+LCBSZWY8SW1hZ2VCdWZmZXI+
PjsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGF0dGVybkNHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL1BhdHRlcm5DRy5jcHAKaW5kZXggMDVhMzkxNjU0MGJiNzZkYTNmMGFi
YWEzMzk0ZmM4ZGQwODhjOGRhOS4uZDQ1ZmE5MmNjNTRjY2Q4ZmUxODcyNWU2Y2Y3ZjAzMDVlYjhj
YmZhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGF0
dGVybkNHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QYXR0
ZXJuQ0cuY3BwCkBAIC01NSwxMyArNTUsMTcgQEAgc3RhdGljIHZvaWQgcGF0dGVyblJlbGVhc2VD
YWxsYmFjayh2b2lkKiBpbmZvKQogCiBSZXRhaW5QdHI8Q0dQYXR0ZXJuUmVmPiBQYXR0ZXJuOjpj
cmVhdGVQbGF0Zm9ybVBhdHRlcm4oY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB1c2VyU3BhY2VUcmFu
c2Zvcm0pIGNvbnN0CiB7Ci0gICAgRmxvYXRSZWN0IHRpbGVSZWN0ID0geyB7IH0sIHRpbGVJbWFn
ZSgpLnNpemUoKSB9OworICAgIGF1dG8gbmF0aXZlSW1hZ2UgPSB0aWxlTmF0aXZlSW1hZ2UoKTsK
KyAgICBpZiAoIW5hdGl2ZUltYWdlKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAKKyAg
ICBGbG9hdFJlY3QgdGlsZVJlY3QgPSB7IHsgfSwgbmF0aXZlSW1hZ2UtPnNpemUoKSB9OwogCiAg
ICAgQWZmaW5lVHJhbnNmb3JtIHBhdHRlcm5UcmFuc2Zvcm0gPSB1c2VyU3BhY2VUcmFuc2Zvcm0g
KiBwYXR0ZXJuU3BhY2VUcmFuc2Zvcm0oKTsKICAgICBwYXR0ZXJuVHJhbnNmb3JtLnNjYWxlTm9u
VW5pZm9ybSgxLCAtMSk7CiAgICAgcGF0dGVyblRyYW5zZm9ybS50cmFuc2xhdGUoMCwgLXRpbGVS
ZWN0LmhlaWdodCgpKTsKIAotICAgIFBsYXRmb3JtSW1hZ2VQdHIgcGxhdGZvcm1JbWFnZSA9IHRp
bGVJbWFnZSgpLnBsYXRmb3JtSW1hZ2UoKTsKKyAgICBQbGF0Zm9ybUltYWdlUHRyIHBsYXRmb3Jt
SW1hZ2UgPSBuYXRpdmVJbWFnZS0+cGxhdGZvcm1JbWFnZSgpOwogICAgIGlmICghcGxhdGZvcm1J
bWFnZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dEl0ZW1zLmNwcAppbmRleCBlNzI2ZDk0ZjMwMDUwMDIzMTJiYzY0MmIzMDE1ZWNiYWUzMTQ4NDhj
Li5iZTNmMWM0YmExYzk4YTYyNzA2M2YxMDNjMmQzNWQ4ODE4MDk1OGQwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJ
dGVtcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwCkBAIC0xNTksMTIgKzE1OSwxMiBAQCBTZXRTdGF0ZTo6
U2V0U3RhdGUoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGVDaGFuZ2UmIHN0YXRlQ2hhbmdlLCBj
b25zdCBQYXR0ZXJuRAogewogfQogCi12b2lkIFNldFN0YXRlOjphcHBseShHcmFwaGljc0NvbnRl
eHQmIGNvbnRleHQsIE5hdGl2ZUltYWdlKiBzdHJva2VQYXR0ZXJuSW1hZ2UsIE5hdGl2ZUltYWdl
KiBmaWxsUGF0dGVybkltYWdlKQordm9pZCBTZXRTdGF0ZTo6YXBwbHkoR3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0LCBzdGQ6Om9wdGlvbmFsPFNvdXJjZUltYWdlPiYmIHN0cm9rZVBhdHRlcm5JbWFn
ZSwgc3RkOjpvcHRpb25hbDxTb3VyY2VJbWFnZT4mJiBmaWxsUGF0dGVybkltYWdlKQogewogICAg
IGlmIChtX3N0YXRlQ2hhbmdlLm1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0
U3RhdGU6OlN0cm9rZVBhdHRlcm5DaGFuZ2UpICYmIHN0cm9rZVBhdHRlcm5JbWFnZSkKLSAgICAg
ICAgbV9zdGF0ZUNoYW5nZS5tX3N0YXRlLnN0cm9rZVBhdHRlcm4gPSBQYXR0ZXJuOjpjcmVhdGUo
KnN0cm9rZVBhdHRlcm5JbWFnZSwgbV9zdHJva2VQYXR0ZXJuLnBhcmFtZXRlcnMpOworICAgICAg
ICBtX3N0YXRlQ2hhbmdlLm1fc3RhdGUuc3Ryb2tlUGF0dGVybiA9IFBhdHRlcm46OmNyZWF0ZShX
VEZNb3ZlKCpzdHJva2VQYXR0ZXJuSW1hZ2UpLCBtX3N0cm9rZVBhdHRlcm4ucGFyYW1ldGVycyk7
CiAgICAgaWYgKG1fc3RhdGVDaGFuZ2UubV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0Nv
bnRleHRTdGF0ZTo6RmlsbFBhdHRlcm5DaGFuZ2UpICYmIGZpbGxQYXR0ZXJuSW1hZ2UpCi0gICAg
ICAgIG1fc3RhdGVDaGFuZ2UubV9zdGF0ZS5maWxsUGF0dGVybiA9IFBhdHRlcm46OmNyZWF0ZSgq
ZmlsbFBhdHRlcm5JbWFnZSwgbV9maWxsUGF0dGVybi5wYXJhbWV0ZXJzKTsKKyAgICAgICAgbV9z
dGF0ZUNoYW5nZS5tX3N0YXRlLmZpbGxQYXR0ZXJuID0gUGF0dGVybjo6Y3JlYXRlKFdURk1vdmUo
KmZpbGxQYXR0ZXJuSW1hZ2UpLCBtX2ZpbGxQYXR0ZXJuLnBhcmFtZXRlcnMpOwogICAgIG1fc3Rh
dGVDaGFuZ2UuYXBwbHkoY29udGV4dCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVt
cy5oCmluZGV4IGNlYmYzNjliZmEyZWYwZjY3ZjEzMWZiODUyMzZlOWFhODk3ZDQ0ODAuLjhhOGRj
Y2VjMmIwNWE3NmIyMTliOTgxNjc4MmZmMzhiNTA4YTU0ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3Bs
YXlMaXN0SXRlbXMuaApAQCAtMjU3LDcgKzI1Nyw3IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTxj
bGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CiAgICAgdGVtcGxhdGU8
Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8U2V0U3RhdGU+IGRlY29kZShEZWNv
ZGVyJik7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGx5KEdyYXBoaWNzQ29udGV4dCYs
IE5hdGl2ZUltYWdlKiBzdHJva2VQYXR0ZXJuSW1hZ2UsIE5hdGl2ZUltYWdlKiBmaWxsUGF0dGVy
bkltYWdlKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGx5KEdyYXBoaWNzQ29udGV4dCYs
IHN0ZDo6b3B0aW9uYWw8U291cmNlSW1hZ2U+JiYgc3Ryb2tlUGF0dGVybkltYWdlLCBzdGQ6Om9w
dGlvbmFsPFNvdXJjZUltYWdlPiYmIGZpbGxQYXR0ZXJuSW1hZ2UpOwogCiBwcml2YXRlOgogICAg
IHN0cnVjdCBQYXR0ZXJuRGF0YSB7CkBAIC0yODcsNyArMjg3LDcgQEAgdm9pZCBTZXRTdGF0ZTo6
ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAKICAgICBpZiAoY2hhbmdlRmxhZ3MuY29u
dGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZVBhdHRlcm5DaGFuZ2UpKSB7CiAgICAg
ICAgIEFTU0VSVChzdGF0ZS5zdHJva2VQYXR0ZXJuKTsKLSAgICAgICAgZW5jb2RlciA8PCBzdGF0
ZS5zdHJva2VQYXR0ZXJuLT50aWxlSW1hZ2UoKS5yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIo
KTsKKyAgICAgICAgZW5jb2RlciA8PCBzdGF0ZS5zdHJva2VQYXR0ZXJuLT50aWxlSW1hZ2VJZGVu
dGlmaWVyKCk7CiAgICAgICAgIGVuY29kZXIgPDwgc3RhdGUuc3Ryb2tlUGF0dGVybi0+cGFyYW1l
dGVycygpOwogICAgIH0KIApAQCAtMjk4LDcgKzI5OCw3IEBAIHZvaWQgU2V0U3RhdGU6OmVuY29k
ZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogCiAgICAgaWYgKGNoYW5nZUZsYWdzLmNvbnRhaW5z
KEdyYXBoaWNzQ29udGV4dFN0YXRlOjpGaWxsUGF0dGVybkNoYW5nZSkpIHsKICAgICAgICAgQVNT
RVJUKHN0YXRlLmZpbGxQYXR0ZXJuKTsKLSAgICAgICAgZW5jb2RlciA8PCBzdGF0ZS5maWxsUGF0
dGVybi0+dGlsZUltYWdlKCkucmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKCk7CisgICAgICAg
IGVuY29kZXIgPDwgc3RhdGUuZmlsbFBhdHRlcm4tPnRpbGVJbWFnZUlkZW50aWZpZXIoKTsKICAg
ICAgICAgZW5jb2RlciA8PCBzdGF0ZS5maWxsUGF0dGVybi0+cGFyYW1ldGVycygpOwogICAgIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmgKaW5kZXggOWE0MDE0MzY3ZGIx
ZWY0M2I4YTU5ZTUwZTNkNDcxMGY5M2UwM2ViZi4uMTRhODY1MTJiN2JiMGJkZWYxODZkMDlhMzg0
OTkzYzU2NGZhYmFmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oCkBA
IC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCiAjaW5jbHVkZSAi
SW1hZ2UuaCIgLy8gRm9yIEltYWdlOjpUaWxlUnVsZS4KICNpbmNsdWRlICJJbmxpbmVQYXRoRGF0
YS5oIgorI2luY2x1ZGUgIlNvdXJjZUltYWdlLmgiCiAjaW5jbHVkZSAiVGV4dEZsYWdzLmgiCiAj
aW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAKQEAgLTEzNiw4ICsxMzcsOSBAQCBwcm90ZWN0
ZWQ6CiAgICAgdmlydHVhbCB2b2lkIHJlY29yZEFwcGx5RGV2aWNlU2NhbGVGYWN0b3IoZmxvYXQp
ID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCByZWNvcmRSZXNvdXJjZVVzZShOYXRpdmVJbWFnZSYp
ID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgcmVjb3JkUmVzb3VyY2VVc2UoRm9udCYpID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgcmVjb3JkUmVzb3VyY2VVc2UoSW1hZ2VCdWZmZXImKSA9IDA7CisgICAg
dmlydHVhbCB2b2lkIHJlY29yZFJlc291cmNlVXNlKFNvdXJjZUltYWdlJikgPSAwOworICAgIHZp
cnR1YWwgdm9pZCByZWNvcmRSZXNvdXJjZVVzZShGb250JikgPSAwOwogCiAgICAgLy8gRklYTUU6
IE1heWJlIHJlbW92ZSB0aGlzPwogICAgIHZpcnR1YWwgYm9vbCBjYW5EcmF3SW1hZ2VCdWZmZXIo
Y29uc3QgSW1hZ2VCdWZmZXImKSBjb25zdCA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlckltcGwu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3Bs
YXlMaXN0UmVjb3JkZXJJbXBsLmNwcAppbmRleCBhNWUyZDNiMjA5ODVlM2VmOTQxYTMyMzU3NTZl
MjgwZWFjZDUxNjNjLi5hMzk0YWZmYmUxNjQxODg1ZWI5ZTBmYWM0YWY0Yjc4N2NmNjJmODQwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3RSZWNvcmRlckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVySW1wbC5jcHAKQEAgLTQx
MiwyNSArNDEyLDM3IEBAIHZvaWQgUmVjb3JkZXJJbXBsOjpyZWNvcmRBcHBseURldmljZVNjYWxl
RmFjdG9yKGZsb2F0IHNjYWxlRmFjdG9yKQogICAgIGFwcGVuZDxBcHBseURldmljZVNjYWxlRmFj
dG9yPihzY2FsZUZhY3Rvcik7CiB9CiAKLXZvaWQgUmVjb3JkZXJJbXBsOjpyZWNvcmRSZXNvdXJj
ZVVzZShOYXRpdmVJbWFnZSYgaW1hZ2UpCit2b2lkIFJlY29yZGVySW1wbDo6cmVjb3JkUmVzb3Vy
Y2VVc2UoTmF0aXZlSW1hZ2UmIG5hdGl2ZUltYWdlKQogewogICAgIGlmIChtX2RlbGVnYXRlKQot
ICAgICAgICBtX2RlbGVnYXRlLT5yZWNvcmROYXRpdmVJbWFnZVVzZShpbWFnZSk7Ci0gICAgbV9k
aXNwbGF5TGlzdC5jYWNoZU5hdGl2ZUltYWdlKGltYWdlKTsKKyAgICAgICAgbV9kZWxlZ2F0ZS0+
cmVjb3JkTmF0aXZlSW1hZ2VVc2UobmF0aXZlSW1hZ2UpOworICAgIG1fZGlzcGxheUxpc3QuY2Fj
aGVOYXRpdmVJbWFnZShuYXRpdmVJbWFnZSk7CiB9CiAKLXZvaWQgUmVjb3JkZXJJbXBsOjpyZWNv
cmRSZXNvdXJjZVVzZShGb250JiBmb250KQordm9pZCBSZWNvcmRlckltcGw6OnJlY29yZFJlc291
cmNlVXNlKEltYWdlQnVmZmVyJiBpbWFnZUJ1ZmZlcikKIHsKICAgICBpZiAobV9kZWxlZ2F0ZSkK
LSAgICAgICAgbV9kZWxlZ2F0ZS0+cmVjb3JkRm9udFVzZShmb250KTsKLSAgICBtX2Rpc3BsYXlM
aXN0LmNhY2hlRm9udChmb250KTsKKyAgICAgICAgbV9kZWxlZ2F0ZS0+cmVjb3JkSW1hZ2VCdWZm
ZXJVc2UoaW1hZ2VCdWZmZXIpOworICAgIG1fZGlzcGxheUxpc3QuY2FjaGVJbWFnZUJ1ZmZlcihp
bWFnZUJ1ZmZlcik7CiB9CiAKLXZvaWQgUmVjb3JkZXJJbXBsOjpyZWNvcmRSZXNvdXJjZVVzZShJ
bWFnZUJ1ZmZlciYgaW1hZ2VCdWZmZXIpCit2b2lkIFJlY29yZGVySW1wbDo6cmVjb3JkUmVzb3Vy
Y2VVc2UoU291cmNlSW1hZ2UmIGltYWdlKQoreworICAgIFdURjo6c3dpdGNoT24oaW1hZ2UsCisg
ICAgICAgIFsmXSAoY29uc3QgUmVmPE5hdGl2ZUltYWdlPiYgbmF0aXZlSW1hZ2UpIHsKKyAgICAg
ICAgICAgIHJlY29yZFJlc291cmNlVXNlKG5hdGl2ZUltYWdlKTsKKyAgICAgICAgfSwKKyAgICAg
ICAgWyZdIChjb25zdCBSZWY8SW1hZ2VCdWZmZXI+JiBpbWFnZUJ1ZmZlcikgeworICAgICAgICAg
ICAgcmVjb3JkUmVzb3VyY2VVc2UoaW1hZ2VCdWZmZXIpOworICAgICAgICB9CisgICAgKTsKK30K
Kwordm9pZCBSZWNvcmRlckltcGw6OnJlY29yZFJlc291cmNlVXNlKEZvbnQmIGZvbnQpCiB7CiAg
ICAgaWYgKG1fZGVsZWdhdGUpCi0gICAgICAgIG1fZGVsZWdhdGUtPnJlY29yZEltYWdlQnVmZmVy
VXNlKGltYWdlQnVmZmVyKTsKLSAgICBtX2Rpc3BsYXlMaXN0LmNhY2hlSW1hZ2VCdWZmZXIoaW1h
Z2VCdWZmZXIpOworICAgICAgICBtX2RlbGVnYXRlLT5yZWNvcmRGb250VXNlKGZvbnQpOworICAg
IG1fZGlzcGxheUxpc3QuY2FjaGVGb250KGZvbnQpOwogfQogCiAvLyBGSVhNRTogc2hhcmUgd2l0
aCBTaGFkb3dEYXRhCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlckltcGwuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVySW1wbC5o
CmluZGV4IDNlNmQwOTAyNjkwNDZmMWIxMjRhMzljMWUxMjExMDBiMzI3MjYwYzUuLjI5OWEzYmYz
ZmEyYzMxMWVjODQ5MzczZDBjMWZjODNiYjFmMTE4MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVySW1w
bC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdFJlY29yZGVySW1wbC5oCkBAIC0xMzQsOCArMTM0LDkgQEAgcHJpdmF0ZToKICAg
ICB2b2lkIHJlY29yZEFwcGx5RGV2aWNlU2NhbGVGYWN0b3IoZmxvYXQpIGZpbmFsOwogCiAgICAg
dm9pZCByZWNvcmRSZXNvdXJjZVVzZShOYXRpdmVJbWFnZSYpIGZpbmFsOwotICAgIHZvaWQgcmVj
b3JkUmVzb3VyY2VVc2UoRm9udCYpIGZpbmFsOwogICAgIHZvaWQgcmVjb3JkUmVzb3VyY2VVc2Uo
SW1hZ2VCdWZmZXImKSBmaW5hbDsKKyAgICB2b2lkIHJlY29yZFJlc291cmNlVXNlKFNvdXJjZUlt
YWdlJikgZmluYWw7CisgICAgdm9pZCByZWNvcmRSZXNvdXJjZVVzZShGb250JikgZmluYWw7CiAK
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8R3JhcGhpY3NDb250ZXh0PiBjcmVhdGVOZXN0ZWRDb250ZXh0
KGNvbnN0IEZsb2F0UmVjdCYgaW5pdGlhbENsaXAsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgaW5p
dGlhbENUTSkgZmluYWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmNw
cAppbmRleCA5NDFjMjA5M2NmNTZmMjIyMTEzYWJmMDAzZWQwOWYyYzg1MzNiNjU1Li4xZDg3MmRh
Mzc2ZTljYTk0MDM3N2I1NGNhNjdiMGJhZDAzNTc3ZDhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0UmVwbGF5ZXIuY3BwCkBAIC04NSwyNCArODUsMjkgQEAgaW5saW5lIHN0YXRpYyBz
dGQ6Om9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4gYXBwbHlTZXRTdGF0ZUl0
ZW0oR3JhcGgKIHsKICAgICBhdXRvJiBzZXRTdGF0ZUl0ZW0gPSBpdGVtLmdldDxTZXRTdGF0ZT4o
KTsKIAotICAgIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBzdHJva2VQYXR0ZXJuUmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyOwotICAgIE5hdGl2ZUltYWdlKiBzdHJva2VQYXR0ZXJuSW1h
Z2UgPSBudWxscHRyOwotICAgIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBmaWxsUGF0dGVy
blJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcjsKLSAgICBOYXRpdmVJbWFnZSogZmlsbFBhdHRl
cm5JbWFnZSA9IG51bGxwdHI7Ci0KLSAgICBpZiAoKHN0cm9rZVBhdHRlcm5SZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXIgPSBzZXRTdGF0ZUl0ZW0uc3Ryb2tlUGF0dGVybkltYWdlSWRlbnRpZmll
cigpKSkgewotICAgICAgICBzdHJva2VQYXR0ZXJuSW1hZ2UgPSByZXNvdXJjZUhlYXAuZ2V0TmF0
aXZlSW1hZ2Uoc3Ryb2tlUGF0dGVyblJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7Ci0gICAg
ICAgIGlmICghc3Ryb2tlUGF0dGVybkltYWdlKQotICAgICAgICAgICAgcmV0dXJuIHN0cm9rZVBh
dHRlcm5SZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI7Ci0gICAgfQorICAgIGF1dG8gY2FjaGVk
U291cmNlSW1hZ2UgPSBbJl0oUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHBhdHRlcm5JbWFn
ZUlkZW50aWZpZXIpIC0+IHN0ZDo6b3B0aW9uYWw8U291cmNlSW1hZ2U+IHsKKyAgICAgICAgaWYg
KCFwYXR0ZXJuSW1hZ2VJZGVudGlmaWVyKQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIAotICAgIGlmICgoZmlsbFBhdHRlcm5SZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgPSBz
ZXRTdGF0ZUl0ZW0uZmlsbFBhdHRlcm5JbWFnZUlkZW50aWZpZXIoKSkpIHsKLSAgICAgICAgZmls
bFBhdHRlcm5JbWFnZSA9IHJlc291cmNlSGVhcC5nZXROYXRpdmVJbWFnZShmaWxsUGF0dGVyblJl
bmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7Ci0gICAgICAgIGlmICghZmlsbFBhdHRlcm5JbWFn
ZSkKLSAgICAgICAgICAgIHJldHVybiBmaWxsUGF0dGVyblJlbmRlcmluZ1Jlc291cmNlSWRlbnRp
ZmllcjsKLSAgICB9CisgICAgICAgIGlmIChhdXRvIG5hdGl2ZUltYWdlID0gcmVzb3VyY2VIZWFw
LmdldE5hdGl2ZUltYWdlKHBhdHRlcm5JbWFnZUlkZW50aWZpZXIpKQorICAgICAgICAgICAgcmV0
dXJuIHsgKm5hdGl2ZUltYWdlIH07CisgICAgICAgIGlmIChhdXRvIGltYWdlQnVmZmVyID0gcmVz
b3VyY2VIZWFwLmdldEltYWdlQnVmZmVyKHBhdHRlcm5JbWFnZUlkZW50aWZpZXIpKQorICAgICAg
ICAgICAgcmV0dXJuIHsgKmltYWdlQnVmZmVyIH07CisKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKKyAgICB9OworCisgICAgYXV0byBzdHJva2VQYXR0ZXJuUmVuZGVyaW5nUmVzb3VyY2VJ
ZGVudGlmaWVyID0gc2V0U3RhdGVJdGVtLnN0cm9rZVBhdHRlcm5JbWFnZUlkZW50aWZpZXIoKTsK
KyAgICBhdXRvIHN0cm9rZVBhdHRlcm5JbWFnZSA9IGNhY2hlZFNvdXJjZUltYWdlKHN0cm9rZVBh
dHRlcm5SZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOworICAgIGlmICghc3Ryb2tlUGF0dGVy
bkltYWdlICYmIHN0cm9rZVBhdHRlcm5SZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCisgICAg
ICAgIHJldHVybiBzdHJva2VQYXR0ZXJuUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyOworCisg
ICAgYXV0byBmaWxsUGF0dGVyblJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciA9IHNldFN0YXRl
SXRlbS5maWxsUGF0dGVybkltYWdlSWRlbnRpZmllcigpOworICAgIGF1dG8gZmlsbFBhdHRlcm5J
bWFnZSA9IGNhY2hlZFNvdXJjZUltYWdlKGZpbGxQYXR0ZXJuUmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyKTsKKyAgICBpZiAoIWZpbGxQYXR0ZXJuSW1hZ2UgJiYgZmlsbFBhdHRlcm5SZW5kZXJp
bmdSZXNvdXJjZUlkZW50aWZpZXIpCisgICAgICAgIHJldHVybiBmaWxsUGF0dGVyblJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllcjsKIAotICAgIHNldFN0YXRlSXRlbS5hcHBseShjb250ZXh0LCBz
dHJva2VQYXR0ZXJuSW1hZ2UsIGZpbGxQYXR0ZXJuSW1hZ2UpOworICAgIHNldFN0YXRlSXRlbS5h
cHBseShjb250ZXh0LCBXVEZNb3ZlKHN0cm9rZVBhdHRlcm5JbWFnZSksIFdURk1vdmUoZmlsbFBh
dHRlcm5JbWFnZSkpOwogCiAgICAgaWYgKCFkZWxlZ2F0ZSkKICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvRkVUaWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRkVUaWxlLmNwcAppbmRleCA4MWFhMGM1M2ExYTgzNjU1Zjc4MmVjOTJhZTE3MDk4OWU0ODhm
NTNlLi5mNjRkOGJkYzEzNmQwMGFmMGJjMTI3NDJjZDI3ZDg4MzI3NzhiZDliIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFVGlsZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVRpbGUuY3BwCkBA
IC03MiwxNCArNzIsMTAgQEAgdm9pZCBGRVRpbGU6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZShjb25z
dCBGaWx0ZXImIGZpbHRlcikKICAgICB0aWxlSW1hZ2VDb250ZXh0LnRyYW5zbGF0ZSgtaW5NYXhF
ZmZlY3RMb2NhdGlvbi54KCksIC1pbk1heEVmZmVjdExvY2F0aW9uLnkoKSk7CiAgICAgdGlsZUlt
YWdlQ29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoKmluQnVmZmVyLCBpbi0+YWJzb2x1dGVQYWludFJl
Y3QoKS5sb2NhdGlvbigpKTsKIAotICAgIGF1dG8gdGlsZUltYWdlQ29weSA9IEltYWdlQnVmZmVy
OjpzaW5rSW50b05hdGl2ZUltYWdlKFdURk1vdmUodGlsZUltYWdlKSk7Ci0gICAgaWYgKCF0aWxl
SW1hZ2VDb3B5KQotICAgICAgICByZXR1cm47Ci0KICAgICBBZmZpbmVUcmFuc2Zvcm0gcGF0dGVy
blRyYW5zZm9ybTsKICAgICBwYXR0ZXJuVHJhbnNmb3JtLnRyYW5zbGF0ZShpbk1heEVmZmVjdExv
Y2F0aW9uIC0gbWF4RWZmZWN0TG9jYXRpb24pOwogCi0gICAgYXV0byBwYXR0ZXJuID0gUGF0dGVy
bjo6Y3JlYXRlKHRpbGVJbWFnZUNvcHkucmVsZWFzZU5vbk51bGwoKSwgeyB0cnVlLCB0cnVlLCBw
YXR0ZXJuVHJhbnNmb3JtIH0pOworICAgIGF1dG8gcGF0dGVybiA9IFBhdHRlcm46OmNyZWF0ZSh0
aWxlSW1hZ2UucmVsZWFzZU5vbk51bGwoKSwgeyB0cnVlLCB0cnVlLCBwYXR0ZXJuVHJhbnNmb3Jt
IH0pOwogCiAgICAgR3JhcGhpY3NDb250ZXh0JiBmaWx0ZXJDb250ZXh0ID0gcmVzdWx0SW1hZ2Ut
PmNvbnRleHQoKTsKICAgICBmaWx0ZXJDb250ZXh0LnNldEZpbGxQYXR0ZXJuKFdURk1vdmUocGF0
dGVybikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVy
QmFja2luZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5n
LmNwcAppbmRleCBhNzg0ZGJiYjgzN2Y3YjdlNDE3YjI2OWI2YjcwYmM5MjcyMzRkNTFkLi5lMTEw
ZmIwZGMzZmM4NGMxZmNlNmFkYzc3NjI3NzcyODA3OGVlMWM1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcApAQCAtMzMxNSwxMyArMzMxNSwx
MSBAQCBzdGF0aWMgUmVmUHRyPFBhdHRlcm4+IHBhdHRlcm5Gb3JEZXNjcmlwdGlvbihQYXR0ZXJu
RGVzY3JpcHRpb24gZGVzY3JpcHRpb24sIEZsbwogICAgICAgICBpbWFnZUNvbnRleHQuZHJhd1Rl
eHQoZm9udCwgdGV4dFJ1biwgeyB0ZXh0R2FwLCB5T2Zmc2V0IH0sIDApOwogICAgIH0KIAotICAg
IGF1dG8gdGlsZUltYWdlID0gSW1hZ2VCdWZmZXI6OnNpbmtJbnRvTmF0aXZlSW1hZ2UoV1RGTW92
ZShpbWFnZUJ1ZmZlcikpOwotCiAgICAgQWZmaW5lVHJhbnNmb3JtIHBhdHRlcm5PZmZzZXRUcmFu
c2Zvcm07CiAgICAgcGF0dGVybk9mZnNldFRyYW5zZm9ybS50cmFuc2xhdGUoY29udGVudE9mZnNl
dCArIGRlc2NyaXB0aW9uLnBoYXNlKTsKICAgICBwYXR0ZXJuT2Zmc2V0VHJhbnNmb3JtLnNjYWxl
KDEgLyBkZXN0Q29udGV4dC5zY2FsZUZhY3RvcigpKTsKIAotICAgIHJldHVybiBQYXR0ZXJuOjpj
cmVhdGUodGlsZUltYWdlLnJlbGVhc2VOb25OdWxsKCksIHsgdHJ1ZSwgdHJ1ZSwgcGF0dGVybk9m
ZnNldFRyYW5zZm9ybX0pOworICAgIHJldHVybiBQYXR0ZXJuOjpjcmVhdGUoaW1hZ2VCdWZmZXIu
cmVsZWFzZU5vbk51bGwoKSwgeyB0cnVlLCB0cnVlLCBwYXR0ZXJuT2Zmc2V0VHJhbnNmb3JtIH0p
OwogfTsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR1Jlc291cmNlUGF0dGVybi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR1Jlc291cmNlUGF0dGVybi5jcHAKaW5kZXggMmM2MDU1OTBkYjQwM2VmNDRi
ZjE3OGJjMDdjODQxNjA0OWMwOTUxYi4uNmRkYzdhMDYwNDVhMjRhODc1NjE1NWEzMTllNjdlOTZh
ODQ2ZTljNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdSZXNvdXJjZVBhdHRlcm4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuLmNwcApAQCAtMjUsNiArMjUsNyBAQAogI2luY2x1ZGUg
IkZyYW1lVmlldy5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgogI2luY2x1ZGUgIlJl
bmRlclNWR1Jvb3QuaCIKKyNpbmNsdWRlICJSZW5kZXJWaWV3LmgiCiAjaW5jbHVkZSAiU1ZHRWxl
bWVudFR5cGVIZWxwZXJzLmgiCiAjaW5jbHVkZSAiU1ZHRml0VG9WaWV3Qm94LmgiCiAjaW5jbHVk
ZSAiU1ZHUmVuZGVyaW5nQ29udGV4dC5oIgpAQCAtMTEzLDEwICsxMTQsNiBAQCBQYXR0ZXJuRGF0
YSogUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuOjpidWlsZFBhdHRlcm4oUmVuZGVyRWxlbWVudCYg
cmVuZGVyZXIsIE9wdAogCiAgICAgYXV0byB0aWxlSW1hZ2VTaXplID0gdGlsZUltYWdlLT5sb2dp
Y2FsU2l6ZSgpOwogCi0gICAgYXV0byBjb3BpZWRJbWFnZSA9IEltYWdlQnVmZmVyOjpzaW5rSW50
b05hdGl2ZUltYWdlKFdURk1vdmUodGlsZUltYWdlKSk7Ci0gICAgaWYgKCFjb3BpZWRJbWFnZSkK
LSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KICAgICAvLyBDb21wdXRlIHBhdHRlcm4gc3BhY2Ug
dHJhbnNmb3JtYXRpb24uCiAgICAgYXV0byBwYXR0ZXJuRGF0YSA9IG1ha2VVbmlxdWU8UGF0dGVy
bkRhdGE+KCk7CiAgICAgcGF0dGVybkRhdGEtPnRyYW5zZm9ybS50cmFuc2xhdGUodGlsZUJvdW5k
YXJpZXMubG9jYXRpb24oKSk7CkBAIC0xMzQsNyArMTMxLDcgQEAgUGF0dGVybkRhdGEqIFJlbmRl
clNWR1Jlc291cmNlUGF0dGVybjo6YnVpbGRQYXR0ZXJuKFJlbmRlckVsZW1lbnQmIHJlbmRlcmVy
LCBPcHQKICAgICB9CiAKICAgICAvLyBCdWlsZCBwYXR0ZXJuLgotICAgIHBhdHRlcm5EYXRhLT5w
YXR0ZXJuID0gUGF0dGVybjo6Y3JlYXRlKGNvcGllZEltYWdlLnJlbGVhc2VOb25OdWxsKCksIHsg
dHJ1ZSwgdHJ1ZSwgcGF0dGVybkRhdGEtPnRyYW5zZm9ybSB9KTsKKyAgICBwYXR0ZXJuRGF0YS0+
cGF0dGVybiA9IFBhdHRlcm46OmNyZWF0ZSh0aWxlSW1hZ2UucmVsZWFzZU5vbk51bGwoKSwgeyB0
cnVlLCB0cnVlLCBwYXR0ZXJuRGF0YS0+dHJhbnNmb3JtIH0pOwogCiAgICAgLy8gVmFyaW91cyBj
YWxscyBhYm92ZSBtYXkgdHJpZ2dlciBpbnZhbGlkYXRpb25zIGluIHNvbWUgZnJpbmdlIGNhc2Vz
IChJbWFnZUJ1ZmZlciBhbGxvY2F0aW9uCiAgICAgLy8gZmFpbHVyZXMgaW4gdGhlIFNWRyBpbWFn
ZSBjYWNoZSBmb3IgZXhhbXBsZSkuIFRvIGF2b2lkIGhhdmluZyBvdXIgUGF0dGVybkRhdGEgZGVs
ZXRlZCBieQpAQCAtMjU0LDcgKzI1MSw5IEBAIGJvb2wgUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJu
OjpidWlsZFRpbGVJbWFnZVRyYW5zZm9ybShSZW5kZXJFbGVtZW50JiByZW5kZXJlciwKIFJlZlB0
cjxJbWFnZUJ1ZmZlcj4gUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuOjpjcmVhdGVUaWxlSW1hZ2Uo
Y29uc3QgUGF0dGVybkF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMsIGNvbnN0IEZsb2F0UmVjdCYgdGls
ZUJvdW5kYXJpZXMsIGNvbnN0IEZsb2F0UmVjdCYgYWJzb2x1dGVUaWxlQm91bmRhcmllcywgY29u
c3QgQWZmaW5lVHJhbnNmb3JtJiB0aWxlSW1hZ2VUcmFuc2Zvcm0sIEZsb2F0UmVjdCYgY2xhbXBl
ZEFic29sdXRlVGlsZUJvdW5kYXJpZXMsIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSkgY29u
c3QKIHsKICAgICBjbGFtcGVkQWJzb2x1dGVUaWxlQm91bmRhcmllcyA9IEltYWdlQnVmZmVyOjpj
bGFtcGVkUmVjdChhYnNvbHV0ZVRpbGVCb3VuZGFyaWVzKTsKLSAgICBhdXRvIHRpbGVJbWFnZSA9
IFNWR1JlbmRlcmluZ0NvbnRleHQ6OmNyZWF0ZUltYWdlQnVmZmVyKGFic29sdXRlVGlsZUJvdW5k
YXJpZXMsIGNsYW1wZWRBYnNvbHV0ZVRpbGVCb3VuZGFyaWVzLCBEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2U6OlNSR0IoKSwgcmVuZGVyaW5nTW9kZSk7CisgICAgCisgICAgYXV0byBob3N0V2luZG93ID0g
dmlldygpLmZyYW1lVmlldygpLnJvb3QoKSA/IHZpZXcoKS5mcmFtZVZpZXcoKS5yb290KCktPmhv
c3RXaW5kb3coKSA6IG51bGxwdHI7CisgICAgYXV0byB0aWxlSW1hZ2UgPSBTVkdSZW5kZXJpbmdD
b250ZXh0OjpjcmVhdGVJbWFnZUJ1ZmZlcihhYnNvbHV0ZVRpbGVCb3VuZGFyaWVzLCBjbGFtcGVk
QWJzb2x1dGVUaWxlQm91bmRhcmllcywgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIHJl
bmRlcmluZ01vZGUsIGhvc3RXaW5kb3cpOwogICAgIGlmICghdGlsZUltYWdlKQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9TVkdSZW5kZXJpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
U1ZHUmVuZGVyaW5nQ29udGV4dC5jcHAKaW5kZXggMjBiOGI1ZTdiMDdiMzFhMTJjNWFhY2JhMzg1
ODkyZmJmM2EyMzU3My4uYmYxZTdmOTExOWIxN2MzODc2MDk4NWRkY2U5NzE1MTMyOTgyYjExOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJpbmdDb250
ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0Nv
bnRleHQuY3BwCkBAIC0yNTYsNyArMjU2LDcgQEAgUmVmUHRyPEltYWdlQnVmZmVyPiBTVkdSZW5k
ZXJpbmdDb250ZXh0OjpjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFJlY3QmIHRhcmcKICAg
ICByZXR1cm4gaW1hZ2VCdWZmZXI7CiB9CiAKLVJlZlB0cjxJbWFnZUJ1ZmZlcj4gU1ZHUmVuZGVy
aW5nQ29udGV4dDo6Y3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0
LCBjb25zdCBGbG9hdFJlY3QmIGNsYW1wZWRSZWN0LCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2UmIGNvbG9yU3BhY2UsIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwgY29uc3QgR3JhcGhp
Y3NDb250ZXh0KiBjb250ZXh0KQorUmVmUHRyPEltYWdlQnVmZmVyPiBTVkdSZW5kZXJpbmdDb250
ZXh0OjpjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0
IEZsb2F0UmVjdCYgY2xhbXBlZFJlY3QsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgY29s
b3JTcGFjZSwgUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlLCBIb3N0V2luZG93KiBob3N0V2lu
ZG93LCBjb25zdCBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQpCiB7CiAgICAgSW50U2l6ZSBjbGFt
cGVkU2l6ZSA9IHJvdW5kZWRJbnRTaXplKGNsYW1wZWRSZWN0LnNpemUoKSk7CiAgICAgRmxvYXRT
aXplIHVuY2xhbXBlZFNpemUgPSByb3VuZGVkSW50U2l6ZSh0YXJnZXRSZWN0LnNpemUoKSk7CkBA
IC0yNjksNyArMjY5LDcgQEAgUmVmUHRyPEltYWdlQnVmZmVyPiBTVkdSZW5kZXJpbmdDb250ZXh0
OjpjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFJlY3QmIHRhcmcKICAgICBhdXRvIGltYWdl
QnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShjbGFtcGVkU2l6ZSwgcmVuZGVyaW5nTW9kZSwg
Y29udGV4dCwgMSwgY29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKICNlbHNlCiAgICAg
VU5VU0VEX1BBUkFNKGNvbnRleHQpOwotICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZl
cjo6Y3JlYXRlKGNsYW1wZWRTaXplLCByZW5kZXJpbmdNb2RlLCAxLCBjb2xvclNwYWNlLCBQaXhl
bEZvcm1hdDo6QkdSQTgpOworICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3Jl
YXRlKGNsYW1wZWRTaXplLCByZW5kZXJpbmdNb2RlLCBTaG91bGRVc2VEaXNwbGF5TGlzdDo6Tm8s
IFJlbmRlcmluZ1B1cnBvc2U6OkRPTSwgMSwgY29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQ6OkJHUkE4
LCBob3N0V2luZG93KTsKICNlbmRpZgogICAgIGlmICghaW1hZ2VCdWZmZXIpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9T
VkdSZW5kZXJpbmdDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1Jl
bmRlcmluZ0NvbnRleHQuaAppbmRleCA1OTY1OTdiZTEyNDdhOTZhNjA0YWNjZjQ1N2UwOTI5ZmQw
ZjUwYTBlLi5lZmZmODNkZWMwNTM3ZGQ3ZWVlMjIxMDJkNGVhNmNkNDg4MDQ4ZWUzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0NvbnRleHQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0NvbnRleHQuaApA
QCAtNjEsNyArNjEsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc1JlbmRlcmluZ1ByZXBhcmVkKCkg
Y29uc3QgeyByZXR1cm4gbV9yZW5kZXJpbmdGbGFncyAmIFJlbmRlcmluZ1ByZXBhcmVkOyB9CiAK
ICAgICBzdGF0aWMgUmVmUHRyPEltYWdlQnVmZmVyPiBjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBG
bG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgYWJzb2x1dGVUcmFu
c2Zvcm0sIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYsIFJlbmRlcmluZ01vZGUsIGNvbnN0
IEdyYXBoaWNzQ29udGV4dCogPSBudWxscHRyKTsKLSAgICBzdGF0aWMgUmVmUHRyPEltYWdlQnVm
ZmVyPiBjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0
IEZsb2F0UmVjdCYgY2xhbXBlZFJlY3QsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYsIFJl
bmRlcmluZ01vZGUsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCogPSBudWxscHRyKTsKKyAgICBzdGF0
aWMgUmVmUHRyPEltYWdlQnVmZmVyPiBjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFJlY3Qm
IHRhcmdldFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgY2xhbXBlZFJlY3QsIGNvbnN0IERlc3RpbmF0
aW9uQ29sb3JTcGFjZSYsIFJlbmRlcmluZ01vZGUsIEhvc3RXaW5kb3cqID0gbnVsbHB0ciwgY29u
c3QgR3JhcGhpY3NDb250ZXh0KiA9IG51bGxwdHIpOwogCiAgICAgc3RhdGljIHZvaWQgcmVuZGVy
U3VidHJlZVRvQ29udGV4dChHcmFwaGljc0NvbnRleHQmLCBSZW5kZXJFbGVtZW50JiwgY29uc3Qg
QWZmaW5lVHJhbnNmb3JtJik7CiAgICAgc3RhdGljIHZvaWQgY2xpcFRvSW1hZ2VCdWZmZXIoR3Jh
cGhpY3NDb250ZXh0JiwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBhYnNvbHV0ZVRyYW5zZm9ybSwg
Y29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBSZWZQdHI8SW1hZ2VCdWZmZXI+JiwgYm9vbCBz
YWZlVG9DbGVhcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhp
Y3MvUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvZ3JhcGhpY3MvUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlci5jcHAKaW5kZXggYWRhNTRkNDE4
YTBiNjAyNTQ2YjE3ZTU3YzY2ZGQwY2Q2OTAzMGQxMy4uNWU2ZDg5OGU4ZGRiNTUzMzA5NGYyNzhk
NTU0NjdjODRkZTE2NmIxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dy
YXBoaWNzL1JlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyLmNwcApAQCAtMTIz
LDIwICsxMjMsMzIgQEAgdm9pZCBSZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyOjpzZXRTdGF0ZShE
aXNwbGF5TGlzdDo6U2V0U3RhdGUmJiBpdGVtKQogCiB2b2lkIFJlbW90ZURpc3BsYXlMaXN0UmVj
b3JkZXI6OnNldFN0YXRlV2l0aFF1YWxpZmllZElkZW50aWZpZXJzKERpc3BsYXlMaXN0OjpTZXRT
dGF0ZSYmIGl0ZW0sIFF1YWxpZmllZFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBzdHJva2VQ
YXR0ZXJuSW1hZ2VJZGVudGlmaWVyLCBRdWFsaWZpZWRSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXIgZmlsbFBhdHRlcm5JbWFnZUlkZW50aWZpZXIpCiB7Ci0gICAgUmVmUHRyPE5hdGl2ZUltYWdl
PiBzdHJva2VQYXR0ZXJuSW1hZ2U7Ci0gICAgaWYgKHN0cm9rZVBhdHRlcm5JbWFnZUlkZW50aWZp
ZXIpCi0gICAgICAgIHN0cm9rZVBhdHRlcm5JbWFnZSA9IHJlc291cmNlQ2FjaGUoKS5jYWNoZWRO
YXRpdmVJbWFnZShzdHJva2VQYXR0ZXJuSW1hZ2VJZGVudGlmaWVyKTsKKyAgICBhdXRvIGNhY2hl
ZFNvdXJjZUltYWdlID0gWyZdKFF1YWxpZmllZFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBw
YXR0ZXJuSW1hZ2VJZGVudGlmaWVyKSAtPiBzdGQ6Om9wdGlvbmFsPFNvdXJjZUltYWdlPiB7Cisg
ICAgICAgIGlmICghcGF0dGVybkltYWdlSWRlbnRpZmllcikKKyAgICAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKLSAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+IGZpbGxQYXR0ZXJuSW1hZ2U7
Ci0gICAgaWYgKGZpbGxQYXR0ZXJuSW1hZ2VJZGVudGlmaWVyKQotICAgICAgICBmaWxsUGF0dGVy
bkltYWdlID0gcmVzb3VyY2VDYWNoZSgpLmNhY2hlZE5hdGl2ZUltYWdlKGZpbGxQYXR0ZXJuSW1h
Z2VJZGVudGlmaWVyKTsKKyAgICAgICAgaWYgKGF1dG8gbmF0aXZlSW1hZ2UgPSByZXNvdXJjZUNh
Y2hlKCkuY2FjaGVkTmF0aXZlSW1hZ2UocGF0dGVybkltYWdlSWRlbnRpZmllcikpCisgICAgICAg
ICAgICByZXR1cm4geyAqbmF0aXZlSW1hZ2UgfTsKKyAgICAgICAgaWYgKGF1dG8gaW1hZ2VCdWZm
ZXIgPSByZXNvdXJjZUNhY2hlKCkuY2FjaGVkSW1hZ2VCdWZmZXIocGF0dGVybkltYWdlSWRlbnRp
ZmllcikpCisgICAgICAgICAgICByZXR1cm4geyAqaW1hZ2VCdWZmZXIgfTsKKworICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OworICAgIH07CisgICAgCisgICAgYXV0byBzdHJva2VQYXR0ZXJu
SW1hZ2UgPSBjYWNoZWRTb3VyY2VJbWFnZShzdHJva2VQYXR0ZXJuSW1hZ2VJZGVudGlmaWVyKTsK
KyAgICBpZiAoIXN0cm9rZVBhdHRlcm5JbWFnZSkKKyAgICAgICAgc3Ryb2tlUGF0dGVybkltYWdl
SWRlbnRpZmllciA9IHsgfTsKIAotICAgIGhhbmRsZUl0ZW0oV1RGTW92ZShpdGVtKSwgc3Ryb2tl
UGF0dGVybkltYWdlLmdldCgpLCBmaWxsUGF0dGVybkltYWdlLmdldCgpKTsKKyAgICBhdXRvIGZp
bGxQYXR0ZXJuSW1hZ2UgPSBjYWNoZWRTb3VyY2VJbWFnZShmaWxsUGF0dGVybkltYWdlSWRlbnRp
Zmllcik7CisgICAgaWYgKCFmaWxsUGF0dGVybkltYWdlKQorICAgICAgICBmaWxsUGF0dGVybklt
YWdlSWRlbnRpZmllciA9IHsgfTsKIAotICAgIGlmIChzdHJva2VQYXR0ZXJuSW1hZ2UpCisgICAg
aGFuZGxlSXRlbShXVEZNb3ZlKGl0ZW0pLCBXVEZNb3ZlKHN0cm9rZVBhdHRlcm5JbWFnZSksIFdU
Rk1vdmUoZmlsbFBhdHRlcm5JbWFnZSkpOworCisgICAgaWYgKHN0cm9rZVBhdHRlcm5JbWFnZUlk
ZW50aWZpZXIpCiAgICAgICAgIHJlc291cmNlQ2FjaGUoKS5yZWNvcmRSZXNvdXJjZVVzZShzdHJv
a2VQYXR0ZXJuSW1hZ2VJZGVudGlmaWVyKTsKIAotICAgIGlmIChmaWxsUGF0dGVybkltYWdlKQor
ICAgIGlmIChmaWxsUGF0dGVybkltYWdlSWRlbnRpZmllcikKICAgICAgICAgcmVzb3VyY2VDYWNo
ZSgpLnJlY29yZFJlc291cmNlVXNlKGZpbGxQYXR0ZXJuSW1hZ2VJZGVudGlmaWVyKTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVE
aXNwbGF5TGlzdFJlY29yZGVyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9SZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyUHJveHkuY3BwCmluZGV4IDk0MjFk
ZDIzOGNiNmVjNjNmZTFjMDdkNDczNjFjYjBiNjVmZjQwY2IuLjNiMzZjMjIwYzUzMjA5YTU2OTdh
OTIxZDFhN2U5MDY3NDE4OTkyYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvZ3JhcGhpY3MvUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlclByb3h5LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZURpc3BsYXlMaXN0UmVj
b3JkZXJQcm94eS5jcHAKQEAgLTQwNiwyNCArNDA2LDM2IEBAIHZvaWQgUmVtb3RlRGlzcGxheUxp
c3RSZWNvcmRlclByb3h5OjpyZWNvcmRSZXNvdXJjZVVzZShOYXRpdmVJbWFnZSYgaW1hZ2UpCiAg
ICAgbV9yZW5kZXJpbmdCYWNrZW5kLT5yZWNvcmROYXRpdmVJbWFnZVVzZShpbWFnZSk7CiB9CiAK
LXZvaWQgUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlclByb3h5OjpyZWNvcmRSZXNvdXJjZVVzZShG
b250JiBmb250KQordm9pZCBSZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyUHJveHk6OnJlY29yZFJl
c291cmNlVXNlKEltYWdlQnVmZmVyJiBpbWFnZUJ1ZmZlcikKIHsKICAgICBpZiAoVU5MSUtFTFko
IW1fcmVuZGVyaW5nQmFja2VuZCkpIHsKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBtX3JlbmRlcmluZ0JhY2tlbmQtPnJlY29yZEZv
bnRVc2UoZm9udCk7CisgICAgbV9yZW5kZXJpbmdCYWNrZW5kLT5yZWNvcmRJbWFnZUJ1ZmZlclVz
ZShpbWFnZUJ1ZmZlcik7CiB9CiAKLXZvaWQgUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlclByb3h5
OjpyZWNvcmRSZXNvdXJjZVVzZShJbWFnZUJ1ZmZlciYgaW1hZ2VCdWZmZXIpCit2b2lkIFJlbW90
ZURpc3BsYXlMaXN0UmVjb3JkZXJQcm94eTo6cmVjb3JkUmVzb3VyY2VVc2UoU291cmNlSW1hZ2Um
IGltYWdlKQoreworICAgIFdURjo6c3dpdGNoT24oaW1hZ2UsCisgICAgICAgIFsmXSAoY29uc3Qg
UmVmPE5hdGl2ZUltYWdlPiYgbmF0aXZlSW1hZ2UpIHsKKyAgICAgICAgICAgIHJlY29yZFJlc291
cmNlVXNlKG5hdGl2ZUltYWdlKTsKKyAgICAgICAgfSwKKyAgICAgICAgWyZdIChjb25zdCBSZWY8
SW1hZ2VCdWZmZXI+JiBpbWFnZUJ1ZmZlcikgeworICAgICAgICAgICAgcmVjb3JkUmVzb3VyY2VV
c2UoaW1hZ2VCdWZmZXIpOworICAgICAgICB9CisgICAgKTsKK30KKwordm9pZCBSZW1vdGVEaXNw
bGF5TGlzdFJlY29yZGVyUHJveHk6OnJlY29yZFJlc291cmNlVXNlKEZvbnQmIGZvbnQpCiB7CiAg
ICAgaWYgKFVOTElLRUxZKCFtX3JlbmRlcmluZ0JhY2tlbmQpKSB7CiAgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbV9yZW5kZXJpbmdC
YWNrZW5kLT5yZWNvcmRJbWFnZUJ1ZmZlclVzZShpbWFnZUJ1ZmZlcik7CisgICAgbV9yZW5kZXJp
bmdCYWNrZW5kLT5yZWNvcmRGb250VXNlKGZvbnQpOwogfQogCiB2b2lkIFJlbW90ZURpc3BsYXlM
aXN0UmVjb3JkZXJQcm94eTo6Zmx1c2hDb250ZXh0KEdyYXBoaWNzQ29udGV4dEZsdXNoSWRlbnRp
ZmllciBpZGVudGlmaWVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9SZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyUHJveHkuaCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlclByb3h5
LmgKaW5kZXggNzFmZGI2M2RmNGFjODQ5NzQ3MjMyNjliN2YwM2Q5OTdiODEzOTg5ZC4uY2NhNmNm
NjBlZDA5ZDIxOWRiNTgyM2VlMjM0NDFhNzI0NjUwNGI4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyUHJv
eHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZURp
c3BsYXlMaXN0UmVjb3JkZXJQcm94eS5oCkBAIC0xMzYsOCArMTM2LDkgQEAgcHJpdmF0ZToKICAg
ICB2b2lkIHJlY29yZEFwcGx5RGV2aWNlU2NhbGVGYWN0b3IoZmxvYXQpIGZpbmFsOwogCiAgICAg
dm9pZCByZWNvcmRSZXNvdXJjZVVzZShXZWJDb3JlOjpOYXRpdmVJbWFnZSYpIGZpbmFsOwotICAg
IHZvaWQgcmVjb3JkUmVzb3VyY2VVc2UoV2ViQ29yZTo6Rm9udCYpIGZpbmFsOwogICAgIHZvaWQg
cmVjb3JkUmVzb3VyY2VVc2UoV2ViQ29yZTo6SW1hZ2VCdWZmZXImKSBmaW5hbDsKKyAgICB2b2lk
IHJlY29yZFJlc291cmNlVXNlKFdlYkNvcmU6OlNvdXJjZUltYWdlJikgZmluYWw7CisgICAgdm9p
ZCByZWNvcmRSZXNvdXJjZVVzZShXZWJDb3JlOjpGb250JikgZmluYWw7CiAKICAgICBzdGQ6OnVu
aXF1ZV9wdHI8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0PiBjcmVhdGVOZXN0ZWRDb250ZXh0KGNv
bnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgaW5pdGlhbENsaXAsIGNvbnN0IFdlYkNvcmU6OkFmZmlu
ZVRyYW5zZm9ybSYgaW5pdGlhbENUTSkgZmluYWw7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>444334</attachid>
            <date>2021-11-15 20:20:33 -0800</date>
            <delta_ts>2021-11-15 21:00:10 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-232411-20211115202032.patch</filename>
            <type>text/plain</type>
            <size>47114</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg1Nzk2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmQ1YWJmYjdlYThmZGY3
ODJlN2EyM2Q0NTQxY2RjOWFiN2U1NzUxNy4uOWYyZTM2MTJmMjJmMjExZGEwNjQ3ODViNDM2Yjky
MGIyZjY0ZDY0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY0IEBACisyMDIxLTExLTE1ICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2VzcyBd
IFBhdHRlcm4gc2hvdWxkIGhvbGQgYW4gSW1hZ2VCdWZmZXIgd2hpY2ggY2FuIGJlIGNvbnZlcnRl
ZCB0byBhIE5hdGl2ZUltYWdlIHdoZW4gbmVlZGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzI0MTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgdGhlIG5ldyB0eXBlIGNhbGxlZCAnU291cmNlSW1h
Z2UnIHdoaWNoIGlzIGEgdmFyaWFudCBvZiBOYXRpdmVJbWFnZSAKKyAgICAgICAgYW5kIEltYWdl
QnVmZmVyLiBNYWtlIFBhdHRlcm4gaG9sZCBhIFNvdXJjZUltYWdlIGFuZCBwcm92aWRlIGdldHRl
cnMgdG8gCisgICAgICAgIHJldHJpZXZlIHRoZSBOYXRpdmVJbWFnZSBhbmQgSW1hZ2VCdWZmZXIu
IEluIHRoZXNlIGdldHRlcnMgd2UgY29udmVydAorICAgICAgICBmcm9tIGltYWdlIHNvdXJjZSB0
byB0aGUgb3RoZXIuCisKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBXZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFz
UGF0dGVybi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNQYXR0ZXJuOjpjcmVhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUGF0dGVybjo6Q2FudmFzUGF0dGVybik6CisgICAgICAg
ICogaHRtbC9jYW52YXMvQ2FudmFzUGF0dGVybi5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL0Nh
bnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFz
UmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6Y3JlYXRlUGF0dGVybik6CisgICAgICAgICogaW5zcGVj
dG9yL0luc3BlY3RvckNhbnZhcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDYW52
YXM6OmJ1aWxkQXJyYXlGb3JDYW52YXNQYXR0ZXJuKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9QYXR0ZXJuLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhdHRlcm46OmNyZWF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpQYXR0ZXJuOjpQYXR0ZXJuKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9QYXR0ZXJuLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlSW1h
Z2UuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUltYWdlOjpTb3VyY2VJbWFn
ZSk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VJbWFnZTo6bmF0aXZlSW1hZ2VJZkV4aXN0cyBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VJbWFnZTo6bmF0aXZlSW1hZ2UpOgorICAg
ICAgICAoV2ViQ29yZTo6U291cmNlSW1hZ2U6OmltYWdlQnVmZmVySWZFeGlzdHMgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6U291cmNlSW1hZ2U6OmltYWdlQnVmZmVyKToKKyAgICAgICAgKFdl
YkNvcmU6OlNvdXJjZUltYWdlOjppbWFnZUlkZW50aWZpZXIgY29uc3QpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL1NvdXJjZUltYWdlLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL1BhdHRlcm4uY3BwLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2NhaXJvL0NhaXJvT3BlcmF0aW9ucy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWlybzo6
RmlsbFNvdXJjZTo6RmlsbFNvdXJjZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vUGF0dGVybkNhaXJvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhdHRlcm46OmNyZWF0ZVBs
YXRmb3JtUGF0dGVybiBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGF0
dGVybkNHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhdHRlcm46OmNyZWF0ZVBsYXRmb3JtUGF0
dGVybiBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0SXRlbXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlNldFN0
YXRlOjphcHBseSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0SXRlbXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpTZXRTdGF0
ZTo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3RSZWNvcmRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rp
c3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVySW1wbC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6UmVjb3JkZXJJbXBsOjpyZWNvcmRSZXNvdXJjZVVzZSk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXJJbXBs
Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
UmVwbGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OmFwcGx5U2V0U3Rh
dGVJdGVtKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFVGlsZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpGRVRpbGU6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSk6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpwYXR0ZXJuRm9yRGVzY3JpcHRpb24pOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHUmVzb3VyY2VQYXR0ZXJuLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291
cmNlUGF0dGVybjo6YnVpbGRQYXR0ZXJuKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jl
c291cmNlUGF0dGVybjo6Y3JlYXRlVGlsZUltYWdlIGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJp
bmcvc3ZnL1NWR1JlbmRlcmluZ0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVu
ZGVyaW5nQ29udGV4dDo6Y3JlYXRlSW1hZ2VCdWZmZXIpOgorICAgICAgICAqIHJlbmRlcmluZy9z
dmcvU1ZHUmVuZGVyaW5nQ29udGV4dC5oOgorCiAyMDIxLTExLTE0ICBTYWlkIEFib3UtSGFsbGF3
YSAgPHNhaWRAYXBwbGUuY29tPgogCiAgICAgICAgIFtHUFUgUHJvY2Vzc10gUmVtb3ZlIHRoZSBy
ZWZlcmVuY2UgdG8gRmlsdGVyIGZyb20gRmlsdGVyRWZmZWN0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGFmNjc3NTc1
MDQ5YmYxNzgwNTk0ODg1NjY5MGRiNjJkMWI0MGVjNjguLjYxZWNiNDc1YWVjZWU4ZDU4YzkwNzBj
ZDVjNDdkOGUyMWZhZjRhNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMjEtMTEtMTUg
IFNhaWQgQWJvdS1IYWxsYXdhICA8c2FpZEBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQVSBQcm9j
ZXNzIF0gUGF0dGVybiBzaG91bGQgaG9sZCBhbiBJbWFnZUJ1ZmZlciB3aGljaCBjYW4gYmUgY29u
dmVydGVkIHRvIGEgTmF0aXZlSW1hZ2Ugd2hlbiBuZWVkZWQKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMjQxMQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEhhbmRsZSBlbmNvZGluZyBhbWQgZGVjb2Rpbmcg
dGhlIFNvdXJjZUltYWdlIGZvciByZWNvcmRpbmcgYW5kIHJlcGxheWluZworICAgICAgICB0aGUg
U2V0U3RhdGUgRGlzcGxheUxpc3QgaXRlbSBpbiBHUFVQcm9jZXNzLgorCisgICAgICAgICogR1BV
UHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlcjo6c2V0U3RhdGVXaXRoUXVhbGlmaWVk
SWRlbnRpZmllcnMpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZURp
c3BsYXlMaXN0UmVjb3JkZXJQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZURpc3Bs
YXlMaXN0UmVjb3JkZXJQcm94eTo6cmVjb3JkUmVzb3VyY2VVc2UpOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXJQcm94eS5oOgorCiAy
MDIxLTExLTE0ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAg
ICAgIEF0dGFjaCBJT0hJREV2ZW50IHRpbWVzdGFtcHMgdG8gd2hlZWwgZXZlbnRzCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMu
dHh0CmluZGV4IDU0ZDhkM2JkOTgwZThiOWI2YjgyMWY5Y2NiNGZhNTIyZTFiZjFlMDIuLjcyOGU0
ZGIxNDIwNTA5NjgyNTIxN2MxMzZjZjVkMDAwMTBhMDk3NjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBAIC0y
MDU5LDYgKzIwNTksNyBAQCBwbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVWaWRlb1NhbXBsZS5jcHAK
IHBsYXRmb3JtL2dyYXBoaWNzL1JvdW5kZWRSZWN0LmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvU2hh
ZG93Qmx1ci5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL1NvdXJjZUJ1ZmZlclByaXZhdGUuY3BwCitw
bGF0Zm9ybS9ncmFwaGljcy9Tb3VyY2VJbWFnZS5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL1N0cmlu
Z1RydW5jYXRvci5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL1RleHRSdW4uY3BwCiBwbGF0Zm9ybS9n
cmFwaGljcy9UZXh0VHJhY2tSZXByZXNlbnRhdGlvbi5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA5OTgxMGViODIwM2NjZGE2
YjVjOWUzODE2MTRiNjJiZTZlZjJhMWNjLi43YzkzZWVmNTJlNzk3Mjc2OTZmMDYwZTVlMTI4MzA4
M2Q3MWRlMTgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCkBAIC0yMjkxLDYgKzIyOTEsNyBAQAogCQk3MUYwNUY4MDI1MTI0NDJFMDA3
MUU2OTMgLyogQ1NTUHJvcGVydHlBbmltYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcxRjA1RjdFMjUxMjQ0MEMwMDcxRTY5MyAvKiBDU1NQcm9w
ZXJ0eUFuaW1hdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTcyMTQ0MzMzMjIzRUM4QjAwMEYxMkZGNyAvKiBTVkdQcm9wZXJ0eS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTVFRTUzNjMyMjNCMkEy
NDAwRkJBOTQ0IC8qIFNWR1Byb3BlcnR5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzIxNDQzMzQyMjNFQzkxNjAwRjEyRkY3IC8qIFNWR1Byb3Bl
cnR5T3duZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDU1RUU1MzYwMjIzQjJBMjEwMEZCQTk0NCAvKiBTVkdQcm9wZXJ0eU93bmVyLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNzIxNEI5QTkyNzQyRkI5
OTAwM0JFNkRGIC8qIFNvdXJjZUltYWdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA3MjE0QjlBODI3NDJGNjI5MDAzQkU2REYgLyogU291cmNlSW1hZ2Uu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3MjFC
NDk3NDI1MTJCQTNCMDBGRTlEM0IgLyogSW1hZ2VCaXRtYXBCYWNraW5nLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MjFCNDk3MDI1MTJBQzA0MDBGRTlE
M0IgLyogSW1hZ2VCaXRtYXBCYWNraW5nLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzIyODNGMEUyMzBCMjY4QzAwRjVEODI4IC8qIEltYWdlUGFp
bnRpbmdPcHRpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA3MkMxOEEzRjIzMEIwNEI3MDA2ODQ3QzcgLyogSW1hZ2VQYWludGluZ09wdGlvbnMuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3MjRFRDMz
MjFBM0E4QjIzMDBGNUYxM0MgLyogSlNFWFRCbGVuZE1pbk1heC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzI0RUQzMzAxQTNBOEIyMzAwRjVGMTNDIC8q
IEpTRVhUQmxlbmRNaW5NYXguaCAqLzsgfTsKQEAgLTEwODQ3LDYgKzEwODQ4LDggQEAKIAkJNzFG
Rjg1MTgyMkEzRjgxRjAwNUQ1OTU5IC8qIE5hdmlnYXRvck1heFRvdWNoUG9pbnRzLmlkbCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQ7IHBhdGggPSBOYXZpZ2F0b3JNYXhUb3VjaFBvaW50cy5pZGw7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyMTQ0MzQ1MjI0MEM4QkEwMEYxMkZGNyAvKiBTVkdBbmlt
YXRlZFZhbHVlUHJvcGVydHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHQW5pbWF0ZWRWYWx1ZVByb3Bl
cnR5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyMTQ0MzQ2MjI0MENBRDIwMEYx
MkZGNyAvKiBTVkdWYWx1ZVByb3BlcnR5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR1ZhbHVlUHJvcGVy
dHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzIxNEI5QTgyNzQyRjYyOTAwM0JF
NkRGIC8qIFNvdXJjZUltYWdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNvdXJjZUltYWdlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcyMTRCOUFDMjc0MzUxNEEwMDNCRTZERiAvKiBTb3Vy
Y2VJbWFnZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTb3VyY2VJbWFnZS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyMUI0OTZGMjUxMkFDMDQwMEZFOUQzQiAvKiBJbWFnZUJp
dG1hcEJhY2tpbmcuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW1hZ2VCaXRtYXBCYWNraW5nLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzIxQjQ5NzAyNTEyQUMwNDAwRkU5RDNC
IC8qIEltYWdlQml0bWFwQmFja2luZy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbWFnZUJpdG1hcEJhY2tp
bmcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzIyQTgxNUMyMzhGRDUwNTAwQzAw
NTgzIC8qIEFuaW1hdGlvbkZyYW1lUmF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBbmltYXRpb25GcmFt
ZVJhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI4MDM0LDYgKzI4MDM3LDgg
QEAKIAkJCQkxREQxMjdBQzI1NkUzQTg3MDBCMjI3RDcgLyogU291cmNlQnVmZmVyUHJpdmF0ZS5j
cHAgKi8sCiAJCQkJQ0Q2NDFFQjIxODE4RjVFRDAwRUU0QzQxIC8qIFNvdXJjZUJ1ZmZlclByaXZh
dGUuaCAqLywKIAkJCQlDREM4QjVBQzE4MDRBRTVEMDAxNkU2ODUgLyogU291cmNlQnVmZmVyUHJp
dmF0ZUNsaWVudC5oICovLAorCQkJCTcyMTRCOUFDMjc0MzUxNEEwMDNCRTZERiAvKiBTb3VyY2VJ
bWFnZS5jcHAgKi8sCisJCQkJNzIxNEI5QTgyNzQyRjYyOTAwM0JFNkRGIC8qIFNvdXJjZUltYWdl
LmggKi8sCiAJCQkJN0M4M0RFODUxRDA0Q0JENDAwRkVCQ0YzIC8qIFNwcmluZ1NvbHZlci5oICov
LAogCQkJCUIyMzU0MEYwMEQwMDc4MkUwMDIzODJGQSAvKiBTdHJpbmdUcnVuY2F0b3IuY3BwICov
LAogCQkJCUIyMzU0MEYxMEQwMDc4MkUwMDIzODJGQSAvKiBTdHJpbmdUcnVuY2F0b3IuaCAqLywK
QEAgLTM2MTA5LDYgKzM2MTE0LDcgQEAKIAkJCQlDREM4QjVBQjE4MDQ3RkYxMDAxNkU2ODUgLyog
U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMuaCBpbiBIZWFkZXJzICovLAogCQkJCUNEQzhCNUFE
MTgwNEFFNUQwMDE2RTY4NSAvKiBTb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50LmggaW4gSGVhZGVy
cyAqLywKIAkJCQk4NEE4MUY0MjBGQzdFMDI3MDA5NTUzMDAgLyogU291cmNlR3JhcGhpYy5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJNzIxNEI5QTkyNzQyRkI5OTAwM0JFNkRGIC8qIFNvdXJjZUltYWdl
LmggaW4gSGVhZGVycyAqLywKIAkJCQlEMDFBMjdBRTEwQzlCRkQ4MDAwMjZBNDIgLyogU3BhY2VT
cGxpdFN0cmluZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNjI2Q0RFMEYxMTQwNDI0QzAwMUU1QTY4
IC8qIFNwYXRpYWxOYXZpZ2F0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzQ5NTBDRDI1Mzk0
MzYxMDA5OUYxNzEgLyogU3BlZWNoUmVjb2duaXRpb24uaCBpbiBIZWFkZXJzICovLApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUGF0dGVybi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNQYXR0ZXJuLmNwcAppbmRleCA4ZjE5MzgyY2Iy
MDNkMmU0MTFiY2E5NTdhNjkxYjFmYWM5OGEyY2ExLi42MGNlM2RlYTYxZTI0ZmE3YmQ0OWUyOGYx
N2U3ZTQ0OGNkYjIwODJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9D
YW52YXNQYXR0ZXJuLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNQ
YXR0ZXJuLmNwcApAQCAtMzQsMTIgKzM0LDEyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
UmVmPENhbnZhc1BhdHRlcm4+IENhbnZhc1BhdHRlcm46OmNyZWF0ZShSZWY8TmF0aXZlSW1hZ2U+
JiYgaW1hZ2UsIGJvb2wgcmVwZWF0WCwgYm9vbCByZXBlYXRZLCBib29sIG9yaWdpbkNsZWFuKQor
UmVmPENhbnZhc1BhdHRlcm4+IENhbnZhc1BhdHRlcm46OmNyZWF0ZShTb3VyY2VJbWFnZSYmIGlt
YWdlLCBib29sIHJlcGVhdFgsIGJvb2wgcmVwZWF0WSwgYm9vbCBvcmlnaW5DbGVhbikKIHsKICAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDYW52YXNQYXR0ZXJuKFdURk1vdmUoaW1hZ2UpLCByZXBl
YXRYLCByZXBlYXRZLCBvcmlnaW5DbGVhbikpOwogfQogCi1DYW52YXNQYXR0ZXJuOjpDYW52YXNQ
YXR0ZXJuKFJlZjxOYXRpdmVJbWFnZT4mJiBpbWFnZSwgYm9vbCByZXBlYXRYLCBib29sIHJlcGVh
dFksIGJvb2wgb3JpZ2luQ2xlYW4pCitDYW52YXNQYXR0ZXJuOjpDYW52YXNQYXR0ZXJuKFNvdXJj
ZUltYWdlJiYgaW1hZ2UsIGJvb2wgcmVwZWF0WCwgYm9vbCByZXBlYXRZLCBib29sIG9yaWdpbkNs
ZWFuKQogICAgIDogbV9wYXR0ZXJuKFBhdHRlcm46OmNyZWF0ZShXVEZNb3ZlKGltYWdlKSwgeyBy
ZXBlYXRYLCByZXBlYXRZIH0pKQogICAgICwgbV9vcmlnaW5DbGVhbihvcmlnaW5DbGVhbikKIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1BhdHRlcm4uaCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1BhdHRlcm4uaAppbmRleCBlNDZkMjFi
YzUxMzVkOWE3NGY0NTc1YzlkZDY1ZTljZWNkY2I4ZDJhLi44NzFlMDQ1NzdjYzUxZTU5ODA1N2Jl
Y2UyYWJkNzVmNjZhYzk5YzYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9DYW52YXNQYXR0ZXJuLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFz
UGF0dGVybi5oCkBAIC0zMiwxMyArMzIsMTMgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1j
bGFzcyBOYXRpdmVJbWFnZTsKIGNsYXNzIFBhdHRlcm47CitjbGFzcyBTb3VyY2VJbWFnZTsKIHN0
cnVjdCBET01NYXRyaXgyREluaXQ7CiAKIGNsYXNzIENhbnZhc1BhdHRlcm4gOiBwdWJsaWMgUmVm
Q291bnRlZDxDYW52YXNQYXR0ZXJuPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxDYW52YXNQ
YXR0ZXJuPiBjcmVhdGUoUmVmPE5hdGl2ZUltYWdlPiYmLCBib29sIHJlcGVhdFgsIGJvb2wgcmVw
ZWF0WSwgYm9vbCBvcmlnaW5DbGVhbik7CisgICAgc3RhdGljIFJlZjxDYW52YXNQYXR0ZXJuPiBj
cmVhdGUoU291cmNlSW1hZ2UmJiwgYm9vbCByZXBlYXRYLCBib29sIHJlcGVhdFksIGJvb2wgb3Jp
Z2luQ2xlYW4pOwogICAgIH5DYW52YXNQYXR0ZXJuKCk7CiAKICAgICBzdGF0aWMgYm9vbCBwYXJz
ZVJlcGV0aXRpb25UeXBlKGNvbnN0IFN0cmluZyYsIGJvb2wmIHJlcGVhdFgsIGJvb2wmIHJlcGVh
dFkpOwpAQCAtNTEsNyArNTEsNyBAQCBwdWJsaWM6CiAgICAgRXhjZXB0aW9uT3I8dm9pZD4gc2V0
VHJhbnNmb3JtKERPTU1hdHJpeDJESW5pdCYmKTsKIAogcHJpdmF0ZToKLSAgICBDYW52YXNQYXR0
ZXJuKFJlZjxOYXRpdmVJbWFnZT4mJiwgYm9vbCByZXBlYXRYLCBib29sIHJlcGVhdFksIGJvb2wg
b3JpZ2luQ2xlYW4pOworICAgIENhbnZhc1BhdHRlcm4oU291cmNlSW1hZ2UmJiwgYm9vbCByZXBl
YXRYLCBib29sIHJlcGVhdFksIGJvb2wgb3JpZ2luQ2xlYW4pOwogCiAgICAgUmVmPFBhdHRlcm4+
IG1fcGF0dGVybjsKICAgICBib29sIG1fb3JpZ2luQ2xlYW47CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuY3Bw
CmluZGV4IDZkZWZlYjgxMmMzNzIyYzM4ZWEyZmM4ZDA3OTFmYWUyOWIxNjBkNmUuLjFlMDY2NDdk
ZGU3ZmZlNzA4MTYwNWEzYWY3MjBkOTQ0ZTU0MjIwZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuY3Bw
CkBAIC0xOTk0LDcgKzE5OTQsNyBAQCBFeGNlcHRpb25PcjxSZWZQdHI8Q2FudmFzUGF0dGVybj4+
IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmNyZWF0ZVBhdHRlcm4oSAogCiAgICAgdmlk
ZW9FbGVtZW50LnBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0KGltYWdlQnVmZmVyLT5jb250ZXh0
KCksIEZsb2F0UmVjdChGbG9hdFBvaW50KCksIHNpemUodmlkZW9FbGVtZW50KSkpOwogICAgIAot
ICAgIHJldHVybiBSZWZQdHI8Q2FudmFzUGF0dGVybj4geyBDYW52YXNQYXR0ZXJuOjpjcmVhdGUo
SW1hZ2VCdWZmZXI6OnNpbmtJbnRvTmF0aXZlSW1hZ2UoV1RGTW92ZShpbWFnZUJ1ZmZlcikpLnJl
bGVhc2VOb25OdWxsKCksIHJlcGVhdFgsIHJlcGVhdFksIG9yaWdpbkNsZWFuKSB9OworICAgIHJl
dHVybiBSZWZQdHI8Q2FudmFzUGF0dGVybj4geyBDYW52YXNQYXR0ZXJuOjpjcmVhdGUoaW1hZ2VC
dWZmZXIucmVsZWFzZU5vbk51bGwoKSwgcmVwZWF0WCwgcmVwZWF0WSwgb3JpZ2luQ2xlYW4pIH07
CiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckNhbnZhcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFz
LmNwcAppbmRleCBlODQ3ZmU2ODExMjczMjUwNmIxZDA4NDZmNjMzZGFjNGI5NjlkMTY1Li4wMzE5
Y2MzN2RmMjVmMmM2NmY5NmMyNTk2MTIxMTVjODkzODNjNzdlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzLmNwcApAQCAtMTMzNiwxMCArMTMzNiw3IEBAIFJl
ZjxKU09OOjpBcnJheU9mPEpTT046OlZhbHVlPj4gSW5zcGVjdG9yQ2FudmFzOjpidWlsZEFycmF5
Rm9yQ2FudmFzR3JhZGllbnQoY29uCiAKIFJlZjxKU09OOjpBcnJheU9mPEpTT046OlZhbHVlPj4g
SW5zcGVjdG9yQ2FudmFzOjpidWlsZEFycmF5Rm9yQ2FudmFzUGF0dGVybihjb25zdCBDYW52YXNQ
YXR0ZXJuJiBjYW52YXNQYXR0ZXJuKQogewotICAgIGF1dG8mIHRpbGVJbWFnZSA9IGNhbnZhc1Bh
dHRlcm4ucGF0dGVybigpLnRpbGVJbWFnZSgpOwotICAgIEZsb2F0UmVjdCByZWN0ID0geyB7IH0s
IHRpbGVJbWFnZS5zaXplKCkgfTsKLSAgICBhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6
OmNyZWF0ZSh0aWxlSW1hZ2Uuc2l6ZSgpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAx
LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKLSAg
ICBpbWFnZUJ1ZmZlci0+Y29udGV4dCgpLmRyYXdOYXRpdmVJbWFnZSh0aWxlSW1hZ2UsIHRpbGVJ
bWFnZS5zaXplKCksIHJlY3QsIHJlY3QpOworICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBjYW52YXNQ
YXR0ZXJuLnBhdHRlcm4oKS50aWxlSW1hZ2VCdWZmZXIoKTsKIAogICAgIFN0cmluZyByZXBlYXQ7
CiAgICAgYm9vbCByZXBlYXRYID0gY2FudmFzUGF0dGVybi5wYXR0ZXJuKCkucmVwZWF0WCgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0dGVybi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXR0ZXJuLmNwcAppbmRleCA2MzUz
MjM3NjlmODAzM2RlMzI4ZThkNDRlNTc5NzVhMWQzY2Q2MDY1Li4xMDRiMzA2YTNhODgxMzA5NGMx
NzUzMGRlYWRjMWJlYzdiNzMwMjRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9QYXR0ZXJuLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9QYXR0ZXJuLmNwcApAQCAtMjcsMTYgKzI3LDE4IEBACiAjaW5jbHVkZSAiY29uZmlnLmgi
CiAjaW5jbHVkZSAiUGF0dGVybi5oIgogCisjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCiAj
aW5jbHVkZSAiSW1hZ2UuaCIKKyNpbmNsdWRlICJJbWFnZUJ1ZmZlci5oIgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLVJlZjxQYXR0ZXJuPiBQYXR0ZXJuOjpjcmVhdGUoUmVmPE5hdGl2ZUltYWdl
PiYmIHRpbGVJbWFnZSwgY29uc3QgUGFyYW1ldGVycyYgcGFyYW1ldGVycykKK1JlZjxQYXR0ZXJu
PiBQYXR0ZXJuOjpjcmVhdGUoU291cmNlSW1hZ2UmJiB0aWxlSW1hZ2UsIGNvbnN0IFBhcmFtZXRl
cnMmIHBhcmFtZXRlcnMpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUGF0dGVybihXVEZN
b3ZlKHRpbGVJbWFnZSksIHBhcmFtZXRlcnMpKTsKIH0KIAotUGF0dGVybjo6UGF0dGVybihSZWY8
TmF0aXZlSW1hZ2U+JiYgaW1hZ2UsIGNvbnN0IFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCitQYXR0
ZXJuOjpQYXR0ZXJuKFNvdXJjZUltYWdlJiYgaW1hZ2UsIGNvbnN0IFBhcmFtZXRlcnMmIHBhcmFt
ZXRlcnMpCiAgICAgOiBtX3RpbGVJbWFnZShXVEZNb3ZlKGltYWdlKSkKICAgICAsIG1fcGFyYW1l
dGVycyhwYXJhbWV0ZXJzKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvUGF0dGVybi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0
dGVybi5oCmluZGV4IDFjOTYxZmJmNDZlODM2ZjQwMDdlNjBhOTgxNDFmNDkxMjRiNTQ1MDMuLjQ2
MWRiNmE4ODQ1ZmJiZTg2N2VhNTk2ZjIwMGU4MmY4OTBlYmZmYjUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BhdHRlcm4uaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXR0ZXJuLmgKQEAgLTI4LDcgKzI4LDcgQEAKICNwcmFnbWEg
b25jZQogCiAjaW5jbHVkZSAiQWZmaW5lVHJhbnNmb3JtLmgiCi0jaW5jbHVkZSAiSW1hZ2UuaCIK
KyNpbmNsdWRlICJTb3VyY2VJbWFnZS5oIgogCiAjaW5jbHVkZSA8d3RmL1JlZi5oPgogI2luY2x1
ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CkBAIC01Miw3ICs1Miw2IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogY2xhc3MgQWZmaW5lVHJhbnNmb3JtOwogY2xhc3MgR3JhcGhpY3NDb250ZXh0OwotY2xh
c3MgSW1hZ2U7CiAKIGNsYXNzIFBhdHRlcm4gZmluYWwgOiBwdWJsaWMgUmVmQ291bnRlZDxQYXR0
ZXJuPiB7CiBwdWJsaWM6CkBAIC03MCwxMCArNjksMTQgQEAgcHVibGljOgogICAgICAgICBib29s
IHJlcGVhdFk7CiAgICAgfTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8UGF0dGVy
bj4gY3JlYXRlKFJlZjxOYXRpdmVJbWFnZT4mJiB0aWxlSW1hZ2UsIGNvbnN0IFBhcmFtZXRlcnMm
ID0geyB9KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPFBhdHRlcm4+IGNyZWF0ZShT
b3VyY2VJbWFnZSYmIHRpbGVJbWFnZSwgY29uc3QgUGFyYW1ldGVycyYgPSB7IH0pOwogICAgIFdF
QkNPUkVfRVhQT1JUIH5QYXR0ZXJuKCk7CiAKLSAgICBOYXRpdmVJbWFnZSYgdGlsZUltYWdlKCkg
Y29uc3QgeyByZXR1cm4gbV90aWxlSW1hZ2UuZ2V0KCk7IH0KKyAgICBTb3VyY2VJbWFnZSYgdGls
ZUltYWdlKCkgY29uc3QgeyByZXR1cm4gbV90aWxlSW1hZ2U7IH0KKyAgICBOYXRpdmVJbWFnZSog
dGlsZU5hdGl2ZUltYWdlKCkgY29uc3QgeyByZXR1cm4gbV90aWxlSW1hZ2UubmF0aXZlSW1hZ2Uo
KTsgfQorICAgIEltYWdlQnVmZmVyKiB0aWxlSW1hZ2VCdWZmZXIoKSBjb25zdCB7IHJldHVybiBt
X3RpbGVJbWFnZS5pbWFnZUJ1ZmZlcigpOyB9CisgICAgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyIHRpbGVJbWFnZUlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX3RpbGVJbWFnZS5pbWFn
ZUlkZW50aWZpZXIoKTsgfQorCiAgICAgY29uc3QgUGFyYW1ldGVycyYgcGFyYW1ldGVycygpIGNv
bnN0IHsgcmV0dXJuIG1fcGFyYW1ldGVyczsgfQogCiAgICAgLy8gUGF0dGVybiBzcGFjZSBpcyBh
biBhYnN0cmFjdCBzcGFjZSB0aGF0IG1hcHMgdG8gdGhlIGRlZmF1bHQgdXNlciBzcGFjZSBieSB0
aGUgdHJhbnNmb3JtYXRpb24gJ3VzZXJTcGFjZVRyYW5zZm9ybScKQEAgLTg4LDkgKzkxLDkgQEAg
cHVibGljOgogICAgIGJvb2wgcmVwZWF0WSgpIGNvbnN0IHsgcmV0dXJuIG1fcGFyYW1ldGVycy5y
ZXBlYXRZOyB9CiAKIHByaXZhdGU6Ci0gICAgUGF0dGVybihSZWY8TmF0aXZlSW1hZ2U+JiYsIGNv
bnN0IFBhcmFtZXRlcnMmKTsKKyAgICBQYXR0ZXJuKFNvdXJjZUltYWdlJiYsIGNvbnN0IFBhcmFt
ZXRlcnMmKTsKIAotICAgIFJlZjxOYXRpdmVJbWFnZT4gbV90aWxlSW1hZ2U7CisgICAgbXV0YWJs
ZSBTb3VyY2VJbWFnZSBtX3RpbGVJbWFnZTsKICAgICBQYXJhbWV0ZXJzIG1fcGFyYW1ldGVyczsK
IH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NvdXJj
ZUltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NvdXJjZUltYWdl
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5mZTc0ODFjMDkzZTYzNTZiZmFjYWI4M2I5ZThlNmJlMzgwY2UyNDlm
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU291
cmNlSW1hZ2UuY3BwCkBAIC0wLDAgKzEsMTAwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIx
IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJTb3Vy
Y2VJbWFnZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1NvdXJjZUltYWdlOjpTb3VyY2VJ
bWFnZShSZWY8TmF0aXZlSW1hZ2U+JiYgbmF0aXZlSW1hZ2UpCisgICAgOiBtX2ltYWdlKFdURk1v
dmUobmF0aXZlSW1hZ2UpKQoreworfQorCitTb3VyY2VJbWFnZTo6U291cmNlSW1hZ2UoUmVmPElt
YWdlQnVmZmVyPiYmIGltYWdlQnVmZmVyKQorICAgIDogbV9pbWFnZShXVEZNb3ZlKGltYWdlQnVm
ZmVyKSkKK3sKK30KKworTmF0aXZlSW1hZ2UqIFNvdXJjZUltYWdlOjpuYXRpdmVJbWFnZUlmRXhp
c3RzKCkgY29uc3QKK3sKKyAgICBpZiAoYXV0byogbmF0aXZlSW1hZ2UgPSBzdGQ6OmdldF9pZjxS
ZWY8TmF0aXZlSW1hZ2U+PigmbV9pbWFnZSkpCisgICAgICAgIHJldHVybiBuYXRpdmVJbWFnZS0+
cHRyKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK05hdGl2ZUltYWdlKiBTb3VyY2VJbWFn
ZTo6bmF0aXZlSW1hZ2UoKQoreworICAgIGlmIChhdXRvKiBuYXRpdmVJbWFnZSA9IG5hdGl2ZUlt
YWdlSWZFeGlzdHMoKSkKKyAgICAgICAgcmV0dXJuIG5hdGl2ZUltYWdlOworCisgICAgYXV0byBp
bWFnZUJ1ZmZlciA9IHN0ZDo6Z2V0PFJlZjxJbWFnZUJ1ZmZlcj4+KG1faW1hZ2UpOworCisgICAg
YXV0byBuYXRpdmVJbWFnZSA9IEltYWdlQnVmZmVyOjpzaW5rSW50b05hdGl2ZUltYWdlKFdURk1v
dmUoaW1hZ2VCdWZmZXIpKTsKKyAgICBpZiAoIW5hdGl2ZUltYWdlKQorICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKworICAgIG1faW1hZ2UgPSBuYXRpdmVJbWFnZS5yZWxlYXNlTm9uTnVsbCgpOwor
ICAgIHJldHVybiBuYXRpdmVJbWFnZUlmRXhpc3RzKCk7Cit9CisKK0ltYWdlQnVmZmVyKiBTb3Vy
Y2VJbWFnZTo6aW1hZ2VCdWZmZXJJZkV4aXN0cygpIGNvbnN0Cit7CisgICAgaWYgKGF1dG8qIGlt
YWdlQnVmZmVyID0gc3RkOjpnZXRfaWY8UmVmPEltYWdlQnVmZmVyPj4oJm1faW1hZ2UpKQorICAg
ICAgICByZXR1cm4gaW1hZ2VCdWZmZXItPnB0cigpOworICAgIHJldHVybiBudWxscHRyOworfQor
CitJbWFnZUJ1ZmZlciogU291cmNlSW1hZ2U6OmltYWdlQnVmZmVyKCkKK3sKKyAgICBpZiAoYXV0
byogaW1hZ2VCdWZmZXIgPSBpbWFnZUJ1ZmZlcklmRXhpc3RzKCkpCisgICAgICAgIHJldHVybiBp
bWFnZUJ1ZmZlcjsKKworICAgIGF1dG8gbmF0aXZlSW1hZ2UgPSBzdGQ6OmdldDxSZWY8TmF0aXZl
SW1hZ2U+PihtX2ltYWdlKTsKKworICAgIEZsb2F0UmVjdCByZWN0ID0geyB7IH0sIG5hdGl2ZUlt
YWdlLT5zaXplKCkgfTsKKyAgICBhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0
ZShuYXRpdmVJbWFnZS0+c2l6ZSgpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBE
ZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKKyAgICBp
ZiAoIWltYWdlQnVmZmVyKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIGltYWdlQnVm
ZmVyLT5jb250ZXh0KCkuZHJhd05hdGl2ZUltYWdlKG5hdGl2ZUltYWdlLCBuYXRpdmVJbWFnZS0+
c2l6ZSgpLCByZWN0LCByZWN0KTsKKworICAgIG1faW1hZ2UgPSBpbWFnZUJ1ZmZlci5yZWxlYXNl
Tm9uTnVsbCgpOworICAgIHJldHVybiBpbWFnZUJ1ZmZlcklmRXhpc3RzKCk7Cit9CisKK1JlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllciBTb3VyY2VJbWFnZTo6aW1hZ2VJZGVudGlmaWVyKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihtX2ltYWdlLAorICAgICAgICBbJl0gKGNv
bnN0IFJlZjxOYXRpdmVJbWFnZT4mIG5hdGl2ZUltYWdlKSB7CisgICAgICAgICAgICByZXR1cm4g
bmF0aXZlSW1hZ2UtPnJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcigpOworICAgICAgICB9LAor
ICAgICAgICBbJl0gKGNvbnN0IFJlZjxJbWFnZUJ1ZmZlcj4mIGltYWdlQnVmZmVyKSB7CisgICAg
ICAgICAgICByZXR1cm4gaW1hZ2VCdWZmZXItPnJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcigp
OworICAgICAgICB9CisgICAgKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlSW1hZ2UuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NvdXJjZUltYWdlLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MWIzMDcxMTQwNGMzNDQ2NjYyZDU5NzYxMDgyOTM5OTk1Njg1NjJkNQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NvdXJjZUltYWdlLmgKQEAgLTAs
MCArMSw1NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuICBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllci5o
IgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEltYWdlQnVmZmVyOworY2xhc3MgTmF0
aXZlSW1hZ2U7CisKK2NsYXNzIFdFQkNPUkVfRVhQT1JUIFNvdXJjZUltYWdlIHsKK3B1YmxpYzoK
KyAgICB1c2luZyBJbWFnZSA9IHN0ZDo6dmFyaWFudDxSZWY8TmF0aXZlSW1hZ2U+LCBSZWY8SW1h
Z2VCdWZmZXI+PjsKKworICAgIFNvdXJjZUltYWdlKFJlZjxOYXRpdmVJbWFnZT4mJik7CisgICAg
U291cmNlSW1hZ2UoUmVmPEltYWdlQnVmZmVyPiYmKTsKKworICAgIE5hdGl2ZUltYWdlKiBuYXRp
dmVJbWFnZUlmRXhpc3RzKCkgY29uc3Q7CisgICAgTmF0aXZlSW1hZ2UqIG5hdGl2ZUltYWdlKCk7
CisKKyAgICBJbWFnZUJ1ZmZlciogaW1hZ2VCdWZmZXJJZkV4aXN0cygpIGNvbnN0OworICAgIElt
YWdlQnVmZmVyKiBpbWFnZUJ1ZmZlcigpOworCisgICAgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyIGltYWdlSWRlbnRpZmllcigpIGNvbnN0OworCitwcml2YXRlOgorICAgIEltYWdlIG1faW1h
Z2U7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9DYWlyb09wZXJhdGlvbnMuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQ2Fpcm9PcGVyYXRpb25zLmNwcAppbmRl
eCAxNTUyMzU2YTIzYTVmZGZiMTBhZmVjYTJjYzkyYTcyNzk0NTgxMDJlLi45YWU2NDM0MmIxODRk
NThhZmU3Yjc0MjdhZDUzNzI2YWFlY2FjZWZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYWlyby9DYWlyb09wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0NhaXJvT3BlcmF0aW9ucy5jcHAKQEAgLTU2
Miw4ICs1NjIsOCBAQCBGaWxsU291cmNlOjpGaWxsU291cmNlKGNvbnN0IEdyYXBoaWNzQ29udGV4
dFN0YXRlJiBzdGF0ZSkKICAgICBpZiAoc3RhdGUuZmlsbFBhdHRlcm4pIHsKICAgICAgICAgcGF0
dGVybi5vYmplY3QgPSBhZG9wdFJlZihzdGF0ZS5maWxsUGF0dGVybi0+Y3JlYXRlUGxhdGZvcm1Q
YXR0ZXJuKEFmZmluZVRyYW5zZm9ybSgpKSk7CiAKLSAgICAgICAgYXV0byYgcGF0dGVybkltYWdl
ID0gc3RhdGUuZmlsbFBhdHRlcm4tPnRpbGVJbWFnZSgpOwotICAgICAgICBwYXR0ZXJuLnNpemUg
PSBwYXR0ZXJuSW1hZ2Uuc2l6ZSgpOworICAgICAgICBpZiAoYXV0byBwYXR0ZXJuSW1hZ2UgPSBz
dGF0ZS5maWxsUGF0dGVybi0+dGlsZU5hdGl2ZUltYWdlKCkpCisgICAgICAgICAgICBwYXR0ZXJu
LnNpemUgPSBwYXR0ZXJuSW1hZ2UtPnNpemUoKTsKICAgICAgICAgcGF0dGVybi50cmFuc2Zvcm0g
PSBzdGF0ZS5maWxsUGF0dGVybi0+cGF0dGVyblNwYWNlVHJhbnNmb3JtKCk7CiAgICAgICAgIHBh
dHRlcm4ucmVwZWF0WCA9IHN0YXRlLmZpbGxQYXR0ZXJuLT5yZXBlYXRYKCk7CiAgICAgICAgIHBh
dHRlcm4ucmVwZWF0WSA9IHN0YXRlLmZpbGxQYXR0ZXJuLT5yZXBlYXRZKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QYXR0ZXJuQ2Fpcm8uY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGF0dGVybkNhaXJvLmNw
cAppbmRleCA2OGRhYmFmOThhY2E5ZDFjZmI3MWUxNjUyMmI5ZGViMjU4MDdmZjFmLi5hM2ZjZDY4
ZmY4YjdjZDk2ZDQ0ZTJmNTdhOTRhMzllOTM3MWFjMTlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QYXR0ZXJuQ2Fpcm8uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BhdHRlcm5DYWlyby5jcHAKQEAgLTM1
LDcgKzM1LDExIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2Fpcm9fcGF0dGVybl90KiBQYXR0
ZXJuOjpjcmVhdGVQbGF0Zm9ybVBhdHRlcm4oY29uc3QgQWZmaW5lVHJhbnNmb3JtJikgY29uc3QK
IHsKLSAgICBhdXRvIHBsYXRmb3JtSW1hZ2UgPSB0aWxlSW1hZ2UoKS5wbGF0Zm9ybUltYWdlKCk7
CisgICAgYXV0byBuYXRpdmVJbWFnZSA9IHRpbGVOYXRpdmVJbWFnZSgpOworICAgIGlmICghbmF0
aXZlSW1hZ2UpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgYXV0byBwbGF0Zm9ybUlt
YWdlID0gbmF0aXZlSW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKTsKICAgICBpZiAoIXBsYXRmb3JtSW1h
Z2UpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QYXR0ZXJuQ0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvUGF0dGVybkNHLmNwcAppbmRleCAwNWEzOTE2NTQwYmI3NmRhM2Yw
YWJhYTMzOTRmYzhkZDA4OGM4ZGE5Li5kNDVmYTkyY2M1NGNjZDhmZTE4NzI1ZTZjZjdmMDMwNWVi
OGNiZmFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9Q
YXR0ZXJuQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1Bh
dHRlcm5DRy5jcHAKQEAgLTU1LDEzICs1NSwxNyBAQCBzdGF0aWMgdm9pZCBwYXR0ZXJuUmVsZWFz
ZUNhbGxiYWNrKHZvaWQqIGluZm8pCiAKIFJldGFpblB0cjxDR1BhdHRlcm5SZWY+IFBhdHRlcm46
OmNyZWF0ZVBsYXRmb3JtUGF0dGVybihjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHVzZXJTcGFjZVRy
YW5zZm9ybSkgY29uc3QKIHsKLSAgICBGbG9hdFJlY3QgdGlsZVJlY3QgPSB7IHsgfSwgdGlsZUlt
YWdlKCkuc2l6ZSgpIH07CisgICAgYXV0byBuYXRpdmVJbWFnZSA9IHRpbGVOYXRpdmVJbWFnZSgp
OworICAgIGlmICghbmF0aXZlSW1hZ2UpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIAor
ICAgIEZsb2F0UmVjdCB0aWxlUmVjdCA9IHsgeyB9LCBuYXRpdmVJbWFnZS0+c2l6ZSgpIH07CiAK
ICAgICBBZmZpbmVUcmFuc2Zvcm0gcGF0dGVyblRyYW5zZm9ybSA9IHVzZXJTcGFjZVRyYW5zZm9y
bSAqIHBhdHRlcm5TcGFjZVRyYW5zZm9ybSgpOwogICAgIHBhdHRlcm5UcmFuc2Zvcm0uc2NhbGVO
b25Vbmlmb3JtKDEsIC0xKTsKICAgICBwYXR0ZXJuVHJhbnNmb3JtLnRyYW5zbGF0ZSgwLCAtdGls
ZVJlY3QuaGVpZ2h0KCkpOwogCi0gICAgUGxhdGZvcm1JbWFnZVB0ciBwbGF0Zm9ybUltYWdlID0g
dGlsZUltYWdlKCkucGxhdGZvcm1JbWFnZSgpOworICAgIFBsYXRmb3JtSW1hZ2VQdHIgcGxhdGZv
cm1JbWFnZSA9IG5hdGl2ZUltYWdlLT5wbGF0Zm9ybUltYWdlKCk7CiAgICAgaWYgKCFwbGF0Zm9y
bUltYWdlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlM
aXN0SXRlbXMuY3BwCmluZGV4IGU3MjZkOTRmMzAwNTAwMjMxMmJjNjQyYjMwMTVlY2JhZTMxNDg0
OGMuLmJlM2YxYzRiYTFjOThhNjI3MDYzZjEwM2MyZDM1ZDg4MTgwOTU4ZDAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dEl0ZW1zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5
bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHAKQEAgLTE1OSwxMiArMTU5LDEyIEBAIFNldFN0YXRl
OjpTZXRTdGF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZUNoYW5nZSYgc3RhdGVDaGFuZ2Us
IGNvbnN0IFBhdHRlcm5ECiB7CiB9CiAKLXZvaWQgU2V0U3RhdGU6OmFwcGx5KEdyYXBoaWNzQ29u
dGV4dCYgY29udGV4dCwgTmF0aXZlSW1hZ2UqIHN0cm9rZVBhdHRlcm5JbWFnZSwgTmF0aXZlSW1h
Z2UqIGZpbGxQYXR0ZXJuSW1hZ2UpCit2b2lkIFNldFN0YXRlOjphcHBseShHcmFwaGljc0NvbnRl
eHQmIGNvbnRleHQsIHN0ZDo6b3B0aW9uYWw8U291cmNlSW1hZ2U+JiYgc3Ryb2tlUGF0dGVybklt
YWdlLCBzdGQ6Om9wdGlvbmFsPFNvdXJjZUltYWdlPiYmIGZpbGxQYXR0ZXJuSW1hZ2UpCiB7CiAg
ICAgaWYgKG1fc3RhdGVDaGFuZ2UubV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRl
eHRTdGF0ZTo6U3Ryb2tlUGF0dGVybkNoYW5nZSkgJiYgc3Ryb2tlUGF0dGVybkltYWdlKQotICAg
ICAgICBtX3N0YXRlQ2hhbmdlLm1fc3RhdGUuc3Ryb2tlUGF0dGVybiA9IFBhdHRlcm46OmNyZWF0
ZSgqc3Ryb2tlUGF0dGVybkltYWdlLCBtX3N0cm9rZVBhdHRlcm4ucGFyYW1ldGVycyk7CisgICAg
ICAgIG1fc3RhdGVDaGFuZ2UubV9zdGF0ZS5zdHJva2VQYXR0ZXJuID0gUGF0dGVybjo6Y3JlYXRl
KFdURk1vdmUoKnN0cm9rZVBhdHRlcm5JbWFnZSksIG1fc3Ryb2tlUGF0dGVybi5wYXJhbWV0ZXJz
KTsKICAgICBpZiAobV9zdGF0ZUNoYW5nZS5tX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNz
Q29udGV4dFN0YXRlOjpGaWxsUGF0dGVybkNoYW5nZSkgJiYgZmlsbFBhdHRlcm5JbWFnZSkKLSAg
ICAgICAgbV9zdGF0ZUNoYW5nZS5tX3N0YXRlLmZpbGxQYXR0ZXJuID0gUGF0dGVybjo6Y3JlYXRl
KCpmaWxsUGF0dGVybkltYWdlLCBtX2ZpbGxQYXR0ZXJuLnBhcmFtZXRlcnMpOworICAgICAgICBt
X3N0YXRlQ2hhbmdlLm1fc3RhdGUuZmlsbFBhdHRlcm4gPSBQYXR0ZXJuOjpjcmVhdGUoV1RGTW92
ZSgqZmlsbFBhdHRlcm5JbWFnZSksIG1fZmlsbFBhdHRlcm4ucGFyYW1ldGVycyk7CiAgICAgbV9z
dGF0ZUNoYW5nZS5hcHBseShjb250ZXh0KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0
ZW1zLmgKaW5kZXggY2ViZjM2OWJmYTJlZjBmNjdmMTMxZmI4NTIzNmU5YWE4OTdkNDQ4MC4uOGE4
ZGNjZWMyYjA1YTc2YjIxOWI5ODE2NzgyZmYzOGI1MDhhNTRmNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3RJdGVtcy5oCkBAIC0yNTcsNyArMjU3LDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRl
PGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKICAgICB0ZW1wbGF0
ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxTZXRTdGF0ZT4gZGVjb2RlKERl
Y29kZXImKTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwbHkoR3JhcGhpY3NDb250ZXh0
JiwgTmF0aXZlSW1hZ2UqIHN0cm9rZVBhdHRlcm5JbWFnZSwgTmF0aXZlSW1hZ2UqIGZpbGxQYXR0
ZXJuSW1hZ2UpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwbHkoR3JhcGhpY3NDb250ZXh0
Jiwgc3RkOjpvcHRpb25hbDxTb3VyY2VJbWFnZT4mJiBzdHJva2VQYXR0ZXJuSW1hZ2UsIHN0ZDo6
b3B0aW9uYWw8U291cmNlSW1hZ2U+JiYgZmlsbFBhdHRlcm5JbWFnZSk7CiAKIHByaXZhdGU6CiAg
ICAgc3RydWN0IFBhdHRlcm5EYXRhIHsKQEAgLTI4Nyw3ICsyODcsNyBAQCB2b2lkIFNldFN0YXRl
OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIAogICAgIGlmIChjaGFuZ2VGbGFncy5j
b250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlUGF0dGVybkNoYW5nZSkpIHsKICAg
ICAgICAgQVNTRVJUKHN0YXRlLnN0cm9rZVBhdHRlcm4pOwotICAgICAgICBlbmNvZGVyIDw8IHN0
YXRlLnN0cm9rZVBhdHRlcm4tPnRpbGVJbWFnZSgpLnJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
cigpOworICAgICAgICBlbmNvZGVyIDw8IHN0YXRlLnN0cm9rZVBhdHRlcm4tPnRpbGVJbWFnZUlk
ZW50aWZpZXIoKTsKICAgICAgICAgZW5jb2RlciA8PCBzdGF0ZS5zdHJva2VQYXR0ZXJuLT5wYXJh
bWV0ZXJzKCk7CiAgICAgfQogCkBAIC0yOTgsNyArMjk4LDcgQEAgdm9pZCBTZXRTdGF0ZTo6ZW5j
b2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAKICAgICBpZiAoY2hhbmdlRmxhZ3MuY29udGFp
bnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkZpbGxQYXR0ZXJuQ2hhbmdlKSkgewogICAgICAgICBB
U1NFUlQoc3RhdGUuZmlsbFBhdHRlcm4pOwotICAgICAgICBlbmNvZGVyIDw8IHN0YXRlLmZpbGxQ
YXR0ZXJuLT50aWxlSW1hZ2UoKS5yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIoKTsKKyAgICAg
ICAgZW5jb2RlciA8PCBzdGF0ZS5maWxsUGF0dGVybi0+dGlsZUltYWdlSWRlbnRpZmllcigpOwog
ICAgICAgICBlbmNvZGVyIDw8IHN0YXRlLmZpbGxQYXR0ZXJuLT5wYXJhbWV0ZXJzKCk7CiAgICAg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5
bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaAppbmRleCA5YTQwMTQzNjdk
YjFlZjQzYjhhNTllNTBlM2Q0NzEwZjkzZTAzZWJmLi4xNGE4NjUxMmI3YmIwYmRlZjE4NmQwOWEz
ODQ5OTNjNTY0ZmFiYWY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmgK
QEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRl
ICJJbWFnZS5oIiAvLyBGb3IgSW1hZ2U6OlRpbGVSdWxlLgogI2luY2x1ZGUgIklubGluZVBhdGhE
YXRhLmgiCisjaW5jbHVkZSAiU291cmNlSW1hZ2UuaCIKICNpbmNsdWRlICJUZXh0RmxhZ3MuaCIK
ICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KIApAQCAtMTM2LDggKzEzNyw5IEBAIHByb3Rl
Y3RlZDoKICAgICB2aXJ0dWFsIHZvaWQgcmVjb3JkQXBwbHlEZXZpY2VTY2FsZUZhY3RvcihmbG9h
dCkgPSAwOwogCiAgICAgdmlydHVhbCB2b2lkIHJlY29yZFJlc291cmNlVXNlKE5hdGl2ZUltYWdl
JikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCByZWNvcmRSZXNvdXJjZVVzZShGb250JikgPSAwOwog
ICAgIHZpcnR1YWwgdm9pZCByZWNvcmRSZXNvdXJjZVVzZShJbWFnZUJ1ZmZlciYpID0gMDsKKyAg
ICB2aXJ0dWFsIHZvaWQgcmVjb3JkUmVzb3VyY2VVc2UoU291cmNlSW1hZ2UmKSA9IDA7CisgICAg
dmlydHVhbCB2b2lkIHJlY29yZFJlc291cmNlVXNlKEZvbnQmKSA9IDA7CiAKICAgICAvLyBGSVhN
RTogTWF5YmUgcmVtb3ZlIHRoaXM/CiAgICAgdmlydHVhbCBib29sIGNhbkRyYXdJbWFnZUJ1ZmZl
cihjb25zdCBJbWFnZUJ1ZmZlciYpIGNvbnN0ID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVySW1w
bC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3RSZWNvcmRlckltcGwuY3BwCmluZGV4IGE1ZTJkM2IyMDk4NWUzZWY5NDFhMzIzNTc1
NmUyODBlYWNkNTE2M2MuLmQ2YmY2ZmI2MTc3NjE1NWVmMzM1ZTk1ZDg1ZmE0NDAwNGJkODc0YTYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0
cy9EaXNwbGF5TGlzdFJlY29yZGVySW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXJJbXBsLmNwcApAQCAt
NDEyLDI1ICs0MTIsMzcgQEAgdm9pZCBSZWNvcmRlckltcGw6OnJlY29yZEFwcGx5RGV2aWNlU2Nh
bGVGYWN0b3IoZmxvYXQgc2NhbGVGYWN0b3IpCiAgICAgYXBwZW5kPEFwcGx5RGV2aWNlU2NhbGVG
YWN0b3I+KHNjYWxlRmFjdG9yKTsKIH0KIAotdm9pZCBSZWNvcmRlckltcGw6OnJlY29yZFJlc291
cmNlVXNlKE5hdGl2ZUltYWdlJiBpbWFnZSkKK3ZvaWQgUmVjb3JkZXJJbXBsOjpyZWNvcmRSZXNv
dXJjZVVzZShOYXRpdmVJbWFnZSYgbmF0aXZlSW1hZ2UpCiB7CiAgICAgaWYgKG1fZGVsZWdhdGUp
Ci0gICAgICAgIG1fZGVsZWdhdGUtPnJlY29yZE5hdGl2ZUltYWdlVXNlKGltYWdlKTsKLSAgICBt
X2Rpc3BsYXlMaXN0LmNhY2hlTmF0aXZlSW1hZ2UoaW1hZ2UpOworICAgICAgICBtX2RlbGVnYXRl
LT5yZWNvcmROYXRpdmVJbWFnZVVzZShuYXRpdmVJbWFnZSk7CisgICAgbV9kaXNwbGF5TGlzdC5j
YWNoZU5hdGl2ZUltYWdlKG5hdGl2ZUltYWdlKTsKIH0KIAotdm9pZCBSZWNvcmRlckltcGw6OnJl
Y29yZFJlc291cmNlVXNlKEZvbnQmIGZvbnQpCit2b2lkIFJlY29yZGVySW1wbDo6cmVjb3JkUmVz
b3VyY2VVc2UoSW1hZ2VCdWZmZXImIGltYWdlQnVmZmVyKQogewogICAgIGlmIChtX2RlbGVnYXRl
KQotICAgICAgICBtX2RlbGVnYXRlLT5yZWNvcmRGb250VXNlKGZvbnQpOwotICAgIG1fZGlzcGxh
eUxpc3QuY2FjaGVGb250KGZvbnQpOworICAgICAgICBtX2RlbGVnYXRlLT5yZWNvcmRJbWFnZUJ1
ZmZlclVzZShpbWFnZUJ1ZmZlcik7CisgICAgbV9kaXNwbGF5TGlzdC5jYWNoZUltYWdlQnVmZmVy
KGltYWdlQnVmZmVyKTsKIH0KIAotdm9pZCBSZWNvcmRlckltcGw6OnJlY29yZFJlc291cmNlVXNl
KEltYWdlQnVmZmVyJiBpbWFnZUJ1ZmZlcikKK3ZvaWQgUmVjb3JkZXJJbXBsOjpyZWNvcmRSZXNv
dXJjZVVzZShTb3VyY2VJbWFnZSYgaW1hZ2UpCit7CisgICAgYXV0byBpbWFnZUJ1ZmZlciA9IGlt
YWdlLmltYWdlQnVmZmVySWZFeGlzdHMoKTsKKyAgICBpZiAoaW1hZ2VCdWZmZXIgJiYgY2FuRHJh
d0ltYWdlQnVmZmVyKCppbWFnZUJ1ZmZlcikpIHsKKyAgICAgICAgcmVjb3JkUmVzb3VyY2VVc2Uo
KmltYWdlQnVmZmVyKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChhdXRvIG5h
dGl2ZUltYWdlID0gaW1hZ2UubmF0aXZlSW1hZ2UoKSkKKyAgICAgICAgcmVjb3JkUmVzb3VyY2VV
c2UoKm5hdGl2ZUltYWdlKTsKK30KKwordm9pZCBSZWNvcmRlckltcGw6OnJlY29yZFJlc291cmNl
VXNlKEZvbnQmIGZvbnQpCiB7CiAgICAgaWYgKG1fZGVsZWdhdGUpCi0gICAgICAgIG1fZGVsZWdh
dGUtPnJlY29yZEltYWdlQnVmZmVyVXNlKGltYWdlQnVmZmVyKTsKLSAgICBtX2Rpc3BsYXlMaXN0
LmNhY2hlSW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXIpOworICAgICAgICBtX2RlbGVnYXRlLT5yZWNv
cmRGb250VXNlKGZvbnQpOworICAgIG1fZGlzcGxheUxpc3QuY2FjaGVGb250KGZvbnQpOwogfQog
CiAvLyBGSVhNRTogc2hhcmUgd2l0aCBTaGFkb3dEYXRhCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlcklt
cGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdFJlY29yZGVySW1wbC5oCmluZGV4IDNlNmQwOTAyNjkwNDZmMWIxMjRhMzljMWUxMjEx
MDBiMzI3MjYwYzUuLjI5OWEzYmYzZmEyYzMxMWVjODQ5MzczZDBjMWZjODNiYjFmMTE4MDggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdFJlY29yZGVySW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVySW1wbC5oCkBAIC0xMzQsOCAr
MTM0LDkgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlY29yZEFwcGx5RGV2aWNlU2NhbGVGYWN0b3Io
ZmxvYXQpIGZpbmFsOwogCiAgICAgdm9pZCByZWNvcmRSZXNvdXJjZVVzZShOYXRpdmVJbWFnZSYp
IGZpbmFsOwotICAgIHZvaWQgcmVjb3JkUmVzb3VyY2VVc2UoRm9udCYpIGZpbmFsOwogICAgIHZv
aWQgcmVjb3JkUmVzb3VyY2VVc2UoSW1hZ2VCdWZmZXImKSBmaW5hbDsKKyAgICB2b2lkIHJlY29y
ZFJlc291cmNlVXNlKFNvdXJjZUltYWdlJikgZmluYWw7CisgICAgdm9pZCByZWNvcmRSZXNvdXJj
ZVVzZShGb250JikgZmluYWw7CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8R3JhcGhpY3NDb250ZXh0
PiBjcmVhdGVOZXN0ZWRDb250ZXh0KGNvbnN0IEZsb2F0UmVjdCYgaW5pdGlhbENsaXAsIGNvbnN0
IEFmZmluZVRyYW5zZm9ybSYgaW5pdGlhbENUTSkgZmluYWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxh
eWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdFJlcGxheWVyLmNwcAppbmRleCA5NDFjMjA5M2NmNTZmMjIyMTEzYWJmMDAzZWQw
OWYyYzg1MzNiNjU1Li4zMjVkODE5ZDY0Mjk0MzYzZjhiNzFhYzIyMGIzZGMxZWU1YjU3NDgxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3RSZXBsYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuY3BwCkBAIC04NSwyNCArODUs
MjkgQEAgaW5saW5lIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRp
Zmllcj4gYXBwbHlTZXRTdGF0ZUl0ZW0oR3JhcGgKIHsKICAgICBhdXRvJiBzZXRTdGF0ZUl0ZW0g
PSBpdGVtLmdldDxTZXRTdGF0ZT4oKTsKIAotICAgIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
ciBzdHJva2VQYXR0ZXJuUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyOwotICAgIE5hdGl2ZUlt
YWdlKiBzdHJva2VQYXR0ZXJuSW1hZ2UgPSBudWxscHRyOwotICAgIFJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllciBmaWxsUGF0dGVyblJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcjsKLSAgICBO
YXRpdmVJbWFnZSogZmlsbFBhdHRlcm5JbWFnZSA9IG51bGxwdHI7Ci0KLSAgICBpZiAoKHN0cm9r
ZVBhdHRlcm5SZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgPSBzZXRTdGF0ZUl0ZW0uc3Ryb2tl
UGF0dGVybkltYWdlSWRlbnRpZmllcigpKSkgewotICAgICAgICBzdHJva2VQYXR0ZXJuSW1hZ2Ug
PSByZXNvdXJjZUhlYXAuZ2V0TmF0aXZlSW1hZ2Uoc3Ryb2tlUGF0dGVyblJlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllcik7Ci0gICAgICAgIGlmICghc3Ryb2tlUGF0dGVybkltYWdlKQotICAgICAg
ICAgICAgcmV0dXJuIHN0cm9rZVBhdHRlcm5SZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI7Ci0g
ICAgfQorICAgIGF1dG8gY2FjaGVkU291cmNlSW1hZ2UgPSBbJl0oUmVuZGVyaW5nUmVzb3VyY2VJ
ZGVudGlmaWVyIHBhdHRlcm5JbWFnZUlkZW50aWZpZXIpIC0+IHN0ZDo6b3B0aW9uYWw8U291cmNl
SW1hZ2U+IHsKKyAgICAgICAgaWYgKCFwYXR0ZXJuSW1hZ2VJZGVudGlmaWVyKQorICAgICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIGlmICgoZmlsbFBhdHRlcm5SZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXIgPSBzZXRTdGF0ZUl0ZW0uZmlsbFBhdHRlcm5JbWFnZUlkZW50aWZp
ZXIoKSkpIHsKLSAgICAgICAgZmlsbFBhdHRlcm5JbWFnZSA9IHJlc291cmNlSGVhcC5nZXROYXRp
dmVJbWFnZShmaWxsUGF0dGVyblJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7Ci0gICAgICAg
IGlmICghZmlsbFBhdHRlcm5JbWFnZSkKLSAgICAgICAgICAgIHJldHVybiBmaWxsUGF0dGVyblJl
bmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcjsKLSAgICB9CisgICAgICAgIGlmIChhdXRvIG5hdGl2
ZUltYWdlID0gcmVzb3VyY2VIZWFwLmdldE5hdGl2ZUltYWdlKHBhdHRlcm5JbWFnZUlkZW50aWZp
ZXIpKQorICAgICAgICAgICAgcmV0dXJuIFJlZiB7ICpuYXRpdmVJbWFnZSB9OworICAgICAgICBp
ZiAoYXV0byBpbWFnZUJ1ZmZlciA9IHJlc291cmNlSGVhcC5nZXRJbWFnZUJ1ZmZlcihwYXR0ZXJu
SW1hZ2VJZGVudGlmaWVyKSkKKyAgICAgICAgICAgIHJldHVybiBSZWYgeyAqaW1hZ2VCdWZmZXIg
fTsKKworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIH07CisKKyAgICBhdXRvIHN0
cm9rZVBhdHRlcm5SZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgPSBzZXRTdGF0ZUl0ZW0uc3Ry
b2tlUGF0dGVybkltYWdlSWRlbnRpZmllcigpOworICAgIGF1dG8gc3Ryb2tlUGF0dGVybkltYWdl
ID0gY2FjaGVkU291cmNlSW1hZ2Uoc3Ryb2tlUGF0dGVyblJlbmRlcmluZ1Jlc291cmNlSWRlbnRp
Zmllcik7CisgICAgaWYgKCFzdHJva2VQYXR0ZXJuSW1hZ2UgJiYgc3Ryb2tlUGF0dGVyblJlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllcikKKyAgICAgICAgcmV0dXJuIHN0cm9rZVBhdHRlcm5SZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI7CisKKyAgICBhdXRvIGZpbGxQYXR0ZXJuUmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyID0gc2V0U3RhdGVJdGVtLmZpbGxQYXR0ZXJuSW1hZ2VJZGVudGlm
aWVyKCk7CisgICAgYXV0byBmaWxsUGF0dGVybkltYWdlID0gY2FjaGVkU291cmNlSW1hZ2UoZmls
bFBhdHRlcm5SZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOworICAgIGlmICghZmlsbFBhdHRl
cm5JbWFnZSAmJiBmaWxsUGF0dGVyblJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikKKyAgICAg
ICAgcmV0dXJuIGZpbGxQYXR0ZXJuUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyOwogCi0gICAg
c2V0U3RhdGVJdGVtLmFwcGx5KGNvbnRleHQsIHN0cm9rZVBhdHRlcm5JbWFnZSwgZmlsbFBhdHRl
cm5JbWFnZSk7CisgICAgc2V0U3RhdGVJdGVtLmFwcGx5KGNvbnRleHQsIFdURk1vdmUoc3Ryb2tl
UGF0dGVybkltYWdlKSwgV1RGTW92ZShmaWxsUGF0dGVybkltYWdlKSk7CiAKICAgICBpZiAoIWRl
bGVnYXRlKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVRpbGUuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVRpbGUuY3BwCmluZGV4IDgxYWEwYzUz
YTFhODM2NTVmNzgyZWM5MmFlMTcwOTg5ZTQ4OGY1M2UuLmY2NGQ4YmRjMTM2ZDAwYWYwYmMxMjc0
MmNkMjdkODgzMjc3OGJkOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRkVUaWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZFVGlsZS5jcHAKQEAgLTcyLDE0ICs3MiwxMCBAQCB2b2lkIEZFVGls
ZTo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKGNvbnN0IEZpbHRlciYgZmlsdGVyKQogICAgIHRpbGVJ
bWFnZUNvbnRleHQudHJhbnNsYXRlKC1pbk1heEVmZmVjdExvY2F0aW9uLngoKSwgLWluTWF4RWZm
ZWN0TG9jYXRpb24ueSgpKTsKICAgICB0aWxlSW1hZ2VDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcigq
aW5CdWZmZXIsIGluLT5hYnNvbHV0ZVBhaW50UmVjdCgpLmxvY2F0aW9uKCkpOwogCi0gICAgYXV0
byB0aWxlSW1hZ2VDb3B5ID0gSW1hZ2VCdWZmZXI6OnNpbmtJbnRvTmF0aXZlSW1hZ2UoV1RGTW92
ZSh0aWxlSW1hZ2UpKTsKLSAgICBpZiAoIXRpbGVJbWFnZUNvcHkpCi0gICAgICAgIHJldHVybjsK
LQogICAgIEFmZmluZVRyYW5zZm9ybSBwYXR0ZXJuVHJhbnNmb3JtOwogICAgIHBhdHRlcm5UcmFu
c2Zvcm0udHJhbnNsYXRlKGluTWF4RWZmZWN0TG9jYXRpb24gLSBtYXhFZmZlY3RMb2NhdGlvbik7
CiAKLSAgICBhdXRvIHBhdHRlcm4gPSBQYXR0ZXJuOjpjcmVhdGUodGlsZUltYWdlQ29weS5yZWxl
YXNlTm9uTnVsbCgpLCB7IHRydWUsIHRydWUsIHBhdHRlcm5UcmFuc2Zvcm0gfSk7CisgICAgYXV0
byBwYXR0ZXJuID0gUGF0dGVybjo6Y3JlYXRlKHRpbGVJbWFnZS5yZWxlYXNlTm9uTnVsbCgpLCB7
IHRydWUsIHRydWUsIHBhdHRlcm5UcmFuc2Zvcm0gfSk7CiAKICAgICBHcmFwaGljc0NvbnRleHQm
IGZpbHRlckNvbnRleHQgPSByZXN1bHRJbWFnZS0+Y29udGV4dCgpOwogICAgIGZpbHRlckNvbnRl
eHQuc2V0RmlsbFBhdHRlcm4oV1RGTW92ZShwYXR0ZXJuKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCmluZGV4IGE3ODRkYmJiODM3ZjdiN2U0
MTdiMjY5YjZiNzBiYzkyNzIzNGQ1MWQuLmUxMTBmYjBkYzNmYzg0YzFmY2U2YWRjNzc2Mjc3NzI4
MDc4ZWUxYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXll
ckJhY2tpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJh
Y2tpbmcuY3BwCkBAIC0zMzE1LDEzICszMzE1LDExIEBAIHN0YXRpYyBSZWZQdHI8UGF0dGVybj4g
cGF0dGVybkZvckRlc2NyaXB0aW9uKFBhdHRlcm5EZXNjcmlwdGlvbiBkZXNjcmlwdGlvbiwgRmxv
CiAgICAgICAgIGltYWdlQ29udGV4dC5kcmF3VGV4dChmb250LCB0ZXh0UnVuLCB7IHRleHRHYXAs
IHlPZmZzZXQgfSwgMCk7CiAgICAgfQogCi0gICAgYXV0byB0aWxlSW1hZ2UgPSBJbWFnZUJ1ZmZl
cjo6c2lua0ludG9OYXRpdmVJbWFnZShXVEZNb3ZlKGltYWdlQnVmZmVyKSk7Ci0KICAgICBBZmZp
bmVUcmFuc2Zvcm0gcGF0dGVybk9mZnNldFRyYW5zZm9ybTsKICAgICBwYXR0ZXJuT2Zmc2V0VHJh
bnNmb3JtLnRyYW5zbGF0ZShjb250ZW50T2Zmc2V0ICsgZGVzY3JpcHRpb24ucGhhc2UpOwogICAg
IHBhdHRlcm5PZmZzZXRUcmFuc2Zvcm0uc2NhbGUoMSAvIGRlc3RDb250ZXh0LnNjYWxlRmFjdG9y
KCkpOwogCi0gICAgcmV0dXJuIFBhdHRlcm46OmNyZWF0ZSh0aWxlSW1hZ2UucmVsZWFzZU5vbk51
bGwoKSwgeyB0cnVlLCB0cnVlLCBwYXR0ZXJuT2Zmc2V0VHJhbnNmb3JtfSk7CisgICAgcmV0dXJu
IFBhdHRlcm46OmNyZWF0ZShpbWFnZUJ1ZmZlci5yZWxlYXNlTm9uTnVsbCgpLCB7IHRydWUsIHRy
dWUsIHBhdHRlcm5PZmZzZXRUcmFuc2Zvcm0gfSk7CiB9OwogI2VuZGlmCiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJu
LmNwcAppbmRleCAyYzYwNTU5MGRiNDAzZWY0NGJmMTc4YmMwN2M4NDE2MDQ5YzA5NTFiLi42ZGRj
N2EwNjA0NWEyNGE4NzU2MTU1YTMxOWU2N2U5NmE4NDZlOWM2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlUGF0dGVybi5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4uY3Bw
CkBAIC0yNSw2ICsyNSw3IEBACiAjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCiAjaW5jbHVkZSAiR3Jh
cGhpY3NDb250ZXh0LmgiCiAjaW5jbHVkZSAiUmVuZGVyU1ZHUm9vdC5oIgorI2luY2x1ZGUgIlJl
bmRlclZpZXcuaCIKICNpbmNsdWRlICJTVkdFbGVtZW50VHlwZUhlbHBlcnMuaCIKICNpbmNsdWRl
ICJTVkdGaXRUb1ZpZXdCb3guaCIKICNpbmNsdWRlICJTVkdSZW5kZXJpbmdDb250ZXh0LmgiCkBA
IC0xMTMsMTAgKzExNCw2IEBAIFBhdHRlcm5EYXRhKiBSZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm46
OmJ1aWxkUGF0dGVybihSZW5kZXJFbGVtZW50JiByZW5kZXJlciwgT3B0CiAKICAgICBhdXRvIHRp
bGVJbWFnZVNpemUgPSB0aWxlSW1hZ2UtPmxvZ2ljYWxTaXplKCk7CiAKLSAgICBhdXRvIGNvcGll
ZEltYWdlID0gSW1hZ2VCdWZmZXI6OnNpbmtJbnRvTmF0aXZlSW1hZ2UoV1RGTW92ZSh0aWxlSW1h
Z2UpKTsKLSAgICBpZiAoIWNvcGllZEltYWdlKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQog
ICAgIC8vIENvbXB1dGUgcGF0dGVybiBzcGFjZSB0cmFuc2Zvcm1hdGlvbi4KICAgICBhdXRvIHBh
dHRlcm5EYXRhID0gbWFrZVVuaXF1ZTxQYXR0ZXJuRGF0YT4oKTsKICAgICBwYXR0ZXJuRGF0YS0+
dHJhbnNmb3JtLnRyYW5zbGF0ZSh0aWxlQm91bmRhcmllcy5sb2NhdGlvbigpKTsKQEAgLTEzNCw3
ICsxMzEsNyBAQCBQYXR0ZXJuRGF0YSogUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuOjpidWlsZFBh
dHRlcm4oUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIE9wdAogICAgIH0KIAogICAgIC8vIEJ1aWxk
IHBhdHRlcm4uCi0gICAgcGF0dGVybkRhdGEtPnBhdHRlcm4gPSBQYXR0ZXJuOjpjcmVhdGUoY29w
aWVkSW1hZ2UucmVsZWFzZU5vbk51bGwoKSwgeyB0cnVlLCB0cnVlLCBwYXR0ZXJuRGF0YS0+dHJh
bnNmb3JtIH0pOworICAgIHBhdHRlcm5EYXRhLT5wYXR0ZXJuID0gUGF0dGVybjo6Y3JlYXRlKHRp
bGVJbWFnZS5yZWxlYXNlTm9uTnVsbCgpLCB7IHRydWUsIHRydWUsIHBhdHRlcm5EYXRhLT50cmFu
c2Zvcm0gfSk7CiAKICAgICAvLyBWYXJpb3VzIGNhbGxzIGFib3ZlIG1heSB0cmlnZ2VyIGludmFs
aWRhdGlvbnMgaW4gc29tZSBmcmluZ2UgY2FzZXMgKEltYWdlQnVmZmVyIGFsbG9jYXRpb24KICAg
ICAvLyBmYWlsdXJlcyBpbiB0aGUgU1ZHIGltYWdlIGNhY2hlIGZvciBleGFtcGxlKS4gVG8gYXZv
aWQgaGF2aW5nIG91ciBQYXR0ZXJuRGF0YSBkZWxldGVkIGJ5CkBAIC0yNTQsNyArMjUxLDkgQEAg
Ym9vbCBSZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm46OmJ1aWxkVGlsZUltYWdlVHJhbnNmb3JtKFJl
bmRlckVsZW1lbnQmIHJlbmRlcmVyLAogUmVmUHRyPEltYWdlQnVmZmVyPiBSZW5kZXJTVkdSZXNv
dXJjZVBhdHRlcm46OmNyZWF0ZVRpbGVJbWFnZShjb25zdCBQYXR0ZXJuQXR0cmlidXRlcyYgYXR0
cmlidXRlcywgY29uc3QgRmxvYXRSZWN0JiB0aWxlQm91bmRhcmllcywgY29uc3QgRmxvYXRSZWN0
JiBhYnNvbHV0ZVRpbGVCb3VuZGFyaWVzLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHRpbGVJbWFn
ZVRyYW5zZm9ybSwgRmxvYXRSZWN0JiBjbGFtcGVkQWJzb2x1dGVUaWxlQm91bmRhcmllcywgUmVu
ZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlKSBjb25zdAogewogICAgIGNsYW1wZWRBYnNvbHV0ZVRp
bGVCb3VuZGFyaWVzID0gSW1hZ2VCdWZmZXI6OmNsYW1wZWRSZWN0KGFic29sdXRlVGlsZUJvdW5k
YXJpZXMpOwotICAgIGF1dG8gdGlsZUltYWdlID0gU1ZHUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRl
SW1hZ2VCdWZmZXIoYWJzb2x1dGVUaWxlQm91bmRhcmllcywgY2xhbXBlZEFic29sdXRlVGlsZUJv
dW5kYXJpZXMsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCByZW5kZXJpbmdNb2RlKTsK
KyAgICAKKyAgICBhdXRvIGhvc3RXaW5kb3cgPSB2aWV3KCkuZnJhbWVWaWV3KCkucm9vdCgpID8g
dmlldygpLmZyYW1lVmlldygpLnJvb3QoKS0+aG9zdFdpbmRvdygpIDogbnVsbHB0cjsKKyAgICBh
dXRvIHRpbGVJbWFnZSA9IFNWR1JlbmRlcmluZ0NvbnRleHQ6OmNyZWF0ZUltYWdlQnVmZmVyKGFi
c29sdXRlVGlsZUJvdW5kYXJpZXMsIGNsYW1wZWRBYnNvbHV0ZVRpbGVCb3VuZGFyaWVzLCBEZXN0
aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgcmVuZGVyaW5nTW9kZSwgaG9zdFdpbmRvdyk7CiAg
ICAgaWYgKCF0aWxlSW1hZ2UpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0NvbnRleHQuY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJpbmdDb250ZXh0LmNwcAppbmRl
eCAyMGI4YjVlN2IwN2IzMWExMmM1YWFjYmEzODU4OTJmYmYzYTIzNTczLi5iZjFlN2Y5MTE5YjE3
YzM4NzYwOTg1ZGRjZTk3MTUxMzI5ODJiMTE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyaW5nQ29udGV4dC5jcHAKQEAgLTI1Niw3ICsyNTYsNyBA
QCBSZWZQdHI8SW1hZ2VCdWZmZXI+IFNWR1JlbmRlcmluZ0NvbnRleHQ6OmNyZWF0ZUltYWdlQnVm
ZmVyKGNvbnN0IEZsb2F0UmVjdCYgdGFyZwogICAgIHJldHVybiBpbWFnZUJ1ZmZlcjsKIH0KIAot
UmVmUHRyPEltYWdlQnVmZmVyPiBTVkdSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGVJbWFnZUJ1ZmZl
cihjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgY2xhbXBlZFJl
Y3QsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgY29sb3JTcGFjZSwgUmVuZGVyaW5nTW9k
ZSByZW5kZXJpbmdNb2RlLCBjb25zdCBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQpCitSZWZQdHI8
SW1hZ2VCdWZmZXI+IFNWR1JlbmRlcmluZ0NvbnRleHQ6OmNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0
IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBjbGFtcGVkUmVjdCwgY29u
c3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiBjb2xvclNwYWNlLCBSZW5kZXJpbmdNb2RlIHJlbmRl
cmluZ01vZGUsIEhvc3RXaW5kb3cqIGhvc3RXaW5kb3csIGNvbnN0IEdyYXBoaWNzQ29udGV4dCog
Y29udGV4dCkKIHsKICAgICBJbnRTaXplIGNsYW1wZWRTaXplID0gcm91bmRlZEludFNpemUoY2xh
bXBlZFJlY3Quc2l6ZSgpKTsKICAgICBGbG9hdFNpemUgdW5jbGFtcGVkU2l6ZSA9IHJvdW5kZWRJ
bnRTaXplKHRhcmdldFJlY3Quc2l6ZSgpKTsKQEAgLTI2OSw3ICsyNjksNyBAQCBSZWZQdHI8SW1h
Z2VCdWZmZXI+IFNWR1JlbmRlcmluZ0NvbnRleHQ6OmNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZs
b2F0UmVjdCYgdGFyZwogICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRl
KGNsYW1wZWRTaXplLCByZW5kZXJpbmdNb2RlLCBjb250ZXh0LCAxLCBjb2xvclNwYWNlLCBQaXhl
bEZvcm1hdDo6QkdSQTgpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oY29udGV4dCk7Ci0gICAg
YXV0byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoY2xhbXBlZFNpemUsIHJlbmRl
cmluZ01vZGUsIDEsIGNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0OjpCR1JBOCk7CisgICAgYXV0byBp
bWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoY2xhbXBlZFNpemUsIHJlbmRlcmluZ01v
ZGUsIFNob3VsZFVzZURpc3BsYXlMaXN0OjpObywgUmVuZGVyaW5nUHVycG9zZTo6RE9NLCAxLCBj
b2xvclNwYWNlLCBQaXhlbEZvcm1hdDo6QkdSQTgsIGhvc3RXaW5kb3cpOwogI2VuZGlmCiAgICAg
aWYgKCFpbWFnZUJ1ZmZlcikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0NvbnRleHQuaCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyaW5nQ29udGV4dC5oCmluZGV4IDU5NjU5
N2JlMTI0N2E5NmE2MDRhY2NmNDU3ZTA5MjlmZDBmNTBhMGUuLmVmZmY4M2RlYzA1MzdkZDdlZWUy
MjEwMmQ0ZWE2Y2Q0ODgwNDhlZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvU1ZHUmVuZGVyaW5nQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvU1ZHUmVuZGVyaW5nQ29udGV4dC5oCkBAIC02MSw3ICs2MSw3IEBAIHB1YmxpYzoKICAg
ICBib29sIGlzUmVuZGVyaW5nUHJlcGFyZWQoKSBjb25zdCB7IHJldHVybiBtX3JlbmRlcmluZ0Zs
YWdzICYgUmVuZGVyaW5nUHJlcGFyZWQ7IH0KIAogICAgIHN0YXRpYyBSZWZQdHI8SW1hZ2VCdWZm
ZXI+IGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3Qg
QWZmaW5lVHJhbnNmb3JtJiBhYnNvbHV0ZVRyYW5zZm9ybSwgY29uc3QgRGVzdGluYXRpb25Db2xv
clNwYWNlJiwgUmVuZGVyaW5nTW9kZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0KiA9IG51bGxwdHIp
OwotICAgIHN0YXRpYyBSZWZQdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0
IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBjbGFtcGVkUmVjdCwgY29u
c3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiwgUmVuZGVyaW5nTW9kZSwgY29uc3QgR3JhcGhpY3ND
b250ZXh0KiA9IG51bGxwdHIpOworICAgIHN0YXRpYyBSZWZQdHI8SW1hZ2VCdWZmZXI+IGNyZWF0
ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgRmxvYXRSZWN0
JiBjbGFtcGVkUmVjdCwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiwgUmVuZGVyaW5nTW9k
ZSwgSG9zdFdpbmRvdyogPSBudWxscHRyLCBjb25zdCBHcmFwaGljc0NvbnRleHQqID0gbnVsbHB0
cik7CiAKICAgICBzdGF0aWMgdm9pZCByZW5kZXJTdWJ0cmVlVG9Db250ZXh0KEdyYXBoaWNzQ29u
dGV4dCYsIFJlbmRlckVsZW1lbnQmLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mKTsKICAgICBzdGF0
aWMgdm9pZCBjbGlwVG9JbWFnZUJ1ZmZlcihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBBZmZpbmVU
cmFuc2Zvcm0mIGFic29sdXRlVHJhbnNmb3JtLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3Qs
IFJlZlB0cjxJbWFnZUJ1ZmZlcj4mLCBib29sIHNhZmVUb0NsZWFyKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVy
LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVEaXNwbGF5TGlz
dFJlY29yZGVyLmNwcAppbmRleCBhZGE1NGQ0MThhMGI2MDI1NDZiMTdlNTdjNjZkZDBjZDY5MDMw
ZDEzLi40NTBkOGY3YjNmODBmNDAyNzQ3OWRmYTMxZGVkNjYxNWZlMzVlNzM3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlRGlzcGxheUxpc3RSZWNv
cmRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZURp
c3BsYXlMaXN0UmVjb3JkZXIuY3BwCkBAIC0xMjMsMjAgKzEyMywzMiBAQCB2b2lkIFJlbW90ZURp
c3BsYXlMaXN0UmVjb3JkZXI6OnNldFN0YXRlKERpc3BsYXlMaXN0OjpTZXRTdGF0ZSYmIGl0ZW0p
CiAKIHZvaWQgUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlcjo6c2V0U3RhdGVXaXRoUXVhbGlmaWVk
SWRlbnRpZmllcnMoRGlzcGxheUxpc3Q6OlNldFN0YXRlJiYgaXRlbSwgUXVhbGlmaWVkUmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyIHN0cm9rZVBhdHRlcm5JbWFnZUlkZW50aWZpZXIsIFF1YWxp
ZmllZFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBmaWxsUGF0dGVybkltYWdlSWRlbnRpZmll
cikKIHsKLSAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+IHN0cm9rZVBhdHRlcm5JbWFnZTsKLSAgICBp
ZiAoc3Ryb2tlUGF0dGVybkltYWdlSWRlbnRpZmllcikKLSAgICAgICAgc3Ryb2tlUGF0dGVybklt
YWdlID0gcmVzb3VyY2VDYWNoZSgpLmNhY2hlZE5hdGl2ZUltYWdlKHN0cm9rZVBhdHRlcm5JbWFn
ZUlkZW50aWZpZXIpOworICAgIGF1dG8gY2FjaGVkU291cmNlSW1hZ2UgPSBbJl0oUXVhbGlmaWVk
UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHBhdHRlcm5JbWFnZUlkZW50aWZpZXIpIC0+IHN0
ZDo6b3B0aW9uYWw8U291cmNlSW1hZ2U+IHsKKyAgICAgICAgaWYgKCFwYXR0ZXJuSW1hZ2VJZGVu
dGlmaWVyKQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIFJlZlB0cjxO
YXRpdmVJbWFnZT4gZmlsbFBhdHRlcm5JbWFnZTsKLSAgICBpZiAoZmlsbFBhdHRlcm5JbWFnZUlk
ZW50aWZpZXIpCi0gICAgICAgIGZpbGxQYXR0ZXJuSW1hZ2UgPSByZXNvdXJjZUNhY2hlKCkuY2Fj
aGVkTmF0aXZlSW1hZ2UoZmlsbFBhdHRlcm5JbWFnZUlkZW50aWZpZXIpOworICAgICAgICBpZiAo
YXV0byBuYXRpdmVJbWFnZSA9IHJlc291cmNlQ2FjaGUoKS5jYWNoZWROYXRpdmVJbWFnZShwYXR0
ZXJuSW1hZ2VJZGVudGlmaWVyKSkKKyAgICAgICAgICAgIHJldHVybiBSZWYgeyAqbmF0aXZlSW1h
Z2UgfTsKKyAgICAgICAgaWYgKGF1dG8gaW1hZ2VCdWZmZXIgPSByZXNvdXJjZUNhY2hlKCkuY2Fj
aGVkSW1hZ2VCdWZmZXIocGF0dGVybkltYWdlSWRlbnRpZmllcikpCisgICAgICAgICAgICByZXR1
cm4gUmVmIHsgKmltYWdlQnVmZmVyIH07CisKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
KyAgICB9OworICAgIAorICAgIGF1dG8gc3Ryb2tlUGF0dGVybkltYWdlID0gY2FjaGVkU291cmNl
SW1hZ2Uoc3Ryb2tlUGF0dGVybkltYWdlSWRlbnRpZmllcik7CisgICAgaWYgKCFzdHJva2VQYXR0
ZXJuSW1hZ2UpCisgICAgICAgIHN0cm9rZVBhdHRlcm5JbWFnZUlkZW50aWZpZXIgPSB7IH07CiAK
LSAgICBoYW5kbGVJdGVtKFdURk1vdmUoaXRlbSksIHN0cm9rZVBhdHRlcm5JbWFnZS5nZXQoKSwg
ZmlsbFBhdHRlcm5JbWFnZS5nZXQoKSk7CisgICAgYXV0byBmaWxsUGF0dGVybkltYWdlID0gY2Fj
aGVkU291cmNlSW1hZ2UoZmlsbFBhdHRlcm5JbWFnZUlkZW50aWZpZXIpOworICAgIGlmICghZmls
bFBhdHRlcm5JbWFnZSkKKyAgICAgICAgZmlsbFBhdHRlcm5JbWFnZUlkZW50aWZpZXIgPSB7IH07
CiAKLSAgICBpZiAoc3Ryb2tlUGF0dGVybkltYWdlKQorICAgIGhhbmRsZUl0ZW0oV1RGTW92ZShp
dGVtKSwgV1RGTW92ZShzdHJva2VQYXR0ZXJuSW1hZ2UpLCBXVEZNb3ZlKGZpbGxQYXR0ZXJuSW1h
Z2UpKTsKKworICAgIGlmIChzdHJva2VQYXR0ZXJuSW1hZ2VJZGVudGlmaWVyKQogICAgICAgICBy
ZXNvdXJjZUNhY2hlKCkucmVjb3JkUmVzb3VyY2VVc2Uoc3Ryb2tlUGF0dGVybkltYWdlSWRlbnRp
Zmllcik7CiAKLSAgICBpZiAoZmlsbFBhdHRlcm5JbWFnZSkKKyAgICBpZiAoZmlsbFBhdHRlcm5J
bWFnZUlkZW50aWZpZXIpCiAgICAgICAgIHJlc291cmNlQ2FjaGUoKS5yZWNvcmRSZXNvdXJjZVVz
ZShmaWxsUGF0dGVybkltYWdlSWRlbnRpZmllcik7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlclBy
b3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlRGlz
cGxheUxpc3RSZWNvcmRlclByb3h5LmNwcAppbmRleCA5NDIxZGQyMzhjYjZlYzYzZmUxYzA3ZDQ3
MzYxY2IwYjY1ZmY0MGNiLi41NzMwZGQ4ODE5ZThlNDJlM2I2YjY2ZWYxN2IzNDZlODdiNTI0MjYx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90
ZURpc3BsYXlMaXN0UmVjb3JkZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyUHJveHkuY3BwCkBAIC00
MDYsMjQgKzQwNiwzNiBAQCB2b2lkIFJlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXJQcm94eTo6cmVj
b3JkUmVzb3VyY2VVc2UoTmF0aXZlSW1hZ2UmIGltYWdlKQogICAgIG1fcmVuZGVyaW5nQmFja2Vu
ZC0+cmVjb3JkTmF0aXZlSW1hZ2VVc2UoaW1hZ2UpOwogfQogCi12b2lkIFJlbW90ZURpc3BsYXlM
aXN0UmVjb3JkZXJQcm94eTo6cmVjb3JkUmVzb3VyY2VVc2UoRm9udCYgZm9udCkKK3ZvaWQgUmVt
b3RlRGlzcGxheUxpc3RSZWNvcmRlclByb3h5OjpyZWNvcmRSZXNvdXJjZVVzZShJbWFnZUJ1ZmZl
ciYgaW1hZ2VCdWZmZXIpCiB7CiAgICAgaWYgKFVOTElLRUxZKCFtX3JlbmRlcmluZ0JhY2tlbmQp
KSB7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCi0gICAgbV9yZW5kZXJpbmdCYWNrZW5kLT5yZWNvcmRGb250VXNlKGZvbnQpOworICAgIG1f
cmVuZGVyaW5nQmFja2VuZC0+cmVjb3JkSW1hZ2VCdWZmZXJVc2UoaW1hZ2VCdWZmZXIpOwogfQog
Ci12b2lkIFJlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXJQcm94eTo6cmVjb3JkUmVzb3VyY2VVc2Uo
SW1hZ2VCdWZmZXImIGltYWdlQnVmZmVyKQordm9pZCBSZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVy
UHJveHk6OnJlY29yZFJlc291cmNlVXNlKFNvdXJjZUltYWdlJiBpbWFnZSkKK3sKKyAgICBhdXRv
IGltYWdlQnVmZmVyID0gaW1hZ2UuaW1hZ2VCdWZmZXJJZkV4aXN0cygpOworICAgIGlmIChpbWFn
ZUJ1ZmZlciAmJiBjYW5EcmF3SW1hZ2VCdWZmZXIoKmltYWdlQnVmZmVyKSkgeworICAgICAgICBy
ZWNvcmRSZXNvdXJjZVVzZSgqaW1hZ2VCdWZmZXIpOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgaWYgKGF1dG8gbmF0aXZlSW1hZ2UgPSBpbWFnZS5uYXRpdmVJbWFnZSgpKQorICAgICAg
ICByZWNvcmRSZXNvdXJjZVVzZSgqbmF0aXZlSW1hZ2UpOworfQorCit2b2lkIFJlbW90ZURpc3Bs
YXlMaXN0UmVjb3JkZXJQcm94eTo6cmVjb3JkUmVzb3VyY2VVc2UoRm9udCYgZm9udCkKIHsKICAg
ICBpZiAoVU5MSUtFTFkoIW1fcmVuZGVyaW5nQmFja2VuZCkpIHsKICAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBtX3JlbmRlcmluZ0Jh
Y2tlbmQtPnJlY29yZEltYWdlQnVmZmVyVXNlKGltYWdlQnVmZmVyKTsKKyAgICBtX3JlbmRlcmlu
Z0JhY2tlbmQtPnJlY29yZEZvbnRVc2UoZm9udCk7CiB9CiAKIHZvaWQgUmVtb3RlRGlzcGxheUxp
c3RSZWNvcmRlclByb3h5OjpmbHVzaENvbnRleHQoR3JhcGhpY3NDb250ZXh0Rmx1c2hJZGVudGlm
aWVyIGlkZW50aWZpZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L2dyYXBoaWNzL1JlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXJQcm94eS5oIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyUHJveHku
aAppbmRleCA3MWZkYjYzZGY0YWM4NDk3NDcyMzI2OWI3ZjAzZDk5N2I4MTM5ODlkLi5jY2E2Y2Y2
MGVkMDlkMjE5ZGI1ODIzZWUyMzQ0MWE3MjQ2NTA0YjgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXJQcm94
eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlRGlz
cGxheUxpc3RSZWNvcmRlclByb3h5LmgKQEAgLTEzNiw4ICsxMzYsOSBAQCBwcml2YXRlOgogICAg
IHZvaWQgcmVjb3JkQXBwbHlEZXZpY2VTY2FsZUZhY3RvcihmbG9hdCkgZmluYWw7CiAKICAgICB2
b2lkIHJlY29yZFJlc291cmNlVXNlKFdlYkNvcmU6Ok5hdGl2ZUltYWdlJikgZmluYWw7Ci0gICAg
dm9pZCByZWNvcmRSZXNvdXJjZVVzZShXZWJDb3JlOjpGb250JikgZmluYWw7CiAgICAgdm9pZCBy
ZWNvcmRSZXNvdXJjZVVzZShXZWJDb3JlOjpJbWFnZUJ1ZmZlciYpIGZpbmFsOworICAgIHZvaWQg
cmVjb3JkUmVzb3VyY2VVc2UoV2ViQ29yZTo6U291cmNlSW1hZ2UmKSBmaW5hbDsKKyAgICB2b2lk
IHJlY29yZFJlc291cmNlVXNlKFdlYkNvcmU6OkZvbnQmKSBmaW5hbDsKIAogICAgIHN0ZDo6dW5p
cXVlX3B0cjxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ+IGNyZWF0ZU5lc3RlZENvbnRleHQoY29u
c3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBpbml0aWFsQ2xpcCwgY29uc3QgV2ViQ29yZTo6QWZmaW5l
VHJhbnNmb3JtJiBpbml0aWFsQ1RNKSBmaW5hbDsKIAo=
</data>
<flag name="commit-queue"
          id="469329"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>444336</attachid>
            <date>2021-11-15 20:36:16 -0800</date>
            <delta_ts>2021-11-15 21:30:43 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-232411-20211115203615.patch</filename>
            <type>text/plain</type>
            <size>47168</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg1Nzk2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmQ1YWJmYjdlYThmZGY3
ODJlN2EyM2Q0NTQxY2RjOWFiN2U1NzUxNy4uOWYyZTM2MTJmMjJmMjExZGEwNjQ3ODViNDM2Yjky
MGIyZjY0ZDY0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY0IEBACisyMDIxLTExLTE1ICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2VzcyBd
IFBhdHRlcm4gc2hvdWxkIGhvbGQgYW4gSW1hZ2VCdWZmZXIgd2hpY2ggY2FuIGJlIGNvbnZlcnRl
ZCB0byBhIE5hdGl2ZUltYWdlIHdoZW4gbmVlZGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzI0MTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgdGhlIG5ldyB0eXBlIGNhbGxlZCAnU291cmNlSW1h
Z2UnIHdoaWNoIGlzIGEgdmFyaWFudCBvZiBOYXRpdmVJbWFnZSAKKyAgICAgICAgYW5kIEltYWdl
QnVmZmVyLiBNYWtlIFBhdHRlcm4gaG9sZCBhIFNvdXJjZUltYWdlIGFuZCBwcm92aWRlIGdldHRl
cnMgdG8gCisgICAgICAgIHJldHJpZXZlIHRoZSBOYXRpdmVJbWFnZSBhbmQgSW1hZ2VCdWZmZXIu
IEluIHRoZXNlIGdldHRlcnMgd2UgY29udmVydAorICAgICAgICBmcm9tIGltYWdlIHNvdXJjZSB0
byB0aGUgb3RoZXIuCisKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBXZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFz
UGF0dGVybi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNQYXR0ZXJuOjpjcmVhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUGF0dGVybjo6Q2FudmFzUGF0dGVybik6CisgICAgICAg
ICogaHRtbC9jYW52YXMvQ2FudmFzUGF0dGVybi5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL0Nh
bnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFz
UmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6Y3JlYXRlUGF0dGVybik6CisgICAgICAgICogaW5zcGVj
dG9yL0luc3BlY3RvckNhbnZhcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDYW52
YXM6OmJ1aWxkQXJyYXlGb3JDYW52YXNQYXR0ZXJuKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9QYXR0ZXJuLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhdHRlcm46OmNyZWF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpQYXR0ZXJuOjpQYXR0ZXJuKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9QYXR0ZXJuLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlSW1h
Z2UuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUltYWdlOjpTb3VyY2VJbWFn
ZSk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VJbWFnZTo6bmF0aXZlSW1hZ2VJZkV4aXN0cyBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VJbWFnZTo6bmF0aXZlSW1hZ2UpOgorICAg
ICAgICAoV2ViQ29yZTo6U291cmNlSW1hZ2U6OmltYWdlQnVmZmVySWZFeGlzdHMgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6U291cmNlSW1hZ2U6OmltYWdlQnVmZmVyKToKKyAgICAgICAgKFdl
YkNvcmU6OlNvdXJjZUltYWdlOjppbWFnZUlkZW50aWZpZXIgY29uc3QpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL1NvdXJjZUltYWdlLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL1BhdHRlcm4uY3BwLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2NhaXJvL0NhaXJvT3BlcmF0aW9ucy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWlybzo6
RmlsbFNvdXJjZTo6RmlsbFNvdXJjZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vUGF0dGVybkNhaXJvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhdHRlcm46OmNyZWF0ZVBs
YXRmb3JtUGF0dGVybiBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGF0
dGVybkNHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhdHRlcm46OmNyZWF0ZVBsYXRmb3JtUGF0
dGVybiBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0SXRlbXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlNldFN0
YXRlOjphcHBseSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0SXRlbXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpTZXRTdGF0
ZTo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3RSZWNvcmRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rp
c3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVySW1wbC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6UmVjb3JkZXJJbXBsOjpyZWNvcmRSZXNvdXJjZVVzZSk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXJJbXBs
Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
UmVwbGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OmFwcGx5U2V0U3Rh
dGVJdGVtKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFVGlsZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpGRVRpbGU6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSk6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpwYXR0ZXJuRm9yRGVzY3JpcHRpb24pOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHUmVzb3VyY2VQYXR0ZXJuLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291
cmNlUGF0dGVybjo6YnVpbGRQYXR0ZXJuKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jl
c291cmNlUGF0dGVybjo6Y3JlYXRlVGlsZUltYWdlIGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJp
bmcvc3ZnL1NWR1JlbmRlcmluZ0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVu
ZGVyaW5nQ29udGV4dDo6Y3JlYXRlSW1hZ2VCdWZmZXIpOgorICAgICAgICAqIHJlbmRlcmluZy9z
dmcvU1ZHUmVuZGVyaW5nQ29udGV4dC5oOgorCiAyMDIxLTExLTE0ICBTYWlkIEFib3UtSGFsbGF3
YSAgPHNhaWRAYXBwbGUuY29tPgogCiAgICAgICAgIFtHUFUgUHJvY2Vzc10gUmVtb3ZlIHRoZSBy
ZWZlcmVuY2UgdG8gRmlsdGVyIGZyb20gRmlsdGVyRWZmZWN0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGFmNjc3NTc1
MDQ5YmYxNzgwNTk0ODg1NjY5MGRiNjJkMWI0MGVjNjguLjYxZWNiNDc1YWVjZWU4ZDU4YzkwNzBj
ZDVjNDdkOGUyMWZhZjRhNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMjEtMTEtMTUg
IFNhaWQgQWJvdS1IYWxsYXdhICA8c2FpZEBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQVSBQcm9j
ZXNzIF0gUGF0dGVybiBzaG91bGQgaG9sZCBhbiBJbWFnZUJ1ZmZlciB3aGljaCBjYW4gYmUgY29u
dmVydGVkIHRvIGEgTmF0aXZlSW1hZ2Ugd2hlbiBuZWVkZWQKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMjQxMQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEhhbmRsZSBlbmNvZGluZyBhbWQgZGVjb2Rpbmcg
dGhlIFNvdXJjZUltYWdlIGZvciByZWNvcmRpbmcgYW5kIHJlcGxheWluZworICAgICAgICB0aGUg
U2V0U3RhdGUgRGlzcGxheUxpc3QgaXRlbSBpbiBHUFVQcm9jZXNzLgorCisgICAgICAgICogR1BV
UHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlcjo6c2V0U3RhdGVXaXRoUXVhbGlmaWVk
SWRlbnRpZmllcnMpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZURp
c3BsYXlMaXN0UmVjb3JkZXJQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZURpc3Bs
YXlMaXN0UmVjb3JkZXJQcm94eTo6cmVjb3JkUmVzb3VyY2VVc2UpOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXJQcm94eS5oOgorCiAy
MDIxLTExLTE0ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAg
ICAgIEF0dGFjaCBJT0hJREV2ZW50IHRpbWVzdGFtcHMgdG8gd2hlZWwgZXZlbnRzCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMu
dHh0CmluZGV4IDU0ZDhkM2JkOTgwZThiOWI2YjgyMWY5Y2NiNGZhNTIyZTFiZjFlMDIuLjcyOGU0
ZGIxNDIwNTA5NjgyNTIxN2MxMzZjZjVkMDAwMTBhMDk3NjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBAIC0y
MDU5LDYgKzIwNTksNyBAQCBwbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVWaWRlb1NhbXBsZS5jcHAK
IHBsYXRmb3JtL2dyYXBoaWNzL1JvdW5kZWRSZWN0LmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvU2hh
ZG93Qmx1ci5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL1NvdXJjZUJ1ZmZlclByaXZhdGUuY3BwCitw
bGF0Zm9ybS9ncmFwaGljcy9Tb3VyY2VJbWFnZS5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL1N0cmlu
Z1RydW5jYXRvci5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL1RleHRSdW4uY3BwCiBwbGF0Zm9ybS9n
cmFwaGljcy9UZXh0VHJhY2tSZXByZXNlbnRhdGlvbi5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA5OTgxMGViODIwM2NjZGE2
YjVjOWUzODE2MTRiNjJiZTZlZjJhMWNjLi43YzkzZWVmNTJlNzk3Mjc2OTZmMDYwZTVlMTI4MzA4
M2Q3MWRlMTgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCkBAIC0yMjkxLDYgKzIyOTEsNyBAQAogCQk3MUYwNUY4MDI1MTI0NDJFMDA3
MUU2OTMgLyogQ1NTUHJvcGVydHlBbmltYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcxRjA1RjdFMjUxMjQ0MEMwMDcxRTY5MyAvKiBDU1NQcm9w
ZXJ0eUFuaW1hdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTcyMTQ0MzMzMjIzRUM4QjAwMEYxMkZGNyAvKiBTVkdQcm9wZXJ0eS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTVFRTUzNjMyMjNCMkEy
NDAwRkJBOTQ0IC8qIFNWR1Byb3BlcnR5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzIxNDQzMzQyMjNFQzkxNjAwRjEyRkY3IC8qIFNWR1Byb3Bl
cnR5T3duZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDU1RUU1MzYwMjIzQjJBMjEwMEZCQTk0NCAvKiBTVkdQcm9wZXJ0eU93bmVyLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNzIxNEI5QTkyNzQyRkI5
OTAwM0JFNkRGIC8qIFNvdXJjZUltYWdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA3MjE0QjlBODI3NDJGNjI5MDAzQkU2REYgLyogU291cmNlSW1hZ2Uu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3MjFC
NDk3NDI1MTJCQTNCMDBGRTlEM0IgLyogSW1hZ2VCaXRtYXBCYWNraW5nLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MjFCNDk3MDI1MTJBQzA0MDBGRTlE
M0IgLyogSW1hZ2VCaXRtYXBCYWNraW5nLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzIyODNGMEUyMzBCMjY4QzAwRjVEODI4IC8qIEltYWdlUGFp
bnRpbmdPcHRpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA3MkMxOEEzRjIzMEIwNEI3MDA2ODQ3QzcgLyogSW1hZ2VQYWludGluZ09wdGlvbnMuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3MjRFRDMz
MjFBM0E4QjIzMDBGNUYxM0MgLyogSlNFWFRCbGVuZE1pbk1heC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzI0RUQzMzAxQTNBOEIyMzAwRjVGMTNDIC8q
IEpTRVhUQmxlbmRNaW5NYXguaCAqLzsgfTsKQEAgLTEwODQ3LDYgKzEwODQ4LDggQEAKIAkJNzFG
Rjg1MTgyMkEzRjgxRjAwNUQ1OTU5IC8qIE5hdmlnYXRvck1heFRvdWNoUG9pbnRzLmlkbCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQ7IHBhdGggPSBOYXZpZ2F0b3JNYXhUb3VjaFBvaW50cy5pZGw7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyMTQ0MzQ1MjI0MEM4QkEwMEYxMkZGNyAvKiBTVkdBbmlt
YXRlZFZhbHVlUHJvcGVydHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHQW5pbWF0ZWRWYWx1ZVByb3Bl
cnR5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyMTQ0MzQ2MjI0MENBRDIwMEYx
MkZGNyAvKiBTVkdWYWx1ZVByb3BlcnR5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR1ZhbHVlUHJvcGVy
dHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzIxNEI5QTgyNzQyRjYyOTAwM0JF
NkRGIC8qIFNvdXJjZUltYWdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNvdXJjZUltYWdlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcyMTRCOUFDMjc0MzUxNEEwMDNCRTZERiAvKiBTb3Vy
Y2VJbWFnZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTb3VyY2VJbWFnZS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyMUI0OTZGMjUxMkFDMDQwMEZFOUQzQiAvKiBJbWFnZUJp
dG1hcEJhY2tpbmcuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW1hZ2VCaXRtYXBCYWNraW5nLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzIxQjQ5NzAyNTEyQUMwNDAwRkU5RDNC
IC8qIEltYWdlQml0bWFwQmFja2luZy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbWFnZUJpdG1hcEJhY2tp
bmcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzIyQTgxNUMyMzhGRDUwNTAwQzAw
NTgzIC8qIEFuaW1hdGlvbkZyYW1lUmF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBbmltYXRpb25GcmFt
ZVJhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI4MDM0LDYgKzI4MDM3LDgg
QEAKIAkJCQkxREQxMjdBQzI1NkUzQTg3MDBCMjI3RDcgLyogU291cmNlQnVmZmVyUHJpdmF0ZS5j
cHAgKi8sCiAJCQkJQ0Q2NDFFQjIxODE4RjVFRDAwRUU0QzQxIC8qIFNvdXJjZUJ1ZmZlclByaXZh
dGUuaCAqLywKIAkJCQlDREM4QjVBQzE4MDRBRTVEMDAxNkU2ODUgLyogU291cmNlQnVmZmVyUHJp
dmF0ZUNsaWVudC5oICovLAorCQkJCTcyMTRCOUFDMjc0MzUxNEEwMDNCRTZERiAvKiBTb3VyY2VJ
bWFnZS5jcHAgKi8sCisJCQkJNzIxNEI5QTgyNzQyRjYyOTAwM0JFNkRGIC8qIFNvdXJjZUltYWdl
LmggKi8sCiAJCQkJN0M4M0RFODUxRDA0Q0JENDAwRkVCQ0YzIC8qIFNwcmluZ1NvbHZlci5oICov
LAogCQkJCUIyMzU0MEYwMEQwMDc4MkUwMDIzODJGQSAvKiBTdHJpbmdUcnVuY2F0b3IuY3BwICov
LAogCQkJCUIyMzU0MEYxMEQwMDc4MkUwMDIzODJGQSAvKiBTdHJpbmdUcnVuY2F0b3IuaCAqLywK
QEAgLTM2MTA5LDYgKzM2MTE0LDcgQEAKIAkJCQlDREM4QjVBQjE4MDQ3RkYxMDAxNkU2ODUgLyog
U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMuaCBpbiBIZWFkZXJzICovLAogCQkJCUNEQzhCNUFE
MTgwNEFFNUQwMDE2RTY4NSAvKiBTb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50LmggaW4gSGVhZGVy
cyAqLywKIAkJCQk4NEE4MUY0MjBGQzdFMDI3MDA5NTUzMDAgLyogU291cmNlR3JhcGhpYy5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJNzIxNEI5QTkyNzQyRkI5OTAwM0JFNkRGIC8qIFNvdXJjZUltYWdl
LmggaW4gSGVhZGVycyAqLywKIAkJCQlEMDFBMjdBRTEwQzlCRkQ4MDAwMjZBNDIgLyogU3BhY2VT
cGxpdFN0cmluZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNjI2Q0RFMEYxMTQwNDI0QzAwMUU1QTY4
IC8qIFNwYXRpYWxOYXZpZ2F0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzQ5NTBDRDI1Mzk0
MzYxMDA5OUYxNzEgLyogU3BlZWNoUmVjb2duaXRpb24uaCBpbiBIZWFkZXJzICovLApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUGF0dGVybi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNQYXR0ZXJuLmNwcAppbmRleCA4ZjE5MzgyY2Iy
MDNkMmU0MTFiY2E5NTdhNjkxYjFmYWM5OGEyY2ExLi42MGNlM2RlYTYxZTI0ZmE3YmQ0OWUyOGYx
N2U3ZTQ0OGNkYjIwODJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9D
YW52YXNQYXR0ZXJuLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNQ
YXR0ZXJuLmNwcApAQCAtMzQsMTIgKzM0LDEyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
UmVmPENhbnZhc1BhdHRlcm4+IENhbnZhc1BhdHRlcm46OmNyZWF0ZShSZWY8TmF0aXZlSW1hZ2U+
JiYgaW1hZ2UsIGJvb2wgcmVwZWF0WCwgYm9vbCByZXBlYXRZLCBib29sIG9yaWdpbkNsZWFuKQor
UmVmPENhbnZhc1BhdHRlcm4+IENhbnZhc1BhdHRlcm46OmNyZWF0ZShTb3VyY2VJbWFnZSYmIGlt
YWdlLCBib29sIHJlcGVhdFgsIGJvb2wgcmVwZWF0WSwgYm9vbCBvcmlnaW5DbGVhbikKIHsKICAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDYW52YXNQYXR0ZXJuKFdURk1vdmUoaW1hZ2UpLCByZXBl
YXRYLCByZXBlYXRZLCBvcmlnaW5DbGVhbikpOwogfQogCi1DYW52YXNQYXR0ZXJuOjpDYW52YXNQ
YXR0ZXJuKFJlZjxOYXRpdmVJbWFnZT4mJiBpbWFnZSwgYm9vbCByZXBlYXRYLCBib29sIHJlcGVh
dFksIGJvb2wgb3JpZ2luQ2xlYW4pCitDYW52YXNQYXR0ZXJuOjpDYW52YXNQYXR0ZXJuKFNvdXJj
ZUltYWdlJiYgaW1hZ2UsIGJvb2wgcmVwZWF0WCwgYm9vbCByZXBlYXRZLCBib29sIG9yaWdpbkNs
ZWFuKQogICAgIDogbV9wYXR0ZXJuKFBhdHRlcm46OmNyZWF0ZShXVEZNb3ZlKGltYWdlKSwgeyBy
ZXBlYXRYLCByZXBlYXRZIH0pKQogICAgICwgbV9vcmlnaW5DbGVhbihvcmlnaW5DbGVhbikKIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1BhdHRlcm4uaCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1BhdHRlcm4uaAppbmRleCBlNDZkMjFi
YzUxMzVkOWE3NGY0NTc1YzlkZDY1ZTljZWNkY2I4ZDJhLi44NzFlMDQ1NzdjYzUxZTU5ODA1N2Jl
Y2UyYWJkNzVmNjZhYzk5YzYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9DYW52YXNQYXR0ZXJuLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFz
UGF0dGVybi5oCkBAIC0zMiwxMyArMzIsMTMgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1j
bGFzcyBOYXRpdmVJbWFnZTsKIGNsYXNzIFBhdHRlcm47CitjbGFzcyBTb3VyY2VJbWFnZTsKIHN0
cnVjdCBET01NYXRyaXgyREluaXQ7CiAKIGNsYXNzIENhbnZhc1BhdHRlcm4gOiBwdWJsaWMgUmVm
Q291bnRlZDxDYW52YXNQYXR0ZXJuPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxDYW52YXNQ
YXR0ZXJuPiBjcmVhdGUoUmVmPE5hdGl2ZUltYWdlPiYmLCBib29sIHJlcGVhdFgsIGJvb2wgcmVw
ZWF0WSwgYm9vbCBvcmlnaW5DbGVhbik7CisgICAgc3RhdGljIFJlZjxDYW52YXNQYXR0ZXJuPiBj
cmVhdGUoU291cmNlSW1hZ2UmJiwgYm9vbCByZXBlYXRYLCBib29sIHJlcGVhdFksIGJvb2wgb3Jp
Z2luQ2xlYW4pOwogICAgIH5DYW52YXNQYXR0ZXJuKCk7CiAKICAgICBzdGF0aWMgYm9vbCBwYXJz
ZVJlcGV0aXRpb25UeXBlKGNvbnN0IFN0cmluZyYsIGJvb2wmIHJlcGVhdFgsIGJvb2wmIHJlcGVh
dFkpOwpAQCAtNTEsNyArNTEsNyBAQCBwdWJsaWM6CiAgICAgRXhjZXB0aW9uT3I8dm9pZD4gc2V0
VHJhbnNmb3JtKERPTU1hdHJpeDJESW5pdCYmKTsKIAogcHJpdmF0ZToKLSAgICBDYW52YXNQYXR0
ZXJuKFJlZjxOYXRpdmVJbWFnZT4mJiwgYm9vbCByZXBlYXRYLCBib29sIHJlcGVhdFksIGJvb2wg
b3JpZ2luQ2xlYW4pOworICAgIENhbnZhc1BhdHRlcm4oU291cmNlSW1hZ2UmJiwgYm9vbCByZXBl
YXRYLCBib29sIHJlcGVhdFksIGJvb2wgb3JpZ2luQ2xlYW4pOwogCiAgICAgUmVmPFBhdHRlcm4+
IG1fcGF0dGVybjsKICAgICBib29sIG1fb3JpZ2luQ2xlYW47CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuY3Bw
CmluZGV4IDZkZWZlYjgxMmMzNzIyYzM4ZWEyZmM4ZDA3OTFmYWUyOWIxNjBkNmUuLjFlMDY2NDdk
ZGU3ZmZlNzA4MTYwNWEzYWY3MjBkOTQ0ZTU0MjIwZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuY3Bw
CkBAIC0xOTk0LDcgKzE5OTQsNyBAQCBFeGNlcHRpb25PcjxSZWZQdHI8Q2FudmFzUGF0dGVybj4+
IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmNyZWF0ZVBhdHRlcm4oSAogCiAgICAgdmlk
ZW9FbGVtZW50LnBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0KGltYWdlQnVmZmVyLT5jb250ZXh0
KCksIEZsb2F0UmVjdChGbG9hdFBvaW50KCksIHNpemUodmlkZW9FbGVtZW50KSkpOwogICAgIAot
ICAgIHJldHVybiBSZWZQdHI8Q2FudmFzUGF0dGVybj4geyBDYW52YXNQYXR0ZXJuOjpjcmVhdGUo
SW1hZ2VCdWZmZXI6OnNpbmtJbnRvTmF0aXZlSW1hZ2UoV1RGTW92ZShpbWFnZUJ1ZmZlcikpLnJl
bGVhc2VOb25OdWxsKCksIHJlcGVhdFgsIHJlcGVhdFksIG9yaWdpbkNsZWFuKSB9OworICAgIHJl
dHVybiBSZWZQdHI8Q2FudmFzUGF0dGVybj4geyBDYW52YXNQYXR0ZXJuOjpjcmVhdGUoaW1hZ2VC
dWZmZXIucmVsZWFzZU5vbk51bGwoKSwgcmVwZWF0WCwgcmVwZWF0WSwgb3JpZ2luQ2xlYW4pIH07
CiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckNhbnZhcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFz
LmNwcAppbmRleCBlODQ3ZmU2ODExMjczMjUwNmIxZDA4NDZmNjMzZGFjNGI5NjlkMTY1Li4wMzE5
Y2MzN2RmMjVmMmM2NmY5NmMyNTk2MTIxMTVjODkzODNjNzdlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzLmNwcApAQCAtMTMzNiwxMCArMTMzNiw3IEBAIFJl
ZjxKU09OOjpBcnJheU9mPEpTT046OlZhbHVlPj4gSW5zcGVjdG9yQ2FudmFzOjpidWlsZEFycmF5
Rm9yQ2FudmFzR3JhZGllbnQoY29uCiAKIFJlZjxKU09OOjpBcnJheU9mPEpTT046OlZhbHVlPj4g
SW5zcGVjdG9yQ2FudmFzOjpidWlsZEFycmF5Rm9yQ2FudmFzUGF0dGVybihjb25zdCBDYW52YXNQ
YXR0ZXJuJiBjYW52YXNQYXR0ZXJuKQogewotICAgIGF1dG8mIHRpbGVJbWFnZSA9IGNhbnZhc1Bh
dHRlcm4ucGF0dGVybigpLnRpbGVJbWFnZSgpOwotICAgIEZsb2F0UmVjdCByZWN0ID0geyB7IH0s
IHRpbGVJbWFnZS5zaXplKCkgfTsKLSAgICBhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6
OmNyZWF0ZSh0aWxlSW1hZ2Uuc2l6ZSgpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAx
LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKLSAg
ICBpbWFnZUJ1ZmZlci0+Y29udGV4dCgpLmRyYXdOYXRpdmVJbWFnZSh0aWxlSW1hZ2UsIHRpbGVJ
bWFnZS5zaXplKCksIHJlY3QsIHJlY3QpOworICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBjYW52YXNQ
YXR0ZXJuLnBhdHRlcm4oKS50aWxlSW1hZ2VCdWZmZXIoKTsKIAogICAgIFN0cmluZyByZXBlYXQ7
CiAgICAgYm9vbCByZXBlYXRYID0gY2FudmFzUGF0dGVybi5wYXR0ZXJuKCkucmVwZWF0WCgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0dGVybi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXR0ZXJuLmNwcAppbmRleCA2MzUz
MjM3NjlmODAzM2RlMzI4ZThkNDRlNTc5NzVhMWQzY2Q2MDY1Li4xMDRiMzA2YTNhODgxMzA5NGMx
NzUzMGRlYWRjMWJlYzdiNzMwMjRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9QYXR0ZXJuLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9QYXR0ZXJuLmNwcApAQCAtMjcsMTYgKzI3LDE4IEBACiAjaW5jbHVkZSAiY29uZmlnLmgi
CiAjaW5jbHVkZSAiUGF0dGVybi5oIgogCisjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCiAj
aW5jbHVkZSAiSW1hZ2UuaCIKKyNpbmNsdWRlICJJbWFnZUJ1ZmZlci5oIgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLVJlZjxQYXR0ZXJuPiBQYXR0ZXJuOjpjcmVhdGUoUmVmPE5hdGl2ZUltYWdl
PiYmIHRpbGVJbWFnZSwgY29uc3QgUGFyYW1ldGVycyYgcGFyYW1ldGVycykKK1JlZjxQYXR0ZXJu
PiBQYXR0ZXJuOjpjcmVhdGUoU291cmNlSW1hZ2UmJiB0aWxlSW1hZ2UsIGNvbnN0IFBhcmFtZXRl
cnMmIHBhcmFtZXRlcnMpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUGF0dGVybihXVEZN
b3ZlKHRpbGVJbWFnZSksIHBhcmFtZXRlcnMpKTsKIH0KIAotUGF0dGVybjo6UGF0dGVybihSZWY8
TmF0aXZlSW1hZ2U+JiYgaW1hZ2UsIGNvbnN0IFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCitQYXR0
ZXJuOjpQYXR0ZXJuKFNvdXJjZUltYWdlJiYgaW1hZ2UsIGNvbnN0IFBhcmFtZXRlcnMmIHBhcmFt
ZXRlcnMpCiAgICAgOiBtX3RpbGVJbWFnZShXVEZNb3ZlKGltYWdlKSkKICAgICAsIG1fcGFyYW1l
dGVycyhwYXJhbWV0ZXJzKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvUGF0dGVybi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0
dGVybi5oCmluZGV4IDFjOTYxZmJmNDZlODM2ZjQwMDdlNjBhOTgxNDFmNDkxMjRiNTQ1MDMuLjQ2
MWRiNmE4ODQ1ZmJiZTg2N2VhNTk2ZjIwMGU4MmY4OTBlYmZmYjUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BhdHRlcm4uaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXR0ZXJuLmgKQEAgLTI4LDcgKzI4LDcgQEAKICNwcmFnbWEg
b25jZQogCiAjaW5jbHVkZSAiQWZmaW5lVHJhbnNmb3JtLmgiCi0jaW5jbHVkZSAiSW1hZ2UuaCIK
KyNpbmNsdWRlICJTb3VyY2VJbWFnZS5oIgogCiAjaW5jbHVkZSA8d3RmL1JlZi5oPgogI2luY2x1
ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CkBAIC01Miw3ICs1Miw2IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogY2xhc3MgQWZmaW5lVHJhbnNmb3JtOwogY2xhc3MgR3JhcGhpY3NDb250ZXh0OwotY2xh
c3MgSW1hZ2U7CiAKIGNsYXNzIFBhdHRlcm4gZmluYWwgOiBwdWJsaWMgUmVmQ291bnRlZDxQYXR0
ZXJuPiB7CiBwdWJsaWM6CkBAIC03MCwxMCArNjksMTQgQEAgcHVibGljOgogICAgICAgICBib29s
IHJlcGVhdFk7CiAgICAgfTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8UGF0dGVy
bj4gY3JlYXRlKFJlZjxOYXRpdmVJbWFnZT4mJiB0aWxlSW1hZ2UsIGNvbnN0IFBhcmFtZXRlcnMm
ID0geyB9KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPFBhdHRlcm4+IGNyZWF0ZShT
b3VyY2VJbWFnZSYmIHRpbGVJbWFnZSwgY29uc3QgUGFyYW1ldGVycyYgPSB7IH0pOwogICAgIFdF
QkNPUkVfRVhQT1JUIH5QYXR0ZXJuKCk7CiAKLSAgICBOYXRpdmVJbWFnZSYgdGlsZUltYWdlKCkg
Y29uc3QgeyByZXR1cm4gbV90aWxlSW1hZ2UuZ2V0KCk7IH0KKyAgICBTb3VyY2VJbWFnZSYgdGls
ZUltYWdlKCkgY29uc3QgeyByZXR1cm4gbV90aWxlSW1hZ2U7IH0KKyAgICBOYXRpdmVJbWFnZSog
dGlsZU5hdGl2ZUltYWdlKCkgY29uc3QgeyByZXR1cm4gbV90aWxlSW1hZ2UubmF0aXZlSW1hZ2Uo
KTsgfQorICAgIEltYWdlQnVmZmVyKiB0aWxlSW1hZ2VCdWZmZXIoKSBjb25zdCB7IHJldHVybiBt
X3RpbGVJbWFnZS5pbWFnZUJ1ZmZlcigpOyB9CisgICAgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyIHRpbGVJbWFnZUlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX3RpbGVJbWFnZS5pbWFn
ZUlkZW50aWZpZXIoKTsgfQorCiAgICAgY29uc3QgUGFyYW1ldGVycyYgcGFyYW1ldGVycygpIGNv
bnN0IHsgcmV0dXJuIG1fcGFyYW1ldGVyczsgfQogCiAgICAgLy8gUGF0dGVybiBzcGFjZSBpcyBh
biBhYnN0cmFjdCBzcGFjZSB0aGF0IG1hcHMgdG8gdGhlIGRlZmF1bHQgdXNlciBzcGFjZSBieSB0
aGUgdHJhbnNmb3JtYXRpb24gJ3VzZXJTcGFjZVRyYW5zZm9ybScKQEAgLTg4LDkgKzkxLDkgQEAg
cHVibGljOgogICAgIGJvb2wgcmVwZWF0WSgpIGNvbnN0IHsgcmV0dXJuIG1fcGFyYW1ldGVycy5y
ZXBlYXRZOyB9CiAKIHByaXZhdGU6Ci0gICAgUGF0dGVybihSZWY8TmF0aXZlSW1hZ2U+JiYsIGNv
bnN0IFBhcmFtZXRlcnMmKTsKKyAgICBQYXR0ZXJuKFNvdXJjZUltYWdlJiYsIGNvbnN0IFBhcmFt
ZXRlcnMmKTsKIAotICAgIFJlZjxOYXRpdmVJbWFnZT4gbV90aWxlSW1hZ2U7CisgICAgbXV0YWJs
ZSBTb3VyY2VJbWFnZSBtX3RpbGVJbWFnZTsKICAgICBQYXJhbWV0ZXJzIG1fcGFyYW1ldGVyczsK
IH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NvdXJj
ZUltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NvdXJjZUltYWdl
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40NzQyYzA2YTY2ODg5MzkyZmU0MTE0Nzc5NTMzMzU3MTcxMDU3NTZj
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU291
cmNlSW1hZ2UuY3BwCkBAIC0wLDAgKzEsMTAzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIx
IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJTb3Vy
Y2VJbWFnZS5oIgorCisjaW5jbHVkZSAiSW1hZ2VCdWZmZXIuaCIKKyNpbmNsdWRlICJOYXRpdmVJ
bWFnZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1NvdXJjZUltYWdlOjpTb3VyY2VJbWFn
ZShSZWY8TmF0aXZlSW1hZ2U+JiYgbmF0aXZlSW1hZ2UpCisgICAgOiBtX2ltYWdlKFdURk1vdmUo
bmF0aXZlSW1hZ2UpKQoreworfQorCitTb3VyY2VJbWFnZTo6U291cmNlSW1hZ2UoUmVmPEltYWdl
QnVmZmVyPiYmIGltYWdlQnVmZmVyKQorICAgIDogbV9pbWFnZShXVEZNb3ZlKGltYWdlQnVmZmVy
KSkKK3sKK30KKworTmF0aXZlSW1hZ2UqIFNvdXJjZUltYWdlOjpuYXRpdmVJbWFnZUlmRXhpc3Rz
KCkgY29uc3QKK3sKKyAgICBpZiAoYXV0byogbmF0aXZlSW1hZ2UgPSBzdGQ6OmdldF9pZjxSZWY8
TmF0aXZlSW1hZ2U+PigmbV9pbWFnZSkpCisgICAgICAgIHJldHVybiBuYXRpdmVJbWFnZS0+cHRy
KCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK05hdGl2ZUltYWdlKiBTb3VyY2VJbWFnZTo6
bmF0aXZlSW1hZ2UoKQoreworICAgIGlmIChhdXRvKiBuYXRpdmVJbWFnZSA9IG5hdGl2ZUltYWdl
SWZFeGlzdHMoKSkKKyAgICAgICAgcmV0dXJuIG5hdGl2ZUltYWdlOworCisgICAgYXV0byBpbWFn
ZUJ1ZmZlciA9IHN0ZDo6Z2V0PFJlZjxJbWFnZUJ1ZmZlcj4+KG1faW1hZ2UpOworCisgICAgYXV0
byBuYXRpdmVJbWFnZSA9IEltYWdlQnVmZmVyOjpzaW5rSW50b05hdGl2ZUltYWdlKFdURk1vdmUo
aW1hZ2VCdWZmZXIpKTsKKyAgICBpZiAoIW5hdGl2ZUltYWdlKQorICAgICAgICByZXR1cm4gbnVs
bHB0cjsKKworICAgIG1faW1hZ2UgPSBuYXRpdmVJbWFnZS5yZWxlYXNlTm9uTnVsbCgpOworICAg
IHJldHVybiBuYXRpdmVJbWFnZUlmRXhpc3RzKCk7Cit9CisKK0ltYWdlQnVmZmVyKiBTb3VyY2VJ
bWFnZTo6aW1hZ2VCdWZmZXJJZkV4aXN0cygpIGNvbnN0Cit7CisgICAgaWYgKGF1dG8qIGltYWdl
QnVmZmVyID0gc3RkOjpnZXRfaWY8UmVmPEltYWdlQnVmZmVyPj4oJm1faW1hZ2UpKQorICAgICAg
ICByZXR1cm4gaW1hZ2VCdWZmZXItPnB0cigpOworICAgIHJldHVybiBudWxscHRyOworfQorCitJ
bWFnZUJ1ZmZlciogU291cmNlSW1hZ2U6OmltYWdlQnVmZmVyKCkKK3sKKyAgICBpZiAoYXV0byog
aW1hZ2VCdWZmZXIgPSBpbWFnZUJ1ZmZlcklmRXhpc3RzKCkpCisgICAgICAgIHJldHVybiBpbWFn
ZUJ1ZmZlcjsKKworICAgIGF1dG8gbmF0aXZlSW1hZ2UgPSBzdGQ6OmdldDxSZWY8TmF0aXZlSW1h
Z2U+PihtX2ltYWdlKTsKKworICAgIEZsb2F0UmVjdCByZWN0ID0geyB7IH0sIG5hdGl2ZUltYWdl
LT5zaXplKCkgfTsKKyAgICBhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShu
YXRpdmVJbWFnZS0+c2l6ZSgpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0
aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKKyAgICBpZiAo
IWltYWdlQnVmZmVyKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIGltYWdlQnVmZmVy
LT5jb250ZXh0KCkuZHJhd05hdGl2ZUltYWdlKG5hdGl2ZUltYWdlLCBuYXRpdmVJbWFnZS0+c2l6
ZSgpLCByZWN0LCByZWN0KTsKKworICAgIG1faW1hZ2UgPSBpbWFnZUJ1ZmZlci5yZWxlYXNlTm9u
TnVsbCgpOworICAgIHJldHVybiBpbWFnZUJ1ZmZlcklmRXhpc3RzKCk7Cit9CisKK1JlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllciBTb3VyY2VJbWFnZTo6aW1hZ2VJZGVudGlmaWVyKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihtX2ltYWdlLAorICAgICAgICBbJl0gKGNvbnN0
IFJlZjxOYXRpdmVJbWFnZT4mIG5hdGl2ZUltYWdlKSB7CisgICAgICAgICAgICByZXR1cm4gbmF0
aXZlSW1hZ2UtPnJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcigpOworICAgICAgICB9LAorICAg
ICAgICBbJl0gKGNvbnN0IFJlZjxJbWFnZUJ1ZmZlcj4mIGltYWdlQnVmZmVyKSB7CisgICAgICAg
ICAgICByZXR1cm4gaW1hZ2VCdWZmZXItPnJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcigpOwor
ICAgICAgICB9CisgICAgKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlSW1hZ2UuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NvdXJjZUltYWdlLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWIz
MDcxMTQwNGMzNDQ2NjYyZDU5NzYxMDgyOTM5OTk1Njg1NjJkNQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NvdXJjZUltYWdlLmgKQEAgLTAsMCAr
MSw1NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuICBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
cHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllci5oIgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEltYWdlQnVmZmVyOworY2xhc3MgTmF0aXZl
SW1hZ2U7CisKK2NsYXNzIFdFQkNPUkVfRVhQT1JUIFNvdXJjZUltYWdlIHsKK3B1YmxpYzoKKyAg
ICB1c2luZyBJbWFnZSA9IHN0ZDo6dmFyaWFudDxSZWY8TmF0aXZlSW1hZ2U+LCBSZWY8SW1hZ2VC
dWZmZXI+PjsKKworICAgIFNvdXJjZUltYWdlKFJlZjxOYXRpdmVJbWFnZT4mJik7CisgICAgU291
cmNlSW1hZ2UoUmVmPEltYWdlQnVmZmVyPiYmKTsKKworICAgIE5hdGl2ZUltYWdlKiBuYXRpdmVJ
bWFnZUlmRXhpc3RzKCkgY29uc3Q7CisgICAgTmF0aXZlSW1hZ2UqIG5hdGl2ZUltYWdlKCk7CisK
KyAgICBJbWFnZUJ1ZmZlciogaW1hZ2VCdWZmZXJJZkV4aXN0cygpIGNvbnN0OworICAgIEltYWdl
QnVmZmVyKiBpbWFnZUJ1ZmZlcigpOworCisgICAgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
IGltYWdlSWRlbnRpZmllcigpIGNvbnN0OworCitwcml2YXRlOgorICAgIEltYWdlIG1faW1hZ2U7
Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9DYWlyb09wZXJhdGlvbnMuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQ2Fpcm9PcGVyYXRpb25zLmNwcAppbmRleCAx
NTUyMzU2YTIzYTVmZGZiMTBhZmVjYTJjYzkyYTcyNzk0NTgxMDJlLi45YWU2NDM0MmIxODRkNThh
ZmU3Yjc0MjdhZDUzNzI2YWFlY2FjZWZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYWlyby9DYWlyb09wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0NhaXJvT3BlcmF0aW9ucy5jcHAKQEAgLTU2Miw4
ICs1NjIsOCBAQCBGaWxsU291cmNlOjpGaWxsU291cmNlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0
YXRlJiBzdGF0ZSkKICAgICBpZiAoc3RhdGUuZmlsbFBhdHRlcm4pIHsKICAgICAgICAgcGF0dGVy
bi5vYmplY3QgPSBhZG9wdFJlZihzdGF0ZS5maWxsUGF0dGVybi0+Y3JlYXRlUGxhdGZvcm1QYXR0
ZXJuKEFmZmluZVRyYW5zZm9ybSgpKSk7CiAKLSAgICAgICAgYXV0byYgcGF0dGVybkltYWdlID0g
c3RhdGUuZmlsbFBhdHRlcm4tPnRpbGVJbWFnZSgpOwotICAgICAgICBwYXR0ZXJuLnNpemUgPSBw
YXR0ZXJuSW1hZ2Uuc2l6ZSgpOworICAgICAgICBpZiAoYXV0byBwYXR0ZXJuSW1hZ2UgPSBzdGF0
ZS5maWxsUGF0dGVybi0+dGlsZU5hdGl2ZUltYWdlKCkpCisgICAgICAgICAgICBwYXR0ZXJuLnNp
emUgPSBwYXR0ZXJuSW1hZ2UtPnNpemUoKTsKICAgICAgICAgcGF0dGVybi50cmFuc2Zvcm0gPSBz
dGF0ZS5maWxsUGF0dGVybi0+cGF0dGVyblNwYWNlVHJhbnNmb3JtKCk7CiAgICAgICAgIHBhdHRl
cm4ucmVwZWF0WCA9IHN0YXRlLmZpbGxQYXR0ZXJuLT5yZXBlYXRYKCk7CiAgICAgICAgIHBhdHRl
cm4ucmVwZWF0WSA9IHN0YXRlLmZpbGxQYXR0ZXJuLT5yZXBlYXRZKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QYXR0ZXJuQ2Fpcm8uY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGF0dGVybkNhaXJvLmNwcApp
bmRleCA2OGRhYmFmOThhY2E5ZDFjZmI3MWUxNjUyMmI5ZGViMjU4MDdmZjFmLi5hM2ZjZDY4ZmY4
YjdjZDk2ZDQ0ZTJmNTdhOTRhMzllOTM3MWFjMTlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QYXR0ZXJuQ2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BhdHRlcm5DYWlyby5jcHAKQEAgLTM1LDcg
KzM1LDExIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2Fpcm9fcGF0dGVybl90KiBQYXR0ZXJu
OjpjcmVhdGVQbGF0Zm9ybVBhdHRlcm4oY29uc3QgQWZmaW5lVHJhbnNmb3JtJikgY29uc3QKIHsK
LSAgICBhdXRvIHBsYXRmb3JtSW1hZ2UgPSB0aWxlSW1hZ2UoKS5wbGF0Zm9ybUltYWdlKCk7Cisg
ICAgYXV0byBuYXRpdmVJbWFnZSA9IHRpbGVOYXRpdmVJbWFnZSgpOworICAgIGlmICghbmF0aXZl
SW1hZ2UpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgYXV0byBwbGF0Zm9ybUltYWdl
ID0gbmF0aXZlSW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKTsKICAgICBpZiAoIXBsYXRmb3JtSW1hZ2Up
CiAgICAgICAgIHJldHVybiBudWxscHRyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jZy9QYXR0ZXJuQ0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvUGF0dGVybkNHLmNwcAppbmRleCAwNWEzOTE2NTQwYmI3NmRhM2YwYWJh
YTMzOTRmYzhkZDA4OGM4ZGE5Li5kNDVmYTkyY2M1NGNjZDhmZTE4NzI1ZTZjZjdmMDMwNWViOGNi
ZmFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QYXR0
ZXJuQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BhdHRl
cm5DRy5jcHAKQEAgLTU1LDEzICs1NSwxNyBAQCBzdGF0aWMgdm9pZCBwYXR0ZXJuUmVsZWFzZUNh
bGxiYWNrKHZvaWQqIGluZm8pCiAKIFJldGFpblB0cjxDR1BhdHRlcm5SZWY+IFBhdHRlcm46OmNy
ZWF0ZVBsYXRmb3JtUGF0dGVybihjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHVzZXJTcGFjZVRyYW5z
Zm9ybSkgY29uc3QKIHsKLSAgICBGbG9hdFJlY3QgdGlsZVJlY3QgPSB7IHsgfSwgdGlsZUltYWdl
KCkuc2l6ZSgpIH07CisgICAgYXV0byBuYXRpdmVJbWFnZSA9IHRpbGVOYXRpdmVJbWFnZSgpOwor
ICAgIGlmICghbmF0aXZlSW1hZ2UpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIAorICAg
IEZsb2F0UmVjdCB0aWxlUmVjdCA9IHsgeyB9LCBuYXRpdmVJbWFnZS0+c2l6ZSgpIH07CiAKICAg
ICBBZmZpbmVUcmFuc2Zvcm0gcGF0dGVyblRyYW5zZm9ybSA9IHVzZXJTcGFjZVRyYW5zZm9ybSAq
IHBhdHRlcm5TcGFjZVRyYW5zZm9ybSgpOwogICAgIHBhdHRlcm5UcmFuc2Zvcm0uc2NhbGVOb25V
bmlmb3JtKDEsIC0xKTsKICAgICBwYXR0ZXJuVHJhbnNmb3JtLnRyYW5zbGF0ZSgwLCAtdGlsZVJl
Y3QuaGVpZ2h0KCkpOwogCi0gICAgUGxhdGZvcm1JbWFnZVB0ciBwbGF0Zm9ybUltYWdlID0gdGls
ZUltYWdlKCkucGxhdGZvcm1JbWFnZSgpOworICAgIFBsYXRmb3JtSW1hZ2VQdHIgcGxhdGZvcm1J
bWFnZSA9IG5hdGl2ZUltYWdlLT5wbGF0Zm9ybUltYWdlKCk7CiAgICAgaWYgKCFwbGF0Zm9ybUlt
YWdlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
SXRlbXMuY3BwCmluZGV4IGU3MjZkOTRmMzAwNTAwMjMxMmJjNjQyYjMwMTVlY2JhZTMxNDg0OGMu
LmJlM2YxYzRiYTFjOThhNjI3MDYzZjEwM2MyZDM1ZDg4MTgwOTU4ZDAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0
ZW1zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3RJdGVtcy5jcHAKQEAgLTE1OSwxMiArMTU5LDEyIEBAIFNldFN0YXRlOjpT
ZXRTdGF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZUNoYW5nZSYgc3RhdGVDaGFuZ2UsIGNv
bnN0IFBhdHRlcm5ECiB7CiB9CiAKLXZvaWQgU2V0U3RhdGU6OmFwcGx5KEdyYXBoaWNzQ29udGV4
dCYgY29udGV4dCwgTmF0aXZlSW1hZ2UqIHN0cm9rZVBhdHRlcm5JbWFnZSwgTmF0aXZlSW1hZ2Uq
IGZpbGxQYXR0ZXJuSW1hZ2UpCit2b2lkIFNldFN0YXRlOjphcHBseShHcmFwaGljc0NvbnRleHQm
IGNvbnRleHQsIHN0ZDo6b3B0aW9uYWw8U291cmNlSW1hZ2U+JiYgc3Ryb2tlUGF0dGVybkltYWdl
LCBzdGQ6Om9wdGlvbmFsPFNvdXJjZUltYWdlPiYmIGZpbGxQYXR0ZXJuSW1hZ2UpCiB7CiAgICAg
aWYgKG1fc3RhdGVDaGFuZ2UubV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRT
dGF0ZTo6U3Ryb2tlUGF0dGVybkNoYW5nZSkgJiYgc3Ryb2tlUGF0dGVybkltYWdlKQotICAgICAg
ICBtX3N0YXRlQ2hhbmdlLm1fc3RhdGUuc3Ryb2tlUGF0dGVybiA9IFBhdHRlcm46OmNyZWF0ZSgq
c3Ryb2tlUGF0dGVybkltYWdlLCBtX3N0cm9rZVBhdHRlcm4ucGFyYW1ldGVycyk7CisgICAgICAg
IG1fc3RhdGVDaGFuZ2UubV9zdGF0ZS5zdHJva2VQYXR0ZXJuID0gUGF0dGVybjo6Y3JlYXRlKFdU
Rk1vdmUoKnN0cm9rZVBhdHRlcm5JbWFnZSksIG1fc3Ryb2tlUGF0dGVybi5wYXJhbWV0ZXJzKTsK
ICAgICBpZiAobV9zdGF0ZUNoYW5nZS5tX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29u
dGV4dFN0YXRlOjpGaWxsUGF0dGVybkNoYW5nZSkgJiYgZmlsbFBhdHRlcm5JbWFnZSkKLSAgICAg
ICAgbV9zdGF0ZUNoYW5nZS5tX3N0YXRlLmZpbGxQYXR0ZXJuID0gUGF0dGVybjo6Y3JlYXRlKCpm
aWxsUGF0dGVybkltYWdlLCBtX2ZpbGxQYXR0ZXJuLnBhcmFtZXRlcnMpOworICAgICAgICBtX3N0
YXRlQ2hhbmdlLm1fc3RhdGUuZmlsbFBhdHRlcm4gPSBQYXR0ZXJuOjpjcmVhdGUoV1RGTW92ZSgq
ZmlsbFBhdHRlcm5JbWFnZSksIG1fZmlsbFBhdHRlcm4ucGFyYW1ldGVycyk7CiAgICAgbV9zdGF0
ZUNoYW5nZS5hcHBseShjb250ZXh0KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1z
LmgKaW5kZXggY2ViZjM2OWJmYTJlZjBmNjdmMTMxZmI4NTIzNmU5YWE4OTdkNDQ4MC4uOGE4ZGNj
ZWMyYjA1YTc2YjIxOWI5ODE2NzgyZmYzOGI1MDhhNTRmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3RJdGVtcy5oCkBAIC0yNTcsNyArMjU3LDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPGNs
YXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKICAgICB0ZW1wbGF0ZTxj
bGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxTZXRTdGF0ZT4gZGVjb2RlKERlY29k
ZXImKTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwbHkoR3JhcGhpY3NDb250ZXh0Jiwg
TmF0aXZlSW1hZ2UqIHN0cm9rZVBhdHRlcm5JbWFnZSwgTmF0aXZlSW1hZ2UqIGZpbGxQYXR0ZXJu
SW1hZ2UpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwbHkoR3JhcGhpY3NDb250ZXh0Jiwg
c3RkOjpvcHRpb25hbDxTb3VyY2VJbWFnZT4mJiBzdHJva2VQYXR0ZXJuSW1hZ2UsIHN0ZDo6b3B0
aW9uYWw8U291cmNlSW1hZ2U+JiYgZmlsbFBhdHRlcm5JbWFnZSk7CiAKIHByaXZhdGU6CiAgICAg
c3RydWN0IFBhdHRlcm5EYXRhIHsKQEAgLTI4Nyw3ICsyODcsNyBAQCB2b2lkIFNldFN0YXRlOjpl
bmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIAogICAgIGlmIChjaGFuZ2VGbGFncy5jb250
YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlUGF0dGVybkNoYW5nZSkpIHsKICAgICAg
ICAgQVNTRVJUKHN0YXRlLnN0cm9rZVBhdHRlcm4pOwotICAgICAgICBlbmNvZGVyIDw8IHN0YXRl
LnN0cm9rZVBhdHRlcm4tPnRpbGVJbWFnZSgpLnJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcigp
OworICAgICAgICBlbmNvZGVyIDw8IHN0YXRlLnN0cm9rZVBhdHRlcm4tPnRpbGVJbWFnZUlkZW50
aWZpZXIoKTsKICAgICAgICAgZW5jb2RlciA8PCBzdGF0ZS5zdHJva2VQYXR0ZXJuLT5wYXJhbWV0
ZXJzKCk7CiAgICAgfQogCkBAIC0yOTgsNyArMjk4LDcgQEAgdm9pZCBTZXRTdGF0ZTo6ZW5jb2Rl
KEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAKICAgICBpZiAoY2hhbmdlRmxhZ3MuY29udGFpbnMo
R3JhcGhpY3NDb250ZXh0U3RhdGU6OkZpbGxQYXR0ZXJuQ2hhbmdlKSkgewogICAgICAgICBBU1NF
UlQoc3RhdGUuZmlsbFBhdHRlcm4pOwotICAgICAgICBlbmNvZGVyIDw8IHN0YXRlLmZpbGxQYXR0
ZXJuLT50aWxlSW1hZ2UoKS5yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIoKTsKKyAgICAgICAg
ZW5jb2RlciA8PCBzdGF0ZS5maWxsUGF0dGVybi0+dGlsZUltYWdlSWRlbnRpZmllcigpOwogICAg
ICAgICBlbmNvZGVyIDw8IHN0YXRlLmZpbGxQYXR0ZXJuLT5wYXJhbWV0ZXJzKCk7CiAgICAgfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3RSZWNvcmRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaAppbmRleCA5YTQwMTQzNjdkYjFl
ZjQzYjhhNTllNTBlM2Q0NzEwZjkzZTAzZWJmLi4xNGE4NjUxMmI3YmIwYmRlZjE4NmQwOWEzODQ5
OTNjNTY0ZmFiYWY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmgKQEAg
LTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJJ
bWFnZS5oIiAvLyBGb3IgSW1hZ2U6OlRpbGVSdWxlLgogI2luY2x1ZGUgIklubGluZVBhdGhEYXRh
LmgiCisjaW5jbHVkZSAiU291cmNlSW1hZ2UuaCIKICNpbmNsdWRlICJUZXh0RmxhZ3MuaCIKICNp
bmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KIApAQCAtMTM2LDggKzEzNyw5IEBAIHByb3RlY3Rl
ZDoKICAgICB2aXJ0dWFsIHZvaWQgcmVjb3JkQXBwbHlEZXZpY2VTY2FsZUZhY3RvcihmbG9hdCkg
PSAwOwogCiAgICAgdmlydHVhbCB2b2lkIHJlY29yZFJlc291cmNlVXNlKE5hdGl2ZUltYWdlJikg
PSAwOwotICAgIHZpcnR1YWwgdm9pZCByZWNvcmRSZXNvdXJjZVVzZShGb250JikgPSAwOwogICAg
IHZpcnR1YWwgdm9pZCByZWNvcmRSZXNvdXJjZVVzZShJbWFnZUJ1ZmZlciYpID0gMDsKKyAgICB2
aXJ0dWFsIHZvaWQgcmVjb3JkUmVzb3VyY2VVc2UoU291cmNlSW1hZ2UmKSA9IDA7CisgICAgdmly
dHVhbCB2b2lkIHJlY29yZFJlc291cmNlVXNlKEZvbnQmKSA9IDA7CiAKICAgICAvLyBGSVhNRTog
TWF5YmUgcmVtb3ZlIHRoaXM/CiAgICAgdmlydHVhbCBib29sIGNhbkRyYXdJbWFnZUJ1ZmZlcihj
b25zdCBJbWFnZUJ1ZmZlciYpIGNvbnN0ID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVySW1wbC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3RSZWNvcmRlckltcGwuY3BwCmluZGV4IGE1ZTJkM2IyMDk4NWUzZWY5NDFhMzIzNTc1NmUy
ODBlYWNkNTE2M2MuLmQ2YmY2ZmI2MTc3NjE1NWVmMzM1ZTk1ZDg1ZmE0NDAwNGJkODc0YTYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdFJlY29yZGVySW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXJJbXBsLmNwcApAQCAtNDEy
LDI1ICs0MTIsMzcgQEAgdm9pZCBSZWNvcmRlckltcGw6OnJlY29yZEFwcGx5RGV2aWNlU2NhbGVG
YWN0b3IoZmxvYXQgc2NhbGVGYWN0b3IpCiAgICAgYXBwZW5kPEFwcGx5RGV2aWNlU2NhbGVGYWN0
b3I+KHNjYWxlRmFjdG9yKTsKIH0KIAotdm9pZCBSZWNvcmRlckltcGw6OnJlY29yZFJlc291cmNl
VXNlKE5hdGl2ZUltYWdlJiBpbWFnZSkKK3ZvaWQgUmVjb3JkZXJJbXBsOjpyZWNvcmRSZXNvdXJj
ZVVzZShOYXRpdmVJbWFnZSYgbmF0aXZlSW1hZ2UpCiB7CiAgICAgaWYgKG1fZGVsZWdhdGUpCi0g
ICAgICAgIG1fZGVsZWdhdGUtPnJlY29yZE5hdGl2ZUltYWdlVXNlKGltYWdlKTsKLSAgICBtX2Rp
c3BsYXlMaXN0LmNhY2hlTmF0aXZlSW1hZ2UoaW1hZ2UpOworICAgICAgICBtX2RlbGVnYXRlLT5y
ZWNvcmROYXRpdmVJbWFnZVVzZShuYXRpdmVJbWFnZSk7CisgICAgbV9kaXNwbGF5TGlzdC5jYWNo
ZU5hdGl2ZUltYWdlKG5hdGl2ZUltYWdlKTsKIH0KIAotdm9pZCBSZWNvcmRlckltcGw6OnJlY29y
ZFJlc291cmNlVXNlKEZvbnQmIGZvbnQpCit2b2lkIFJlY29yZGVySW1wbDo6cmVjb3JkUmVzb3Vy
Y2VVc2UoSW1hZ2VCdWZmZXImIGltYWdlQnVmZmVyKQogewogICAgIGlmIChtX2RlbGVnYXRlKQot
ICAgICAgICBtX2RlbGVnYXRlLT5yZWNvcmRGb250VXNlKGZvbnQpOwotICAgIG1fZGlzcGxheUxp
c3QuY2FjaGVGb250KGZvbnQpOworICAgICAgICBtX2RlbGVnYXRlLT5yZWNvcmRJbWFnZUJ1ZmZl
clVzZShpbWFnZUJ1ZmZlcik7CisgICAgbV9kaXNwbGF5TGlzdC5jYWNoZUltYWdlQnVmZmVyKGlt
YWdlQnVmZmVyKTsKIH0KIAotdm9pZCBSZWNvcmRlckltcGw6OnJlY29yZFJlc291cmNlVXNlKElt
YWdlQnVmZmVyJiBpbWFnZUJ1ZmZlcikKK3ZvaWQgUmVjb3JkZXJJbXBsOjpyZWNvcmRSZXNvdXJj
ZVVzZShTb3VyY2VJbWFnZSYgaW1hZ2UpCit7CisgICAgYXV0byBpbWFnZUJ1ZmZlciA9IGltYWdl
LmltYWdlQnVmZmVySWZFeGlzdHMoKTsKKyAgICBpZiAoaW1hZ2VCdWZmZXIgJiYgY2FuRHJhd0lt
YWdlQnVmZmVyKCppbWFnZUJ1ZmZlcikpIHsKKyAgICAgICAgcmVjb3JkUmVzb3VyY2VVc2UoKmlt
YWdlQnVmZmVyKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChhdXRvIG5hdGl2
ZUltYWdlID0gaW1hZ2UubmF0aXZlSW1hZ2UoKSkKKyAgICAgICAgcmVjb3JkUmVzb3VyY2VVc2Uo
Km5hdGl2ZUltYWdlKTsKK30KKwordm9pZCBSZWNvcmRlckltcGw6OnJlY29yZFJlc291cmNlVXNl
KEZvbnQmIGZvbnQpCiB7CiAgICAgaWYgKG1fZGVsZWdhdGUpCi0gICAgICAgIG1fZGVsZWdhdGUt
PnJlY29yZEltYWdlQnVmZmVyVXNlKGltYWdlQnVmZmVyKTsKLSAgICBtX2Rpc3BsYXlMaXN0LmNh
Y2hlSW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXIpOworICAgICAgICBtX2RlbGVnYXRlLT5yZWNvcmRG
b250VXNlKGZvbnQpOworICAgIG1fZGlzcGxheUxpc3QuY2FjaGVGb250KGZvbnQpOwogfQogCiAv
LyBGSVhNRTogc2hhcmUgd2l0aCBTaGFkb3dEYXRhCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlckltcGwu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdFJlY29yZGVySW1wbC5oCmluZGV4IDNlNmQwOTAyNjkwNDZmMWIxMjRhMzljMWUxMjExMDBi
MzI3MjYwYzUuLjI5OWEzYmYzZmEyYzMxMWVjODQ5MzczZDBjMWZjODNiYjFmMTE4MDggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdFJlY29yZGVySW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVySW1wbC5oCkBAIC0xMzQsOCArMTM0
LDkgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlY29yZEFwcGx5RGV2aWNlU2NhbGVGYWN0b3IoZmxv
YXQpIGZpbmFsOwogCiAgICAgdm9pZCByZWNvcmRSZXNvdXJjZVVzZShOYXRpdmVJbWFnZSYpIGZp
bmFsOwotICAgIHZvaWQgcmVjb3JkUmVzb3VyY2VVc2UoRm9udCYpIGZpbmFsOwogICAgIHZvaWQg
cmVjb3JkUmVzb3VyY2VVc2UoSW1hZ2VCdWZmZXImKSBmaW5hbDsKKyAgICB2b2lkIHJlY29yZFJl
c291cmNlVXNlKFNvdXJjZUltYWdlJikgZmluYWw7CisgICAgdm9pZCByZWNvcmRSZXNvdXJjZVVz
ZShGb250JikgZmluYWw7CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8R3JhcGhpY3NDb250ZXh0PiBj
cmVhdGVOZXN0ZWRDb250ZXh0KGNvbnN0IEZsb2F0UmVjdCYgaW5pdGlhbENsaXAsIGNvbnN0IEFm
ZmluZVRyYW5zZm9ybSYgaW5pdGlhbENUTSkgZmluYWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdFJlcGxheWVyLmNwcAppbmRleCA5NDFjMjA5M2NmNTZmMjIyMTEzYWJmMDAzZWQwOWYy
Yzg1MzNiNjU1Li4zMjVkODE5ZDY0Mjk0MzYzZjhiNzFhYzIyMGIzZGMxZWU1YjU3NDgxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3RSZXBsYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuY3BwCkBAIC04NSwyNCArODUsMjkg
QEAgaW5saW5lIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
cj4gYXBwbHlTZXRTdGF0ZUl0ZW0oR3JhcGgKIHsKICAgICBhdXRvJiBzZXRTdGF0ZUl0ZW0gPSBp
dGVtLmdldDxTZXRTdGF0ZT4oKTsKIAotICAgIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBz
dHJva2VQYXR0ZXJuUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyOwotICAgIE5hdGl2ZUltYWdl
KiBzdHJva2VQYXR0ZXJuSW1hZ2UgPSBudWxscHRyOwotICAgIFJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllciBmaWxsUGF0dGVyblJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcjsKLSAgICBOYXRp
dmVJbWFnZSogZmlsbFBhdHRlcm5JbWFnZSA9IG51bGxwdHI7Ci0KLSAgICBpZiAoKHN0cm9rZVBh
dHRlcm5SZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgPSBzZXRTdGF0ZUl0ZW0uc3Ryb2tlUGF0
dGVybkltYWdlSWRlbnRpZmllcigpKSkgewotICAgICAgICBzdHJva2VQYXR0ZXJuSW1hZ2UgPSBy
ZXNvdXJjZUhlYXAuZ2V0TmF0aXZlSW1hZ2Uoc3Ryb2tlUGF0dGVyblJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllcik7Ci0gICAgICAgIGlmICghc3Ryb2tlUGF0dGVybkltYWdlKQotICAgICAgICAg
ICAgcmV0dXJuIHN0cm9rZVBhdHRlcm5SZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI7Ci0gICAg
fQorICAgIGF1dG8gY2FjaGVkU291cmNlSW1hZ2UgPSBbJl0oUmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyIHBhdHRlcm5JbWFnZUlkZW50aWZpZXIpIC0+IHN0ZDo6b3B0aW9uYWw8U291cmNlSW1h
Z2U+IHsKKyAgICAgICAgaWYgKCFwYXR0ZXJuSW1hZ2VJZGVudGlmaWVyKQorICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIGlmICgoZmlsbFBhdHRlcm5SZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXIgPSBzZXRTdGF0ZUl0ZW0uZmlsbFBhdHRlcm5JbWFnZUlkZW50aWZpZXIo
KSkpIHsKLSAgICAgICAgZmlsbFBhdHRlcm5JbWFnZSA9IHJlc291cmNlSGVhcC5nZXROYXRpdmVJ
bWFnZShmaWxsUGF0dGVyblJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7Ci0gICAgICAgIGlm
ICghZmlsbFBhdHRlcm5JbWFnZSkKLSAgICAgICAgICAgIHJldHVybiBmaWxsUGF0dGVyblJlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllcjsKLSAgICB9CisgICAgICAgIGlmIChhdXRvIG5hdGl2ZUlt
YWdlID0gcmVzb3VyY2VIZWFwLmdldE5hdGl2ZUltYWdlKHBhdHRlcm5JbWFnZUlkZW50aWZpZXIp
KQorICAgICAgICAgICAgcmV0dXJuIFJlZiB7ICpuYXRpdmVJbWFnZSB9OworICAgICAgICBpZiAo
YXV0byBpbWFnZUJ1ZmZlciA9IHJlc291cmNlSGVhcC5nZXRJbWFnZUJ1ZmZlcihwYXR0ZXJuSW1h
Z2VJZGVudGlmaWVyKSkKKyAgICAgICAgICAgIHJldHVybiBSZWYgeyAqaW1hZ2VCdWZmZXIgfTsK
KworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIH07CisKKyAgICBhdXRvIHN0cm9r
ZVBhdHRlcm5SZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgPSBzZXRTdGF0ZUl0ZW0uc3Ryb2tl
UGF0dGVybkltYWdlSWRlbnRpZmllcigpOworICAgIGF1dG8gc3Ryb2tlUGF0dGVybkltYWdlID0g
Y2FjaGVkU291cmNlSW1hZ2Uoc3Ryb2tlUGF0dGVyblJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
cik7CisgICAgaWYgKCFzdHJva2VQYXR0ZXJuSW1hZ2UgJiYgc3Ryb2tlUGF0dGVyblJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllcikKKyAgICAgICAgcmV0dXJuIHN0cm9rZVBhdHRlcm5SZW5kZXJp
bmdSZXNvdXJjZUlkZW50aWZpZXI7CisKKyAgICBhdXRvIGZpbGxQYXR0ZXJuUmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyID0gc2V0U3RhdGVJdGVtLmZpbGxQYXR0ZXJuSW1hZ2VJZGVudGlmaWVy
KCk7CisgICAgYXV0byBmaWxsUGF0dGVybkltYWdlID0gY2FjaGVkU291cmNlSW1hZ2UoZmlsbFBh
dHRlcm5SZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOworICAgIGlmICghZmlsbFBhdHRlcm5J
bWFnZSAmJiBmaWxsUGF0dGVyblJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikKKyAgICAgICAg
cmV0dXJuIGZpbGxQYXR0ZXJuUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyOwogCi0gICAgc2V0
U3RhdGVJdGVtLmFwcGx5KGNvbnRleHQsIHN0cm9rZVBhdHRlcm5JbWFnZSwgZmlsbFBhdHRlcm5J
bWFnZSk7CisgICAgc2V0U3RhdGVJdGVtLmFwcGx5KGNvbnRleHQsIFdURk1vdmUoc3Ryb2tlUGF0
dGVybkltYWdlKSwgV1RGTW92ZShmaWxsUGF0dGVybkltYWdlKSk7CiAKICAgICBpZiAoIWRlbGVn
YXRlKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVRpbGUuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVRpbGUuY3BwCmluZGV4IDgxYWEwYzUzYTFh
ODM2NTVmNzgyZWM5MmFlMTcwOTg5ZTQ4OGY1M2UuLmY2NGQ4YmRjMTM2ZDAwYWYwYmMxMjc0MmNk
MjdkODgzMjc3OGJkOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvRkVUaWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0ZFVGlsZS5jcHAKQEAgLTcyLDE0ICs3MiwxMCBAQCB2b2lkIEZFVGlsZTo6
cGxhdGZvcm1BcHBseVNvZnR3YXJlKGNvbnN0IEZpbHRlciYgZmlsdGVyKQogICAgIHRpbGVJbWFn
ZUNvbnRleHQudHJhbnNsYXRlKC1pbk1heEVmZmVjdExvY2F0aW9uLngoKSwgLWluTWF4RWZmZWN0
TG9jYXRpb24ueSgpKTsKICAgICB0aWxlSW1hZ2VDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcigqaW5C
dWZmZXIsIGluLT5hYnNvbHV0ZVBhaW50UmVjdCgpLmxvY2F0aW9uKCkpOwogCi0gICAgYXV0byB0
aWxlSW1hZ2VDb3B5ID0gSW1hZ2VCdWZmZXI6OnNpbmtJbnRvTmF0aXZlSW1hZ2UoV1RGTW92ZSh0
aWxlSW1hZ2UpKTsKLSAgICBpZiAoIXRpbGVJbWFnZUNvcHkpCi0gICAgICAgIHJldHVybjsKLQog
ICAgIEFmZmluZVRyYW5zZm9ybSBwYXR0ZXJuVHJhbnNmb3JtOwogICAgIHBhdHRlcm5UcmFuc2Zv
cm0udHJhbnNsYXRlKGluTWF4RWZmZWN0TG9jYXRpb24gLSBtYXhFZmZlY3RMb2NhdGlvbik7CiAK
LSAgICBhdXRvIHBhdHRlcm4gPSBQYXR0ZXJuOjpjcmVhdGUodGlsZUltYWdlQ29weS5yZWxlYXNl
Tm9uTnVsbCgpLCB7IHRydWUsIHRydWUsIHBhdHRlcm5UcmFuc2Zvcm0gfSk7CisgICAgYXV0byBw
YXR0ZXJuID0gUGF0dGVybjo6Y3JlYXRlKHRpbGVJbWFnZS5yZWxlYXNlTm9uTnVsbCgpLCB7IHRy
dWUsIHRydWUsIHBhdHRlcm5UcmFuc2Zvcm0gfSk7CiAKICAgICBHcmFwaGljc0NvbnRleHQmIGZp
bHRlckNvbnRleHQgPSByZXN1bHRJbWFnZS0+Y29udGV4dCgpOwogICAgIGZpbHRlckNvbnRleHQu
c2V0RmlsbFBhdHRlcm4oV1RGTW92ZShwYXR0ZXJuKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCmluZGV4IGE3ODRkYmJiODM3ZjdiN2U0MTdi
MjY5YjZiNzBiYzkyNzIzNGQ1MWQuLmUxMTBmYjBkYzNmYzg0YzFmY2U2YWRjNzc2Mjc3NzI4MDc4
ZWUxYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJh
Y2tpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tp
bmcuY3BwCkBAIC0zMzE1LDEzICszMzE1LDExIEBAIHN0YXRpYyBSZWZQdHI8UGF0dGVybj4gcGF0
dGVybkZvckRlc2NyaXB0aW9uKFBhdHRlcm5EZXNjcmlwdGlvbiBkZXNjcmlwdGlvbiwgRmxvCiAg
ICAgICAgIGltYWdlQ29udGV4dC5kcmF3VGV4dChmb250LCB0ZXh0UnVuLCB7IHRleHRHYXAsIHlP
ZmZzZXQgfSwgMCk7CiAgICAgfQogCi0gICAgYXV0byB0aWxlSW1hZ2UgPSBJbWFnZUJ1ZmZlcjo6
c2lua0ludG9OYXRpdmVJbWFnZShXVEZNb3ZlKGltYWdlQnVmZmVyKSk7Ci0KICAgICBBZmZpbmVU
cmFuc2Zvcm0gcGF0dGVybk9mZnNldFRyYW5zZm9ybTsKICAgICBwYXR0ZXJuT2Zmc2V0VHJhbnNm
b3JtLnRyYW5zbGF0ZShjb250ZW50T2Zmc2V0ICsgZGVzY3JpcHRpb24ucGhhc2UpOwogICAgIHBh
dHRlcm5PZmZzZXRUcmFuc2Zvcm0uc2NhbGUoMSAvIGRlc3RDb250ZXh0LnNjYWxlRmFjdG9yKCkp
OwogCi0gICAgcmV0dXJuIFBhdHRlcm46OmNyZWF0ZSh0aWxlSW1hZ2UucmVsZWFzZU5vbk51bGwo
KSwgeyB0cnVlLCB0cnVlLCBwYXR0ZXJuT2Zmc2V0VHJhbnNmb3JtfSk7CisgICAgcmV0dXJuIFBh
dHRlcm46OmNyZWF0ZShpbWFnZUJ1ZmZlci5yZWxlYXNlTm9uTnVsbCgpLCB7IHRydWUsIHRydWUs
IHBhdHRlcm5PZmZzZXRUcmFuc2Zvcm0gfSk7CiB9OwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuLmNw
cAppbmRleCAyYzYwNTU5MGRiNDAzZWY0NGJmMTc4YmMwN2M4NDE2MDQ5YzA5NTFiLi42ZGRjN2Ew
NjA0NWEyNGE4NzU2MTU1YTMxOWU2N2U5NmE4NDZlOWM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlUGF0dGVybi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4uY3BwCkBA
IC0yNSw2ICsyNSw3IEBACiAjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCiAjaW5jbHVkZSAiR3JhcGhp
Y3NDb250ZXh0LmgiCiAjaW5jbHVkZSAiUmVuZGVyU1ZHUm9vdC5oIgorI2luY2x1ZGUgIlJlbmRl
clZpZXcuaCIKICNpbmNsdWRlICJTVkdFbGVtZW50VHlwZUhlbHBlcnMuaCIKICNpbmNsdWRlICJT
VkdGaXRUb1ZpZXdCb3guaCIKICNpbmNsdWRlICJTVkdSZW5kZXJpbmdDb250ZXh0LmgiCkBAIC0x
MTMsMTAgKzExNCw2IEBAIFBhdHRlcm5EYXRhKiBSZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm46OmJ1
aWxkUGF0dGVybihSZW5kZXJFbGVtZW50JiByZW5kZXJlciwgT3B0CiAKICAgICBhdXRvIHRpbGVJ
bWFnZVNpemUgPSB0aWxlSW1hZ2UtPmxvZ2ljYWxTaXplKCk7CiAKLSAgICBhdXRvIGNvcGllZElt
YWdlID0gSW1hZ2VCdWZmZXI6OnNpbmtJbnRvTmF0aXZlSW1hZ2UoV1RGTW92ZSh0aWxlSW1hZ2Up
KTsKLSAgICBpZiAoIWNvcGllZEltYWdlKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQogICAg
IC8vIENvbXB1dGUgcGF0dGVybiBzcGFjZSB0cmFuc2Zvcm1hdGlvbi4KICAgICBhdXRvIHBhdHRl
cm5EYXRhID0gbWFrZVVuaXF1ZTxQYXR0ZXJuRGF0YT4oKTsKICAgICBwYXR0ZXJuRGF0YS0+dHJh
bnNmb3JtLnRyYW5zbGF0ZSh0aWxlQm91bmRhcmllcy5sb2NhdGlvbigpKTsKQEAgLTEzNCw3ICsx
MzEsNyBAQCBQYXR0ZXJuRGF0YSogUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuOjpidWlsZFBhdHRl
cm4oUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIE9wdAogICAgIH0KIAogICAgIC8vIEJ1aWxkIHBh
dHRlcm4uCi0gICAgcGF0dGVybkRhdGEtPnBhdHRlcm4gPSBQYXR0ZXJuOjpjcmVhdGUoY29waWVk
SW1hZ2UucmVsZWFzZU5vbk51bGwoKSwgeyB0cnVlLCB0cnVlLCBwYXR0ZXJuRGF0YS0+dHJhbnNm
b3JtIH0pOworICAgIHBhdHRlcm5EYXRhLT5wYXR0ZXJuID0gUGF0dGVybjo6Y3JlYXRlKHRpbGVJ
bWFnZS5yZWxlYXNlTm9uTnVsbCgpLCB7IHRydWUsIHRydWUsIHBhdHRlcm5EYXRhLT50cmFuc2Zv
cm0gfSk7CiAKICAgICAvLyBWYXJpb3VzIGNhbGxzIGFib3ZlIG1heSB0cmlnZ2VyIGludmFsaWRh
dGlvbnMgaW4gc29tZSBmcmluZ2UgY2FzZXMgKEltYWdlQnVmZmVyIGFsbG9jYXRpb24KICAgICAv
LyBmYWlsdXJlcyBpbiB0aGUgU1ZHIGltYWdlIGNhY2hlIGZvciBleGFtcGxlKS4gVG8gYXZvaWQg
aGF2aW5nIG91ciBQYXR0ZXJuRGF0YSBkZWxldGVkIGJ5CkBAIC0yNTQsNyArMjUxLDkgQEAgYm9v
bCBSZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm46OmJ1aWxkVGlsZUltYWdlVHJhbnNmb3JtKFJlbmRl
ckVsZW1lbnQmIHJlbmRlcmVyLAogUmVmUHRyPEltYWdlQnVmZmVyPiBSZW5kZXJTVkdSZXNvdXJj
ZVBhdHRlcm46OmNyZWF0ZVRpbGVJbWFnZShjb25zdCBQYXR0ZXJuQXR0cmlidXRlcyYgYXR0cmli
dXRlcywgY29uc3QgRmxvYXRSZWN0JiB0aWxlQm91bmRhcmllcywgY29uc3QgRmxvYXRSZWN0JiBh
YnNvbHV0ZVRpbGVCb3VuZGFyaWVzLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHRpbGVJbWFnZVRy
YW5zZm9ybSwgRmxvYXRSZWN0JiBjbGFtcGVkQWJzb2x1dGVUaWxlQm91bmRhcmllcywgUmVuZGVy
aW5nTW9kZSByZW5kZXJpbmdNb2RlKSBjb25zdAogewogICAgIGNsYW1wZWRBYnNvbHV0ZVRpbGVC
b3VuZGFyaWVzID0gSW1hZ2VCdWZmZXI6OmNsYW1wZWRSZWN0KGFic29sdXRlVGlsZUJvdW5kYXJp
ZXMpOwotICAgIGF1dG8gdGlsZUltYWdlID0gU1ZHUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlSW1h
Z2VCdWZmZXIoYWJzb2x1dGVUaWxlQm91bmRhcmllcywgY2xhbXBlZEFic29sdXRlVGlsZUJvdW5k
YXJpZXMsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCByZW5kZXJpbmdNb2RlKTsKKyAg
ICAKKyAgICBhdXRvIGhvc3RXaW5kb3cgPSB2aWV3KCkuZnJhbWVWaWV3KCkucm9vdCgpID8gdmll
dygpLmZyYW1lVmlldygpLnJvb3QoKS0+aG9zdFdpbmRvdygpIDogbnVsbHB0cjsKKyAgICBhdXRv
IHRpbGVJbWFnZSA9IFNWR1JlbmRlcmluZ0NvbnRleHQ6OmNyZWF0ZUltYWdlQnVmZmVyKGFic29s
dXRlVGlsZUJvdW5kYXJpZXMsIGNsYW1wZWRBYnNvbHV0ZVRpbGVCb3VuZGFyaWVzLCBEZXN0aW5h
dGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgcmVuZGVyaW5nTW9kZSwgaG9zdFdpbmRvdyk7CiAgICAg
aWYgKCF0aWxlSW1hZ2UpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0NvbnRleHQuY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJpbmdDb250ZXh0LmNwcAppbmRleCAy
MGI4YjVlN2IwN2IzMWExMmM1YWFjYmEzODU4OTJmYmYzYTIzNTczLi5iZjFlN2Y5MTE5YjE3YzM4
NzYwOTg1ZGRjZTk3MTUxMzI5ODJiMTE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvU1ZHUmVuZGVyaW5nQ29udGV4dC5jcHAKQEAgLTI1Niw3ICsyNTYsNyBAQCBS
ZWZQdHI8SW1hZ2VCdWZmZXI+IFNWR1JlbmRlcmluZ0NvbnRleHQ6OmNyZWF0ZUltYWdlQnVmZmVy
KGNvbnN0IEZsb2F0UmVjdCYgdGFyZwogICAgIHJldHVybiBpbWFnZUJ1ZmZlcjsKIH0KIAotUmVm
UHRyPEltYWdlQnVmZmVyPiBTVkdSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGVJbWFnZUJ1ZmZlcihj
b25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgY2xhbXBlZFJlY3Qs
IGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgY29sb3JTcGFjZSwgUmVuZGVyaW5nTW9kZSBy
ZW5kZXJpbmdNb2RlLCBjb25zdCBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQpCitSZWZQdHI8SW1h
Z2VCdWZmZXI+IFNWR1JlbmRlcmluZ0NvbnRleHQ6OmNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZs
b2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBjbGFtcGVkUmVjdCwgY29uc3Qg
RGVzdGluYXRpb25Db2xvclNwYWNlJiBjb2xvclNwYWNlLCBSZW5kZXJpbmdNb2RlIHJlbmRlcmlu
Z01vZGUsIEhvc3RXaW5kb3cqIGhvc3RXaW5kb3csIGNvbnN0IEdyYXBoaWNzQ29udGV4dCogY29u
dGV4dCkKIHsKICAgICBJbnRTaXplIGNsYW1wZWRTaXplID0gcm91bmRlZEludFNpemUoY2xhbXBl
ZFJlY3Quc2l6ZSgpKTsKICAgICBGbG9hdFNpemUgdW5jbGFtcGVkU2l6ZSA9IHJvdW5kZWRJbnRT
aXplKHRhcmdldFJlY3Quc2l6ZSgpKTsKQEAgLTI2OSw3ICsyNjksNyBAQCBSZWZQdHI8SW1hZ2VC
dWZmZXI+IFNWR1JlbmRlcmluZ0NvbnRleHQ6OmNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0
UmVjdCYgdGFyZwogICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGNs
YW1wZWRTaXplLCByZW5kZXJpbmdNb2RlLCBjb250ZXh0LCAxLCBjb2xvclNwYWNlLCBQaXhlbEZv
cm1hdDo6QkdSQTgpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oY29udGV4dCk7Ci0gICAgYXV0
byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoY2xhbXBlZFNpemUsIHJlbmRlcmlu
Z01vZGUsIDEsIGNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0OjpCR1JBOCk7CisgICAgYXV0byBpbWFn
ZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoY2xhbXBlZFNpemUsIHJlbmRlcmluZ01vZGUs
IFNob3VsZFVzZURpc3BsYXlMaXN0OjpObywgUmVuZGVyaW5nUHVycG9zZTo6RE9NLCAxLCBjb2xv
clNwYWNlLCBQaXhlbEZvcm1hdDo6QkdSQTgsIGhvc3RXaW5kb3cpOwogI2VuZGlmCiAgICAgaWYg
KCFpbWFnZUJ1ZmZlcikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0NvbnRleHQuaCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyaW5nQ29udGV4dC5oCmluZGV4IDU5NjU5N2Jl
MTI0N2E5NmE2MDRhY2NmNDU3ZTA5MjlmZDBmNTBhMGUuLmVmZmY4M2RlYzA1MzdkZDdlZWUyMjEw
MmQ0ZWE2Y2Q0ODgwNDhlZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvU1ZHUmVuZGVyaW5nQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvU1ZHUmVuZGVyaW5nQ29udGV4dC5oCkBAIC02MSw3ICs2MSw3IEBAIHB1YmxpYzoKICAgICBi
b29sIGlzUmVuZGVyaW5nUHJlcGFyZWQoKSBjb25zdCB7IHJldHVybiBtX3JlbmRlcmluZ0ZsYWdz
ICYgUmVuZGVyaW5nUHJlcGFyZWQ7IH0KIAogICAgIHN0YXRpYyBSZWZQdHI8SW1hZ2VCdWZmZXI+
IGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgQWZm
aW5lVHJhbnNmb3JtJiBhYnNvbHV0ZVRyYW5zZm9ybSwgY29uc3QgRGVzdGluYXRpb25Db2xvclNw
YWNlJiwgUmVuZGVyaW5nTW9kZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0KiA9IG51bGxwdHIpOwot
ICAgIHN0YXRpYyBSZWZQdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZs
b2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBjbGFtcGVkUmVjdCwgY29uc3Qg
RGVzdGluYXRpb25Db2xvclNwYWNlJiwgUmVuZGVyaW5nTW9kZSwgY29uc3QgR3JhcGhpY3NDb250
ZXh0KiA9IG51bGxwdHIpOworICAgIHN0YXRpYyBSZWZQdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZUlt
YWdlQnVmZmVyKGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBj
bGFtcGVkUmVjdCwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiwgUmVuZGVyaW5nTW9kZSwg
SG9zdFdpbmRvdyogPSBudWxscHRyLCBjb25zdCBHcmFwaGljc0NvbnRleHQqID0gbnVsbHB0cik7
CiAKICAgICBzdGF0aWMgdm9pZCByZW5kZXJTdWJ0cmVlVG9Db250ZXh0KEdyYXBoaWNzQ29udGV4
dCYsIFJlbmRlckVsZW1lbnQmLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mKTsKICAgICBzdGF0aWMg
dm9pZCBjbGlwVG9JbWFnZUJ1ZmZlcihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBBZmZpbmVUcmFu
c2Zvcm0mIGFic29sdXRlVHJhbnNmb3JtLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIFJl
ZlB0cjxJbWFnZUJ1ZmZlcj4mLCBib29sIHNhZmVUb0NsZWFyKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyLmNw
cCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVEaXNwbGF5TGlzdFJl
Y29yZGVyLmNwcAppbmRleCBhZGE1NGQ0MThhMGI2MDI1NDZiMTdlNTdjNjZkZDBjZDY5MDMwZDEz
Li40NTBkOGY3YjNmODBmNDAyNzQ3OWRmYTMxZGVkNjYxNWZlMzVlNzM3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRl
ci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZURpc3Bs
YXlMaXN0UmVjb3JkZXIuY3BwCkBAIC0xMjMsMjAgKzEyMywzMiBAQCB2b2lkIFJlbW90ZURpc3Bs
YXlMaXN0UmVjb3JkZXI6OnNldFN0YXRlKERpc3BsYXlMaXN0OjpTZXRTdGF0ZSYmIGl0ZW0pCiAK
IHZvaWQgUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlcjo6c2V0U3RhdGVXaXRoUXVhbGlmaWVkSWRl
bnRpZmllcnMoRGlzcGxheUxpc3Q6OlNldFN0YXRlJiYgaXRlbSwgUXVhbGlmaWVkUmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyIHN0cm9rZVBhdHRlcm5JbWFnZUlkZW50aWZpZXIsIFF1YWxpZmll
ZFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBmaWxsUGF0dGVybkltYWdlSWRlbnRpZmllcikK
IHsKLSAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+IHN0cm9rZVBhdHRlcm5JbWFnZTsKLSAgICBpZiAo
c3Ryb2tlUGF0dGVybkltYWdlSWRlbnRpZmllcikKLSAgICAgICAgc3Ryb2tlUGF0dGVybkltYWdl
ID0gcmVzb3VyY2VDYWNoZSgpLmNhY2hlZE5hdGl2ZUltYWdlKHN0cm9rZVBhdHRlcm5JbWFnZUlk
ZW50aWZpZXIpOworICAgIGF1dG8gY2FjaGVkU291cmNlSW1hZ2UgPSBbJl0oUXVhbGlmaWVkUmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHBhdHRlcm5JbWFnZUlkZW50aWZpZXIpIC0+IHN0ZDo6
b3B0aW9uYWw8U291cmNlSW1hZ2U+IHsKKyAgICAgICAgaWYgKCFwYXR0ZXJuSW1hZ2VJZGVudGlm
aWVyKQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIFJlZlB0cjxOYXRp
dmVJbWFnZT4gZmlsbFBhdHRlcm5JbWFnZTsKLSAgICBpZiAoZmlsbFBhdHRlcm5JbWFnZUlkZW50
aWZpZXIpCi0gICAgICAgIGZpbGxQYXR0ZXJuSW1hZ2UgPSByZXNvdXJjZUNhY2hlKCkuY2FjaGVk
TmF0aXZlSW1hZ2UoZmlsbFBhdHRlcm5JbWFnZUlkZW50aWZpZXIpOworICAgICAgICBpZiAoYXV0
byBuYXRpdmVJbWFnZSA9IHJlc291cmNlQ2FjaGUoKS5jYWNoZWROYXRpdmVJbWFnZShwYXR0ZXJu
SW1hZ2VJZGVudGlmaWVyKSkKKyAgICAgICAgICAgIHJldHVybiBSZWYgeyAqbmF0aXZlSW1hZ2Ug
fTsKKyAgICAgICAgaWYgKGF1dG8gaW1hZ2VCdWZmZXIgPSByZXNvdXJjZUNhY2hlKCkuY2FjaGVk
SW1hZ2VCdWZmZXIocGF0dGVybkltYWdlSWRlbnRpZmllcikpCisgICAgICAgICAgICByZXR1cm4g
UmVmIHsgKmltYWdlQnVmZmVyIH07CisKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAg
ICB9OworICAgIAorICAgIGF1dG8gc3Ryb2tlUGF0dGVybkltYWdlID0gY2FjaGVkU291cmNlSW1h
Z2Uoc3Ryb2tlUGF0dGVybkltYWdlSWRlbnRpZmllcik7CisgICAgaWYgKCFzdHJva2VQYXR0ZXJu
SW1hZ2UpCisgICAgICAgIHN0cm9rZVBhdHRlcm5JbWFnZUlkZW50aWZpZXIgPSB7IH07CiAKLSAg
ICBoYW5kbGVJdGVtKFdURk1vdmUoaXRlbSksIHN0cm9rZVBhdHRlcm5JbWFnZS5nZXQoKSwgZmls
bFBhdHRlcm5JbWFnZS5nZXQoKSk7CisgICAgYXV0byBmaWxsUGF0dGVybkltYWdlID0gY2FjaGVk
U291cmNlSW1hZ2UoZmlsbFBhdHRlcm5JbWFnZUlkZW50aWZpZXIpOworICAgIGlmICghZmlsbFBh
dHRlcm5JbWFnZSkKKyAgICAgICAgZmlsbFBhdHRlcm5JbWFnZUlkZW50aWZpZXIgPSB7IH07CiAK
LSAgICBpZiAoc3Ryb2tlUGF0dGVybkltYWdlKQorICAgIGhhbmRsZUl0ZW0oV1RGTW92ZShpdGVt
KSwgV1RGTW92ZShzdHJva2VQYXR0ZXJuSW1hZ2UpLCBXVEZNb3ZlKGZpbGxQYXR0ZXJuSW1hZ2Up
KTsKKworICAgIGlmIChzdHJva2VQYXR0ZXJuSW1hZ2VJZGVudGlmaWVyKQogICAgICAgICByZXNv
dXJjZUNhY2hlKCkucmVjb3JkUmVzb3VyY2VVc2Uoc3Ryb2tlUGF0dGVybkltYWdlSWRlbnRpZmll
cik7CiAKLSAgICBpZiAoZmlsbFBhdHRlcm5JbWFnZSkKKyAgICBpZiAoZmlsbFBhdHRlcm5JbWFn
ZUlkZW50aWZpZXIpCiAgICAgICAgIHJlc291cmNlQ2FjaGUoKS5yZWNvcmRSZXNvdXJjZVVzZShm
aWxsUGF0dGVybkltYWdlSWRlbnRpZmllcik7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlclByb3h5
LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlRGlzcGxh
eUxpc3RSZWNvcmRlclByb3h5LmNwcAppbmRleCA5NDIxZGQyMzhjYjZlYzYzZmUxYzA3ZDQ3MzYx
Y2IwYjY1ZmY0MGNiLi41NzMwZGQ4ODE5ZThlNDJlM2I2YjY2ZWYxN2IzNDZlODdiNTI0MjYxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZURp
c3BsYXlMaXN0UmVjb3JkZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9ncmFwaGljcy9SZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyUHJveHkuY3BwCkBAIC00MDYs
MjQgKzQwNiwzNiBAQCB2b2lkIFJlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXJQcm94eTo6cmVjb3Jk
UmVzb3VyY2VVc2UoTmF0aXZlSW1hZ2UmIGltYWdlKQogICAgIG1fcmVuZGVyaW5nQmFja2VuZC0+
cmVjb3JkTmF0aXZlSW1hZ2VVc2UoaW1hZ2UpOwogfQogCi12b2lkIFJlbW90ZURpc3BsYXlMaXN0
UmVjb3JkZXJQcm94eTo6cmVjb3JkUmVzb3VyY2VVc2UoRm9udCYgZm9udCkKK3ZvaWQgUmVtb3Rl
RGlzcGxheUxpc3RSZWNvcmRlclByb3h5OjpyZWNvcmRSZXNvdXJjZVVzZShJbWFnZUJ1ZmZlciYg
aW1hZ2VCdWZmZXIpCiB7CiAgICAgaWYgKFVOTElLRUxZKCFtX3JlbmRlcmluZ0JhY2tlbmQpKSB7
CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQog
Ci0gICAgbV9yZW5kZXJpbmdCYWNrZW5kLT5yZWNvcmRGb250VXNlKGZvbnQpOworICAgIG1fcmVu
ZGVyaW5nQmFja2VuZC0+cmVjb3JkSW1hZ2VCdWZmZXJVc2UoaW1hZ2VCdWZmZXIpOwogfQogCi12
b2lkIFJlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXJQcm94eTo6cmVjb3JkUmVzb3VyY2VVc2UoSW1h
Z2VCdWZmZXImIGltYWdlQnVmZmVyKQordm9pZCBSZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyUHJv
eHk6OnJlY29yZFJlc291cmNlVXNlKFNvdXJjZUltYWdlJiBpbWFnZSkKK3sKKyAgICBhdXRvIGlt
YWdlQnVmZmVyID0gaW1hZ2UuaW1hZ2VCdWZmZXJJZkV4aXN0cygpOworICAgIGlmIChpbWFnZUJ1
ZmZlciAmJiBjYW5EcmF3SW1hZ2VCdWZmZXIoKmltYWdlQnVmZmVyKSkgeworICAgICAgICByZWNv
cmRSZXNvdXJjZVVzZSgqaW1hZ2VCdWZmZXIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisg
ICAgaWYgKGF1dG8gbmF0aXZlSW1hZ2UgPSBpbWFnZS5uYXRpdmVJbWFnZSgpKQorICAgICAgICBy
ZWNvcmRSZXNvdXJjZVVzZSgqbmF0aXZlSW1hZ2UpOworfQorCit2b2lkIFJlbW90ZURpc3BsYXlM
aXN0UmVjb3JkZXJQcm94eTo6cmVjb3JkUmVzb3VyY2VVc2UoRm9udCYgZm9udCkKIHsKICAgICBp
ZiAoVU5MSUtFTFkoIW1fcmVuZGVyaW5nQmFja2VuZCkpIHsKICAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBtX3JlbmRlcmluZ0JhY2tl
bmQtPnJlY29yZEltYWdlQnVmZmVyVXNlKGltYWdlQnVmZmVyKTsKKyAgICBtX3JlbmRlcmluZ0Jh
Y2tlbmQtPnJlY29yZEZvbnRVc2UoZm9udCk7CiB9CiAKIHZvaWQgUmVtb3RlRGlzcGxheUxpc3RS
ZWNvcmRlclByb3h5OjpmbHVzaENvbnRleHQoR3JhcGhpY3NDb250ZXh0Rmx1c2hJZGVudGlmaWVy
IGlkZW50aWZpZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL1JlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXJQcm94eS5oIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyUHJveHkuaApp
bmRleCA3MWZkYjYzZGY0YWM4NDk3NDcyMzI2OWI3ZjAzZDk5N2I4MTM5ODlkLi5jY2E2Y2Y2MGVk
MDlkMjE5ZGI1ODIzZWUyMzQ0MWE3MjQ2NTA0YjgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXJQcm94eS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlRGlzcGxh
eUxpc3RSZWNvcmRlclByb3h5LmgKQEAgLTEzNiw4ICsxMzYsOSBAQCBwcml2YXRlOgogICAgIHZv
aWQgcmVjb3JkQXBwbHlEZXZpY2VTY2FsZUZhY3RvcihmbG9hdCkgZmluYWw7CiAKICAgICB2b2lk
IHJlY29yZFJlc291cmNlVXNlKFdlYkNvcmU6Ok5hdGl2ZUltYWdlJikgZmluYWw7Ci0gICAgdm9p
ZCByZWNvcmRSZXNvdXJjZVVzZShXZWJDb3JlOjpGb250JikgZmluYWw7CiAgICAgdm9pZCByZWNv
cmRSZXNvdXJjZVVzZShXZWJDb3JlOjpJbWFnZUJ1ZmZlciYpIGZpbmFsOworICAgIHZvaWQgcmVj
b3JkUmVzb3VyY2VVc2UoV2ViQ29yZTo6U291cmNlSW1hZ2UmKSBmaW5hbDsKKyAgICB2b2lkIHJl
Y29yZFJlc291cmNlVXNlKFdlYkNvcmU6OkZvbnQmKSBmaW5hbDsKIAogICAgIHN0ZDo6dW5pcXVl
X3B0cjxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ+IGNyZWF0ZU5lc3RlZENvbnRleHQoY29uc3Qg
V2ViQ29yZTo6RmxvYXRSZWN0JiBpbml0aWFsQ2xpcCwgY29uc3QgV2ViQ29yZTo6QWZmaW5lVHJh
bnNmb3JtJiBpbml0aWFsQ1RNKSBmaW5hbDsKIAo=
</data>
<flag name="commit-queue"
          id="469331"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>444339</attachid>
            <date>2021-11-15 20:57:10 -0800</date>
            <delta_ts>2021-11-15 21:37:01 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-232411-20211115205710.patch</filename>
            <type>text/plain</type>
            <size>47122</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg1Nzk2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmQ1YWJmYjdlYThmZGY3
ODJlN2EyM2Q0NTQxY2RjOWFiN2U1NzUxNy4uOWYyZTM2MTJmMjJmMjExZGEwNjQ3ODViNDM2Yjky
MGIyZjY0ZDY0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY0IEBACisyMDIxLTExLTE1ICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2VzcyBd
IFBhdHRlcm4gc2hvdWxkIGhvbGQgYW4gSW1hZ2VCdWZmZXIgd2hpY2ggY2FuIGJlIGNvbnZlcnRl
ZCB0byBhIE5hdGl2ZUltYWdlIHdoZW4gbmVlZGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzI0MTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgdGhlIG5ldyB0eXBlIGNhbGxlZCAnU291cmNlSW1h
Z2UnIHdoaWNoIGlzIGEgdmFyaWFudCBvZiBOYXRpdmVJbWFnZSAKKyAgICAgICAgYW5kIEltYWdl
QnVmZmVyLiBNYWtlIFBhdHRlcm4gaG9sZCBhIFNvdXJjZUltYWdlIGFuZCBwcm92aWRlIGdldHRl
cnMgdG8gCisgICAgICAgIHJldHJpZXZlIHRoZSBOYXRpdmVJbWFnZSBhbmQgSW1hZ2VCdWZmZXIu
IEluIHRoZXNlIGdldHRlcnMgd2UgY29udmVydAorICAgICAgICBmcm9tIGltYWdlIHNvdXJjZSB0
byB0aGUgb3RoZXIuCisKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBXZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFz
UGF0dGVybi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNQYXR0ZXJuOjpjcmVhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUGF0dGVybjo6Q2FudmFzUGF0dGVybik6CisgICAgICAg
ICogaHRtbC9jYW52YXMvQ2FudmFzUGF0dGVybi5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL0Nh
bnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFz
UmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6Y3JlYXRlUGF0dGVybik6CisgICAgICAgICogaW5zcGVj
dG9yL0luc3BlY3RvckNhbnZhcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDYW52
YXM6OmJ1aWxkQXJyYXlGb3JDYW52YXNQYXR0ZXJuKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9QYXR0ZXJuLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhdHRlcm46OmNyZWF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpQYXR0ZXJuOjpQYXR0ZXJuKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9QYXR0ZXJuLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlSW1h
Z2UuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUltYWdlOjpTb3VyY2VJbWFn
ZSk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VJbWFnZTo6bmF0aXZlSW1hZ2VJZkV4aXN0cyBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VJbWFnZTo6bmF0aXZlSW1hZ2UpOgorICAg
ICAgICAoV2ViQ29yZTo6U291cmNlSW1hZ2U6OmltYWdlQnVmZmVySWZFeGlzdHMgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6U291cmNlSW1hZ2U6OmltYWdlQnVmZmVyKToKKyAgICAgICAgKFdl
YkNvcmU6OlNvdXJjZUltYWdlOjppbWFnZUlkZW50aWZpZXIgY29uc3QpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL1NvdXJjZUltYWdlLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL1BhdHRlcm4uY3BwLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2NhaXJvL0NhaXJvT3BlcmF0aW9ucy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWlybzo6
RmlsbFNvdXJjZTo6RmlsbFNvdXJjZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vUGF0dGVybkNhaXJvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhdHRlcm46OmNyZWF0ZVBs
YXRmb3JtUGF0dGVybiBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGF0
dGVybkNHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhdHRlcm46OmNyZWF0ZVBsYXRmb3JtUGF0
dGVybiBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0SXRlbXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlNldFN0
YXRlOjphcHBseSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0SXRlbXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpTZXRTdGF0
ZTo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3RSZWNvcmRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rp
c3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVySW1wbC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6UmVjb3JkZXJJbXBsOjpyZWNvcmRSZXNvdXJjZVVzZSk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXJJbXBs
Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
UmVwbGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OmFwcGx5U2V0U3Rh
dGVJdGVtKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFVGlsZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpGRVRpbGU6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSk6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpwYXR0ZXJuRm9yRGVzY3JpcHRpb24pOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHUmVzb3VyY2VQYXR0ZXJuLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291
cmNlUGF0dGVybjo6YnVpbGRQYXR0ZXJuKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jl
c291cmNlUGF0dGVybjo6Y3JlYXRlVGlsZUltYWdlIGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJp
bmcvc3ZnL1NWR1JlbmRlcmluZ0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVu
ZGVyaW5nQ29udGV4dDo6Y3JlYXRlSW1hZ2VCdWZmZXIpOgorICAgICAgICAqIHJlbmRlcmluZy9z
dmcvU1ZHUmVuZGVyaW5nQ29udGV4dC5oOgorCiAyMDIxLTExLTE0ICBTYWlkIEFib3UtSGFsbGF3
YSAgPHNhaWRAYXBwbGUuY29tPgogCiAgICAgICAgIFtHUFUgUHJvY2Vzc10gUmVtb3ZlIHRoZSBy
ZWZlcmVuY2UgdG8gRmlsdGVyIGZyb20gRmlsdGVyRWZmZWN0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGFmNjc3NTc1
MDQ5YmYxNzgwNTk0ODg1NjY5MGRiNjJkMWI0MGVjNjguLjYxZWNiNDc1YWVjZWU4ZDU4YzkwNzBj
ZDVjNDdkOGUyMWZhZjRhNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMjEtMTEtMTUg
IFNhaWQgQWJvdS1IYWxsYXdhICA8c2FpZEBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQVSBQcm9j
ZXNzIF0gUGF0dGVybiBzaG91bGQgaG9sZCBhbiBJbWFnZUJ1ZmZlciB3aGljaCBjYW4gYmUgY29u
dmVydGVkIHRvIGEgTmF0aXZlSW1hZ2Ugd2hlbiBuZWVkZWQKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMjQxMQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEhhbmRsZSBlbmNvZGluZyBhbWQgZGVjb2Rpbmcg
dGhlIFNvdXJjZUltYWdlIGZvciByZWNvcmRpbmcgYW5kIHJlcGxheWluZworICAgICAgICB0aGUg
U2V0U3RhdGUgRGlzcGxheUxpc3QgaXRlbSBpbiBHUFVQcm9jZXNzLgorCisgICAgICAgICogR1BV
UHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlcjo6c2V0U3RhdGVXaXRoUXVhbGlmaWVk
SWRlbnRpZmllcnMpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZURp
c3BsYXlMaXN0UmVjb3JkZXJQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZURpc3Bs
YXlMaXN0UmVjb3JkZXJQcm94eTo6cmVjb3JkUmVzb3VyY2VVc2UpOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXJQcm94eS5oOgorCiAy
MDIxLTExLTE0ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAg
ICAgIEF0dGFjaCBJT0hJREV2ZW50IHRpbWVzdGFtcHMgdG8gd2hlZWwgZXZlbnRzCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMu
dHh0CmluZGV4IDU0ZDhkM2JkOTgwZThiOWI2YjgyMWY5Y2NiNGZhNTIyZTFiZjFlMDIuLjcyOGU0
ZGIxNDIwNTA5NjgyNTIxN2MxMzZjZjVkMDAwMTBhMDk3NjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBAIC0y
MDU5LDYgKzIwNTksNyBAQCBwbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVWaWRlb1NhbXBsZS5jcHAK
IHBsYXRmb3JtL2dyYXBoaWNzL1JvdW5kZWRSZWN0LmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvU2hh
ZG93Qmx1ci5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL1NvdXJjZUJ1ZmZlclByaXZhdGUuY3BwCitw
bGF0Zm9ybS9ncmFwaGljcy9Tb3VyY2VJbWFnZS5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL1N0cmlu
Z1RydW5jYXRvci5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL1RleHRSdW4uY3BwCiBwbGF0Zm9ybS9n
cmFwaGljcy9UZXh0VHJhY2tSZXByZXNlbnRhdGlvbi5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA5OTgxMGViODIwM2NjZGE2
YjVjOWUzODE2MTRiNjJiZTZlZjJhMWNjLi43YzkzZWVmNTJlNzk3Mjc2OTZmMDYwZTVlMTI4MzA4
M2Q3MWRlMTgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCkBAIC0yMjkxLDYgKzIyOTEsNyBAQAogCQk3MUYwNUY4MDI1MTI0NDJFMDA3
MUU2OTMgLyogQ1NTUHJvcGVydHlBbmltYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcxRjA1RjdFMjUxMjQ0MEMwMDcxRTY5MyAvKiBDU1NQcm9w
ZXJ0eUFuaW1hdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTcyMTQ0MzMzMjIzRUM4QjAwMEYxMkZGNyAvKiBTVkdQcm9wZXJ0eS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTVFRTUzNjMyMjNCMkEy
NDAwRkJBOTQ0IC8qIFNWR1Byb3BlcnR5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzIxNDQzMzQyMjNFQzkxNjAwRjEyRkY3IC8qIFNWR1Byb3Bl
cnR5T3duZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDU1RUU1MzYwMjIzQjJBMjEwMEZCQTk0NCAvKiBTVkdQcm9wZXJ0eU93bmVyLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNzIxNEI5QTkyNzQyRkI5
OTAwM0JFNkRGIC8qIFNvdXJjZUltYWdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA3MjE0QjlBODI3NDJGNjI5MDAzQkU2REYgLyogU291cmNlSW1hZ2Uu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3MjFC
NDk3NDI1MTJCQTNCMDBGRTlEM0IgLyogSW1hZ2VCaXRtYXBCYWNraW5nLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MjFCNDk3MDI1MTJBQzA0MDBGRTlE
M0IgLyogSW1hZ2VCaXRtYXBCYWNraW5nLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzIyODNGMEUyMzBCMjY4QzAwRjVEODI4IC8qIEltYWdlUGFp
bnRpbmdPcHRpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA3MkMxOEEzRjIzMEIwNEI3MDA2ODQ3QzcgLyogSW1hZ2VQYWludGluZ09wdGlvbnMuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3MjRFRDMz
MjFBM0E4QjIzMDBGNUYxM0MgLyogSlNFWFRCbGVuZE1pbk1heC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzI0RUQzMzAxQTNBOEIyMzAwRjVGMTNDIC8q
IEpTRVhUQmxlbmRNaW5NYXguaCAqLzsgfTsKQEAgLTEwODQ3LDYgKzEwODQ4LDggQEAKIAkJNzFG
Rjg1MTgyMkEzRjgxRjAwNUQ1OTU5IC8qIE5hdmlnYXRvck1heFRvdWNoUG9pbnRzLmlkbCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQ7IHBhdGggPSBOYXZpZ2F0b3JNYXhUb3VjaFBvaW50cy5pZGw7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyMTQ0MzQ1MjI0MEM4QkEwMEYxMkZGNyAvKiBTVkdBbmlt
YXRlZFZhbHVlUHJvcGVydHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHQW5pbWF0ZWRWYWx1ZVByb3Bl
cnR5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyMTQ0MzQ2MjI0MENBRDIwMEYx
MkZGNyAvKiBTVkdWYWx1ZVByb3BlcnR5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR1ZhbHVlUHJvcGVy
dHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzIxNEI5QTgyNzQyRjYyOTAwM0JF
NkRGIC8qIFNvdXJjZUltYWdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNvdXJjZUltYWdlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcyMTRCOUFDMjc0MzUxNEEwMDNCRTZERiAvKiBTb3Vy
Y2VJbWFnZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTb3VyY2VJbWFnZS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyMUI0OTZGMjUxMkFDMDQwMEZFOUQzQiAvKiBJbWFnZUJp
dG1hcEJhY2tpbmcuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW1hZ2VCaXRtYXBCYWNraW5nLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzIxQjQ5NzAyNTEyQUMwNDAwRkU5RDNC
IC8qIEltYWdlQml0bWFwQmFja2luZy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbWFnZUJpdG1hcEJhY2tp
bmcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzIyQTgxNUMyMzhGRDUwNTAwQzAw
NTgzIC8qIEFuaW1hdGlvbkZyYW1lUmF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBbmltYXRpb25GcmFt
ZVJhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI4MDM0LDYgKzI4MDM3LDgg
QEAKIAkJCQkxREQxMjdBQzI1NkUzQTg3MDBCMjI3RDcgLyogU291cmNlQnVmZmVyUHJpdmF0ZS5j
cHAgKi8sCiAJCQkJQ0Q2NDFFQjIxODE4RjVFRDAwRUU0QzQxIC8qIFNvdXJjZUJ1ZmZlclByaXZh
dGUuaCAqLywKIAkJCQlDREM4QjVBQzE4MDRBRTVEMDAxNkU2ODUgLyogU291cmNlQnVmZmVyUHJp
dmF0ZUNsaWVudC5oICovLAorCQkJCTcyMTRCOUFDMjc0MzUxNEEwMDNCRTZERiAvKiBTb3VyY2VJ
bWFnZS5jcHAgKi8sCisJCQkJNzIxNEI5QTgyNzQyRjYyOTAwM0JFNkRGIC8qIFNvdXJjZUltYWdl
LmggKi8sCiAJCQkJN0M4M0RFODUxRDA0Q0JENDAwRkVCQ0YzIC8qIFNwcmluZ1NvbHZlci5oICov
LAogCQkJCUIyMzU0MEYwMEQwMDc4MkUwMDIzODJGQSAvKiBTdHJpbmdUcnVuY2F0b3IuY3BwICov
LAogCQkJCUIyMzU0MEYxMEQwMDc4MkUwMDIzODJGQSAvKiBTdHJpbmdUcnVuY2F0b3IuaCAqLywK
QEAgLTM2MTA5LDYgKzM2MTE0LDcgQEAKIAkJCQlDREM4QjVBQjE4MDQ3RkYxMDAxNkU2ODUgLyog
U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMuaCBpbiBIZWFkZXJzICovLAogCQkJCUNEQzhCNUFE
MTgwNEFFNUQwMDE2RTY4NSAvKiBTb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50LmggaW4gSGVhZGVy
cyAqLywKIAkJCQk4NEE4MUY0MjBGQzdFMDI3MDA5NTUzMDAgLyogU291cmNlR3JhcGhpYy5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJNzIxNEI5QTkyNzQyRkI5OTAwM0JFNkRGIC8qIFNvdXJjZUltYWdl
LmggaW4gSGVhZGVycyAqLywKIAkJCQlEMDFBMjdBRTEwQzlCRkQ4MDAwMjZBNDIgLyogU3BhY2VT
cGxpdFN0cmluZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNjI2Q0RFMEYxMTQwNDI0QzAwMUU1QTY4
IC8qIFNwYXRpYWxOYXZpZ2F0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzQ5NTBDRDI1Mzk0
MzYxMDA5OUYxNzEgLyogU3BlZWNoUmVjb2duaXRpb24uaCBpbiBIZWFkZXJzICovLApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUGF0dGVybi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNQYXR0ZXJuLmNwcAppbmRleCA4ZjE5MzgyY2Iy
MDNkMmU0MTFiY2E5NTdhNjkxYjFmYWM5OGEyY2ExLi42MGNlM2RlYTYxZTI0ZmE3YmQ0OWUyOGYx
N2U3ZTQ0OGNkYjIwODJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9D
YW52YXNQYXR0ZXJuLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNQ
YXR0ZXJuLmNwcApAQCAtMzQsMTIgKzM0LDEyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
UmVmPENhbnZhc1BhdHRlcm4+IENhbnZhc1BhdHRlcm46OmNyZWF0ZShSZWY8TmF0aXZlSW1hZ2U+
JiYgaW1hZ2UsIGJvb2wgcmVwZWF0WCwgYm9vbCByZXBlYXRZLCBib29sIG9yaWdpbkNsZWFuKQor
UmVmPENhbnZhc1BhdHRlcm4+IENhbnZhc1BhdHRlcm46OmNyZWF0ZShTb3VyY2VJbWFnZSYmIGlt
YWdlLCBib29sIHJlcGVhdFgsIGJvb2wgcmVwZWF0WSwgYm9vbCBvcmlnaW5DbGVhbikKIHsKICAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDYW52YXNQYXR0ZXJuKFdURk1vdmUoaW1hZ2UpLCByZXBl
YXRYLCByZXBlYXRZLCBvcmlnaW5DbGVhbikpOwogfQogCi1DYW52YXNQYXR0ZXJuOjpDYW52YXNQ
YXR0ZXJuKFJlZjxOYXRpdmVJbWFnZT4mJiBpbWFnZSwgYm9vbCByZXBlYXRYLCBib29sIHJlcGVh
dFksIGJvb2wgb3JpZ2luQ2xlYW4pCitDYW52YXNQYXR0ZXJuOjpDYW52YXNQYXR0ZXJuKFNvdXJj
ZUltYWdlJiYgaW1hZ2UsIGJvb2wgcmVwZWF0WCwgYm9vbCByZXBlYXRZLCBib29sIG9yaWdpbkNs
ZWFuKQogICAgIDogbV9wYXR0ZXJuKFBhdHRlcm46OmNyZWF0ZShXVEZNb3ZlKGltYWdlKSwgeyBy
ZXBlYXRYLCByZXBlYXRZIH0pKQogICAgICwgbV9vcmlnaW5DbGVhbihvcmlnaW5DbGVhbikKIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1BhdHRlcm4uaCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1BhdHRlcm4uaAppbmRleCBlNDZkMjFi
YzUxMzVkOWE3NGY0NTc1YzlkZDY1ZTljZWNkY2I4ZDJhLi44NzFlMDQ1NzdjYzUxZTU5ODA1N2Jl
Y2UyYWJkNzVmNjZhYzk5YzYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9DYW52YXNQYXR0ZXJuLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFz
UGF0dGVybi5oCkBAIC0zMiwxMyArMzIsMTMgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1j
bGFzcyBOYXRpdmVJbWFnZTsKIGNsYXNzIFBhdHRlcm47CitjbGFzcyBTb3VyY2VJbWFnZTsKIHN0
cnVjdCBET01NYXRyaXgyREluaXQ7CiAKIGNsYXNzIENhbnZhc1BhdHRlcm4gOiBwdWJsaWMgUmVm
Q291bnRlZDxDYW52YXNQYXR0ZXJuPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxDYW52YXNQ
YXR0ZXJuPiBjcmVhdGUoUmVmPE5hdGl2ZUltYWdlPiYmLCBib29sIHJlcGVhdFgsIGJvb2wgcmVw
ZWF0WSwgYm9vbCBvcmlnaW5DbGVhbik7CisgICAgc3RhdGljIFJlZjxDYW52YXNQYXR0ZXJuPiBj
cmVhdGUoU291cmNlSW1hZ2UmJiwgYm9vbCByZXBlYXRYLCBib29sIHJlcGVhdFksIGJvb2wgb3Jp
Z2luQ2xlYW4pOwogICAgIH5DYW52YXNQYXR0ZXJuKCk7CiAKICAgICBzdGF0aWMgYm9vbCBwYXJz
ZVJlcGV0aXRpb25UeXBlKGNvbnN0IFN0cmluZyYsIGJvb2wmIHJlcGVhdFgsIGJvb2wmIHJlcGVh
dFkpOwpAQCAtNTEsNyArNTEsNyBAQCBwdWJsaWM6CiAgICAgRXhjZXB0aW9uT3I8dm9pZD4gc2V0
VHJhbnNmb3JtKERPTU1hdHJpeDJESW5pdCYmKTsKIAogcHJpdmF0ZToKLSAgICBDYW52YXNQYXR0
ZXJuKFJlZjxOYXRpdmVJbWFnZT4mJiwgYm9vbCByZXBlYXRYLCBib29sIHJlcGVhdFksIGJvb2wg
b3JpZ2luQ2xlYW4pOworICAgIENhbnZhc1BhdHRlcm4oU291cmNlSW1hZ2UmJiwgYm9vbCByZXBl
YXRYLCBib29sIHJlcGVhdFksIGJvb2wgb3JpZ2luQ2xlYW4pOwogCiAgICAgUmVmPFBhdHRlcm4+
IG1fcGF0dGVybjsKICAgICBib29sIG1fb3JpZ2luQ2xlYW47CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuY3Bw
CmluZGV4IDZkZWZlYjgxMmMzNzIyYzM4ZWEyZmM4ZDA3OTFmYWUyOWIxNjBkNmUuLjFlMDY2NDdk
ZGU3ZmZlNzA4MTYwNWEzYWY3MjBkOTQ0ZTU0MjIwZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuY3Bw
CkBAIC0xOTk0LDcgKzE5OTQsNyBAQCBFeGNlcHRpb25PcjxSZWZQdHI8Q2FudmFzUGF0dGVybj4+
IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmNyZWF0ZVBhdHRlcm4oSAogCiAgICAgdmlk
ZW9FbGVtZW50LnBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0KGltYWdlQnVmZmVyLT5jb250ZXh0
KCksIEZsb2F0UmVjdChGbG9hdFBvaW50KCksIHNpemUodmlkZW9FbGVtZW50KSkpOwogICAgIAot
ICAgIHJldHVybiBSZWZQdHI8Q2FudmFzUGF0dGVybj4geyBDYW52YXNQYXR0ZXJuOjpjcmVhdGUo
SW1hZ2VCdWZmZXI6OnNpbmtJbnRvTmF0aXZlSW1hZ2UoV1RGTW92ZShpbWFnZUJ1ZmZlcikpLnJl
bGVhc2VOb25OdWxsKCksIHJlcGVhdFgsIHJlcGVhdFksIG9yaWdpbkNsZWFuKSB9OworICAgIHJl
dHVybiBSZWZQdHI8Q2FudmFzUGF0dGVybj4geyBDYW52YXNQYXR0ZXJuOjpjcmVhdGUoaW1hZ2VC
dWZmZXIucmVsZWFzZU5vbk51bGwoKSwgcmVwZWF0WCwgcmVwZWF0WSwgb3JpZ2luQ2xlYW4pIH07
CiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckNhbnZhcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFz
LmNwcAppbmRleCBlODQ3ZmU2ODExMjczMjUwNmIxZDA4NDZmNjMzZGFjNGI5NjlkMTY1Li4wMzE5
Y2MzN2RmMjVmMmM2NmY5NmMyNTk2MTIxMTVjODkzODNjNzdlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzLmNwcApAQCAtMTMzNiwxMCArMTMzNiw3IEBAIFJl
ZjxKU09OOjpBcnJheU9mPEpTT046OlZhbHVlPj4gSW5zcGVjdG9yQ2FudmFzOjpidWlsZEFycmF5
Rm9yQ2FudmFzR3JhZGllbnQoY29uCiAKIFJlZjxKU09OOjpBcnJheU9mPEpTT046OlZhbHVlPj4g
SW5zcGVjdG9yQ2FudmFzOjpidWlsZEFycmF5Rm9yQ2FudmFzUGF0dGVybihjb25zdCBDYW52YXNQ
YXR0ZXJuJiBjYW52YXNQYXR0ZXJuKQogewotICAgIGF1dG8mIHRpbGVJbWFnZSA9IGNhbnZhc1Bh
dHRlcm4ucGF0dGVybigpLnRpbGVJbWFnZSgpOwotICAgIEZsb2F0UmVjdCByZWN0ID0geyB7IH0s
IHRpbGVJbWFnZS5zaXplKCkgfTsKLSAgICBhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6
OmNyZWF0ZSh0aWxlSW1hZ2Uuc2l6ZSgpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAx
LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKLSAg
ICBpbWFnZUJ1ZmZlci0+Y29udGV4dCgpLmRyYXdOYXRpdmVJbWFnZSh0aWxlSW1hZ2UsIHRpbGVJ
bWFnZS5zaXplKCksIHJlY3QsIHJlY3QpOworICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBjYW52YXNQ
YXR0ZXJuLnBhdHRlcm4oKS50aWxlSW1hZ2VCdWZmZXIoKTsKIAogICAgIFN0cmluZyByZXBlYXQ7
CiAgICAgYm9vbCByZXBlYXRYID0gY2FudmFzUGF0dGVybi5wYXR0ZXJuKCkucmVwZWF0WCgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0dGVybi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXR0ZXJuLmNwcAppbmRleCA2MzUz
MjM3NjlmODAzM2RlMzI4ZThkNDRlNTc5NzVhMWQzY2Q2MDY1Li4xMDRiMzA2YTNhODgxMzA5NGMx
NzUzMGRlYWRjMWJlYzdiNzMwMjRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9QYXR0ZXJuLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9QYXR0ZXJuLmNwcApAQCAtMjcsMTYgKzI3LDE4IEBACiAjaW5jbHVkZSAiY29uZmlnLmgi
CiAjaW5jbHVkZSAiUGF0dGVybi5oIgogCisjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCiAj
aW5jbHVkZSAiSW1hZ2UuaCIKKyNpbmNsdWRlICJJbWFnZUJ1ZmZlci5oIgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLVJlZjxQYXR0ZXJuPiBQYXR0ZXJuOjpjcmVhdGUoUmVmPE5hdGl2ZUltYWdl
PiYmIHRpbGVJbWFnZSwgY29uc3QgUGFyYW1ldGVycyYgcGFyYW1ldGVycykKK1JlZjxQYXR0ZXJu
PiBQYXR0ZXJuOjpjcmVhdGUoU291cmNlSW1hZ2UmJiB0aWxlSW1hZ2UsIGNvbnN0IFBhcmFtZXRl
cnMmIHBhcmFtZXRlcnMpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUGF0dGVybihXVEZN
b3ZlKHRpbGVJbWFnZSksIHBhcmFtZXRlcnMpKTsKIH0KIAotUGF0dGVybjo6UGF0dGVybihSZWY8
TmF0aXZlSW1hZ2U+JiYgaW1hZ2UsIGNvbnN0IFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCitQYXR0
ZXJuOjpQYXR0ZXJuKFNvdXJjZUltYWdlJiYgaW1hZ2UsIGNvbnN0IFBhcmFtZXRlcnMmIHBhcmFt
ZXRlcnMpCiAgICAgOiBtX3RpbGVJbWFnZShXVEZNb3ZlKGltYWdlKSkKICAgICAsIG1fcGFyYW1l
dGVycyhwYXJhbWV0ZXJzKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvUGF0dGVybi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0
dGVybi5oCmluZGV4IDFjOTYxZmJmNDZlODM2ZjQwMDdlNjBhOTgxNDFmNDkxMjRiNTQ1MDMuLjQ2
MWRiNmE4ODQ1ZmJiZTg2N2VhNTk2ZjIwMGU4MmY4OTBlYmZmYjUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BhdHRlcm4uaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXR0ZXJuLmgKQEAgLTI4LDcgKzI4LDcgQEAKICNwcmFnbWEg
b25jZQogCiAjaW5jbHVkZSAiQWZmaW5lVHJhbnNmb3JtLmgiCi0jaW5jbHVkZSAiSW1hZ2UuaCIK
KyNpbmNsdWRlICJTb3VyY2VJbWFnZS5oIgogCiAjaW5jbHVkZSA8d3RmL1JlZi5oPgogI2luY2x1
ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CkBAIC01Miw3ICs1Miw2IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogY2xhc3MgQWZmaW5lVHJhbnNmb3JtOwogY2xhc3MgR3JhcGhpY3NDb250ZXh0OwotY2xh
c3MgSW1hZ2U7CiAKIGNsYXNzIFBhdHRlcm4gZmluYWwgOiBwdWJsaWMgUmVmQ291bnRlZDxQYXR0
ZXJuPiB7CiBwdWJsaWM6CkBAIC03MCwxMCArNjksMTQgQEAgcHVibGljOgogICAgICAgICBib29s
IHJlcGVhdFk7CiAgICAgfTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8UGF0dGVy
bj4gY3JlYXRlKFJlZjxOYXRpdmVJbWFnZT4mJiB0aWxlSW1hZ2UsIGNvbnN0IFBhcmFtZXRlcnMm
ID0geyB9KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPFBhdHRlcm4+IGNyZWF0ZShT
b3VyY2VJbWFnZSYmIHRpbGVJbWFnZSwgY29uc3QgUGFyYW1ldGVycyYgPSB7IH0pOwogICAgIFdF
QkNPUkVfRVhQT1JUIH5QYXR0ZXJuKCk7CiAKLSAgICBOYXRpdmVJbWFnZSYgdGlsZUltYWdlKCkg
Y29uc3QgeyByZXR1cm4gbV90aWxlSW1hZ2UuZ2V0KCk7IH0KKyAgICBTb3VyY2VJbWFnZSYgdGls
ZUltYWdlKCkgY29uc3QgeyByZXR1cm4gbV90aWxlSW1hZ2U7IH0KKyAgICBOYXRpdmVJbWFnZSog
dGlsZU5hdGl2ZUltYWdlKCkgY29uc3QgeyByZXR1cm4gbV90aWxlSW1hZ2UubmF0aXZlSW1hZ2Uo
KTsgfQorICAgIEltYWdlQnVmZmVyKiB0aWxlSW1hZ2VCdWZmZXIoKSBjb25zdCB7IHJldHVybiBt
X3RpbGVJbWFnZS5pbWFnZUJ1ZmZlcigpOyB9CisgICAgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyIHRpbGVJbWFnZUlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX3RpbGVJbWFnZS5pbWFn
ZUlkZW50aWZpZXIoKTsgfQorCiAgICAgY29uc3QgUGFyYW1ldGVycyYgcGFyYW1ldGVycygpIGNv
bnN0IHsgcmV0dXJuIG1fcGFyYW1ldGVyczsgfQogCiAgICAgLy8gUGF0dGVybiBzcGFjZSBpcyBh
biBhYnN0cmFjdCBzcGFjZSB0aGF0IG1hcHMgdG8gdGhlIGRlZmF1bHQgdXNlciBzcGFjZSBieSB0
aGUgdHJhbnNmb3JtYXRpb24gJ3VzZXJTcGFjZVRyYW5zZm9ybScKQEAgLTg4LDkgKzkxLDkgQEAg
cHVibGljOgogICAgIGJvb2wgcmVwZWF0WSgpIGNvbnN0IHsgcmV0dXJuIG1fcGFyYW1ldGVycy5y
ZXBlYXRZOyB9CiAKIHByaXZhdGU6Ci0gICAgUGF0dGVybihSZWY8TmF0aXZlSW1hZ2U+JiYsIGNv
bnN0IFBhcmFtZXRlcnMmKTsKKyAgICBQYXR0ZXJuKFNvdXJjZUltYWdlJiYsIGNvbnN0IFBhcmFt
ZXRlcnMmKTsKIAotICAgIFJlZjxOYXRpdmVJbWFnZT4gbV90aWxlSW1hZ2U7CisgICAgbXV0YWJs
ZSBTb3VyY2VJbWFnZSBtX3RpbGVJbWFnZTsKICAgICBQYXJhbWV0ZXJzIG1fcGFyYW1ldGVyczsK
IH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NvdXJj
ZUltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NvdXJjZUltYWdl
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5mZTc0ODFjMDkzZTYzNTZiZmFjYWI4M2I5ZThlNmJlMzgwY2UyNDlm
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU291
cmNlSW1hZ2UuY3BwCkBAIC0wLDAgKzEsMTAwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIx
IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJTb3Vy
Y2VJbWFnZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1NvdXJjZUltYWdlOjpTb3VyY2VJ
bWFnZShSZWY8TmF0aXZlSW1hZ2U+JiYgbmF0aXZlSW1hZ2UpCisgICAgOiBtX2ltYWdlKFdURk1v
dmUobmF0aXZlSW1hZ2UpKQoreworfQorCitTb3VyY2VJbWFnZTo6U291cmNlSW1hZ2UoUmVmPElt
YWdlQnVmZmVyPiYmIGltYWdlQnVmZmVyKQorICAgIDogbV9pbWFnZShXVEZNb3ZlKGltYWdlQnVm
ZmVyKSkKK3sKK30KKworTmF0aXZlSW1hZ2UqIFNvdXJjZUltYWdlOjpuYXRpdmVJbWFnZUlmRXhp
c3RzKCkgY29uc3QKK3sKKyAgICBpZiAoYXV0byogbmF0aXZlSW1hZ2UgPSBzdGQ6OmdldF9pZjxS
ZWY8TmF0aXZlSW1hZ2U+PigmbV9pbWFnZSkpCisgICAgICAgIHJldHVybiBuYXRpdmVJbWFnZS0+
cHRyKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK05hdGl2ZUltYWdlKiBTb3VyY2VJbWFn
ZTo6bmF0aXZlSW1hZ2UoKQoreworICAgIGlmIChhdXRvKiBuYXRpdmVJbWFnZSA9IG5hdGl2ZUlt
YWdlSWZFeGlzdHMoKSkKKyAgICAgICAgcmV0dXJuIG5hdGl2ZUltYWdlOworCisgICAgYXV0byBp
bWFnZUJ1ZmZlciA9IHN0ZDo6Z2V0PFJlZjxJbWFnZUJ1ZmZlcj4+KG1faW1hZ2UpOworCisgICAg
YXV0byBuYXRpdmVJbWFnZSA9IEltYWdlQnVmZmVyOjpzaW5rSW50b05hdGl2ZUltYWdlKFdURk1v
dmUoaW1hZ2VCdWZmZXIpKTsKKyAgICBpZiAoIW5hdGl2ZUltYWdlKQorICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKworICAgIG1faW1hZ2UgPSBuYXRpdmVJbWFnZS5yZWxlYXNlTm9uTnVsbCgpOwor
ICAgIHJldHVybiBuYXRpdmVJbWFnZUlmRXhpc3RzKCk7Cit9CisKK0ltYWdlQnVmZmVyKiBTb3Vy
Y2VJbWFnZTo6aW1hZ2VCdWZmZXJJZkV4aXN0cygpIGNvbnN0Cit7CisgICAgaWYgKGF1dG8qIGlt
YWdlQnVmZmVyID0gc3RkOjpnZXRfaWY8UmVmPEltYWdlQnVmZmVyPj4oJm1faW1hZ2UpKQorICAg
ICAgICByZXR1cm4gaW1hZ2VCdWZmZXItPnB0cigpOworICAgIHJldHVybiBudWxscHRyOworfQor
CitJbWFnZUJ1ZmZlciogU291cmNlSW1hZ2U6OmltYWdlQnVmZmVyKCkKK3sKKyAgICBpZiAoYXV0
byogaW1hZ2VCdWZmZXIgPSBpbWFnZUJ1ZmZlcklmRXhpc3RzKCkpCisgICAgICAgIHJldHVybiBp
bWFnZUJ1ZmZlcjsKKworICAgIGF1dG8gbmF0aXZlSW1hZ2UgPSBzdGQ6OmdldDxSZWY8TmF0aXZl
SW1hZ2U+PihtX2ltYWdlKTsKKworICAgIEZsb2F0UmVjdCByZWN0ID0geyB7IH0sIG5hdGl2ZUlt
YWdlLT5zaXplKCkgfTsKKyAgICBhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0
ZShuYXRpdmVJbWFnZS0+c2l6ZSgpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBE
ZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKKyAgICBp
ZiAoIWltYWdlQnVmZmVyKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIGltYWdlQnVm
ZmVyLT5jb250ZXh0KCkuZHJhd05hdGl2ZUltYWdlKG5hdGl2ZUltYWdlLCBuYXRpdmVJbWFnZS0+
c2l6ZSgpLCByZWN0LCByZWN0KTsKKworICAgIG1faW1hZ2UgPSBpbWFnZUJ1ZmZlci5yZWxlYXNl
Tm9uTnVsbCgpOworICAgIHJldHVybiBpbWFnZUJ1ZmZlcklmRXhpc3RzKCk7Cit9CisKK1JlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllciBTb3VyY2VJbWFnZTo6aW1hZ2VJZGVudGlmaWVyKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihtX2ltYWdlLAorICAgICAgICBbJl0gKGNv
bnN0IFJlZjxOYXRpdmVJbWFnZT4mIG5hdGl2ZUltYWdlKSB7CisgICAgICAgICAgICByZXR1cm4g
bmF0aXZlSW1hZ2UtPnJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcigpOworICAgICAgICB9LAor
ICAgICAgICBbJl0gKGNvbnN0IFJlZjxJbWFnZUJ1ZmZlcj4mIGltYWdlQnVmZmVyKSB7CisgICAg
ICAgICAgICByZXR1cm4gaW1hZ2VCdWZmZXItPnJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcigp
OworICAgICAgICB9CisgICAgKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlSW1hZ2UuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NvdXJjZUltYWdlLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NjFlZGUxNWQ5OTkyOGRhNDAxMGJlODk4ZTZjZTRiN2Y1NzJhNTIwOAotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NvdXJjZUltYWdlLmgKQEAgLTAs
MCArMSw1MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuICBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkltYWdlQnVmZmVyLmgiCisjaW5jbHVkZSAiTmF0
aXZlSW1hZ2UuaCIKKyNpbmNsdWRlICJSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIuaCIKKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBXRUJDT1JFX0VYUE9SVCBTb3VyY2VJbWFnZSB7
CitwdWJsaWM6CisgICAgU291cmNlSW1hZ2UoUmVmPE5hdGl2ZUltYWdlPiYmKTsKKyAgICBTb3Vy
Y2VJbWFnZShSZWY8SW1hZ2VCdWZmZXI+JiYpOworCisgICAgTmF0aXZlSW1hZ2UqIG5hdGl2ZUlt
YWdlSWZFeGlzdHMoKSBjb25zdDsKKyAgICBOYXRpdmVJbWFnZSogbmF0aXZlSW1hZ2UoKTsKKwor
ICAgIEltYWdlQnVmZmVyKiBpbWFnZUJ1ZmZlcklmRXhpc3RzKCkgY29uc3Q7CisgICAgSW1hZ2VC
dWZmZXIqIGltYWdlQnVmZmVyKCk7CisKKyAgICBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIg
aW1hZ2VJZGVudGlmaWVyKCkgY29uc3Q7CisKK3ByaXZhdGU6CisgICAgdXNpbmcgSW1hZ2UgPSBz
dGQ6OnZhcmlhbnQ8UmVmPE5hdGl2ZUltYWdlPiwgUmVmPEltYWdlQnVmZmVyPj47CisgICAgSW1h
Z2UgbV9pbWFnZTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0NhaXJvT3BlcmF0aW9ucy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9DYWlyb09wZXJhdGlvbnMu
Y3BwCmluZGV4IDE1NTIzNTZhMjNhNWZkZmIxMGFmZWNhMmNjOTJhNzI3OTQ1ODEwMmUuLjlhZTY0
MzQyYjE4NGQ1OGFmZTdiNzQyN2FkNTM3MjZhYWVjYWNlZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0NhaXJvT3BlcmF0aW9ucy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQ2Fpcm9PcGVyYXRpb25zLmNw
cApAQCAtNTYyLDggKzU2Miw4IEBAIEZpbGxTb3VyY2U6OkZpbGxTb3VyY2UoY29uc3QgR3JhcGhp
Y3NDb250ZXh0U3RhdGUmIHN0YXRlKQogICAgIGlmIChzdGF0ZS5maWxsUGF0dGVybikgewogICAg
ICAgICBwYXR0ZXJuLm9iamVjdCA9IGFkb3B0UmVmKHN0YXRlLmZpbGxQYXR0ZXJuLT5jcmVhdGVQ
bGF0Zm9ybVBhdHRlcm4oQWZmaW5lVHJhbnNmb3JtKCkpKTsKIAotICAgICAgICBhdXRvJiBwYXR0
ZXJuSW1hZ2UgPSBzdGF0ZS5maWxsUGF0dGVybi0+dGlsZUltYWdlKCk7Ci0gICAgICAgIHBhdHRl
cm4uc2l6ZSA9IHBhdHRlcm5JbWFnZS5zaXplKCk7CisgICAgICAgIGlmIChhdXRvIHBhdHRlcm5J
bWFnZSA9IHN0YXRlLmZpbGxQYXR0ZXJuLT50aWxlTmF0aXZlSW1hZ2UoKSkKKyAgICAgICAgICAg
IHBhdHRlcm4uc2l6ZSA9IHBhdHRlcm5JbWFnZS0+c2l6ZSgpOwogICAgICAgICBwYXR0ZXJuLnRy
YW5zZm9ybSA9IHN0YXRlLmZpbGxQYXR0ZXJuLT5wYXR0ZXJuU3BhY2VUcmFuc2Zvcm0oKTsKICAg
ICAgICAgcGF0dGVybi5yZXBlYXRYID0gc3RhdGUuZmlsbFBhdHRlcm4tPnJlcGVhdFgoKTsKICAg
ICAgICAgcGF0dGVybi5yZXBlYXRZID0gc3RhdGUuZmlsbFBhdHRlcm4tPnJlcGVhdFkoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BhdHRlcm5D
YWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QYXR0ZXJu
Q2Fpcm8uY3BwCmluZGV4IDY4ZGFiYWY5OGFjYTlkMWNmYjcxZTE2NTIyYjlkZWIyNTgwN2ZmMWYu
LmEzZmNkNjhmZjhiN2NkOTZkNDRlMmY1N2E5NGEzOWU5MzcxYWMxOWEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BhdHRlcm5DYWlyby5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGF0dGVybkNhaXJvLmNw
cApAQCAtMzUsNyArMzUsMTEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjYWlyb19wYXR0ZXJu
X3QqIFBhdHRlcm46OmNyZWF0ZVBsYXRmb3JtUGF0dGVybihjb25zdCBBZmZpbmVUcmFuc2Zvcm0m
KSBjb25zdAogewotICAgIGF1dG8gcGxhdGZvcm1JbWFnZSA9IHRpbGVJbWFnZSgpLnBsYXRmb3Jt
SW1hZ2UoKTsKKyAgICBhdXRvIG5hdGl2ZUltYWdlID0gdGlsZU5hdGl2ZUltYWdlKCk7CisgICAg
aWYgKCFuYXRpdmVJbWFnZSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBhdXRvIHBs
YXRmb3JtSW1hZ2UgPSBuYXRpdmVJbWFnZS0+cGxhdGZvcm1JbWFnZSgpOwogICAgIGlmICghcGxh
dGZvcm1JbWFnZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BhdHRlcm5DRy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QYXR0ZXJuQ0cuY3BwCmluZGV4IDA1YTM5MTY1NDBi
Yjc2ZGEzZjBhYmFhMzM5NGZjOGRkMDg4YzhkYTkuLmQ0NWZhOTJjYzU0Y2NkOGZlMTg3MjVlNmNm
N2YwMzA1ZWI4Y2JmYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NnL1BhdHRlcm5DRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvUGF0dGVybkNHLmNwcApAQCAtNTUsMTMgKzU1LDE3IEBAIHN0YXRpYyB2b2lkIHBhdHRl
cm5SZWxlYXNlQ2FsbGJhY2sodm9pZCogaW5mbykKIAogUmV0YWluUHRyPENHUGF0dGVyblJlZj4g
UGF0dGVybjo6Y3JlYXRlUGxhdGZvcm1QYXR0ZXJuKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdXNl
clNwYWNlVHJhbnNmb3JtKSBjb25zdAogewotICAgIEZsb2F0UmVjdCB0aWxlUmVjdCA9IHsgeyB9
LCB0aWxlSW1hZ2UoKS5zaXplKCkgfTsKKyAgICBhdXRvIG5hdGl2ZUltYWdlID0gdGlsZU5hdGl2
ZUltYWdlKCk7CisgICAgaWYgKCFuYXRpdmVJbWFnZSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisgICAgCisgICAgRmxvYXRSZWN0IHRpbGVSZWN0ID0geyB7IH0sIG5hdGl2ZUltYWdlLT5zaXpl
KCkgfTsKIAogICAgIEFmZmluZVRyYW5zZm9ybSBwYXR0ZXJuVHJhbnNmb3JtID0gdXNlclNwYWNl
VHJhbnNmb3JtICogcGF0dGVyblNwYWNlVHJhbnNmb3JtKCk7CiAgICAgcGF0dGVyblRyYW5zZm9y
bS5zY2FsZU5vblVuaWZvcm0oMSwgLTEpOwogICAgIHBhdHRlcm5UcmFuc2Zvcm0udHJhbnNsYXRl
KDAsIC10aWxlUmVjdC5oZWlnaHQoKSk7CiAKLSAgICBQbGF0Zm9ybUltYWdlUHRyIHBsYXRmb3Jt
SW1hZ2UgPSB0aWxlSW1hZ2UoKS5wbGF0Zm9ybUltYWdlKCk7CisgICAgUGxhdGZvcm1JbWFnZVB0
ciBwbGF0Zm9ybUltYWdlID0gbmF0aXZlSW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKTsKICAgICBpZiAo
IXBsYXRmb3JtSW1hZ2UpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJ
dGVtcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3RJdGVtcy5jcHAKaW5kZXggZTcyNmQ5NGYzMDA1MDAyMzEyYmM2NDJiMzAxNWVj
YmFlMzE0ODQ4Yy4uYmUzZjFjNGJhMWM5OGE2MjcwNjNmMTAzYzJkMzVkODgxODA5NThkMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0SXRlbXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcApAQCAtMTU5LDEyICsxNTksMTIgQEAg
U2V0U3RhdGU6OlNldFN0YXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlQ2hhbmdlJiBzdGF0
ZUNoYW5nZSwgY29uc3QgUGF0dGVybkQKIHsKIH0KIAotdm9pZCBTZXRTdGF0ZTo6YXBwbHkoR3Jh
cGhpY3NDb250ZXh0JiBjb250ZXh0LCBOYXRpdmVJbWFnZSogc3Ryb2tlUGF0dGVybkltYWdlLCBO
YXRpdmVJbWFnZSogZmlsbFBhdHRlcm5JbWFnZSkKK3ZvaWQgU2V0U3RhdGU6OmFwcGx5KEdyYXBo
aWNzQ29udGV4dCYgY29udGV4dCwgc3RkOjpvcHRpb25hbDxTb3VyY2VJbWFnZT4mJiBzdHJva2VQ
YXR0ZXJuSW1hZ2UsIHN0ZDo6b3B0aW9uYWw8U291cmNlSW1hZ2U+JiYgZmlsbFBhdHRlcm5JbWFn
ZSkKIHsKICAgICBpZiAobV9zdGF0ZUNoYW5nZS5tX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBo
aWNzQ29udGV4dFN0YXRlOjpTdHJva2VQYXR0ZXJuQ2hhbmdlKSAmJiBzdHJva2VQYXR0ZXJuSW1h
Z2UpCi0gICAgICAgIG1fc3RhdGVDaGFuZ2UubV9zdGF0ZS5zdHJva2VQYXR0ZXJuID0gUGF0dGVy
bjo6Y3JlYXRlKCpzdHJva2VQYXR0ZXJuSW1hZ2UsIG1fc3Ryb2tlUGF0dGVybi5wYXJhbWV0ZXJz
KTsKKyAgICAgICAgbV9zdGF0ZUNoYW5nZS5tX3N0YXRlLnN0cm9rZVBhdHRlcm4gPSBQYXR0ZXJu
OjpjcmVhdGUoV1RGTW92ZSgqc3Ryb2tlUGF0dGVybkltYWdlKSwgbV9zdHJva2VQYXR0ZXJuLnBh
cmFtZXRlcnMpOwogICAgIGlmIChtX3N0YXRlQ2hhbmdlLm1fY2hhbmdlRmxhZ3MuY29udGFpbnMo
R3JhcGhpY3NDb250ZXh0U3RhdGU6OkZpbGxQYXR0ZXJuQ2hhbmdlKSAmJiBmaWxsUGF0dGVybklt
YWdlKQotICAgICAgICBtX3N0YXRlQ2hhbmdlLm1fc3RhdGUuZmlsbFBhdHRlcm4gPSBQYXR0ZXJu
OjpjcmVhdGUoKmZpbGxQYXR0ZXJuSW1hZ2UsIG1fZmlsbFBhdHRlcm4ucGFyYW1ldGVycyk7Cisg
ICAgICAgIG1fc3RhdGVDaGFuZ2UubV9zdGF0ZS5maWxsUGF0dGVybiA9IFBhdHRlcm46OmNyZWF0
ZShXVEZNb3ZlKCpmaWxsUGF0dGVybkltYWdlKSwgbV9maWxsUGF0dGVybi5wYXJhbWV0ZXJzKTsK
ICAgICBtX3N0YXRlQ2hhbmdlLmFwcGx5KGNvbnRleHQpOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVt
cy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3Bs
YXlMaXN0SXRlbXMuaAppbmRleCBjZWJmMzY5YmZhMmVmMGY2N2YxMzFmYjg1MjM2ZTlhYTg5N2Q0
NDgwLi44YThkY2NlYzJiMDVhNzZiMjE5Yjk4MTY3ODJmZjM4YjUwOGE1NGY3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxp
c3RJdGVtcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmgKQEAgLTI1Nyw3ICsyNTcsNyBAQCBwdWJsaWM6CiAgICAg
dGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwogICAg
IHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFNldFN0YXRlPiBk
ZWNvZGUoRGVjb2RlciYpOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBseShHcmFwaGlj
c0NvbnRleHQmLCBOYXRpdmVJbWFnZSogc3Ryb2tlUGF0dGVybkltYWdlLCBOYXRpdmVJbWFnZSog
ZmlsbFBhdHRlcm5JbWFnZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBseShHcmFwaGlj
c0NvbnRleHQmLCBzdGQ6Om9wdGlvbmFsPFNvdXJjZUltYWdlPiYmIHN0cm9rZVBhdHRlcm5JbWFn
ZSwgc3RkOjpvcHRpb25hbDxTb3VyY2VJbWFnZT4mJiBmaWxsUGF0dGVybkltYWdlKTsKIAogcHJp
dmF0ZToKICAgICBzdHJ1Y3QgUGF0dGVybkRhdGEgewpAQCAtMjg3LDcgKzI4Nyw3IEBAIHZvaWQg
U2V0U3RhdGU6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogCiAgICAgaWYgKGNoYW5n
ZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdHJva2VQYXR0ZXJuQ2hhbmdl
KSkgewogICAgICAgICBBU1NFUlQoc3RhdGUuc3Ryb2tlUGF0dGVybik7Ci0gICAgICAgIGVuY29k
ZXIgPDwgc3RhdGUuc3Ryb2tlUGF0dGVybi0+dGlsZUltYWdlKCkucmVuZGVyaW5nUmVzb3VyY2VJ
ZGVudGlmaWVyKCk7CisgICAgICAgIGVuY29kZXIgPDwgc3RhdGUuc3Ryb2tlUGF0dGVybi0+dGls
ZUltYWdlSWRlbnRpZmllcigpOwogICAgICAgICBlbmNvZGVyIDw8IHN0YXRlLnN0cm9rZVBhdHRl
cm4tPnBhcmFtZXRlcnMoKTsKICAgICB9CiAKQEAgLTI5OCw3ICsyOTgsNyBAQCB2b2lkIFNldFN0
YXRlOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIAogICAgIGlmIChjaGFuZ2VGbGFn
cy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6RmlsbFBhdHRlcm5DaGFuZ2UpKSB7CiAg
ICAgICAgIEFTU0VSVChzdGF0ZS5maWxsUGF0dGVybik7Ci0gICAgICAgIGVuY29kZXIgPDwgc3Rh
dGUuZmlsbFBhdHRlcm4tPnRpbGVJbWFnZSgpLnJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcigp
OworICAgICAgICBlbmNvZGVyIDw8IHN0YXRlLmZpbGxQYXR0ZXJuLT50aWxlSW1hZ2VJZGVudGlm
aWVyKCk7CiAgICAgICAgIGVuY29kZXIgPDwgc3RhdGUuZmlsbFBhdHRlcm4tPnBhcmFtZXRlcnMo
KTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oCmluZGV4IDlh
NDAxNDM2N2RiMWVmNDNiOGE1OWU1MGUzZDQ3MTBmOTNlMDNlYmYuLjE0YTg2NTEyYjdiYjBiZGVm
MTg2ZDA5YTM4NDk5M2M1NjRmYWJhZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVj
b3JkZXIuaApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgog
I2luY2x1ZGUgIkltYWdlLmgiIC8vIEZvciBJbWFnZTo6VGlsZVJ1bGUuCiAjaW5jbHVkZSAiSW5s
aW5lUGF0aERhdGEuaCIKKyNpbmNsdWRlICJTb3VyY2VJbWFnZS5oIgogI2luY2x1ZGUgIlRleHRG
bGFncy5oIgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogCkBAIC0xMzYsOCArMTM3LDkg
QEAgcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgdm9pZCByZWNvcmRBcHBseURldmljZVNjYWxlRmFj
dG9yKGZsb2F0KSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgcmVjb3JkUmVzb3VyY2VVc2UoTmF0
aXZlSW1hZ2UmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHJlY29yZFJlc291cmNlVXNlKEZvbnQm
KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHJlY29yZFJlc291cmNlVXNlKEltYWdlQnVmZmVyJikg
PSAwOworICAgIHZpcnR1YWwgdm9pZCByZWNvcmRSZXNvdXJjZVVzZShTb3VyY2VJbWFnZSYpID0g
MDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVjb3JkUmVzb3VyY2VVc2UoRm9udCYpID0gMDsKIAogICAg
IC8vIEZJWE1FOiBNYXliZSByZW1vdmUgdGhpcz8KICAgICB2aXJ0dWFsIGJvb2wgY2FuRHJhd0lt
YWdlQnVmZmVyKGNvbnN0IEltYWdlQnVmZmVyJikgY29uc3QgPSAwOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVj
b3JkZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdFJlY29yZGVySW1wbC5jcHAKaW5kZXggYTVlMmQzYjIwOTg1ZTNlZjk0
MWEzMjM1NzU2ZTI4MGVhY2Q1MTYzYy4uZDZiZjZmYjYxNzc2MTU1ZWYzMzVlOTVkODVmYTQ0MDA0
YmQ4NzRhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlz
cGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXJJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlckltcGwu
Y3BwCkBAIC00MTIsMjUgKzQxMiwzNyBAQCB2b2lkIFJlY29yZGVySW1wbDo6cmVjb3JkQXBwbHlE
ZXZpY2VTY2FsZUZhY3RvcihmbG9hdCBzY2FsZUZhY3RvcikKICAgICBhcHBlbmQ8QXBwbHlEZXZp
Y2VTY2FsZUZhY3Rvcj4oc2NhbGVGYWN0b3IpOwogfQogCi12b2lkIFJlY29yZGVySW1wbDo6cmVj
b3JkUmVzb3VyY2VVc2UoTmF0aXZlSW1hZ2UmIGltYWdlKQordm9pZCBSZWNvcmRlckltcGw6OnJl
Y29yZFJlc291cmNlVXNlKE5hdGl2ZUltYWdlJiBuYXRpdmVJbWFnZSkKIHsKICAgICBpZiAobV9k
ZWxlZ2F0ZSkKLSAgICAgICAgbV9kZWxlZ2F0ZS0+cmVjb3JkTmF0aXZlSW1hZ2VVc2UoaW1hZ2Up
OwotICAgIG1fZGlzcGxheUxpc3QuY2FjaGVOYXRpdmVJbWFnZShpbWFnZSk7CisgICAgICAgIG1f
ZGVsZWdhdGUtPnJlY29yZE5hdGl2ZUltYWdlVXNlKG5hdGl2ZUltYWdlKTsKKyAgICBtX2Rpc3Bs
YXlMaXN0LmNhY2hlTmF0aXZlSW1hZ2UobmF0aXZlSW1hZ2UpOwogfQogCi12b2lkIFJlY29yZGVy
SW1wbDo6cmVjb3JkUmVzb3VyY2VVc2UoRm9udCYgZm9udCkKK3ZvaWQgUmVjb3JkZXJJbXBsOjpy
ZWNvcmRSZXNvdXJjZVVzZShJbWFnZUJ1ZmZlciYgaW1hZ2VCdWZmZXIpCiB7CiAgICAgaWYgKG1f
ZGVsZWdhdGUpCi0gICAgICAgIG1fZGVsZWdhdGUtPnJlY29yZEZvbnRVc2UoZm9udCk7Ci0gICAg
bV9kaXNwbGF5TGlzdC5jYWNoZUZvbnQoZm9udCk7CisgICAgICAgIG1fZGVsZWdhdGUtPnJlY29y
ZEltYWdlQnVmZmVyVXNlKGltYWdlQnVmZmVyKTsKKyAgICBtX2Rpc3BsYXlMaXN0LmNhY2hlSW1h
Z2VCdWZmZXIoaW1hZ2VCdWZmZXIpOwogfQogCi12b2lkIFJlY29yZGVySW1wbDo6cmVjb3JkUmVz
b3VyY2VVc2UoSW1hZ2VCdWZmZXImIGltYWdlQnVmZmVyKQordm9pZCBSZWNvcmRlckltcGw6OnJl
Y29yZFJlc291cmNlVXNlKFNvdXJjZUltYWdlJiBpbWFnZSkKK3sKKyAgICBhdXRvIGltYWdlQnVm
ZmVyID0gaW1hZ2UuaW1hZ2VCdWZmZXJJZkV4aXN0cygpOworICAgIGlmIChpbWFnZUJ1ZmZlciAm
JiBjYW5EcmF3SW1hZ2VCdWZmZXIoKmltYWdlQnVmZmVyKSkgeworICAgICAgICByZWNvcmRSZXNv
dXJjZVVzZSgqaW1hZ2VCdWZmZXIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYg
KGF1dG8gbmF0aXZlSW1hZ2UgPSBpbWFnZS5uYXRpdmVJbWFnZSgpKQorICAgICAgICByZWNvcmRS
ZXNvdXJjZVVzZSgqbmF0aXZlSW1hZ2UpOworfQorCit2b2lkIFJlY29yZGVySW1wbDo6cmVjb3Jk
UmVzb3VyY2VVc2UoRm9udCYgZm9udCkKIHsKICAgICBpZiAobV9kZWxlZ2F0ZSkKLSAgICAgICAg
bV9kZWxlZ2F0ZS0+cmVjb3JkSW1hZ2VCdWZmZXJVc2UoaW1hZ2VCdWZmZXIpOwotICAgIG1fZGlz
cGxheUxpc3QuY2FjaGVJbWFnZUJ1ZmZlcihpbWFnZUJ1ZmZlcik7CisgICAgICAgIG1fZGVsZWdh
dGUtPnJlY29yZEZvbnRVc2UoZm9udCk7CisgICAgbV9kaXNwbGF5TGlzdC5jYWNoZUZvbnQoZm9u
dCk7CiB9CiAKIC8vIEZJWE1FOiBzaGFyZSB3aXRoIFNoYWRvd0RhdGEKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJl
Y29yZGVySW1wbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXJJbXBsLmgKaW5kZXggM2U2ZDA5MDI2OTA0NmYxYjEyNGEz
OWMxZTEyMTEwMGIzMjcyNjBjNS4uMjk5YTNiZjNmYTJjMzExZWM4NDkzNzNkMGMxZmM4M2JiMWYx
MTgwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXJJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXJJbXBsLmgKQEAg
LTEzNCw4ICsxMzQsOSBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVjb3JkQXBwbHlEZXZpY2VTY2Fs
ZUZhY3RvcihmbG9hdCkgZmluYWw7CiAKICAgICB2b2lkIHJlY29yZFJlc291cmNlVXNlKE5hdGl2
ZUltYWdlJikgZmluYWw7Ci0gICAgdm9pZCByZWNvcmRSZXNvdXJjZVVzZShGb250JikgZmluYWw7
CiAgICAgdm9pZCByZWNvcmRSZXNvdXJjZVVzZShJbWFnZUJ1ZmZlciYpIGZpbmFsOworICAgIHZv
aWQgcmVjb3JkUmVzb3VyY2VVc2UoU291cmNlSW1hZ2UmKSBmaW5hbDsKKyAgICB2b2lkIHJlY29y
ZFJlc291cmNlVXNlKEZvbnQmKSBmaW5hbDsKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxHcmFwaGlj
c0NvbnRleHQ+IGNyZWF0ZU5lc3RlZENvbnRleHQoY29uc3QgRmxvYXRSZWN0JiBpbml0aWFsQ2xp
cCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBpbml0aWFsQ1RNKSBmaW5hbDsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlM
aXN0UmVwbGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuY3BwCmluZGV4IDk0MWMyMDkzY2Y1NmYyMjIxMTNh
YmYwMDNlZDA5ZjJjODUzM2I2NTUuLjMyNWQ4MTlkNjQyOTQzNjNmOGI3MWFjMjIwYjNkYzFlZTVi
NTc0ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5jcHAKQEAgLTg1
LDI0ICs4NSwyOSBAQCBpbmxpbmUgc3RhdGljIHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaWVyPiBhcHBseVNldFN0YXRlSXRlbShHcmFwaAogewogICAgIGF1dG8mIHNldFN0
YXRlSXRlbSA9IGl0ZW0uZ2V0PFNldFN0YXRlPigpOwogCi0gICAgUmVuZGVyaW5nUmVzb3VyY2VJ
ZGVudGlmaWVyIHN0cm9rZVBhdHRlcm5SZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI7Ci0gICAg
TmF0aXZlSW1hZ2UqIHN0cm9rZVBhdHRlcm5JbWFnZSA9IG51bGxwdHI7Ci0gICAgUmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyIGZpbGxQYXR0ZXJuUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
OwotICAgIE5hdGl2ZUltYWdlKiBmaWxsUGF0dGVybkltYWdlID0gbnVsbHB0cjsKLQotICAgIGlm
ICgoc3Ryb2tlUGF0dGVyblJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciA9IHNldFN0YXRlSXRl
bS5zdHJva2VQYXR0ZXJuSW1hZ2VJZGVudGlmaWVyKCkpKSB7Ci0gICAgICAgIHN0cm9rZVBhdHRl
cm5JbWFnZSA9IHJlc291cmNlSGVhcC5nZXROYXRpdmVJbWFnZShzdHJva2VQYXR0ZXJuUmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKLSAgICAgICAgaWYgKCFzdHJva2VQYXR0ZXJuSW1hZ2Up
Ci0gICAgICAgICAgICByZXR1cm4gc3Ryb2tlUGF0dGVyblJlbmRlcmluZ1Jlc291cmNlSWRlbnRp
ZmllcjsKLSAgICB9CisgICAgYXV0byBjYWNoZWRTb3VyY2VJbWFnZSA9IFsmXShSZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXIgcGF0dGVybkltYWdlSWRlbnRpZmllcikgLT4gc3RkOjpvcHRpb25h
bDxTb3VyY2VJbWFnZT4geworICAgICAgICBpZiAoIXBhdHRlcm5JbWFnZUlkZW50aWZpZXIpCisg
ICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgaWYgKChmaWxsUGF0dGVyblJl
bmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciA9IHNldFN0YXRlSXRlbS5maWxsUGF0dGVybkltYWdl
SWRlbnRpZmllcigpKSkgewotICAgICAgICBmaWxsUGF0dGVybkltYWdlID0gcmVzb3VyY2VIZWFw
LmdldE5hdGl2ZUltYWdlKGZpbGxQYXR0ZXJuUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsK
LSAgICAgICAgaWYgKCFmaWxsUGF0dGVybkltYWdlKQotICAgICAgICAgICAgcmV0dXJuIGZpbGxQ
YXR0ZXJuUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyOwotICAgIH0KKyAgICAgICAgaWYgKGF1
dG8gbmF0aXZlSW1hZ2UgPSByZXNvdXJjZUhlYXAuZ2V0TmF0aXZlSW1hZ2UocGF0dGVybkltYWdl
SWRlbnRpZmllcikpCisgICAgICAgICAgICByZXR1cm4gUmVmIHsgKm5hdGl2ZUltYWdlIH07Cisg
ICAgICAgIGlmIChhdXRvIGltYWdlQnVmZmVyID0gcmVzb3VyY2VIZWFwLmdldEltYWdlQnVmZmVy
KHBhdHRlcm5JbWFnZUlkZW50aWZpZXIpKQorICAgICAgICAgICAgcmV0dXJuIFJlZiB7ICppbWFn
ZUJ1ZmZlciB9OworCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgfTsKKworICAg
IGF1dG8gc3Ryb2tlUGF0dGVyblJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciA9IHNldFN0YXRl
SXRlbS5zdHJva2VQYXR0ZXJuSW1hZ2VJZGVudGlmaWVyKCk7CisgICAgYXV0byBzdHJva2VQYXR0
ZXJuSW1hZ2UgPSBjYWNoZWRTb3VyY2VJbWFnZShzdHJva2VQYXR0ZXJuUmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaWVyKTsKKyAgICBpZiAoIXN0cm9rZVBhdHRlcm5JbWFnZSAmJiBzdHJva2VQYXR0
ZXJuUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQorICAgICAgICByZXR1cm4gc3Ryb2tlUGF0
dGVyblJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcjsKKworICAgIGF1dG8gZmlsbFBhdHRlcm5S
ZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgPSBzZXRTdGF0ZUl0ZW0uZmlsbFBhdHRlcm5JbWFn
ZUlkZW50aWZpZXIoKTsKKyAgICBhdXRvIGZpbGxQYXR0ZXJuSW1hZ2UgPSBjYWNoZWRTb3VyY2VJ
bWFnZShmaWxsUGF0dGVyblJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CisgICAgaWYgKCFm
aWxsUGF0dGVybkltYWdlICYmIGZpbGxQYXR0ZXJuUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
KQorICAgICAgICByZXR1cm4gZmlsbFBhdHRlcm5SZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI7
CiAKLSAgICBzZXRTdGF0ZUl0ZW0uYXBwbHkoY29udGV4dCwgc3Ryb2tlUGF0dGVybkltYWdlLCBm
aWxsUGF0dGVybkltYWdlKTsKKyAgICBzZXRTdGF0ZUl0ZW0uYXBwbHkoY29udGV4dCwgV1RGTW92
ZShzdHJva2VQYXR0ZXJuSW1hZ2UpLCBXVEZNb3ZlKGZpbGxQYXR0ZXJuSW1hZ2UpKTsKIAogICAg
IGlmICghZGVsZWdhdGUpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFVGlsZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFVGlsZS5jcHAKaW5kZXgg
ODFhYTBjNTNhMWE4MzY1NWY3ODJlYzkyYWUxNzA5ODllNDg4ZjUzZS4uZjY0ZDhiZGMxMzZkMDBh
ZjBiYzEyNzQyY2QyN2Q4ODMyNzc4YmQ5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVRpbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVUaWxlLmNwcApAQCAtNzIsMTQgKzcyLDEwIEBAIHZv
aWQgRkVUaWxlOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoY29uc3QgRmlsdGVyJiBmaWx0ZXIpCiAg
ICAgdGlsZUltYWdlQ29udGV4dC50cmFuc2xhdGUoLWluTWF4RWZmZWN0TG9jYXRpb24ueCgpLCAt
aW5NYXhFZmZlY3RMb2NhdGlvbi55KCkpOwogICAgIHRpbGVJbWFnZUNvbnRleHQuZHJhd0ltYWdl
QnVmZmVyKCppbkJ1ZmZlciwgaW4tPmFic29sdXRlUGFpbnRSZWN0KCkubG9jYXRpb24oKSk7CiAK
LSAgICBhdXRvIHRpbGVJbWFnZUNvcHkgPSBJbWFnZUJ1ZmZlcjo6c2lua0ludG9OYXRpdmVJbWFn
ZShXVEZNb3ZlKHRpbGVJbWFnZSkpOwotICAgIGlmICghdGlsZUltYWdlQ29weSkKLSAgICAgICAg
cmV0dXJuOwotCiAgICAgQWZmaW5lVHJhbnNmb3JtIHBhdHRlcm5UcmFuc2Zvcm07CiAgICAgcGF0
dGVyblRyYW5zZm9ybS50cmFuc2xhdGUoaW5NYXhFZmZlY3RMb2NhdGlvbiAtIG1heEVmZmVjdExv
Y2F0aW9uKTsKIAotICAgIGF1dG8gcGF0dGVybiA9IFBhdHRlcm46OmNyZWF0ZSh0aWxlSW1hZ2VD
b3B5LnJlbGVhc2VOb25OdWxsKCksIHsgdHJ1ZSwgdHJ1ZSwgcGF0dGVyblRyYW5zZm9ybSB9KTsK
KyAgICBhdXRvIHBhdHRlcm4gPSBQYXR0ZXJuOjpjcmVhdGUodGlsZUltYWdlLnJlbGVhc2VOb25O
dWxsKCksIHsgdHJ1ZSwgdHJ1ZSwgcGF0dGVyblRyYW5zZm9ybSB9KTsKIAogICAgIEdyYXBoaWNz
Q29udGV4dCYgZmlsdGVyQ29udGV4dCA9IHJlc3VsdEltYWdlLT5jb250ZXh0KCk7CiAgICAgZmls
dGVyQ29udGV4dC5zZXRGaWxsUGF0dGVybihXVEZNb3ZlKHBhdHRlcm4pKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAKaW5kZXggYTc4NGRiYmI4
MzdmN2I3ZTQxN2IyNjliNmI3MGJjOTI3MjM0ZDUxZC4uZTExMGZiMGRjM2ZjODRjMWZjZTZhZGM3
NzYyNzc3MjgwNzhlZTFjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxheWVyQmFja2luZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckxheWVyQmFja2luZy5jcHAKQEAgLTMzMTUsMTMgKzMzMTUsMTEgQEAgc3RhdGljIFJlZlB0cjxQ
YXR0ZXJuPiBwYXR0ZXJuRm9yRGVzY3JpcHRpb24oUGF0dGVybkRlc2NyaXB0aW9uIGRlc2NyaXB0
aW9uLCBGbG8KICAgICAgICAgaW1hZ2VDb250ZXh0LmRyYXdUZXh0KGZvbnQsIHRleHRSdW4sIHsg
dGV4dEdhcCwgeU9mZnNldCB9LCAwKTsKICAgICB9CiAKLSAgICBhdXRvIHRpbGVJbWFnZSA9IElt
YWdlQnVmZmVyOjpzaW5rSW50b05hdGl2ZUltYWdlKFdURk1vdmUoaW1hZ2VCdWZmZXIpKTsKLQog
ICAgIEFmZmluZVRyYW5zZm9ybSBwYXR0ZXJuT2Zmc2V0VHJhbnNmb3JtOwogICAgIHBhdHRlcm5P
ZmZzZXRUcmFuc2Zvcm0udHJhbnNsYXRlKGNvbnRlbnRPZmZzZXQgKyBkZXNjcmlwdGlvbi5waGFz
ZSk7CiAgICAgcGF0dGVybk9mZnNldFRyYW5zZm9ybS5zY2FsZSgxIC8gZGVzdENvbnRleHQuc2Nh
bGVGYWN0b3IoKSk7CiAKLSAgICByZXR1cm4gUGF0dGVybjo6Y3JlYXRlKHRpbGVJbWFnZS5yZWxl
YXNlTm9uTnVsbCgpLCB7IHRydWUsIHRydWUsIHBhdHRlcm5PZmZzZXRUcmFuc2Zvcm19KTsKKyAg
ICByZXR1cm4gUGF0dGVybjo6Y3JlYXRlKGltYWdlQnVmZmVyLnJlbGVhc2VOb25OdWxsKCksIHsg
dHJ1ZSwgdHJ1ZSwgcGF0dGVybk9mZnNldFRyYW5zZm9ybSB9KTsKIH07CiAjZW5kaWYKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVBh
dHRlcm4uY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJj
ZVBhdHRlcm4uY3BwCmluZGV4IDJjNjA1NTkwZGI0MDNlZjQ0YmYxNzhiYzA3Yzg0MTYwNDljMDk1
MWIuLjZkZGM3YTA2MDQ1YTI0YTg3NTYxNTVhMzE5ZTY3ZTk2YTg0NmU5YzYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlUGF0
dGVybi5jcHAKQEAgLTI1LDYgKzI1LDcgQEAKICNpbmNsdWRlICJGcmFtZVZpZXcuaCIKICNpbmNs
dWRlICJHcmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJSZW5kZXJTVkdSb290LmgiCisjaW5j
bHVkZSAiUmVuZGVyVmlldy5oIgogI2luY2x1ZGUgIlNWR0VsZW1lbnRUeXBlSGVscGVycy5oIgog
I2luY2x1ZGUgIlNWR0ZpdFRvVmlld0JveC5oIgogI2luY2x1ZGUgIlNWR1JlbmRlcmluZ0NvbnRl
eHQuaCIKQEAgLTExMywxMCArMTE0LDYgQEAgUGF0dGVybkRhdGEqIFJlbmRlclNWR1Jlc291cmNl
UGF0dGVybjo6YnVpbGRQYXR0ZXJuKFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBPcHQKIAogICAg
IGF1dG8gdGlsZUltYWdlU2l6ZSA9IHRpbGVJbWFnZS0+bG9naWNhbFNpemUoKTsKIAotICAgIGF1
dG8gY29waWVkSW1hZ2UgPSBJbWFnZUJ1ZmZlcjo6c2lua0ludG9OYXRpdmVJbWFnZShXVEZNb3Zl
KHRpbGVJbWFnZSkpOwotICAgIGlmICghY29waWVkSW1hZ2UpCi0gICAgICAgIHJldHVybiBudWxs
cHRyOwotCiAgICAgLy8gQ29tcHV0ZSBwYXR0ZXJuIHNwYWNlIHRyYW5zZm9ybWF0aW9uLgogICAg
IGF1dG8gcGF0dGVybkRhdGEgPSBtYWtlVW5pcXVlPFBhdHRlcm5EYXRhPigpOwogICAgIHBhdHRl
cm5EYXRhLT50cmFuc2Zvcm0udHJhbnNsYXRlKHRpbGVCb3VuZGFyaWVzLmxvY2F0aW9uKCkpOwpA
QCAtMTM0LDcgKzEzMSw3IEBAIFBhdHRlcm5EYXRhKiBSZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm46
OmJ1aWxkUGF0dGVybihSZW5kZXJFbGVtZW50JiByZW5kZXJlciwgT3B0CiAgICAgfQogCiAgICAg
Ly8gQnVpbGQgcGF0dGVybi4KLSAgICBwYXR0ZXJuRGF0YS0+cGF0dGVybiA9IFBhdHRlcm46OmNy
ZWF0ZShjb3BpZWRJbWFnZS5yZWxlYXNlTm9uTnVsbCgpLCB7IHRydWUsIHRydWUsIHBhdHRlcm5E
YXRhLT50cmFuc2Zvcm0gfSk7CisgICAgcGF0dGVybkRhdGEtPnBhdHRlcm4gPSBQYXR0ZXJuOjpj
cmVhdGUodGlsZUltYWdlLnJlbGVhc2VOb25OdWxsKCksIHsgdHJ1ZSwgdHJ1ZSwgcGF0dGVybkRh
dGEtPnRyYW5zZm9ybSB9KTsKIAogICAgIC8vIFZhcmlvdXMgY2FsbHMgYWJvdmUgbWF5IHRyaWdn
ZXIgaW52YWxpZGF0aW9ucyBpbiBzb21lIGZyaW5nZSBjYXNlcyAoSW1hZ2VCdWZmZXIgYWxsb2Nh
dGlvbgogICAgIC8vIGZhaWx1cmVzIGluIHRoZSBTVkcgaW1hZ2UgY2FjaGUgZm9yIGV4YW1wbGUp
LiBUbyBhdm9pZCBoYXZpbmcgb3VyIFBhdHRlcm5EYXRhIGRlbGV0ZWQgYnkKQEAgLTI1NCw3ICsy
NTEsOSBAQCBib29sIFJlbmRlclNWR1Jlc291cmNlUGF0dGVybjo6YnVpbGRUaWxlSW1hZ2VUcmFu
c2Zvcm0oUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsCiBSZWZQdHI8SW1hZ2VCdWZmZXI+IFJlbmRl
clNWR1Jlc291cmNlUGF0dGVybjo6Y3JlYXRlVGlsZUltYWdlKGNvbnN0IFBhdHRlcm5BdHRyaWJ1
dGVzJiBhdHRyaWJ1dGVzLCBjb25zdCBGbG9hdFJlY3QmIHRpbGVCb3VuZGFyaWVzLCBjb25zdCBG
bG9hdFJlY3QmIGFic29sdXRlVGlsZUJvdW5kYXJpZXMsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYg
dGlsZUltYWdlVHJhbnNmb3JtLCBGbG9hdFJlY3QmIGNsYW1wZWRBYnNvbHV0ZVRpbGVCb3VuZGFy
aWVzLCBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUpIGNvbnN0CiB7CiAgICAgY2xhbXBlZEFi
c29sdXRlVGlsZUJvdW5kYXJpZXMgPSBJbWFnZUJ1ZmZlcjo6Y2xhbXBlZFJlY3QoYWJzb2x1dGVU
aWxlQm91bmRhcmllcyk7Ci0gICAgYXV0byB0aWxlSW1hZ2UgPSBTVkdSZW5kZXJpbmdDb250ZXh0
OjpjcmVhdGVJbWFnZUJ1ZmZlcihhYnNvbHV0ZVRpbGVCb3VuZGFyaWVzLCBjbGFtcGVkQWJzb2x1
dGVUaWxlQm91bmRhcmllcywgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIHJlbmRlcmlu
Z01vZGUpOworICAgIAorICAgIGF1dG8gaG9zdFdpbmRvdyA9IHZpZXcoKS5mcmFtZVZpZXcoKS5y
b290KCkgPyB2aWV3KCkuZnJhbWVWaWV3KCkucm9vdCgpLT5ob3N0V2luZG93KCkgOiBudWxscHRy
OworICAgIGF1dG8gdGlsZUltYWdlID0gU1ZHUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlSW1hZ2VC
dWZmZXIoYWJzb2x1dGVUaWxlQm91bmRhcmllcywgY2xhbXBlZEFic29sdXRlVGlsZUJvdW5kYXJp
ZXMsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCByZW5kZXJpbmdNb2RlLCBob3N0V2lu
ZG93KTsKICAgICBpZiAoIXRpbGVJbWFnZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyaW5nQ29udGV4
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0NvbnRleHQu
Y3BwCmluZGV4IDIwYjhiNWU3YjA3YjMxYTEyYzVhYWNiYTM4NTg5MmZiZjNhMjM1NzMuLmJmMWU3
ZjkxMTliMTdjMzg3NjA5ODVkZGNlOTcxNTEzMjk4MmIxMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyaW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJpbmdDb250ZXh0LmNwcApAQCAtMjU2LDcg
KzI1Niw3IEBAIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gU1ZHUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRl
SW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRSZWN0JiB0YXJnCiAgICAgcmV0dXJuIGltYWdlQnVmZmVy
OwogfQogCi1SZWZQdHI8SW1hZ2VCdWZmZXI+IFNWR1JlbmRlcmluZ0NvbnRleHQ6OmNyZWF0ZUlt
YWdlQnVmZmVyKGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBj
bGFtcGVkUmVjdCwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiBjb2xvclNwYWNlLCBSZW5k
ZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCogY29udGV4dCkK
K1JlZlB0cjxJbWFnZUJ1ZmZlcj4gU1ZHUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlSW1hZ2VCdWZm
ZXIoY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBGbG9hdFJlY3QmIGNsYW1wZWRS
ZWN0LCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9yU3BhY2UsIFJlbmRlcmluZ01v
ZGUgcmVuZGVyaW5nTW9kZSwgSG9zdFdpbmRvdyogaG9zdFdpbmRvdywgY29uc3QgR3JhcGhpY3ND
b250ZXh0KiBjb250ZXh0KQogewogICAgIEludFNpemUgY2xhbXBlZFNpemUgPSByb3VuZGVkSW50
U2l6ZShjbGFtcGVkUmVjdC5zaXplKCkpOwogICAgIEZsb2F0U2l6ZSB1bmNsYW1wZWRTaXplID0g
cm91bmRlZEludFNpemUodGFyZ2V0UmVjdC5zaXplKCkpOwpAQCAtMjY5LDcgKzI2OSw3IEBAIFJl
ZlB0cjxJbWFnZUJ1ZmZlcj4gU1ZHUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlSW1hZ2VCdWZmZXIo
Y29uc3QgRmxvYXRSZWN0JiB0YXJnCiAgICAgYXV0byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVy
OjpjcmVhdGUoY2xhbXBlZFNpemUsIHJlbmRlcmluZ01vZGUsIGNvbnRleHQsIDEsIGNvbG9yU3Bh
Y2UsIFBpeGVsRm9ybWF0OjpCR1JBOCk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShjb250ZXh0
KTsKLSAgICBhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShjbGFtcGVkU2l6
ZSwgcmVuZGVyaW5nTW9kZSwgMSwgY29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKKyAg
ICBhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShjbGFtcGVkU2l6ZSwgcmVu
ZGVyaW5nTW9kZSwgU2hvdWxkVXNlRGlzcGxheUxpc3Q6Ok5vLCBSZW5kZXJpbmdQdXJwb3NlOjpE
T00sIDEsIGNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0OjpCR1JBOCwgaG9zdFdpbmRvdyk7CiAjZW5k
aWYKICAgICBpZiAoIWltYWdlQnVmZmVyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyaW5nQ29udGV4dC5o
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJpbmdDb250ZXh0LmgKaW5k
ZXggNTk2NTk3YmUxMjQ3YTk2YTYwNGFjY2Y0NTdlMDkyOWZkMGY1MGEwZS4uZWZmZjgzZGVjMDUz
N2RkN2VlZTIyMTAyZDRlYTZjZDQ4ODA0OGVlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJpbmdDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJpbmdDb250ZXh0LmgKQEAgLTYxLDcgKzYxLDcgQEAgcHVi
bGljOgogICAgIGJvb2wgaXNSZW5kZXJpbmdQcmVwYXJlZCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVu
ZGVyaW5nRmxhZ3MgJiBSZW5kZXJpbmdQcmVwYXJlZDsgfQogCiAgICAgc3RhdGljIFJlZlB0cjxJ
bWFnZUJ1ZmZlcj4gY3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0
LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIGFic29sdXRlVHJhbnNmb3JtLCBjb25zdCBEZXN0aW5h
dGlvbkNvbG9yU3BhY2UmLCBSZW5kZXJpbmdNb2RlLCBjb25zdCBHcmFwaGljc0NvbnRleHQqID0g
bnVsbHB0cik7Ci0gICAgc3RhdGljIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlSW1hZ2VCdWZm
ZXIoY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBGbG9hdFJlY3QmIGNsYW1wZWRS
ZWN0LCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmLCBSZW5kZXJpbmdNb2RlLCBjb25zdCBH
cmFwaGljc0NvbnRleHQqID0gbnVsbHB0cik7CisgICAgc3RhdGljIFJlZlB0cjxJbWFnZUJ1ZmZl
cj4gY3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBG
bG9hdFJlY3QmIGNsYW1wZWRSZWN0LCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmLCBSZW5k
ZXJpbmdNb2RlLCBIb3N0V2luZG93KiA9IG51bGxwdHIsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCog
PSBudWxscHRyKTsKIAogICAgIHN0YXRpYyB2b2lkIHJlbmRlclN1YnRyZWVUb0NvbnRleHQoR3Jh
cGhpY3NDb250ZXh0JiwgUmVuZGVyRWxlbWVudCYsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYpOwog
ICAgIHN0YXRpYyB2b2lkIGNsaXBUb0ltYWdlQnVmZmVyKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0
IEFmZmluZVRyYW5zZm9ybSYgYWJzb2x1dGVUcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UmVjdCYgdGFy
Z2V0UmVjdCwgUmVmUHRyPEltYWdlQnVmZmVyPiYsIGJvb2wgc2FmZVRvQ2xlYXIpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZURpc3BsYXlMaXN0
UmVjb3JkZXIuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZURp
c3BsYXlMaXN0UmVjb3JkZXIuY3BwCmluZGV4IGFkYTU0ZDQxOGEwYjYwMjU0NmIxN2U1N2M2NmRk
MGNkNjkwMzBkMTMuLjQ1MGQ4ZjdiM2Y4MGY0MDI3NDc5ZGZhMzFkZWQ2NjE1ZmUzNWU3MzcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVEaXNwbGF5
TGlzdFJlY29yZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3Mv
UmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlci5jcHAKQEAgLTEyMywyMCArMTIzLDMyIEBAIHZvaWQg
UmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlcjo6c2V0U3RhdGUoRGlzcGxheUxpc3Q6OlNldFN0YXRl
JiYgaXRlbSkKIAogdm9pZCBSZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyOjpzZXRTdGF0ZVdpdGhR
dWFsaWZpZWRJZGVudGlmaWVycyhEaXNwbGF5TGlzdDo6U2V0U3RhdGUmJiBpdGVtLCBRdWFsaWZp
ZWRSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgc3Ryb2tlUGF0dGVybkltYWdlSWRlbnRpZmll
ciwgUXVhbGlmaWVkUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIGZpbGxQYXR0ZXJuSW1hZ2VJ
ZGVudGlmaWVyKQogewotICAgIFJlZlB0cjxOYXRpdmVJbWFnZT4gc3Ryb2tlUGF0dGVybkltYWdl
OwotICAgIGlmIChzdHJva2VQYXR0ZXJuSW1hZ2VJZGVudGlmaWVyKQotICAgICAgICBzdHJva2VQ
YXR0ZXJuSW1hZ2UgPSByZXNvdXJjZUNhY2hlKCkuY2FjaGVkTmF0aXZlSW1hZ2Uoc3Ryb2tlUGF0
dGVybkltYWdlSWRlbnRpZmllcik7CisgICAgYXV0byBjYWNoZWRTb3VyY2VJbWFnZSA9IFsmXShR
dWFsaWZpZWRSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcGF0dGVybkltYWdlSWRlbnRpZmll
cikgLT4gc3RkOjpvcHRpb25hbDxTb3VyY2VJbWFnZT4geworICAgICAgICBpZiAoIXBhdHRlcm5J
bWFnZUlkZW50aWZpZXIpCisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAg
UmVmUHRyPE5hdGl2ZUltYWdlPiBmaWxsUGF0dGVybkltYWdlOwotICAgIGlmIChmaWxsUGF0dGVy
bkltYWdlSWRlbnRpZmllcikKLSAgICAgICAgZmlsbFBhdHRlcm5JbWFnZSA9IHJlc291cmNlQ2Fj
aGUoKS5jYWNoZWROYXRpdmVJbWFnZShmaWxsUGF0dGVybkltYWdlSWRlbnRpZmllcik7CisgICAg
ICAgIGlmIChhdXRvIG5hdGl2ZUltYWdlID0gcmVzb3VyY2VDYWNoZSgpLmNhY2hlZE5hdGl2ZUlt
YWdlKHBhdHRlcm5JbWFnZUlkZW50aWZpZXIpKQorICAgICAgICAgICAgcmV0dXJuIFJlZiB7ICpu
YXRpdmVJbWFnZSB9OworICAgICAgICBpZiAoYXV0byBpbWFnZUJ1ZmZlciA9IHJlc291cmNlQ2Fj
aGUoKS5jYWNoZWRJbWFnZUJ1ZmZlcihwYXR0ZXJuSW1hZ2VJZGVudGlmaWVyKSkKKyAgICAgICAg
ICAgIHJldHVybiBSZWYgeyAqaW1hZ2VCdWZmZXIgfTsKKworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OworICAgIH07CisgICAgCisgICAgYXV0byBzdHJva2VQYXR0ZXJuSW1hZ2UgPSBjYWNo
ZWRTb3VyY2VJbWFnZShzdHJva2VQYXR0ZXJuSW1hZ2VJZGVudGlmaWVyKTsKKyAgICBpZiAoIXN0
cm9rZVBhdHRlcm5JbWFnZSkKKyAgICAgICAgc3Ryb2tlUGF0dGVybkltYWdlSWRlbnRpZmllciA9
IHsgfTsKIAotICAgIGhhbmRsZUl0ZW0oV1RGTW92ZShpdGVtKSwgc3Ryb2tlUGF0dGVybkltYWdl
LmdldCgpLCBmaWxsUGF0dGVybkltYWdlLmdldCgpKTsKKyAgICBhdXRvIGZpbGxQYXR0ZXJuSW1h
Z2UgPSBjYWNoZWRTb3VyY2VJbWFnZShmaWxsUGF0dGVybkltYWdlSWRlbnRpZmllcik7CisgICAg
aWYgKCFmaWxsUGF0dGVybkltYWdlKQorICAgICAgICBmaWxsUGF0dGVybkltYWdlSWRlbnRpZmll
ciA9IHsgfTsKIAotICAgIGlmIChzdHJva2VQYXR0ZXJuSW1hZ2UpCisgICAgaGFuZGxlSXRlbShX
VEZNb3ZlKGl0ZW0pLCBXVEZNb3ZlKHN0cm9rZVBhdHRlcm5JbWFnZSksIFdURk1vdmUoZmlsbFBh
dHRlcm5JbWFnZSkpOworCisgICAgaWYgKHN0cm9rZVBhdHRlcm5JbWFnZUlkZW50aWZpZXIpCiAg
ICAgICAgIHJlc291cmNlQ2FjaGUoKS5yZWNvcmRSZXNvdXJjZVVzZShzdHJva2VQYXR0ZXJuSW1h
Z2VJZGVudGlmaWVyKTsKIAotICAgIGlmIChmaWxsUGF0dGVybkltYWdlKQorICAgIGlmIChmaWxs
UGF0dGVybkltYWdlSWRlbnRpZmllcikKICAgICAgICAgcmVzb3VyY2VDYWNoZSgpLnJlY29yZFJl
c291cmNlVXNlKGZpbGxQYXR0ZXJuSW1hZ2VJZGVudGlmaWVyKTsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVEaXNwbGF5TGlzdFJl
Y29yZGVyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9S
ZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyUHJveHkuY3BwCmluZGV4IDk0MjFkZDIzOGNiNmVjNjNm
ZTFjMDdkNDczNjFjYjBiNjVmZjQwY2IuLjU3MzBkZDg4MTllOGU0MmUzYjZiNjZlZjE3YjM0NmU4
N2I1MjQyNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhp
Y3MvUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXJQcm94eS5j
cHAKQEAgLTQwNiwyNCArNDA2LDM2IEBAIHZvaWQgUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlclBy
b3h5OjpyZWNvcmRSZXNvdXJjZVVzZShOYXRpdmVJbWFnZSYgaW1hZ2UpCiAgICAgbV9yZW5kZXJp
bmdCYWNrZW5kLT5yZWNvcmROYXRpdmVJbWFnZVVzZShpbWFnZSk7CiB9CiAKLXZvaWQgUmVtb3Rl
RGlzcGxheUxpc3RSZWNvcmRlclByb3h5OjpyZWNvcmRSZXNvdXJjZVVzZShGb250JiBmb250KQor
dm9pZCBSZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyUHJveHk6OnJlY29yZFJlc291cmNlVXNlKElt
YWdlQnVmZmVyJiBpbWFnZUJ1ZmZlcikKIHsKICAgICBpZiAoVU5MSUtFTFkoIW1fcmVuZGVyaW5n
QmFja2VuZCkpIHsKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKLSAgICBtX3JlbmRlcmluZ0JhY2tlbmQtPnJlY29yZEZvbnRVc2UoZm9udCk7
CisgICAgbV9yZW5kZXJpbmdCYWNrZW5kLT5yZWNvcmRJbWFnZUJ1ZmZlclVzZShpbWFnZUJ1ZmZl
cik7CiB9CiAKLXZvaWQgUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlclByb3h5OjpyZWNvcmRSZXNv
dXJjZVVzZShJbWFnZUJ1ZmZlciYgaW1hZ2VCdWZmZXIpCit2b2lkIFJlbW90ZURpc3BsYXlMaXN0
UmVjb3JkZXJQcm94eTo6cmVjb3JkUmVzb3VyY2VVc2UoU291cmNlSW1hZ2UmIGltYWdlKQorewor
ICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBpbWFnZS5pbWFnZUJ1ZmZlcklmRXhpc3RzKCk7CisgICAg
aWYgKGltYWdlQnVmZmVyICYmIGNhbkRyYXdJbWFnZUJ1ZmZlcigqaW1hZ2VCdWZmZXIpKSB7Cisg
ICAgICAgIHJlY29yZFJlc291cmNlVXNlKCppbWFnZUJ1ZmZlcik7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKKyAgICBpZiAoYXV0byBuYXRpdmVJbWFnZSA9IGltYWdlLm5hdGl2ZUltYWdlKCkp
CisgICAgICAgIHJlY29yZFJlc291cmNlVXNlKCpuYXRpdmVJbWFnZSk7Cit9CisKK3ZvaWQgUmVt
b3RlRGlzcGxheUxpc3RSZWNvcmRlclByb3h5OjpyZWNvcmRSZXNvdXJjZVVzZShGb250JiBmb250
KQogewogICAgIGlmIChVTkxJS0VMWSghbV9yZW5kZXJpbmdCYWNrZW5kKSkgewogICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1fcmVu
ZGVyaW5nQmFja2VuZC0+cmVjb3JkSW1hZ2VCdWZmZXJVc2UoaW1hZ2VCdWZmZXIpOworICAgIG1f
cmVuZGVyaW5nQmFja2VuZC0+cmVjb3JkRm9udFVzZShmb250KTsKIH0KIAogdm9pZCBSZW1vdGVE
aXNwbGF5TGlzdFJlY29yZGVyUHJveHk6OmZsdXNoQ29udGV4dChHcmFwaGljc0NvbnRleHRGbHVz
aElkZW50aWZpZXIgaWRlbnRpZmllcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlclByb3h5LmggYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZURpc3BsYXlMaXN0UmVjb3Jk
ZXJQcm94eS5oCmluZGV4IDcxZmRiNjNkZjRhYzg0OTc0NzIzMjY5YjdmMDNkOTk3YjgxMzk4OWQu
LmNjYTZjZjYwZWQwOWQyMTlkYjU4MjNlZTIzNDQxYTcyNDY1MDRiODAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlRGlzcGxheUxpc3RSZWNv
cmRlclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9S
ZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyUHJveHkuaApAQCAtMTM2LDggKzEzNiw5IEBAIHByaXZh
dGU6CiAgICAgdm9pZCByZWNvcmRBcHBseURldmljZVNjYWxlRmFjdG9yKGZsb2F0KSBmaW5hbDsK
IAogICAgIHZvaWQgcmVjb3JkUmVzb3VyY2VVc2UoV2ViQ29yZTo6TmF0aXZlSW1hZ2UmKSBmaW5h
bDsKLSAgICB2b2lkIHJlY29yZFJlc291cmNlVXNlKFdlYkNvcmU6OkZvbnQmKSBmaW5hbDsKICAg
ICB2b2lkIHJlY29yZFJlc291cmNlVXNlKFdlYkNvcmU6OkltYWdlQnVmZmVyJikgZmluYWw7Cisg
ICAgdm9pZCByZWNvcmRSZXNvdXJjZVVzZShXZWJDb3JlOjpTb3VyY2VJbWFnZSYpIGZpbmFsOwor
ICAgIHZvaWQgcmVjb3JkUmVzb3VyY2VVc2UoV2ViQ29yZTo6Rm9udCYpIGZpbmFsOwogCiAgICAg
c3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dD4gY3JlYXRlTmVzdGVkQ29u
dGV4dChjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIGluaXRpYWxDbGlwLCBjb25zdCBXZWJDb3Jl
OjpBZmZpbmVUcmFuc2Zvcm0mIGluaXRpYWxDVE0pIGZpbmFsOwogCg==
</data>
<flag name="commit-queue"
          id="469332"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>444341</attachid>
            <date>2021-11-15 21:08:49 -0800</date>
            <delta_ts>2021-11-15 21:52:37 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-232411-20211115210848.patch</filename>
            <type>text/plain</type>
            <size>47154</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg1Nzk2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmQ1YWJmYjdlYThmZGY3
ODJlN2EyM2Q0NTQxY2RjOWFiN2U1NzUxNy4uOWYyZTM2MTJmMjJmMjExZGEwNjQ3ODViNDM2Yjky
MGIyZjY0ZDY0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY0IEBACisyMDIxLTExLTE1ICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2VzcyBd
IFBhdHRlcm4gc2hvdWxkIGhvbGQgYW4gSW1hZ2VCdWZmZXIgd2hpY2ggY2FuIGJlIGNvbnZlcnRl
ZCB0byBhIE5hdGl2ZUltYWdlIHdoZW4gbmVlZGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzI0MTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgdGhlIG5ldyB0eXBlIGNhbGxlZCAnU291cmNlSW1h
Z2UnIHdoaWNoIGlzIGEgdmFyaWFudCBvZiBOYXRpdmVJbWFnZSAKKyAgICAgICAgYW5kIEltYWdl
QnVmZmVyLiBNYWtlIFBhdHRlcm4gaG9sZCBhIFNvdXJjZUltYWdlIGFuZCBwcm92aWRlIGdldHRl
cnMgdG8gCisgICAgICAgIHJldHJpZXZlIHRoZSBOYXRpdmVJbWFnZSBhbmQgSW1hZ2VCdWZmZXIu
IEluIHRoZXNlIGdldHRlcnMgd2UgY29udmVydAorICAgICAgICBmcm9tIGltYWdlIHNvdXJjZSB0
byB0aGUgb3RoZXIuCisKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBXZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFz
UGF0dGVybi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNQYXR0ZXJuOjpjcmVhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUGF0dGVybjo6Q2FudmFzUGF0dGVybik6CisgICAgICAg
ICogaHRtbC9jYW52YXMvQ2FudmFzUGF0dGVybi5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL0Nh
bnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFz
UmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6Y3JlYXRlUGF0dGVybik6CisgICAgICAgICogaW5zcGVj
dG9yL0luc3BlY3RvckNhbnZhcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDYW52
YXM6OmJ1aWxkQXJyYXlGb3JDYW52YXNQYXR0ZXJuKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9QYXR0ZXJuLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhdHRlcm46OmNyZWF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpQYXR0ZXJuOjpQYXR0ZXJuKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9QYXR0ZXJuLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlSW1h
Z2UuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUltYWdlOjpTb3VyY2VJbWFn
ZSk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VJbWFnZTo6bmF0aXZlSW1hZ2VJZkV4aXN0cyBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VJbWFnZTo6bmF0aXZlSW1hZ2UpOgorICAg
ICAgICAoV2ViQ29yZTo6U291cmNlSW1hZ2U6OmltYWdlQnVmZmVySWZFeGlzdHMgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6U291cmNlSW1hZ2U6OmltYWdlQnVmZmVyKToKKyAgICAgICAgKFdl
YkNvcmU6OlNvdXJjZUltYWdlOjppbWFnZUlkZW50aWZpZXIgY29uc3QpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL1NvdXJjZUltYWdlLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL1BhdHRlcm4uY3BwLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2NhaXJvL0NhaXJvT3BlcmF0aW9ucy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWlybzo6
RmlsbFNvdXJjZTo6RmlsbFNvdXJjZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vUGF0dGVybkNhaXJvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhdHRlcm46OmNyZWF0ZVBs
YXRmb3JtUGF0dGVybiBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGF0
dGVybkNHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhdHRlcm46OmNyZWF0ZVBsYXRmb3JtUGF0
dGVybiBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0SXRlbXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlNldFN0
YXRlOjphcHBseSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0SXRlbXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpTZXRTdGF0
ZTo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3RSZWNvcmRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rp
c3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVySW1wbC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6UmVjb3JkZXJJbXBsOjpyZWNvcmRSZXNvdXJjZVVzZSk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXJJbXBs
Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
UmVwbGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OmFwcGx5U2V0U3Rh
dGVJdGVtKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFVGlsZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpGRVRpbGU6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSk6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpwYXR0ZXJuRm9yRGVzY3JpcHRpb24pOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHUmVzb3VyY2VQYXR0ZXJuLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291
cmNlUGF0dGVybjo6YnVpbGRQYXR0ZXJuKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jl
c291cmNlUGF0dGVybjo6Y3JlYXRlVGlsZUltYWdlIGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJp
bmcvc3ZnL1NWR1JlbmRlcmluZ0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVu
ZGVyaW5nQ29udGV4dDo6Y3JlYXRlSW1hZ2VCdWZmZXIpOgorICAgICAgICAqIHJlbmRlcmluZy9z
dmcvU1ZHUmVuZGVyaW5nQ29udGV4dC5oOgorCiAyMDIxLTExLTE0ICBTYWlkIEFib3UtSGFsbGF3
YSAgPHNhaWRAYXBwbGUuY29tPgogCiAgICAgICAgIFtHUFUgUHJvY2Vzc10gUmVtb3ZlIHRoZSBy
ZWZlcmVuY2UgdG8gRmlsdGVyIGZyb20gRmlsdGVyRWZmZWN0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGFmNjc3NTc1
MDQ5YmYxNzgwNTk0ODg1NjY5MGRiNjJkMWI0MGVjNjguLjYxZWNiNDc1YWVjZWU4ZDU4YzkwNzBj
ZDVjNDdkOGUyMWZhZjRhNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMjEtMTEtMTUg
IFNhaWQgQWJvdS1IYWxsYXdhICA8c2FpZEBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQVSBQcm9j
ZXNzIF0gUGF0dGVybiBzaG91bGQgaG9sZCBhbiBJbWFnZUJ1ZmZlciB3aGljaCBjYW4gYmUgY29u
dmVydGVkIHRvIGEgTmF0aXZlSW1hZ2Ugd2hlbiBuZWVkZWQKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMjQxMQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEhhbmRsZSBlbmNvZGluZyBhbWQgZGVjb2Rpbmcg
dGhlIFNvdXJjZUltYWdlIGZvciByZWNvcmRpbmcgYW5kIHJlcGxheWluZworICAgICAgICB0aGUg
U2V0U3RhdGUgRGlzcGxheUxpc3QgaXRlbSBpbiBHUFVQcm9jZXNzLgorCisgICAgICAgICogR1BV
UHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlcjo6c2V0U3RhdGVXaXRoUXVhbGlmaWVk
SWRlbnRpZmllcnMpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZURp
c3BsYXlMaXN0UmVjb3JkZXJQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZURpc3Bs
YXlMaXN0UmVjb3JkZXJQcm94eTo6cmVjb3JkUmVzb3VyY2VVc2UpOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXJQcm94eS5oOgorCiAy
MDIxLTExLTE0ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAg
ICAgIEF0dGFjaCBJT0hJREV2ZW50IHRpbWVzdGFtcHMgdG8gd2hlZWwgZXZlbnRzCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMu
dHh0CmluZGV4IDU0ZDhkM2JkOTgwZThiOWI2YjgyMWY5Y2NiNGZhNTIyZTFiZjFlMDIuLjcyOGU0
ZGIxNDIwNTA5NjgyNTIxN2MxMzZjZjVkMDAwMTBhMDk3NjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBAIC0y
MDU5LDYgKzIwNTksNyBAQCBwbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVWaWRlb1NhbXBsZS5jcHAK
IHBsYXRmb3JtL2dyYXBoaWNzL1JvdW5kZWRSZWN0LmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvU2hh
ZG93Qmx1ci5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL1NvdXJjZUJ1ZmZlclByaXZhdGUuY3BwCitw
bGF0Zm9ybS9ncmFwaGljcy9Tb3VyY2VJbWFnZS5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL1N0cmlu
Z1RydW5jYXRvci5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL1RleHRSdW4uY3BwCiBwbGF0Zm9ybS9n
cmFwaGljcy9UZXh0VHJhY2tSZXByZXNlbnRhdGlvbi5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA5OTgxMGViODIwM2NjZGE2
YjVjOWUzODE2MTRiNjJiZTZlZjJhMWNjLi43YzkzZWVmNTJlNzk3Mjc2OTZmMDYwZTVlMTI4MzA4
M2Q3MWRlMTgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCkBAIC0yMjkxLDYgKzIyOTEsNyBAQAogCQk3MUYwNUY4MDI1MTI0NDJFMDA3
MUU2OTMgLyogQ1NTUHJvcGVydHlBbmltYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcxRjA1RjdFMjUxMjQ0MEMwMDcxRTY5MyAvKiBDU1NQcm9w
ZXJ0eUFuaW1hdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTcyMTQ0MzMzMjIzRUM4QjAwMEYxMkZGNyAvKiBTVkdQcm9wZXJ0eS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTVFRTUzNjMyMjNCMkEy
NDAwRkJBOTQ0IC8qIFNWR1Byb3BlcnR5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzIxNDQzMzQyMjNFQzkxNjAwRjEyRkY3IC8qIFNWR1Byb3Bl
cnR5T3duZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDU1RUU1MzYwMjIzQjJBMjEwMEZCQTk0NCAvKiBTVkdQcm9wZXJ0eU93bmVyLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNzIxNEI5QTkyNzQyRkI5
OTAwM0JFNkRGIC8qIFNvdXJjZUltYWdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA3MjE0QjlBODI3NDJGNjI5MDAzQkU2REYgLyogU291cmNlSW1hZ2Uu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3MjFC
NDk3NDI1MTJCQTNCMDBGRTlEM0IgLyogSW1hZ2VCaXRtYXBCYWNraW5nLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MjFCNDk3MDI1MTJBQzA0MDBGRTlE
M0IgLyogSW1hZ2VCaXRtYXBCYWNraW5nLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzIyODNGMEUyMzBCMjY4QzAwRjVEODI4IC8qIEltYWdlUGFp
bnRpbmdPcHRpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA3MkMxOEEzRjIzMEIwNEI3MDA2ODQ3QzcgLyogSW1hZ2VQYWludGluZ09wdGlvbnMuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3MjRFRDMz
MjFBM0E4QjIzMDBGNUYxM0MgLyogSlNFWFRCbGVuZE1pbk1heC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzI0RUQzMzAxQTNBOEIyMzAwRjVGMTNDIC8q
IEpTRVhUQmxlbmRNaW5NYXguaCAqLzsgfTsKQEAgLTEwODQ3LDYgKzEwODQ4LDggQEAKIAkJNzFG
Rjg1MTgyMkEzRjgxRjAwNUQ1OTU5IC8qIE5hdmlnYXRvck1heFRvdWNoUG9pbnRzLmlkbCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQ7IHBhdGggPSBOYXZpZ2F0b3JNYXhUb3VjaFBvaW50cy5pZGw7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyMTQ0MzQ1MjI0MEM4QkEwMEYxMkZGNyAvKiBTVkdBbmlt
YXRlZFZhbHVlUHJvcGVydHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHQW5pbWF0ZWRWYWx1ZVByb3Bl
cnR5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyMTQ0MzQ2MjI0MENBRDIwMEYx
MkZGNyAvKiBTVkdWYWx1ZVByb3BlcnR5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR1ZhbHVlUHJvcGVy
dHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzIxNEI5QTgyNzQyRjYyOTAwM0JF
NkRGIC8qIFNvdXJjZUltYWdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNvdXJjZUltYWdlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcyMTRCOUFDMjc0MzUxNEEwMDNCRTZERiAvKiBTb3Vy
Y2VJbWFnZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTb3VyY2VJbWFnZS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyMUI0OTZGMjUxMkFDMDQwMEZFOUQzQiAvKiBJbWFnZUJp
dG1hcEJhY2tpbmcuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW1hZ2VCaXRtYXBCYWNraW5nLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzIxQjQ5NzAyNTEyQUMwNDAwRkU5RDNC
IC8qIEltYWdlQml0bWFwQmFja2luZy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbWFnZUJpdG1hcEJhY2tp
bmcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzIyQTgxNUMyMzhGRDUwNTAwQzAw
NTgzIC8qIEFuaW1hdGlvbkZyYW1lUmF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBbmltYXRpb25GcmFt
ZVJhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI4MDM0LDYgKzI4MDM3LDgg
QEAKIAkJCQkxREQxMjdBQzI1NkUzQTg3MDBCMjI3RDcgLyogU291cmNlQnVmZmVyUHJpdmF0ZS5j
cHAgKi8sCiAJCQkJQ0Q2NDFFQjIxODE4RjVFRDAwRUU0QzQxIC8qIFNvdXJjZUJ1ZmZlclByaXZh
dGUuaCAqLywKIAkJCQlDREM4QjVBQzE4MDRBRTVEMDAxNkU2ODUgLyogU291cmNlQnVmZmVyUHJp
dmF0ZUNsaWVudC5oICovLAorCQkJCTcyMTRCOUFDMjc0MzUxNEEwMDNCRTZERiAvKiBTb3VyY2VJ
bWFnZS5jcHAgKi8sCisJCQkJNzIxNEI5QTgyNzQyRjYyOTAwM0JFNkRGIC8qIFNvdXJjZUltYWdl
LmggKi8sCiAJCQkJN0M4M0RFODUxRDA0Q0JENDAwRkVCQ0YzIC8qIFNwcmluZ1NvbHZlci5oICov
LAogCQkJCUIyMzU0MEYwMEQwMDc4MkUwMDIzODJGQSAvKiBTdHJpbmdUcnVuY2F0b3IuY3BwICov
LAogCQkJCUIyMzU0MEYxMEQwMDc4MkUwMDIzODJGQSAvKiBTdHJpbmdUcnVuY2F0b3IuaCAqLywK
QEAgLTM2MTA5LDYgKzM2MTE0LDcgQEAKIAkJCQlDREM4QjVBQjE4MDQ3RkYxMDAxNkU2ODUgLyog
U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMuaCBpbiBIZWFkZXJzICovLAogCQkJCUNEQzhCNUFE
MTgwNEFFNUQwMDE2RTY4NSAvKiBTb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50LmggaW4gSGVhZGVy
cyAqLywKIAkJCQk4NEE4MUY0MjBGQzdFMDI3MDA5NTUzMDAgLyogU291cmNlR3JhcGhpYy5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJNzIxNEI5QTkyNzQyRkI5OTAwM0JFNkRGIC8qIFNvdXJjZUltYWdl
LmggaW4gSGVhZGVycyAqLywKIAkJCQlEMDFBMjdBRTEwQzlCRkQ4MDAwMjZBNDIgLyogU3BhY2VT
cGxpdFN0cmluZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNjI2Q0RFMEYxMTQwNDI0QzAwMUU1QTY4
IC8qIFNwYXRpYWxOYXZpZ2F0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzQ5NTBDRDI1Mzk0
MzYxMDA5OUYxNzEgLyogU3BlZWNoUmVjb2duaXRpb24uaCBpbiBIZWFkZXJzICovLApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUGF0dGVybi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNQYXR0ZXJuLmNwcAppbmRleCA4ZjE5MzgyY2Iy
MDNkMmU0MTFiY2E5NTdhNjkxYjFmYWM5OGEyY2ExLi42MGNlM2RlYTYxZTI0ZmE3YmQ0OWUyOGYx
N2U3ZTQ0OGNkYjIwODJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9D
YW52YXNQYXR0ZXJuLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNQ
YXR0ZXJuLmNwcApAQCAtMzQsMTIgKzM0LDEyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
UmVmPENhbnZhc1BhdHRlcm4+IENhbnZhc1BhdHRlcm46OmNyZWF0ZShSZWY8TmF0aXZlSW1hZ2U+
JiYgaW1hZ2UsIGJvb2wgcmVwZWF0WCwgYm9vbCByZXBlYXRZLCBib29sIG9yaWdpbkNsZWFuKQor
UmVmPENhbnZhc1BhdHRlcm4+IENhbnZhc1BhdHRlcm46OmNyZWF0ZShTb3VyY2VJbWFnZSYmIGlt
YWdlLCBib29sIHJlcGVhdFgsIGJvb2wgcmVwZWF0WSwgYm9vbCBvcmlnaW5DbGVhbikKIHsKICAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDYW52YXNQYXR0ZXJuKFdURk1vdmUoaW1hZ2UpLCByZXBl
YXRYLCByZXBlYXRZLCBvcmlnaW5DbGVhbikpOwogfQogCi1DYW52YXNQYXR0ZXJuOjpDYW52YXNQ
YXR0ZXJuKFJlZjxOYXRpdmVJbWFnZT4mJiBpbWFnZSwgYm9vbCByZXBlYXRYLCBib29sIHJlcGVh
dFksIGJvb2wgb3JpZ2luQ2xlYW4pCitDYW52YXNQYXR0ZXJuOjpDYW52YXNQYXR0ZXJuKFNvdXJj
ZUltYWdlJiYgaW1hZ2UsIGJvb2wgcmVwZWF0WCwgYm9vbCByZXBlYXRZLCBib29sIG9yaWdpbkNs
ZWFuKQogICAgIDogbV9wYXR0ZXJuKFBhdHRlcm46OmNyZWF0ZShXVEZNb3ZlKGltYWdlKSwgeyBy
ZXBlYXRYLCByZXBlYXRZIH0pKQogICAgICwgbV9vcmlnaW5DbGVhbihvcmlnaW5DbGVhbikKIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1BhdHRlcm4uaCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1BhdHRlcm4uaAppbmRleCBlNDZkMjFi
YzUxMzVkOWE3NGY0NTc1YzlkZDY1ZTljZWNkY2I4ZDJhLi44NzFlMDQ1NzdjYzUxZTU5ODA1N2Jl
Y2UyYWJkNzVmNjZhYzk5YzYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9DYW52YXNQYXR0ZXJuLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFz
UGF0dGVybi5oCkBAIC0zMiwxMyArMzIsMTMgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1j
bGFzcyBOYXRpdmVJbWFnZTsKIGNsYXNzIFBhdHRlcm47CitjbGFzcyBTb3VyY2VJbWFnZTsKIHN0
cnVjdCBET01NYXRyaXgyREluaXQ7CiAKIGNsYXNzIENhbnZhc1BhdHRlcm4gOiBwdWJsaWMgUmVm
Q291bnRlZDxDYW52YXNQYXR0ZXJuPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxDYW52YXNQ
YXR0ZXJuPiBjcmVhdGUoUmVmPE5hdGl2ZUltYWdlPiYmLCBib29sIHJlcGVhdFgsIGJvb2wgcmVw
ZWF0WSwgYm9vbCBvcmlnaW5DbGVhbik7CisgICAgc3RhdGljIFJlZjxDYW52YXNQYXR0ZXJuPiBj
cmVhdGUoU291cmNlSW1hZ2UmJiwgYm9vbCByZXBlYXRYLCBib29sIHJlcGVhdFksIGJvb2wgb3Jp
Z2luQ2xlYW4pOwogICAgIH5DYW52YXNQYXR0ZXJuKCk7CiAKICAgICBzdGF0aWMgYm9vbCBwYXJz
ZVJlcGV0aXRpb25UeXBlKGNvbnN0IFN0cmluZyYsIGJvb2wmIHJlcGVhdFgsIGJvb2wmIHJlcGVh
dFkpOwpAQCAtNTEsNyArNTEsNyBAQCBwdWJsaWM6CiAgICAgRXhjZXB0aW9uT3I8dm9pZD4gc2V0
VHJhbnNmb3JtKERPTU1hdHJpeDJESW5pdCYmKTsKIAogcHJpdmF0ZToKLSAgICBDYW52YXNQYXR0
ZXJuKFJlZjxOYXRpdmVJbWFnZT4mJiwgYm9vbCByZXBlYXRYLCBib29sIHJlcGVhdFksIGJvb2wg
b3JpZ2luQ2xlYW4pOworICAgIENhbnZhc1BhdHRlcm4oU291cmNlSW1hZ2UmJiwgYm9vbCByZXBl
YXRYLCBib29sIHJlcGVhdFksIGJvb2wgb3JpZ2luQ2xlYW4pOwogCiAgICAgUmVmPFBhdHRlcm4+
IG1fcGF0dGVybjsKICAgICBib29sIG1fb3JpZ2luQ2xlYW47CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuY3Bw
CmluZGV4IDZkZWZlYjgxMmMzNzIyYzM4ZWEyZmM4ZDA3OTFmYWUyOWIxNjBkNmUuLjFlMDY2NDdk
ZGU3ZmZlNzA4MTYwNWEzYWY3MjBkOTQ0ZTU0MjIwZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuY3Bw
CkBAIC0xOTk0LDcgKzE5OTQsNyBAQCBFeGNlcHRpb25PcjxSZWZQdHI8Q2FudmFzUGF0dGVybj4+
IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmNyZWF0ZVBhdHRlcm4oSAogCiAgICAgdmlk
ZW9FbGVtZW50LnBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0KGltYWdlQnVmZmVyLT5jb250ZXh0
KCksIEZsb2F0UmVjdChGbG9hdFBvaW50KCksIHNpemUodmlkZW9FbGVtZW50KSkpOwogICAgIAot
ICAgIHJldHVybiBSZWZQdHI8Q2FudmFzUGF0dGVybj4geyBDYW52YXNQYXR0ZXJuOjpjcmVhdGUo
SW1hZ2VCdWZmZXI6OnNpbmtJbnRvTmF0aXZlSW1hZ2UoV1RGTW92ZShpbWFnZUJ1ZmZlcikpLnJl
bGVhc2VOb25OdWxsKCksIHJlcGVhdFgsIHJlcGVhdFksIG9yaWdpbkNsZWFuKSB9OworICAgIHJl
dHVybiBSZWZQdHI8Q2FudmFzUGF0dGVybj4geyBDYW52YXNQYXR0ZXJuOjpjcmVhdGUoaW1hZ2VC
dWZmZXIucmVsZWFzZU5vbk51bGwoKSwgcmVwZWF0WCwgcmVwZWF0WSwgb3JpZ2luQ2xlYW4pIH07
CiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckNhbnZhcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFz
LmNwcAppbmRleCBlODQ3ZmU2ODExMjczMjUwNmIxZDA4NDZmNjMzZGFjNGI5NjlkMTY1Li4wMzE5
Y2MzN2RmMjVmMmM2NmY5NmMyNTk2MTIxMTVjODkzODNjNzdlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzLmNwcApAQCAtMTMzNiwxMCArMTMzNiw3IEBAIFJl
ZjxKU09OOjpBcnJheU9mPEpTT046OlZhbHVlPj4gSW5zcGVjdG9yQ2FudmFzOjpidWlsZEFycmF5
Rm9yQ2FudmFzR3JhZGllbnQoY29uCiAKIFJlZjxKU09OOjpBcnJheU9mPEpTT046OlZhbHVlPj4g
SW5zcGVjdG9yQ2FudmFzOjpidWlsZEFycmF5Rm9yQ2FudmFzUGF0dGVybihjb25zdCBDYW52YXNQ
YXR0ZXJuJiBjYW52YXNQYXR0ZXJuKQogewotICAgIGF1dG8mIHRpbGVJbWFnZSA9IGNhbnZhc1Bh
dHRlcm4ucGF0dGVybigpLnRpbGVJbWFnZSgpOwotICAgIEZsb2F0UmVjdCByZWN0ID0geyB7IH0s
IHRpbGVJbWFnZS5zaXplKCkgfTsKLSAgICBhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6
OmNyZWF0ZSh0aWxlSW1hZ2Uuc2l6ZSgpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAx
LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKLSAg
ICBpbWFnZUJ1ZmZlci0+Y29udGV4dCgpLmRyYXdOYXRpdmVJbWFnZSh0aWxlSW1hZ2UsIHRpbGVJ
bWFnZS5zaXplKCksIHJlY3QsIHJlY3QpOworICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBjYW52YXNQ
YXR0ZXJuLnBhdHRlcm4oKS50aWxlSW1hZ2VCdWZmZXIoKTsKIAogICAgIFN0cmluZyByZXBlYXQ7
CiAgICAgYm9vbCByZXBlYXRYID0gY2FudmFzUGF0dGVybi5wYXR0ZXJuKCkucmVwZWF0WCgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0dGVybi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXR0ZXJuLmNwcAppbmRleCA2MzUz
MjM3NjlmODAzM2RlMzI4ZThkNDRlNTc5NzVhMWQzY2Q2MDY1Li4xMDRiMzA2YTNhODgxMzA5NGMx
NzUzMGRlYWRjMWJlYzdiNzMwMjRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9QYXR0ZXJuLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9QYXR0ZXJuLmNwcApAQCAtMjcsMTYgKzI3LDE4IEBACiAjaW5jbHVkZSAiY29uZmlnLmgi
CiAjaW5jbHVkZSAiUGF0dGVybi5oIgogCisjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCiAj
aW5jbHVkZSAiSW1hZ2UuaCIKKyNpbmNsdWRlICJJbWFnZUJ1ZmZlci5oIgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLVJlZjxQYXR0ZXJuPiBQYXR0ZXJuOjpjcmVhdGUoUmVmPE5hdGl2ZUltYWdl
PiYmIHRpbGVJbWFnZSwgY29uc3QgUGFyYW1ldGVycyYgcGFyYW1ldGVycykKK1JlZjxQYXR0ZXJu
PiBQYXR0ZXJuOjpjcmVhdGUoU291cmNlSW1hZ2UmJiB0aWxlSW1hZ2UsIGNvbnN0IFBhcmFtZXRl
cnMmIHBhcmFtZXRlcnMpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUGF0dGVybihXVEZN
b3ZlKHRpbGVJbWFnZSksIHBhcmFtZXRlcnMpKTsKIH0KIAotUGF0dGVybjo6UGF0dGVybihSZWY8
TmF0aXZlSW1hZ2U+JiYgaW1hZ2UsIGNvbnN0IFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCitQYXR0
ZXJuOjpQYXR0ZXJuKFNvdXJjZUltYWdlJiYgaW1hZ2UsIGNvbnN0IFBhcmFtZXRlcnMmIHBhcmFt
ZXRlcnMpCiAgICAgOiBtX3RpbGVJbWFnZShXVEZNb3ZlKGltYWdlKSkKICAgICAsIG1fcGFyYW1l
dGVycyhwYXJhbWV0ZXJzKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvUGF0dGVybi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0
dGVybi5oCmluZGV4IDFjOTYxZmJmNDZlODM2ZjQwMDdlNjBhOTgxNDFmNDkxMjRiNTQ1MDMuLjQ2
MWRiNmE4ODQ1ZmJiZTg2N2VhNTk2ZjIwMGU4MmY4OTBlYmZmYjUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BhdHRlcm4uaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXR0ZXJuLmgKQEAgLTI4LDcgKzI4LDcgQEAKICNwcmFnbWEg
b25jZQogCiAjaW5jbHVkZSAiQWZmaW5lVHJhbnNmb3JtLmgiCi0jaW5jbHVkZSAiSW1hZ2UuaCIK
KyNpbmNsdWRlICJTb3VyY2VJbWFnZS5oIgogCiAjaW5jbHVkZSA8d3RmL1JlZi5oPgogI2luY2x1
ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CkBAIC01Miw3ICs1Miw2IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogY2xhc3MgQWZmaW5lVHJhbnNmb3JtOwogY2xhc3MgR3JhcGhpY3NDb250ZXh0OwotY2xh
c3MgSW1hZ2U7CiAKIGNsYXNzIFBhdHRlcm4gZmluYWwgOiBwdWJsaWMgUmVmQ291bnRlZDxQYXR0
ZXJuPiB7CiBwdWJsaWM6CkBAIC03MCwxMCArNjksMTQgQEAgcHVibGljOgogICAgICAgICBib29s
IHJlcGVhdFk7CiAgICAgfTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8UGF0dGVy
bj4gY3JlYXRlKFJlZjxOYXRpdmVJbWFnZT4mJiB0aWxlSW1hZ2UsIGNvbnN0IFBhcmFtZXRlcnMm
ID0geyB9KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPFBhdHRlcm4+IGNyZWF0ZShT
b3VyY2VJbWFnZSYmIHRpbGVJbWFnZSwgY29uc3QgUGFyYW1ldGVycyYgPSB7IH0pOwogICAgIFdF
QkNPUkVfRVhQT1JUIH5QYXR0ZXJuKCk7CiAKLSAgICBOYXRpdmVJbWFnZSYgdGlsZUltYWdlKCkg
Y29uc3QgeyByZXR1cm4gbV90aWxlSW1hZ2UuZ2V0KCk7IH0KKyAgICBTb3VyY2VJbWFnZSYgdGls
ZUltYWdlKCkgY29uc3QgeyByZXR1cm4gbV90aWxlSW1hZ2U7IH0KKyAgICBOYXRpdmVJbWFnZSog
dGlsZU5hdGl2ZUltYWdlKCkgY29uc3QgeyByZXR1cm4gbV90aWxlSW1hZ2UubmF0aXZlSW1hZ2Uo
KTsgfQorICAgIEltYWdlQnVmZmVyKiB0aWxlSW1hZ2VCdWZmZXIoKSBjb25zdCB7IHJldHVybiBt
X3RpbGVJbWFnZS5pbWFnZUJ1ZmZlcigpOyB9CisgICAgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyIHRpbGVJbWFnZUlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX3RpbGVJbWFnZS5pbWFn
ZUlkZW50aWZpZXIoKTsgfQorCiAgICAgY29uc3QgUGFyYW1ldGVycyYgcGFyYW1ldGVycygpIGNv
bnN0IHsgcmV0dXJuIG1fcGFyYW1ldGVyczsgfQogCiAgICAgLy8gUGF0dGVybiBzcGFjZSBpcyBh
biBhYnN0cmFjdCBzcGFjZSB0aGF0IG1hcHMgdG8gdGhlIGRlZmF1bHQgdXNlciBzcGFjZSBieSB0
aGUgdHJhbnNmb3JtYXRpb24gJ3VzZXJTcGFjZVRyYW5zZm9ybScKQEAgLTg4LDkgKzkxLDkgQEAg
cHVibGljOgogICAgIGJvb2wgcmVwZWF0WSgpIGNvbnN0IHsgcmV0dXJuIG1fcGFyYW1ldGVycy5y
ZXBlYXRZOyB9CiAKIHByaXZhdGU6Ci0gICAgUGF0dGVybihSZWY8TmF0aXZlSW1hZ2U+JiYsIGNv
bnN0IFBhcmFtZXRlcnMmKTsKKyAgICBQYXR0ZXJuKFNvdXJjZUltYWdlJiYsIGNvbnN0IFBhcmFt
ZXRlcnMmKTsKIAotICAgIFJlZjxOYXRpdmVJbWFnZT4gbV90aWxlSW1hZ2U7CisgICAgbXV0YWJs
ZSBTb3VyY2VJbWFnZSBtX3RpbGVJbWFnZTsKICAgICBQYXJhbWV0ZXJzIG1fcGFyYW1ldGVyczsK
IH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NvdXJj
ZUltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NvdXJjZUltYWdl
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4xYzI1YTZhOGQ3MTNmMzE1YWMzZGM5Y2E0OWVlNGFlZjUxM2U2ODU4
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU291
cmNlSW1hZ2UuY3BwCkBAIC0wLDAgKzEsMTAyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIx
IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJTb3Vy
Y2VJbWFnZS5oIgorCisjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworU291cmNlSW1hZ2U6OlNvdXJjZUltYWdlKFJlZjxOYXRpdmVJbWFnZT4mJiBu
YXRpdmVJbWFnZSkKKyAgICA6IG1faW1hZ2UoV1RGTW92ZShuYXRpdmVJbWFnZSkpCit7Cit9CisK
K1NvdXJjZUltYWdlOjpTb3VyY2VJbWFnZShSZWY8SW1hZ2VCdWZmZXI+JiYgaW1hZ2VCdWZmZXIp
CisgICAgOiBtX2ltYWdlKFdURk1vdmUoaW1hZ2VCdWZmZXIpKQoreworfQorCitOYXRpdmVJbWFn
ZSogU291cmNlSW1hZ2U6Om5hdGl2ZUltYWdlSWZFeGlzdHMoKSBjb25zdAoreworICAgIGlmIChh
dXRvKiBuYXRpdmVJbWFnZSA9IHN0ZDo6Z2V0X2lmPFJlZjxOYXRpdmVJbWFnZT4+KCZtX2ltYWdl
KSkKKyAgICAgICAgcmV0dXJuIG5hdGl2ZUltYWdlLT5wdHIoKTsKKyAgICByZXR1cm4gbnVsbHB0
cjsKK30KKworTmF0aXZlSW1hZ2UqIFNvdXJjZUltYWdlOjpuYXRpdmVJbWFnZSgpCit7CisgICAg
aWYgKGF1dG8qIG5hdGl2ZUltYWdlID0gbmF0aXZlSW1hZ2VJZkV4aXN0cygpKQorICAgICAgICBy
ZXR1cm4gbmF0aXZlSW1hZ2U7CisKKyAgICBhdXRvIGltYWdlQnVmZmVyID0gc3RkOjpnZXQ8UmVm
PEltYWdlQnVmZmVyPj4obV9pbWFnZSk7CisKKyAgICBhdXRvIG5hdGl2ZUltYWdlID0gSW1hZ2VC
dWZmZXI6OnNpbmtJbnRvTmF0aXZlSW1hZ2UoV1RGTW92ZShpbWFnZUJ1ZmZlcikpOworICAgIGlm
ICghbmF0aXZlSW1hZ2UpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgbV9pbWFnZSA9
IG5hdGl2ZUltYWdlLnJlbGVhc2VOb25OdWxsKCk7CisgICAgcmV0dXJuIG5hdGl2ZUltYWdlSWZF
eGlzdHMoKTsKK30KKworSW1hZ2VCdWZmZXIqIFNvdXJjZUltYWdlOjppbWFnZUJ1ZmZlcklmRXhp
c3RzKCkgY29uc3QKK3sKKyAgICBpZiAoYXV0byogaW1hZ2VCdWZmZXIgPSBzdGQ6OmdldF9pZjxS
ZWY8SW1hZ2VCdWZmZXI+PigmbV9pbWFnZSkpCisgICAgICAgIHJldHVybiBpbWFnZUJ1ZmZlci0+
cHRyKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK0ltYWdlQnVmZmVyKiBTb3VyY2VJbWFn
ZTo6aW1hZ2VCdWZmZXIoKQoreworICAgIGlmIChhdXRvKiBpbWFnZUJ1ZmZlciA9IGltYWdlQnVm
ZmVySWZFeGlzdHMoKSkKKyAgICAgICAgcmV0dXJuIGltYWdlQnVmZmVyOworCisgICAgYXV0byBu
YXRpdmVJbWFnZSA9IHN0ZDo6Z2V0PFJlZjxOYXRpdmVJbWFnZT4+KG1faW1hZ2UpOworCisgICAg
RmxvYXRSZWN0IHJlY3QgPSB7IHsgfSwgbmF0aXZlSW1hZ2UtPnNpemUoKSB9OworICAgIGF1dG8g
aW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKG5hdGl2ZUltYWdlLT5zaXplKCksIFJl
bmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JH
QigpLCBQaXhlbEZvcm1hdDo6QkdSQTgpOworICAgIGlmICghaW1hZ2VCdWZmZXIpCisgICAgICAg
IHJldHVybiBudWxscHRyOworCisgICAgaW1hZ2VCdWZmZXItPmNvbnRleHQoKS5kcmF3TmF0aXZl
SW1hZ2UobmF0aXZlSW1hZ2UsIG5hdGl2ZUltYWdlLT5zaXplKCksIHJlY3QsIHJlY3QpOworCisg
ICAgbV9pbWFnZSA9IGltYWdlQnVmZmVyLnJlbGVhc2VOb25OdWxsKCk7CisgICAgcmV0dXJuIGlt
YWdlQnVmZmVySWZFeGlzdHMoKTsKK30KKworUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIFNv
dXJjZUltYWdlOjppbWFnZUlkZW50aWZpZXIoKSBjb25zdAoreworICAgIHJldHVybiBXVEY6OnN3
aXRjaE9uKG1faW1hZ2UsCisgICAgICAgIFsmXSAoY29uc3QgUmVmPE5hdGl2ZUltYWdlPiYgbmF0
aXZlSW1hZ2UpIHsKKyAgICAgICAgICAgIHJldHVybiBuYXRpdmVJbWFnZS0+cmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyKCk7CisgICAgICAgIH0sCisgICAgICAgIFsmXSAoY29uc3QgUmVmPElt
YWdlQnVmZmVyPiYgaW1hZ2VCdWZmZXIpIHsKKyAgICAgICAgICAgIHJldHVybiBpbWFnZUJ1ZmZl
ci0+cmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKCk7CisgICAgICAgIH0KKyAgICApOworfQor
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Tb3VyY2VJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvU291cmNlSW1hZ2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42MWVkZTE1ZDk5OTI4ZGE0MDEwYmU4OThl
NmNlNGI3ZjU3MmE1MjA4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvU291cmNlSW1hZ2UuaApAQCAtMCwwICsxLDUyIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDIxIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVk
ZSAiSW1hZ2VCdWZmZXIuaCIKKyNpbmNsdWRlICJOYXRpdmVJbWFnZS5oIgorI2luY2x1ZGUgIlJl
bmRlcmluZ1Jlc291cmNlSWRlbnRpZmllci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2Ns
YXNzIFdFQkNPUkVfRVhQT1JUIFNvdXJjZUltYWdlIHsKK3B1YmxpYzoKKyAgICBTb3VyY2VJbWFn
ZShSZWY8TmF0aXZlSW1hZ2U+JiYpOworICAgIFNvdXJjZUltYWdlKFJlZjxJbWFnZUJ1ZmZlcj4m
Jik7CisKKyAgICBOYXRpdmVJbWFnZSogbmF0aXZlSW1hZ2VJZkV4aXN0cygpIGNvbnN0OworICAg
IE5hdGl2ZUltYWdlKiBuYXRpdmVJbWFnZSgpOworCisgICAgSW1hZ2VCdWZmZXIqIGltYWdlQnVm
ZmVySWZFeGlzdHMoKSBjb25zdDsKKyAgICBJbWFnZUJ1ZmZlciogaW1hZ2VCdWZmZXIoKTsKKwor
ICAgIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBpbWFnZUlkZW50aWZpZXIoKSBjb25zdDsK
KworcHJpdmF0ZToKKyAgICB1c2luZyBJbWFnZSA9IHN0ZDo6dmFyaWFudDxSZWY8TmF0aXZlSW1h
Z2U+LCBSZWY8SW1hZ2VCdWZmZXI+PjsKKyAgICBJbWFnZSBtX2ltYWdlOworfTsKKworfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vQ2Fpcm9PcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhaXJvL0NhaXJvT3BlcmF0aW9ucy5jcHAKaW5kZXggMTU1MjM1NmEyM2E1ZmRm
YjEwYWZlY2EyY2M5MmE3Mjc5NDU4MTAyZS4uOWFlNjQzNDJiMTg0ZDU4YWZlN2I3NDI3YWQ1Mzcy
NmFhZWNhY2VmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Fpcm8vQ2Fpcm9PcGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYWlyby9DYWlyb09wZXJhdGlvbnMuY3BwCkBAIC01NjIsOCArNTYyLDggQEAgRmls
bFNvdXJjZTo6RmlsbFNvdXJjZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUpCiAg
ICAgaWYgKHN0YXRlLmZpbGxQYXR0ZXJuKSB7CiAgICAgICAgIHBhdHRlcm4ub2JqZWN0ID0gYWRv
cHRSZWYoc3RhdGUuZmlsbFBhdHRlcm4tPmNyZWF0ZVBsYXRmb3JtUGF0dGVybihBZmZpbmVUcmFu
c2Zvcm0oKSkpOwogCi0gICAgICAgIGF1dG8mIHBhdHRlcm5JbWFnZSA9IHN0YXRlLmZpbGxQYXR0
ZXJuLT50aWxlSW1hZ2UoKTsKLSAgICAgICAgcGF0dGVybi5zaXplID0gcGF0dGVybkltYWdlLnNp
emUoKTsKKyAgICAgICAgaWYgKGF1dG8gcGF0dGVybkltYWdlID0gc3RhdGUuZmlsbFBhdHRlcm4t
PnRpbGVOYXRpdmVJbWFnZSgpKQorICAgICAgICAgICAgcGF0dGVybi5zaXplID0gcGF0dGVybklt
YWdlLT5zaXplKCk7CiAgICAgICAgIHBhdHRlcm4udHJhbnNmb3JtID0gc3RhdGUuZmlsbFBhdHRl
cm4tPnBhdHRlcm5TcGFjZVRyYW5zZm9ybSgpOwogICAgICAgICBwYXR0ZXJuLnJlcGVhdFggPSBz
dGF0ZS5maWxsUGF0dGVybi0+cmVwZWF0WCgpOwogICAgICAgICBwYXR0ZXJuLnJlcGVhdFkgPSBz
dGF0ZS5maWxsUGF0dGVybi0+cmVwZWF0WSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGF0dGVybkNhaXJvLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BhdHRlcm5DYWlyby5jcHAKaW5kZXggNjhkYWJhZjk4
YWNhOWQxY2ZiNzFlMTY1MjJiOWRlYjI1ODA3ZmYxZi4uYTNmY2Q2OGZmOGI3Y2Q5NmQ0NGUyZjU3
YTk0YTM5ZTkzNzFhYzE5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vUGF0dGVybkNhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9QYXR0ZXJuQ2Fpcm8uY3BwCkBAIC0zNSw3ICszNSwxMSBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIGNhaXJvX3BhdHRlcm5fdCogUGF0dGVybjo6Y3JlYXRlUGxhdGZv
cm1QYXR0ZXJuKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYpIGNvbnN0CiB7Ci0gICAgYXV0byBwbGF0
Zm9ybUltYWdlID0gdGlsZUltYWdlKCkucGxhdGZvcm1JbWFnZSgpOworICAgIGF1dG8gbmF0aXZl
SW1hZ2UgPSB0aWxlTmF0aXZlSW1hZ2UoKTsKKyAgICBpZiAoIW5hdGl2ZUltYWdlKQorICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKworICAgIGF1dG8gcGxhdGZvcm1JbWFnZSA9IG5hdGl2ZUltYWdl
LT5wbGF0Zm9ybUltYWdlKCk7CiAgICAgaWYgKCFwbGF0Zm9ybUltYWdlKQogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvUGF0dGVybkNHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L1BhdHRlcm5DRy5jcHAKaW5kZXggMDVhMzkxNjU0MGJiNzZkYTNmMGFiYWEzMzk0ZmM4ZGQwODhj
OGRhOS4uZDQ1ZmE5MmNjNTRjY2Q4ZmUxODcyNWU2Y2Y3ZjAzMDVlYjhjYmZhYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGF0dGVybkNHLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QYXR0ZXJuQ0cuY3BwCkBAIC01
NSwxMyArNTUsMTcgQEAgc3RhdGljIHZvaWQgcGF0dGVyblJlbGVhc2VDYWxsYmFjayh2b2lkKiBp
bmZvKQogCiBSZXRhaW5QdHI8Q0dQYXR0ZXJuUmVmPiBQYXR0ZXJuOjpjcmVhdGVQbGF0Zm9ybVBh
dHRlcm4oY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB1c2VyU3BhY2VUcmFuc2Zvcm0pIGNvbnN0CiB7
Ci0gICAgRmxvYXRSZWN0IHRpbGVSZWN0ID0geyB7IH0sIHRpbGVJbWFnZSgpLnNpemUoKSB9Owor
ICAgIGF1dG8gbmF0aXZlSW1hZ2UgPSB0aWxlTmF0aXZlSW1hZ2UoKTsKKyAgICBpZiAoIW5hdGl2
ZUltYWdlKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAKKyAgICBGbG9hdFJlY3QgdGls
ZVJlY3QgPSB7IHsgfSwgbmF0aXZlSW1hZ2UtPnNpemUoKSB9OwogCiAgICAgQWZmaW5lVHJhbnNm
b3JtIHBhdHRlcm5UcmFuc2Zvcm0gPSB1c2VyU3BhY2VUcmFuc2Zvcm0gKiBwYXR0ZXJuU3BhY2VU
cmFuc2Zvcm0oKTsKICAgICBwYXR0ZXJuVHJhbnNmb3JtLnNjYWxlTm9uVW5pZm9ybSgxLCAtMSk7
CiAgICAgcGF0dGVyblRyYW5zZm9ybS50cmFuc2xhdGUoMCwgLXRpbGVSZWN0LmhlaWdodCgpKTsK
IAotICAgIFBsYXRmb3JtSW1hZ2VQdHIgcGxhdGZvcm1JbWFnZSA9IHRpbGVJbWFnZSgpLnBsYXRm
b3JtSW1hZ2UoKTsKKyAgICBQbGF0Zm9ybUltYWdlUHRyIHBsYXRmb3JtSW1hZ2UgPSBuYXRpdmVJ
bWFnZS0+cGxhdGZvcm1JbWFnZSgpOwogICAgIGlmICghcGxhdGZvcm1JbWFnZSkKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcAppbmRl
eCBlNzI2ZDk0ZjMwMDUwMDIzMTJiYzY0MmIzMDE1ZWNiYWUzMTQ4NDhjLi5iZTNmMWM0YmExYzk4
YTYyNzA2M2YxMDNjMmQzNWQ4ODE4MDk1OGQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
SXRlbXMuY3BwCkBAIC0xNTksMTIgKzE1OSwxMiBAQCBTZXRTdGF0ZTo6U2V0U3RhdGUoY29uc3Qg
R3JhcGhpY3NDb250ZXh0U3RhdGVDaGFuZ2UmIHN0YXRlQ2hhbmdlLCBjb25zdCBQYXR0ZXJuRAog
ewogfQogCi12b2lkIFNldFN0YXRlOjphcHBseShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIE5h
dGl2ZUltYWdlKiBzdHJva2VQYXR0ZXJuSW1hZ2UsIE5hdGl2ZUltYWdlKiBmaWxsUGF0dGVybklt
YWdlKQordm9pZCBTZXRTdGF0ZTo6YXBwbHkoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBzdGQ6
Om9wdGlvbmFsPFNvdXJjZUltYWdlPiYmIHN0cm9rZVBhdHRlcm5JbWFnZSwgc3RkOjpvcHRpb25h
bDxTb3VyY2VJbWFnZT4mJiBmaWxsUGF0dGVybkltYWdlKQogewogICAgIGlmIChtX3N0YXRlQ2hh
bmdlLm1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZVBh
dHRlcm5DaGFuZ2UpICYmIHN0cm9rZVBhdHRlcm5JbWFnZSkKLSAgICAgICAgbV9zdGF0ZUNoYW5n
ZS5tX3N0YXRlLnN0cm9rZVBhdHRlcm4gPSBQYXR0ZXJuOjpjcmVhdGUoKnN0cm9rZVBhdHRlcm5J
bWFnZSwgbV9zdHJva2VQYXR0ZXJuLnBhcmFtZXRlcnMpOworICAgICAgICBtX3N0YXRlQ2hhbmdl
Lm1fc3RhdGUuc3Ryb2tlUGF0dGVybiA9IFBhdHRlcm46OmNyZWF0ZShXVEZNb3ZlKCpzdHJva2VQ
YXR0ZXJuSW1hZ2UpLCBtX3N0cm9rZVBhdHRlcm4ucGFyYW1ldGVycyk7CiAgICAgaWYgKG1fc3Rh
dGVDaGFuZ2UubV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6Rmls
bFBhdHRlcm5DaGFuZ2UpICYmIGZpbGxQYXR0ZXJuSW1hZ2UpCi0gICAgICAgIG1fc3RhdGVDaGFu
Z2UubV9zdGF0ZS5maWxsUGF0dGVybiA9IFBhdHRlcm46OmNyZWF0ZSgqZmlsbFBhdHRlcm5JbWFn
ZSwgbV9maWxsUGF0dGVybi5wYXJhbWV0ZXJzKTsKKyAgICAgICAgbV9zdGF0ZUNoYW5nZS5tX3N0
YXRlLmZpbGxQYXR0ZXJuID0gUGF0dGVybjo6Y3JlYXRlKFdURk1vdmUoKmZpbGxQYXR0ZXJuSW1h
Z2UpLCBtX2ZpbGxQYXR0ZXJuLnBhcmFtZXRlcnMpOwogICAgIG1fc3RhdGVDaGFuZ2UuYXBwbHko
Y29udGV4dCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oCmluZGV4IGNlYmYz
NjliZmEyZWYwZjY3ZjEzMWZiODUyMzZlOWFhODk3ZDQ0ODAuLjhhOGRjY2VjMmIwNWE3NmIyMTli
OTgxNjc4MmZmMzhiNTA4YTU0ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaApA
QCAtMjU3LDcgKzI1Nyw3IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2
b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CiAgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4g
c3RhdGljIHN0ZDo6b3B0aW9uYWw8U2V0U3RhdGU+IGRlY29kZShEZWNvZGVyJik7CiAKLSAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIGFwcGx5KEdyYXBoaWNzQ29udGV4dCYsIE5hdGl2ZUltYWdlKiBz
dHJva2VQYXR0ZXJuSW1hZ2UsIE5hdGl2ZUltYWdlKiBmaWxsUGF0dGVybkltYWdlKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIGFwcGx5KEdyYXBoaWNzQ29udGV4dCYsIHN0ZDo6b3B0aW9uYWw8
U291cmNlSW1hZ2U+JiYgc3Ryb2tlUGF0dGVybkltYWdlLCBzdGQ6Om9wdGlvbmFsPFNvdXJjZUlt
YWdlPiYmIGZpbGxQYXR0ZXJuSW1hZ2UpOwogCiBwcml2YXRlOgogICAgIHN0cnVjdCBQYXR0ZXJu
RGF0YSB7CkBAIC0yODcsNyArMjg3LDcgQEAgdm9pZCBTZXRTdGF0ZTo6ZW5jb2RlKEVuY29kZXIm
IGVuY29kZXIpIGNvbnN0CiAKICAgICBpZiAoY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3ND
b250ZXh0U3RhdGU6OlN0cm9rZVBhdHRlcm5DaGFuZ2UpKSB7CiAgICAgICAgIEFTU0VSVChzdGF0
ZS5zdHJva2VQYXR0ZXJuKTsKLSAgICAgICAgZW5jb2RlciA8PCBzdGF0ZS5zdHJva2VQYXR0ZXJu
LT50aWxlSW1hZ2UoKS5yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIoKTsKKyAgICAgICAgZW5j
b2RlciA8PCBzdGF0ZS5zdHJva2VQYXR0ZXJuLT50aWxlSW1hZ2VJZGVudGlmaWVyKCk7CiAgICAg
ICAgIGVuY29kZXIgPDwgc3RhdGUuc3Ryb2tlUGF0dGVybi0+cGFyYW1ldGVycygpOwogICAgIH0K
IApAQCAtMjk4LDcgKzI5OCw3IEBAIHZvaWQgU2V0U3RhdGU6OmVuY29kZShFbmNvZGVyJiBlbmNv
ZGVyKSBjb25zdAogCiAgICAgaWYgKGNoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4
dFN0YXRlOjpGaWxsUGF0dGVybkNoYW5nZSkpIHsKICAgICAgICAgQVNTRVJUKHN0YXRlLmZpbGxQ
YXR0ZXJuKTsKLSAgICAgICAgZW5jb2RlciA8PCBzdGF0ZS5maWxsUGF0dGVybi0+dGlsZUltYWdl
KCkucmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKCk7CisgICAgICAgIGVuY29kZXIgPDwgc3Rh
dGUuZmlsbFBhdHRlcm4tPnRpbGVJbWFnZUlkZW50aWZpZXIoKTsKICAgICAgICAgZW5jb2RlciA8
PCBzdGF0ZS5maWxsUGF0dGVybi0+cGFyYW1ldGVycygpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
UmVjb3JkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0
cy9EaXNwbGF5TGlzdFJlY29yZGVyLmgKaW5kZXggOWE0MDE0MzY3ZGIxZWY0M2I4YTU5ZTUwZTNk
NDcxMGY5M2UwM2ViZi4uMTRhODY1MTJiN2JiMGJkZWYxODZkMDlhMzg0OTkzYzU2NGZhYmFmNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3Rz
L0Rpc3BsYXlMaXN0UmVjb3JkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oCkBAIC0zMSw2ICszMSw3IEBA
CiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCiAjaW5jbHVkZSAiSW1hZ2UuaCIgLy8gRm9y
IEltYWdlOjpUaWxlUnVsZS4KICNpbmNsdWRlICJJbmxpbmVQYXRoRGF0YS5oIgorI2luY2x1ZGUg
IlNvdXJjZUltYWdlLmgiCiAjaW5jbHVkZSAiVGV4dEZsYWdzLmgiCiAjaW5jbHVkZSA8d3RmL05v
bmNvcHlhYmxlLmg+CiAKQEAgLTEzNiw4ICsxMzcsOSBAQCBwcm90ZWN0ZWQ6CiAgICAgdmlydHVh
bCB2b2lkIHJlY29yZEFwcGx5RGV2aWNlU2NhbGVGYWN0b3IoZmxvYXQpID0gMDsKIAogICAgIHZp
cnR1YWwgdm9pZCByZWNvcmRSZXNvdXJjZVVzZShOYXRpdmVJbWFnZSYpID0gMDsKLSAgICB2aXJ0
dWFsIHZvaWQgcmVjb3JkUmVzb3VyY2VVc2UoRm9udCYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
cmVjb3JkUmVzb3VyY2VVc2UoSW1hZ2VCdWZmZXImKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJl
Y29yZFJlc291cmNlVXNlKFNvdXJjZUltYWdlJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZWNv
cmRSZXNvdXJjZVVzZShGb250JikgPSAwOwogCiAgICAgLy8gRklYTUU6IE1heWJlIHJlbW92ZSB0
aGlzPwogICAgIHZpcnR1YWwgYm9vbCBjYW5EcmF3SW1hZ2VCdWZmZXIoY29uc3QgSW1hZ2VCdWZm
ZXImKSBjb25zdCA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlckltcGwuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXJJ
bXBsLmNwcAppbmRleCBhNWUyZDNiMjA5ODVlM2VmOTQxYTMyMzU3NTZlMjgwZWFjZDUxNjNjLi5k
NmJmNmZiNjE3NzYxNTVlZjMzNWU5NWQ4NWZhNDQwMDRiZDg3NGE2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNv
cmRlckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVySW1wbC5jcHAKQEAgLTQxMiwyNSArNDEyLDM3IEBA
IHZvaWQgUmVjb3JkZXJJbXBsOjpyZWNvcmRBcHBseURldmljZVNjYWxlRmFjdG9yKGZsb2F0IHNj
YWxlRmFjdG9yKQogICAgIGFwcGVuZDxBcHBseURldmljZVNjYWxlRmFjdG9yPihzY2FsZUZhY3Rv
cik7CiB9CiAKLXZvaWQgUmVjb3JkZXJJbXBsOjpyZWNvcmRSZXNvdXJjZVVzZShOYXRpdmVJbWFn
ZSYgaW1hZ2UpCit2b2lkIFJlY29yZGVySW1wbDo6cmVjb3JkUmVzb3VyY2VVc2UoTmF0aXZlSW1h
Z2UmIG5hdGl2ZUltYWdlKQogewogICAgIGlmIChtX2RlbGVnYXRlKQotICAgICAgICBtX2RlbGVn
YXRlLT5yZWNvcmROYXRpdmVJbWFnZVVzZShpbWFnZSk7Ci0gICAgbV9kaXNwbGF5TGlzdC5jYWNo
ZU5hdGl2ZUltYWdlKGltYWdlKTsKKyAgICAgICAgbV9kZWxlZ2F0ZS0+cmVjb3JkTmF0aXZlSW1h
Z2VVc2UobmF0aXZlSW1hZ2UpOworICAgIG1fZGlzcGxheUxpc3QuY2FjaGVOYXRpdmVJbWFnZShu
YXRpdmVJbWFnZSk7CiB9CiAKLXZvaWQgUmVjb3JkZXJJbXBsOjpyZWNvcmRSZXNvdXJjZVVzZShG
b250JiBmb250KQordm9pZCBSZWNvcmRlckltcGw6OnJlY29yZFJlc291cmNlVXNlKEltYWdlQnVm
ZmVyJiBpbWFnZUJ1ZmZlcikKIHsKICAgICBpZiAobV9kZWxlZ2F0ZSkKLSAgICAgICAgbV9kZWxl
Z2F0ZS0+cmVjb3JkRm9udFVzZShmb250KTsKLSAgICBtX2Rpc3BsYXlMaXN0LmNhY2hlRm9udChm
b250KTsKKyAgICAgICAgbV9kZWxlZ2F0ZS0+cmVjb3JkSW1hZ2VCdWZmZXJVc2UoaW1hZ2VCdWZm
ZXIpOworICAgIG1fZGlzcGxheUxpc3QuY2FjaGVJbWFnZUJ1ZmZlcihpbWFnZUJ1ZmZlcik7CiB9
CiAKLXZvaWQgUmVjb3JkZXJJbXBsOjpyZWNvcmRSZXNvdXJjZVVzZShJbWFnZUJ1ZmZlciYgaW1h
Z2VCdWZmZXIpCit2b2lkIFJlY29yZGVySW1wbDo6cmVjb3JkUmVzb3VyY2VVc2UoU291cmNlSW1h
Z2UmIGltYWdlKQoreworICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBpbWFnZS5pbWFnZUJ1ZmZlcklm
RXhpc3RzKCk7CisgICAgaWYgKGltYWdlQnVmZmVyICYmIGNhbkRyYXdJbWFnZUJ1ZmZlcigqaW1h
Z2VCdWZmZXIpKSB7CisgICAgICAgIHJlY29yZFJlc291cmNlVXNlKCppbWFnZUJ1ZmZlcik7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoYXV0byBuYXRpdmVJbWFnZSA9IGltYWdl
Lm5hdGl2ZUltYWdlKCkpCisgICAgICAgIHJlY29yZFJlc291cmNlVXNlKCpuYXRpdmVJbWFnZSk7
Cit9CisKK3ZvaWQgUmVjb3JkZXJJbXBsOjpyZWNvcmRSZXNvdXJjZVVzZShGb250JiBmb250KQog
ewogICAgIGlmIChtX2RlbGVnYXRlKQotICAgICAgICBtX2RlbGVnYXRlLT5yZWNvcmRJbWFnZUJ1
ZmZlclVzZShpbWFnZUJ1ZmZlcik7Ci0gICAgbV9kaXNwbGF5TGlzdC5jYWNoZUltYWdlQnVmZmVy
KGltYWdlQnVmZmVyKTsKKyAgICAgICAgbV9kZWxlZ2F0ZS0+cmVjb3JkRm9udFVzZShmb250KTsK
KyAgICBtX2Rpc3BsYXlMaXN0LmNhY2hlRm9udChmb250KTsKIH0KIAogLy8gRklYTUU6IHNoYXJl
IHdpdGggU2hhZG93RGF0YQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXJJbXBsLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlcklt
cGwuaAppbmRleCAzZTZkMDkwMjY5MDQ2ZjFiMTI0YTM5YzFlMTIxMTAwYjMyNzI2MGM1Li4yOTlh
M2JmM2ZhMmMzMTFlYzg0OTM3M2QwYzFmYzgzYmIxZjExODA4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRl
ckltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3RSZWNvcmRlckltcGwuaApAQCAtMTM0LDggKzEzNCw5IEBAIHByaXZhdGU6
CiAgICAgdm9pZCByZWNvcmRBcHBseURldmljZVNjYWxlRmFjdG9yKGZsb2F0KSBmaW5hbDsKIAog
ICAgIHZvaWQgcmVjb3JkUmVzb3VyY2VVc2UoTmF0aXZlSW1hZ2UmKSBmaW5hbDsKLSAgICB2b2lk
IHJlY29yZFJlc291cmNlVXNlKEZvbnQmKSBmaW5hbDsKICAgICB2b2lkIHJlY29yZFJlc291cmNl
VXNlKEltYWdlQnVmZmVyJikgZmluYWw7CisgICAgdm9pZCByZWNvcmRSZXNvdXJjZVVzZShTb3Vy
Y2VJbWFnZSYpIGZpbmFsOworICAgIHZvaWQgcmVjb3JkUmVzb3VyY2VVc2UoRm9udCYpIGZpbmFs
OwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPEdyYXBoaWNzQ29udGV4dD4gY3JlYXRlTmVzdGVkQ29u
dGV4dChjb25zdCBGbG9hdFJlY3QmIGluaXRpYWxDbGlwLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0m
IGluaXRpYWxDVE0pIGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXll
ci5jcHAKaW5kZXggOTQxYzIwOTNjZjU2ZjIyMjExM2FiZjAwM2VkMDlmMmM4NTMzYjY1NS4uMzI1
ZDgxOWQ2NDI5NDM2M2Y4YjcxYWMyMjBiM2RjMWVlNWI1NzQ4MSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0
cy9EaXNwbGF5TGlzdFJlcGxheWVyLmNwcApAQCAtODUsMjQgKzg1LDI5IEBAIGlubGluZSBzdGF0
aWMgc3RkOjpvcHRpb25hbDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+IGFwcGx5U2V0U3Rh
dGVJdGVtKEdyYXBoCiB7CiAgICAgYXV0byYgc2V0U3RhdGVJdGVtID0gaXRlbS5nZXQ8U2V0U3Rh
dGU+KCk7CiAKLSAgICBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgc3Ryb2tlUGF0dGVyblJl
bmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcjsKLSAgICBOYXRpdmVJbWFnZSogc3Ryb2tlUGF0dGVy
bkltYWdlID0gbnVsbHB0cjsKLSAgICBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgZmlsbFBh
dHRlcm5SZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI7Ci0gICAgTmF0aXZlSW1hZ2UqIGZpbGxQ
YXR0ZXJuSW1hZ2UgPSBudWxscHRyOwotCi0gICAgaWYgKChzdHJva2VQYXR0ZXJuUmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyID0gc2V0U3RhdGVJdGVtLnN0cm9rZVBhdHRlcm5JbWFnZUlkZW50
aWZpZXIoKSkpIHsKLSAgICAgICAgc3Ryb2tlUGF0dGVybkltYWdlID0gcmVzb3VyY2VIZWFwLmdl
dE5hdGl2ZUltYWdlKHN0cm9rZVBhdHRlcm5SZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwot
ICAgICAgICBpZiAoIXN0cm9rZVBhdHRlcm5JbWFnZSkKLSAgICAgICAgICAgIHJldHVybiBzdHJv
a2VQYXR0ZXJuUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyOwotICAgIH0KKyAgICBhdXRvIGNh
Y2hlZFNvdXJjZUltYWdlID0gWyZdKFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBwYXR0ZXJu
SW1hZ2VJZGVudGlmaWVyKSAtPiBzdGQ6Om9wdGlvbmFsPFNvdXJjZUltYWdlPiB7CisgICAgICAg
IGlmICghcGF0dGVybkltYWdlSWRlbnRpZmllcikKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAKLSAgICBpZiAoKGZpbGxQYXR0ZXJuUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
ID0gc2V0U3RhdGVJdGVtLmZpbGxQYXR0ZXJuSW1hZ2VJZGVudGlmaWVyKCkpKSB7Ci0gICAgICAg
IGZpbGxQYXR0ZXJuSW1hZ2UgPSByZXNvdXJjZUhlYXAuZ2V0TmF0aXZlSW1hZ2UoZmlsbFBhdHRl
cm5SZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwotICAgICAgICBpZiAoIWZpbGxQYXR0ZXJu
SW1hZ2UpCi0gICAgICAgICAgICByZXR1cm4gZmlsbFBhdHRlcm5SZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXI7Ci0gICAgfQorICAgICAgICBpZiAoYXV0byBuYXRpdmVJbWFnZSA9IHJlc291cmNl
SGVhcC5nZXROYXRpdmVJbWFnZShwYXR0ZXJuSW1hZ2VJZGVudGlmaWVyKSkKKyAgICAgICAgICAg
IHJldHVybiBSZWYgeyAqbmF0aXZlSW1hZ2UgfTsKKyAgICAgICAgaWYgKGF1dG8gaW1hZ2VCdWZm
ZXIgPSByZXNvdXJjZUhlYXAuZ2V0SW1hZ2VCdWZmZXIocGF0dGVybkltYWdlSWRlbnRpZmllcikp
CisgICAgICAgICAgICByZXR1cm4gUmVmIHsgKmltYWdlQnVmZmVyIH07CisKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICB9OworCisgICAgYXV0byBzdHJva2VQYXR0ZXJuUmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyID0gc2V0U3RhdGVJdGVtLnN0cm9rZVBhdHRlcm5JbWFnZUlk
ZW50aWZpZXIoKTsKKyAgICBhdXRvIHN0cm9rZVBhdHRlcm5JbWFnZSA9IGNhY2hlZFNvdXJjZUlt
YWdlKHN0cm9rZVBhdHRlcm5SZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOworICAgIGlmICgh
c3Ryb2tlUGF0dGVybkltYWdlICYmIHN0cm9rZVBhdHRlcm5SZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXIpCisgICAgICAgIHJldHVybiBzdHJva2VQYXR0ZXJuUmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyOworCisgICAgYXV0byBmaWxsUGF0dGVyblJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
ciA9IHNldFN0YXRlSXRlbS5maWxsUGF0dGVybkltYWdlSWRlbnRpZmllcigpOworICAgIGF1dG8g
ZmlsbFBhdHRlcm5JbWFnZSA9IGNhY2hlZFNvdXJjZUltYWdlKGZpbGxQYXR0ZXJuUmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyKTsKKyAgICBpZiAoIWZpbGxQYXR0ZXJuSW1hZ2UgJiYgZmlsbFBh
dHRlcm5SZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCisgICAgICAgIHJldHVybiBmaWxsUGF0
dGVyblJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcjsKIAotICAgIHNldFN0YXRlSXRlbS5hcHBs
eShjb250ZXh0LCBzdHJva2VQYXR0ZXJuSW1hZ2UsIGZpbGxQYXR0ZXJuSW1hZ2UpOworICAgIHNl
dFN0YXRlSXRlbS5hcHBseShjb250ZXh0LCBXVEZNb3ZlKHN0cm9rZVBhdHRlcm5JbWFnZSksIFdU
Rk1vdmUoZmlsbFBhdHRlcm5JbWFnZSkpOwogCiAgICAgaWYgKCFkZWxlZ2F0ZSkKICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvRkVUaWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRkVUaWxlLmNwcAppbmRleCA4MWFhMGM1M2ExYTgzNjU1Zjc4MmVjOTJh
ZTE3MDk4OWU0ODhmNTNlLi5mNjRkOGJkYzEzNmQwMGFmMGJjMTI3NDJjZDI3ZDg4MzI3NzhiZDli
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZF
VGlsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
RVRpbGUuY3BwCkBAIC03MiwxNCArNzIsMTAgQEAgdm9pZCBGRVRpbGU6OnBsYXRmb3JtQXBwbHlT
b2Z0d2FyZShjb25zdCBGaWx0ZXImIGZpbHRlcikKICAgICB0aWxlSW1hZ2VDb250ZXh0LnRyYW5z
bGF0ZSgtaW5NYXhFZmZlY3RMb2NhdGlvbi54KCksIC1pbk1heEVmZmVjdExvY2F0aW9uLnkoKSk7
CiAgICAgdGlsZUltYWdlQ29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoKmluQnVmZmVyLCBpbi0+YWJz
b2x1dGVQYWludFJlY3QoKS5sb2NhdGlvbigpKTsKIAotICAgIGF1dG8gdGlsZUltYWdlQ29weSA9
IEltYWdlQnVmZmVyOjpzaW5rSW50b05hdGl2ZUltYWdlKFdURk1vdmUodGlsZUltYWdlKSk7Ci0g
ICAgaWYgKCF0aWxlSW1hZ2VDb3B5KQotICAgICAgICByZXR1cm47Ci0KICAgICBBZmZpbmVUcmFu
c2Zvcm0gcGF0dGVyblRyYW5zZm9ybTsKICAgICBwYXR0ZXJuVHJhbnNmb3JtLnRyYW5zbGF0ZShp
bk1heEVmZmVjdExvY2F0aW9uIC0gbWF4RWZmZWN0TG9jYXRpb24pOwogCi0gICAgYXV0byBwYXR0
ZXJuID0gUGF0dGVybjo6Y3JlYXRlKHRpbGVJbWFnZUNvcHkucmVsZWFzZU5vbk51bGwoKSwgeyB0
cnVlLCB0cnVlLCBwYXR0ZXJuVHJhbnNmb3JtIH0pOworICAgIGF1dG8gcGF0dGVybiA9IFBhdHRl
cm46OmNyZWF0ZSh0aWxlSW1hZ2UucmVsZWFzZU5vbk51bGwoKSwgeyB0cnVlLCB0cnVlLCBwYXR0
ZXJuVHJhbnNmb3JtIH0pOwogCiAgICAgR3JhcGhpY3NDb250ZXh0JiBmaWx0ZXJDb250ZXh0ID0g
cmVzdWx0SW1hZ2UtPmNvbnRleHQoKTsKICAgICBmaWx0ZXJDb250ZXh0LnNldEZpbGxQYXR0ZXJu
KFdURk1vdmUocGF0dGVybikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxheWVyQmFja2luZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TGF5ZXJCYWNraW5nLmNwcAppbmRleCBhNzg0ZGJiYjgzN2Y3YjdlNDE3YjI2OWI2YjcwYmM5Mjcy
MzRkNTFkLi5lMTEwZmIwZGMzZmM4NGMxZmNlNmFkYzc3NjI3NzcyODA3OGVlMWM1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcApAQCAtMzMx
NSwxMyArMzMxNSwxMSBAQCBzdGF0aWMgUmVmUHRyPFBhdHRlcm4+IHBhdHRlcm5Gb3JEZXNjcmlw
dGlvbihQYXR0ZXJuRGVzY3JpcHRpb24gZGVzY3JpcHRpb24sIEZsbwogICAgICAgICBpbWFnZUNv
bnRleHQuZHJhd1RleHQoZm9udCwgdGV4dFJ1biwgeyB0ZXh0R2FwLCB5T2Zmc2V0IH0sIDApOwog
ICAgIH0KIAotICAgIGF1dG8gdGlsZUltYWdlID0gSW1hZ2VCdWZmZXI6OnNpbmtJbnRvTmF0aXZl
SW1hZ2UoV1RGTW92ZShpbWFnZUJ1ZmZlcikpOwotCiAgICAgQWZmaW5lVHJhbnNmb3JtIHBhdHRl
cm5PZmZzZXRUcmFuc2Zvcm07CiAgICAgcGF0dGVybk9mZnNldFRyYW5zZm9ybS50cmFuc2xhdGUo
Y29udGVudE9mZnNldCArIGRlc2NyaXB0aW9uLnBoYXNlKTsKICAgICBwYXR0ZXJuT2Zmc2V0VHJh
bnNmb3JtLnNjYWxlKDEgLyBkZXN0Q29udGV4dC5zY2FsZUZhY3RvcigpKTsKIAotICAgIHJldHVy
biBQYXR0ZXJuOjpjcmVhdGUodGlsZUltYWdlLnJlbGVhc2VOb25OdWxsKCksIHsgdHJ1ZSwgdHJ1
ZSwgcGF0dGVybk9mZnNldFRyYW5zZm9ybX0pOworICAgIHJldHVybiBQYXR0ZXJuOjpjcmVhdGUo
aW1hZ2VCdWZmZXIucmVsZWFzZU5vbk51bGwoKSwgeyB0cnVlLCB0cnVlLCBwYXR0ZXJuT2Zmc2V0
VHJhbnNmb3JtIH0pOwogfTsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlUGF0dGVybi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlUGF0dGVybi5jcHAKaW5kZXggMmM2MDU1
OTBkYjQwM2VmNDRiZjE3OGJjMDdjODQxNjA0OWMwOTUxYi4uNmRkYzdhMDYwNDVhMjRhODc1NjE1
NWEzMTllNjdlOTZhODQ2ZTljNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuLmNwcApAQCAtMjUsNiArMjUsNyBA
QAogI2luY2x1ZGUgIkZyYW1lVmlldy5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgog
I2luY2x1ZGUgIlJlbmRlclNWR1Jvb3QuaCIKKyNpbmNsdWRlICJSZW5kZXJWaWV3LmgiCiAjaW5j
bHVkZSAiU1ZHRWxlbWVudFR5cGVIZWxwZXJzLmgiCiAjaW5jbHVkZSAiU1ZHRml0VG9WaWV3Qm94
LmgiCiAjaW5jbHVkZSAiU1ZHUmVuZGVyaW5nQ29udGV4dC5oIgpAQCAtMTEzLDEwICsxMTQsNiBA
QCBQYXR0ZXJuRGF0YSogUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuOjpidWlsZFBhdHRlcm4oUmVu
ZGVyRWxlbWVudCYgcmVuZGVyZXIsIE9wdAogCiAgICAgYXV0byB0aWxlSW1hZ2VTaXplID0gdGls
ZUltYWdlLT5sb2dpY2FsU2l6ZSgpOwogCi0gICAgYXV0byBjb3BpZWRJbWFnZSA9IEltYWdlQnVm
ZmVyOjpzaW5rSW50b05hdGl2ZUltYWdlKFdURk1vdmUodGlsZUltYWdlKSk7Ci0gICAgaWYgKCFj
b3BpZWRJbWFnZSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KICAgICAvLyBDb21wdXRlIHBh
dHRlcm4gc3BhY2UgdHJhbnNmb3JtYXRpb24uCiAgICAgYXV0byBwYXR0ZXJuRGF0YSA9IG1ha2VV
bmlxdWU8UGF0dGVybkRhdGE+KCk7CiAgICAgcGF0dGVybkRhdGEtPnRyYW5zZm9ybS50cmFuc2xh
dGUodGlsZUJvdW5kYXJpZXMubG9jYXRpb24oKSk7CkBAIC0xMzQsNyArMTMxLDcgQEAgUGF0dGVy
bkRhdGEqIFJlbmRlclNWR1Jlc291cmNlUGF0dGVybjo6YnVpbGRQYXR0ZXJuKFJlbmRlckVsZW1l
bnQmIHJlbmRlcmVyLCBPcHQKICAgICB9CiAKICAgICAvLyBCdWlsZCBwYXR0ZXJuLgotICAgIHBh
dHRlcm5EYXRhLT5wYXR0ZXJuID0gUGF0dGVybjo6Y3JlYXRlKGNvcGllZEltYWdlLnJlbGVhc2VO
b25OdWxsKCksIHsgdHJ1ZSwgdHJ1ZSwgcGF0dGVybkRhdGEtPnRyYW5zZm9ybSB9KTsKKyAgICBw
YXR0ZXJuRGF0YS0+cGF0dGVybiA9IFBhdHRlcm46OmNyZWF0ZSh0aWxlSW1hZ2UucmVsZWFzZU5v
bk51bGwoKSwgeyB0cnVlLCB0cnVlLCBwYXR0ZXJuRGF0YS0+dHJhbnNmb3JtIH0pOwogCiAgICAg
Ly8gVmFyaW91cyBjYWxscyBhYm92ZSBtYXkgdHJpZ2dlciBpbnZhbGlkYXRpb25zIGluIHNvbWUg
ZnJpbmdlIGNhc2VzIChJbWFnZUJ1ZmZlciBhbGxvY2F0aW9uCiAgICAgLy8gZmFpbHVyZXMgaW4g
dGhlIFNWRyBpbWFnZSBjYWNoZSBmb3IgZXhhbXBsZSkuIFRvIGF2b2lkIGhhdmluZyBvdXIgUGF0
dGVybkRhdGEgZGVsZXRlZCBieQpAQCAtMjU0LDcgKzI1MSw5IEBAIGJvb2wgUmVuZGVyU1ZHUmVz
b3VyY2VQYXR0ZXJuOjpidWlsZFRpbGVJbWFnZVRyYW5zZm9ybShSZW5kZXJFbGVtZW50JiByZW5k
ZXJlciwKIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuOjpjcmVh
dGVUaWxlSW1hZ2UoY29uc3QgUGF0dGVybkF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMsIGNvbnN0IEZs
b2F0UmVjdCYgdGlsZUJvdW5kYXJpZXMsIGNvbnN0IEZsb2F0UmVjdCYgYWJzb2x1dGVUaWxlQm91
bmRhcmllcywgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB0aWxlSW1hZ2VUcmFuc2Zvcm0sIEZsb2F0
UmVjdCYgY2xhbXBlZEFic29sdXRlVGlsZUJvdW5kYXJpZXMsIFJlbmRlcmluZ01vZGUgcmVuZGVy
aW5nTW9kZSkgY29uc3QKIHsKICAgICBjbGFtcGVkQWJzb2x1dGVUaWxlQm91bmRhcmllcyA9IElt
YWdlQnVmZmVyOjpjbGFtcGVkUmVjdChhYnNvbHV0ZVRpbGVCb3VuZGFyaWVzKTsKLSAgICBhdXRv
IHRpbGVJbWFnZSA9IFNWR1JlbmRlcmluZ0NvbnRleHQ6OmNyZWF0ZUltYWdlQnVmZmVyKGFic29s
dXRlVGlsZUJvdW5kYXJpZXMsIGNsYW1wZWRBYnNvbHV0ZVRpbGVCb3VuZGFyaWVzLCBEZXN0aW5h
dGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgcmVuZGVyaW5nTW9kZSk7CisgICAgCisgICAgYXV0byBo
b3N0V2luZG93ID0gdmlldygpLmZyYW1lVmlldygpLnJvb3QoKSA/IHZpZXcoKS5mcmFtZVZpZXco
KS5yb290KCktPmhvc3RXaW5kb3coKSA6IG51bGxwdHI7CisgICAgYXV0byB0aWxlSW1hZ2UgPSBT
VkdSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGVJbWFnZUJ1ZmZlcihhYnNvbHV0ZVRpbGVCb3VuZGFy
aWVzLCBjbGFtcGVkQWJzb2x1dGVUaWxlQm91bmRhcmllcywgRGVzdGluYXRpb25Db2xvclNwYWNl
OjpTUkdCKCksIHJlbmRlcmluZ01vZGUsIGhvc3RXaW5kb3cpOwogICAgIGlmICghdGlsZUltYWdl
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvU1ZHUmVuZGVyaW5nQ29udGV4dC5jcHAKaW5kZXggMjBiOGI1ZTdiMDdiMzFh
MTJjNWFhY2JhMzg1ODkyZmJmM2EyMzU3My4uYmYxZTdmOTExOWIxN2MzODc2MDk4NWRkY2U5NzE1
MTMyOTgyYjExOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdS
ZW5kZXJpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NW
R1JlbmRlcmluZ0NvbnRleHQuY3BwCkBAIC0yNTYsNyArMjU2LDcgQEAgUmVmUHRyPEltYWdlQnVm
ZmVyPiBTVkdSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFJl
Y3QmIHRhcmcKICAgICByZXR1cm4gaW1hZ2VCdWZmZXI7CiB9CiAKLVJlZlB0cjxJbWFnZUJ1ZmZl
cj4gU1ZHUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRSZWN0
JiB0YXJnZXRSZWN0LCBjb25zdCBGbG9hdFJlY3QmIGNsYW1wZWRSZWN0LCBjb25zdCBEZXN0aW5h
dGlvbkNvbG9yU3BhY2UmIGNvbG9yU3BhY2UsIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwg
Y29uc3QgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0KQorUmVmUHRyPEltYWdlQnVmZmVyPiBTVkdS
ZW5kZXJpbmdDb250ZXh0OjpjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFJlY3QmIHRhcmdl
dFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgY2xhbXBlZFJlY3QsIGNvbnN0IERlc3RpbmF0aW9uQ29s
b3JTcGFjZSYgY29sb3JTcGFjZSwgUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlLCBIb3N0V2lu
ZG93KiBob3N0V2luZG93LCBjb25zdCBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQpCiB7CiAgICAg
SW50U2l6ZSBjbGFtcGVkU2l6ZSA9IHJvdW5kZWRJbnRTaXplKGNsYW1wZWRSZWN0LnNpemUoKSk7
CiAgICAgRmxvYXRTaXplIHVuY2xhbXBlZFNpemUgPSByb3VuZGVkSW50U2l6ZSh0YXJnZXRSZWN0
LnNpemUoKSk7CkBAIC0yNjksNyArMjY5LDcgQEAgUmVmUHRyPEltYWdlQnVmZmVyPiBTVkdSZW5k
ZXJpbmdDb250ZXh0OjpjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFJlY3QmIHRhcmcKICAg
ICBhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShjbGFtcGVkU2l6ZSwgcmVu
ZGVyaW5nTW9kZSwgY29udGV4dCwgMSwgY29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsK
ICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGNvbnRleHQpOwotICAgIGF1dG8gaW1hZ2VCdWZmZXIg
PSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGNsYW1wZWRTaXplLCByZW5kZXJpbmdNb2RlLCAxLCBjb2xv
clNwYWNlLCBQaXhlbEZvcm1hdDo6QkdSQTgpOworICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFn
ZUJ1ZmZlcjo6Y3JlYXRlKGNsYW1wZWRTaXplLCByZW5kZXJpbmdNb2RlLCBTaG91bGRVc2VEaXNw
bGF5TGlzdDo6Tm8sIFJlbmRlcmluZ1B1cnBvc2U6OkRPTSwgMSwgY29sb3JTcGFjZSwgUGl4ZWxG
b3JtYXQ6OkJHUkE4LCBob3N0V2luZG93KTsKICNlbmRpZgogICAgIGlmICghaW1hZ2VCdWZmZXIp
CiAgICAgICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9TVkdSZW5kZXJpbmdDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1NWR1JlbmRlcmluZ0NvbnRleHQuaAppbmRleCA1OTY1OTdiZTEyNDdhOTZhNjA0YWNj
ZjQ1N2UwOTI5ZmQwZjUwYTBlLi5lZmZmODNkZWMwNTM3ZGQ3ZWVlMjIxMDJkNGVhNmNkNDg4MDQ4
ZWUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmlu
Z0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmlu
Z0NvbnRleHQuaApAQCAtNjEsNyArNjEsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc1JlbmRlcmlu
Z1ByZXBhcmVkKCkgY29uc3QgeyByZXR1cm4gbV9yZW5kZXJpbmdGbGFncyAmIFJlbmRlcmluZ1By
ZXBhcmVkOyB9CiAKICAgICBzdGF0aWMgUmVmUHRyPEltYWdlQnVmZmVyPiBjcmVhdGVJbWFnZUJ1
ZmZlcihjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYg
YWJzb2x1dGVUcmFuc2Zvcm0sIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYsIFJlbmRlcmlu
Z01vZGUsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCogPSBudWxscHRyKTsKLSAgICBzdGF0aWMgUmVm
UHRyPEltYWdlQnVmZmVyPiBjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFJlY3QmIHRhcmdl
dFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgY2xhbXBlZFJlY3QsIGNvbnN0IERlc3RpbmF0aW9uQ29s
b3JTcGFjZSYsIFJlbmRlcmluZ01vZGUsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCogPSBudWxscHRy
KTsKKyAgICBzdGF0aWMgUmVmUHRyPEltYWdlQnVmZmVyPiBjcmVhdGVJbWFnZUJ1ZmZlcihjb25z
dCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgY2xhbXBlZFJlY3QsIGNv
bnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYsIFJlbmRlcmluZ01vZGUsIEhvc3RXaW5kb3cqID0g
bnVsbHB0ciwgY29uc3QgR3JhcGhpY3NDb250ZXh0KiA9IG51bGxwdHIpOwogCiAgICAgc3RhdGlj
IHZvaWQgcmVuZGVyU3VidHJlZVRvQ29udGV4dChHcmFwaGljc0NvbnRleHQmLCBSZW5kZXJFbGVt
ZW50JiwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJik7CiAgICAgc3RhdGljIHZvaWQgY2xpcFRvSW1h
Z2VCdWZmZXIoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBhYnNvbHV0
ZVRyYW5zZm9ybSwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBSZWZQdHI8SW1hZ2VCdWZm
ZXI+JiwgYm9vbCBzYWZlVG9DbGVhcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvZ3JhcGhpY3MvUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlci5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlci5jcHAKaW5k
ZXggYWRhNTRkNDE4YTBiNjAyNTQ2YjE3ZTU3YzY2ZGQwY2Q2OTAzMGQxMy4uNDUwZDhmN2IzZjgw
ZjQwMjc0NzlkZmEzMWRlZDY2MTVmZTM1ZTczNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVy
LmNwcApAQCAtMTIzLDIwICsxMjMsMzIgQEAgdm9pZCBSZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVy
OjpzZXRTdGF0ZShEaXNwbGF5TGlzdDo6U2V0U3RhdGUmJiBpdGVtKQogCiB2b2lkIFJlbW90ZURp
c3BsYXlMaXN0UmVjb3JkZXI6OnNldFN0YXRlV2l0aFF1YWxpZmllZElkZW50aWZpZXJzKERpc3Bs
YXlMaXN0OjpTZXRTdGF0ZSYmIGl0ZW0sIFF1YWxpZmllZFJlbmRlcmluZ1Jlc291cmNlSWRlbnRp
ZmllciBzdHJva2VQYXR0ZXJuSW1hZ2VJZGVudGlmaWVyLCBRdWFsaWZpZWRSZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXIgZmlsbFBhdHRlcm5JbWFnZUlkZW50aWZpZXIpCiB7Ci0gICAgUmVmUHRy
PE5hdGl2ZUltYWdlPiBzdHJva2VQYXR0ZXJuSW1hZ2U7Ci0gICAgaWYgKHN0cm9rZVBhdHRlcm5J
bWFnZUlkZW50aWZpZXIpCi0gICAgICAgIHN0cm9rZVBhdHRlcm5JbWFnZSA9IHJlc291cmNlQ2Fj
aGUoKS5jYWNoZWROYXRpdmVJbWFnZShzdHJva2VQYXR0ZXJuSW1hZ2VJZGVudGlmaWVyKTsKKyAg
ICBhdXRvIGNhY2hlZFNvdXJjZUltYWdlID0gWyZdKFF1YWxpZmllZFJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllciBwYXR0ZXJuSW1hZ2VJZGVudGlmaWVyKSAtPiBzdGQ6Om9wdGlvbmFsPFNvdXJj
ZUltYWdlPiB7CisgICAgICAgIGlmICghcGF0dGVybkltYWdlSWRlbnRpZmllcikKKyAgICAgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+IGZpbGxQ
YXR0ZXJuSW1hZ2U7Ci0gICAgaWYgKGZpbGxQYXR0ZXJuSW1hZ2VJZGVudGlmaWVyKQotICAgICAg
ICBmaWxsUGF0dGVybkltYWdlID0gcmVzb3VyY2VDYWNoZSgpLmNhY2hlZE5hdGl2ZUltYWdlKGZp
bGxQYXR0ZXJuSW1hZ2VJZGVudGlmaWVyKTsKKyAgICAgICAgaWYgKGF1dG8gbmF0aXZlSW1hZ2Ug
PSByZXNvdXJjZUNhY2hlKCkuY2FjaGVkTmF0aXZlSW1hZ2UocGF0dGVybkltYWdlSWRlbnRpZmll
cikpCisgICAgICAgICAgICByZXR1cm4gUmVmIHsgKm5hdGl2ZUltYWdlIH07CisgICAgICAgIGlm
IChhdXRvIGltYWdlQnVmZmVyID0gcmVzb3VyY2VDYWNoZSgpLmNhY2hlZEltYWdlQnVmZmVyKHBh
dHRlcm5JbWFnZUlkZW50aWZpZXIpKQorICAgICAgICAgICAgcmV0dXJuIFJlZiB7ICppbWFnZUJ1
ZmZlciB9OworCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgfTsKKyAgICAKKyAg
ICBhdXRvIHN0cm9rZVBhdHRlcm5JbWFnZSA9IGNhY2hlZFNvdXJjZUltYWdlKHN0cm9rZVBhdHRl
cm5JbWFnZUlkZW50aWZpZXIpOworICAgIGlmICghc3Ryb2tlUGF0dGVybkltYWdlKQorICAgICAg
ICBzdHJva2VQYXR0ZXJuSW1hZ2VJZGVudGlmaWVyID0geyB9OwogCi0gICAgaGFuZGxlSXRlbShX
VEZNb3ZlKGl0ZW0pLCBzdHJva2VQYXR0ZXJuSW1hZ2UuZ2V0KCksIGZpbGxQYXR0ZXJuSW1hZ2Uu
Z2V0KCkpOworICAgIGF1dG8gZmlsbFBhdHRlcm5JbWFnZSA9IGNhY2hlZFNvdXJjZUltYWdlKGZp
bGxQYXR0ZXJuSW1hZ2VJZGVudGlmaWVyKTsKKyAgICBpZiAoIWZpbGxQYXR0ZXJuSW1hZ2UpCisg
ICAgICAgIGZpbGxQYXR0ZXJuSW1hZ2VJZGVudGlmaWVyID0geyB9OwogCi0gICAgaWYgKHN0cm9r
ZVBhdHRlcm5JbWFnZSkKKyAgICBoYW5kbGVJdGVtKFdURk1vdmUoaXRlbSksIFdURk1vdmUoc3Ry
b2tlUGF0dGVybkltYWdlKSwgV1RGTW92ZShmaWxsUGF0dGVybkltYWdlKSk7CisKKyAgICBpZiAo
c3Ryb2tlUGF0dGVybkltYWdlSWRlbnRpZmllcikKICAgICAgICAgcmVzb3VyY2VDYWNoZSgpLnJl
Y29yZFJlc291cmNlVXNlKHN0cm9rZVBhdHRlcm5JbWFnZUlkZW50aWZpZXIpOwogCi0gICAgaWYg
KGZpbGxQYXR0ZXJuSW1hZ2UpCisgICAgaWYgKGZpbGxQYXR0ZXJuSW1hZ2VJZGVudGlmaWVyKQog
ICAgICAgICByZXNvdXJjZUNhY2hlKCkucmVjb3JkUmVzb3VyY2VVc2UoZmlsbFBhdHRlcm5JbWFn
ZUlkZW50aWZpZXIpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL2dyYXBoaWNzL1JlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXJQcm94eS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXJQ
cm94eS5jcHAKaW5kZXggOTQyMWRkMjM4Y2I2ZWM2M2ZlMWMwN2Q0NzM2MWNiMGI2NWZmNDBjYi4u
NTczMGRkODgxOWU4ZTQyZTNiNmI2NmVmMTdiMzQ2ZTg3YjUyNDI2MSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVEaXNwbGF5TGlzdFJlY29y
ZGVyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mv
UmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlclByb3h5LmNwcApAQCAtNDA2LDI0ICs0MDYsMzYgQEAg
dm9pZCBSZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyUHJveHk6OnJlY29yZFJlc291cmNlVXNlKE5h
dGl2ZUltYWdlJiBpbWFnZSkKICAgICBtX3JlbmRlcmluZ0JhY2tlbmQtPnJlY29yZE5hdGl2ZUlt
YWdlVXNlKGltYWdlKTsKIH0KIAotdm9pZCBSZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyUHJveHk6
OnJlY29yZFJlc291cmNlVXNlKEZvbnQmIGZvbnQpCit2b2lkIFJlbW90ZURpc3BsYXlMaXN0UmVj
b3JkZXJQcm94eTo6cmVjb3JkUmVzb3VyY2VVc2UoSW1hZ2VCdWZmZXImIGltYWdlQnVmZmVyKQog
ewogICAgIGlmIChVTkxJS0VMWSghbV9yZW5kZXJpbmdCYWNrZW5kKSkgewogICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1fcmVuZGVy
aW5nQmFja2VuZC0+cmVjb3JkRm9udFVzZShmb250KTsKKyAgICBtX3JlbmRlcmluZ0JhY2tlbmQt
PnJlY29yZEltYWdlQnVmZmVyVXNlKGltYWdlQnVmZmVyKTsKIH0KIAotdm9pZCBSZW1vdGVEaXNw
bGF5TGlzdFJlY29yZGVyUHJveHk6OnJlY29yZFJlc291cmNlVXNlKEltYWdlQnVmZmVyJiBpbWFn
ZUJ1ZmZlcikKK3ZvaWQgUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlclByb3h5OjpyZWNvcmRSZXNv
dXJjZVVzZShTb3VyY2VJbWFnZSYgaW1hZ2UpCit7CisgICAgYXV0byBpbWFnZUJ1ZmZlciA9IGlt
YWdlLmltYWdlQnVmZmVySWZFeGlzdHMoKTsKKyAgICBpZiAoaW1hZ2VCdWZmZXIgJiYgY2FuRHJh
d0ltYWdlQnVmZmVyKCppbWFnZUJ1ZmZlcikpIHsKKyAgICAgICAgcmVjb3JkUmVzb3VyY2VVc2Uo
KmltYWdlQnVmZmVyKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChhdXRvIG5h
dGl2ZUltYWdlID0gaW1hZ2UubmF0aXZlSW1hZ2UoKSkKKyAgICAgICAgcmVjb3JkUmVzb3VyY2VV
c2UoKm5hdGl2ZUltYWdlKTsKK30KKwordm9pZCBSZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyUHJv
eHk6OnJlY29yZFJlc291cmNlVXNlKEZvbnQmIGZvbnQpCiB7CiAgICAgaWYgKFVOTElLRUxZKCFt
X3JlbmRlcmluZ0JhY2tlbmQpKSB7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbV9yZW5kZXJpbmdCYWNrZW5kLT5yZWNvcmRJbWFn
ZUJ1ZmZlclVzZShpbWFnZUJ1ZmZlcik7CisgICAgbV9yZW5kZXJpbmdCYWNrZW5kLT5yZWNvcmRG
b250VXNlKGZvbnQpOwogfQogCiB2b2lkIFJlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXJQcm94eTo6
Zmx1c2hDb250ZXh0KEdyYXBoaWNzQ29udGV4dEZsdXNoSWRlbnRpZmllciBpZGVudGlmaWVyKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVE
aXNwbGF5TGlzdFJlY29yZGVyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
Z3JhcGhpY3MvUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlclByb3h5LmgKaW5kZXggNzFmZGI2M2Rm
NGFjODQ5NzQ3MjMyNjliN2YwM2Q5OTdiODEzOTg5ZC4uY2NhNmNmNjBlZDA5ZDIxOWRiNTgyM2Vl
MjM0NDFhNzI0NjUwNGI4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9SZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyUHJveHkuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXJQ
cm94eS5oCkBAIC0xMzYsOCArMTM2LDkgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlY29yZEFwcGx5
RGV2aWNlU2NhbGVGYWN0b3IoZmxvYXQpIGZpbmFsOwogCiAgICAgdm9pZCByZWNvcmRSZXNvdXJj
ZVVzZShXZWJDb3JlOjpOYXRpdmVJbWFnZSYpIGZpbmFsOwotICAgIHZvaWQgcmVjb3JkUmVzb3Vy
Y2VVc2UoV2ViQ29yZTo6Rm9udCYpIGZpbmFsOwogICAgIHZvaWQgcmVjb3JkUmVzb3VyY2VVc2Uo
V2ViQ29yZTo6SW1hZ2VCdWZmZXImKSBmaW5hbDsKKyAgICB2b2lkIHJlY29yZFJlc291cmNlVXNl
KFdlYkNvcmU6OlNvdXJjZUltYWdlJikgZmluYWw7CisgICAgdm9pZCByZWNvcmRSZXNvdXJjZVVz
ZShXZWJDb3JlOjpGb250JikgZmluYWw7CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0PiBjcmVhdGVOZXN0ZWRDb250ZXh0KGNvbnN0IFdlYkNvcmU6OkZsb2F0
UmVjdCYgaW5pdGlhbENsaXAsIGNvbnN0IFdlYkNvcmU6OkFmZmluZVRyYW5zZm9ybSYgaW5pdGlh
bENUTSkgZmluYWw7CiAK
</data>
<flag name="commit-queue"
          id="469339"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>444342</attachid>
            <date>2021-11-15 21:32:22 -0800</date>
            <delta_ts>2021-11-16 12:44:40 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-232411-20211115213222.patch</filename>
            <type>text/plain</type>
            <size>47768</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg1Nzk2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmQ1YWJmYjdlYThmZGY3
ODJlN2EyM2Q0NTQxY2RjOWFiN2U1NzUxNy4uMmY4OGVhYWMxYTIzOWMzZjExNGZhNTQ0MzUwODMw
NDEyMWQ1NDRkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY1IEBACisyMDIxLTExLTE1ICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2VzcyBd
IFBhdHRlcm4gc2hvdWxkIGhvbGQgYW4gSW1hZ2VCdWZmZXIgd2hpY2ggY2FuIGJlIGNvbnZlcnRl
ZCB0byBhIE5hdGl2ZUltYWdlIHdoZW4gbmVlZGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzI0MTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgdGhlIG5ldyB0eXBlIGNhbGxlZCAnU291cmNlSW1h
Z2UnIHdoaWNoIGlzIGEgdmFyaWFudCBvZiBOYXRpdmVJbWFnZSAKKyAgICAgICAgYW5kIEltYWdl
QnVmZmVyLiBNYWtlIFBhdHRlcm4gaG9sZCBhIFNvdXJjZUltYWdlIGFuZCBwcm92aWRlIGdldHRl
cnMgdG8gCisgICAgICAgIHJldHJpZXZlIHRoZSBOYXRpdmVJbWFnZSBhbmQgSW1hZ2VCdWZmZXIu
IEluIHRoZXNlIGdldHRlcnMgd2UgY29udmVydAorICAgICAgICBmcm9tIGltYWdlIHNvdXJjZSB0
byB0aGUgb3RoZXIuCisKKyAgICAgICAgKiBIZWFkZXJzLmNtYWtlOgorICAgICAgICAqIFNvdXJj
ZXMudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAg
ICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNQYXR0ZXJuLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNhbnZhc1BhdHRlcm46OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNQYXR0ZXJu
OjpDYW52YXNQYXR0ZXJuKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNQYXR0ZXJuLmg6
CisgICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpjcmVhdGVQ
YXR0ZXJuKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvckNhbnZhczo6YnVpbGRBcnJheUZvckNhbnZhc1BhdHRlcm4p
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1BhdHRlcm4uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UGF0dGVybjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlBhdHRlcm46OlBhdHRl
cm4pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1BhdHRlcm4uaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9Tb3VyY2VJbWFnZS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29y
ZTo6U291cmNlSW1hZ2U6OlNvdXJjZUltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUlt
YWdlOjpuYXRpdmVJbWFnZUlmRXhpc3RzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJj
ZUltYWdlOjpuYXRpdmVJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VJbWFnZTo6aW1h
Z2VCdWZmZXJJZkV4aXN0cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VJbWFnZTo6
aW1hZ2VCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlSW1hZ2U6OmltYWdlSWRlbnRp
ZmllciBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlSW1hZ2UuaDog
Q29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0dGVybi5jcHAu
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQ2Fpcm9PcGVyYXRpb25zLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNhaXJvOjpGaWxsU291cmNlOjpGaWxsU291cmNlKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QYXR0ZXJuQ2Fpcm8uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UGF0dGVybjo6Y3JlYXRlUGxhdGZvcm1QYXR0ZXJuIGNvbnN0KToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9QYXR0ZXJuQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UGF0dGVybjo6Y3JlYXRlUGxhdGZvcm1QYXR0ZXJuIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6U2V0U3RhdGU6OmFwcGx5KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oOgorICAgICAgICAoV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6OlNldFN0YXRlOjplbmNvZGUgY29uc3QpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXJJ
bXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlckltcGw6OnJl
Y29yZFJlc291cmNlVXNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3RSZWNvcmRlckltcGwuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6YXBwbHlTZXRTdGF0ZUl0ZW0pOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRkVUaWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFVGlsZTo6cGxh
dGZvcm1BcHBseVNvZnR3YXJlKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNr
aW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnBhdHRlcm5Gb3JEZXNjcmlwdGlvbik6CisgICAg
ICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuOjpidWlsZFBhdHRlcm4pOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuOjpjcmVhdGVUaWxlSW1hZ2Ug
Y29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvU1ZHUmVuZGVyaW5nQ29udGV4dC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTVkdSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGVJbWFnZUJ1ZmZl
cik6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJpbmdDb250ZXh0Lmg6CisKIDIw
MjEtMTEtMTQgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2FpZEBhcHBsZS5jb20+CiAKICAgICAgICAg
W0dQVSBQcm9jZXNzXSBSZW1vdmUgdGhlIHJlZmVyZW5jZSB0byBGaWx0ZXIgZnJvbSBGaWx0ZXJF
ZmZlY3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKaW5kZXggYWY2Nzc1NzUwNDliZjE3ODA1OTQ4ODU2NjkwZGI2MmQxYjQwZWM2
OC4uNjFlY2I0NzVhZWNlZThkNThjOTA3MGNkNWM0N2Q4ZTIxZmFmNGE1MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxOSBAQAorMjAyMS0xMS0xNSAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWlkQGFwcGxl
LmNvbT4KKworICAgICAgICBbR1BVIFByb2Nlc3MgXSBQYXR0ZXJuIHNob3VsZCBob2xkIGFuIElt
YWdlQnVmZmVyIHdoaWNoIGNhbiBiZSBjb252ZXJ0ZWQgdG8gYSBOYXRpdmVJbWFnZSB3aGVuIG5l
ZWRlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMy
NDExCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSGFu
ZGxlIGVuY29kaW5nIGFtZCBkZWNvZGluZyB0aGUgU291cmNlSW1hZ2UgZm9yIHJlY29yZGluZyBh
bmQgcmVwbGF5aW5nCisgICAgICAgIHRoZSBTZXRTdGF0ZSBEaXNwbGF5TGlzdCBpdGVtIGluIEdQ
VVByb2Nlc3MuCisKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZURpc3BsYXlM
aXN0UmVjb3JkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVEaXNwbGF5TGlzdFJlY29y
ZGVyOjpzZXRTdGF0ZVdpdGhRdWFsaWZpZWRJZGVudGlmaWVycyk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlclByb3h5LmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlclByb3h5OjpyZWNvcmRSZXNv
dXJjZVVzZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlRGlzcGxh
eUxpc3RSZWNvcmRlclByb3h5Lmg6CisKIDIwMjEtMTEtMTQgIFNpbW9uIEZyYXNlciAgPHNpbW9u
LmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgQXR0YWNoIElPSElERXZlbnQgdGltZXN0YW1w
cyB0byB3aGVlbCBldmVudHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21h
a2UgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCmluZGV4IDM5MTU3M2YwODI0Y2NkMzQ4
MmRmZDYxN2Y5N2Q2YWE1YjBiN2NlZGMuLjdkNzk5MGU3NmY4N2Y2MTUwZTM0ODQ5ZDExMjU4M2Rl
YzBhMGQxMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKKysrIGIv
U291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQpAQCAtMTM4NCw2ICsxMzg0LDcgQEAgc2V0KFdl
YkNvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1No
b3VsZExvY2FsaXplQXhpc05hbWVzLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9Tb3VyY2VCdWZm
ZXJQcml2YXRlLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9Tb3VyY2VCdWZmZXJQcml2YXRlQ2xp
ZW50LmgKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy9Tb3VyY2VJbWFnZS5oCiAgICAgcGxhdGZvcm0v
Z3JhcGhpY3MvU3RyaW5nVHJ1bmNhdG9yLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9UYWJTaXpl
LmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9UZXh0UnVuLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXggNTRk
OGQzYmQ5ODBlOGI5YjZiODIxZjljY2I0ZmE1MjJlMWJmMWUwMi4uNzI4ZTRkYjE0MjA1MDk2ODI1
MjE3YzEzNmNmNWQwMDAxMGEwOTc2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNl
cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTIwNTksNiArMjA1OSw3
IEBAIHBsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZVZpZGVvU2FtcGxlLmNwcAogcGxhdGZvcm0vZ3Jh
cGhpY3MvUm91bmRlZFJlY3QuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVyLmNwcAog
cGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlQnVmZmVyUHJpdmF0ZS5jcHAKK3BsYXRmb3JtL2dyYXBo
aWNzL1NvdXJjZUltYWdlLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvU3RyaW5nVHJ1bmNhdG9yLmNw
cAogcGxhdGZvcm0vZ3JhcGhpY3MvVGV4dFJ1bi5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL1RleHRU
cmFja1JlcHJlc2VudGF0aW9uLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDk5ODEwZWI4MjAzY2NkYTZiNWM5ZTM4MTYxNGI2
MmJlNmVmMmExY2MuLjdjOTNlZWY1MmU3OTcyNzY5NmYwNjBlNWUxMjgzMDgzZDcxZGUxODIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
QEAgLTIyOTEsNiArMjI5MSw3IEBACiAJCTcxRjA1RjgwMjUxMjQ0MkUwMDcxRTY5MyAvKiBDU1NQ
cm9wZXJ0eUFuaW1hdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNzFGMDVGN0UyNTEyNDQwQzAwNzFFNjkzIC8qIENTU1Byb3BlcnR5QW5pbWF0aW9u
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzIx
NDQzMzMyMjNFQzhCMDAwRjEyRkY3IC8qIFNWR1Byb3BlcnR5LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NUVFNTM2MzIyM0IyQTI0MDBGQkE5NDQgLyog
U1ZHUHJvcGVydHkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk3MjE0NDMzNDIyM0VDOTE2MDBGMTJGRjcgLyogU1ZHUHJvcGVydHlPd25lci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTVFRTUzNjAyMjNC
MkEyMTAwRkJBOTQ0IC8qIFNWR1Byb3BlcnR5T3duZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk3MjE0QjlBOTI3NDJGQjk5MDAzQkU2REYgLyog
U291cmNlSW1hZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDcyMTRCOUE4Mjc0MkY2MjkwMDNCRTZERiAvKiBTb3VyY2VJbWFnZS5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTcyMUI0OTc0MjUxMkJBM0Iw
MEZFOUQzQiAvKiBJbWFnZUJpdG1hcEJhY2tpbmcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyMUI0OTcwMjUxMkFDMDQwMEZFOUQzQiAvKiBJbWFnZUJp
dG1hcEJhY2tpbmcuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk3MjI4M0YwRTIzMEIyNjhDMDBGNUQ4MjggLyogSW1hZ2VQYWludGluZ09wdGlvbnMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyQzE4QTNG
MjMwQjA0QjcwMDY4NDdDNyAvKiBJbWFnZVBhaW50aW5nT3B0aW9ucy5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTcyNEVEMzMyMUEzQThCMjMwMEY1
RjEzQyAvKiBKU0VYVEJsZW5kTWluTWF4LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA3MjRFRDMzMDFBM0E4QjIzMDBGNUYxM0MgLyogSlNFWFRCbGVuZE1p
bk1heC5oICovOyB9OwpAQCAtMTA4NDcsNiArMTA4NDgsOCBAQAogCQk3MUZGODUxODIyQTNGODFG
MDA1RDU5NTkgLyogTmF2aWdhdG9yTWF4VG91Y2hQb2ludHMuaWRsICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsg
cGF0aCA9IE5hdmlnYXRvck1heFRvdWNoUG9pbnRzLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNzIxNDQzNDUyMjQwQzhCQTAwRjEyRkY3IC8qIFNWR0FuaW1hdGVkVmFsdWVQcm9w
ZXJ0eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdBbmltYXRlZFZhbHVlUHJvcGVydHkuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzIxNDQzNDYyMjQwQ0FEMjAwRjEyRkY3IC8qIFNWR1Zh
bHVlUHJvcGVydHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHVmFsdWVQcm9wZXJ0eS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk3MjE0QjlBODI3NDJGNjI5MDAzQkU2REYgLyogU291cmNl
SW1hZ2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU291cmNlSW1hZ2UuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJNzIxNEI5QUMyNzQzNTE0QTAwM0JFNkRGIC8qIFNvdXJjZUltYWdlLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFNvdXJjZUltYWdlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNzIxQjQ5NkYyNTEyQUMwNDAwRkU5RDNCIC8qIEltYWdlQml0bWFwQmFja2luZy5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbWFnZUJpdG1hcEJhY2tpbmcuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk3MjFCNDk3MDI1MTJBQzA0MDBGRTlEM0IgLyogSW1hZ2VCaXRt
YXBCYWNraW5nLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEltYWdlQml0bWFwQmFja2luZy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk3MjJBODE1QzIzOEZENTA1MDBDMDA1ODMgLyogQW5pbWF0
aW9uRnJhbWVSYXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFuaW1hdGlvbkZyYW1lUmF0ZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjgwMzQsNiArMjgwMzcsOCBAQAogCQkJCTFERDEy
N0FDMjU2RTNBODcwMEIyMjdENyAvKiBTb3VyY2VCdWZmZXJQcml2YXRlLmNwcCAqLywKIAkJCQlD
RDY0MUVCMjE4MThGNUVEMDBFRTRDNDEgLyogU291cmNlQnVmZmVyUHJpdmF0ZS5oICovLAogCQkJ
CUNEQzhCNUFDMTgwNEFFNUQwMDE2RTY4NSAvKiBTb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50Lmgg
Ki8sCisJCQkJNzIxNEI5QUMyNzQzNTE0QTAwM0JFNkRGIC8qIFNvdXJjZUltYWdlLmNwcCAqLywK
KwkJCQk3MjE0QjlBODI3NDJGNjI5MDAzQkU2REYgLyogU291cmNlSW1hZ2UuaCAqLywKIAkJCQk3
QzgzREU4NTFEMDRDQkQ0MDBGRUJDRjMgLyogU3ByaW5nU29sdmVyLmggKi8sCiAJCQkJQjIzNTQw
RjAwRDAwNzgyRTAwMjM4MkZBIC8qIFN0cmluZ1RydW5jYXRvci5jcHAgKi8sCiAJCQkJQjIzNTQw
RjEwRDAwNzgyRTAwMjM4MkZBIC8qIFN0cmluZ1RydW5jYXRvci5oICovLApAQCAtMzYxMDksNiAr
MzYxMTQsNyBAQAogCQkJCUNEQzhCNUFCMTgwNDdGRjEwMDE2RTY4NSAvKiBTb3VyY2VCdWZmZXJQ
cml2YXRlQVZGT2JqQy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0RDOEI1QUQxODA0QUU1RDAwMTZF
Njg1IC8qIFNvdXJjZUJ1ZmZlclByaXZhdGVDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTg0
QTgxRjQyMEZDN0UwMjcwMDk1NTMwMCAvKiBTb3VyY2VHcmFwaGljLmggaW4gSGVhZGVycyAqLywK
KwkJCQk3MjE0QjlBOTI3NDJGQjk5MDAzQkU2REYgLyogU291cmNlSW1hZ2UuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUQwMUEyN0FFMTBDOUJGRDgwMDAyNkE0MiAvKiBTcGFjZVNwbGl0U3RyaW5nLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk2MjZDREUwRjExNDA0MjRDMDAxRTVBNjggLyogU3BhdGlhbE5h
dmlnYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTkzNDk1MENEMjUzOTQzNjEwMDk5RjE3MSAv
KiBTcGVlY2hSZWNvZ25pdGlvbi5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNQYXR0ZXJuLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL0NhbnZhc1BhdHRlcm4uY3BwCmluZGV4IDhmMTkzODJjYjIwM2QyZTQxMWJjYTk1
N2E2OTFiMWZhYzk4YTJjYTEuLjYwY2UzZGVhNjFlMjRmYTdiZDQ5ZTI4ZjE3ZTdlNDQ4Y2RiMjA4
MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1BhdHRlcm4u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1BhdHRlcm4uY3BwCkBA
IC0zNCwxMiArMzQsMTIgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZWY8Q2FudmFzUGF0
dGVybj4gQ2FudmFzUGF0dGVybjo6Y3JlYXRlKFJlZjxOYXRpdmVJbWFnZT4mJiBpbWFnZSwgYm9v
bCByZXBlYXRYLCBib29sIHJlcGVhdFksIGJvb2wgb3JpZ2luQ2xlYW4pCitSZWY8Q2FudmFzUGF0
dGVybj4gQ2FudmFzUGF0dGVybjo6Y3JlYXRlKFNvdXJjZUltYWdlJiYgaW1hZ2UsIGJvb2wgcmVw
ZWF0WCwgYm9vbCByZXBlYXRZLCBib29sIG9yaWdpbkNsZWFuKQogewogICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IENhbnZhc1BhdHRlcm4oV1RGTW92ZShpbWFnZSksIHJlcGVhdFgsIHJlcGVhdFks
IG9yaWdpbkNsZWFuKSk7CiB9CiAKLUNhbnZhc1BhdHRlcm46OkNhbnZhc1BhdHRlcm4oUmVmPE5h
dGl2ZUltYWdlPiYmIGltYWdlLCBib29sIHJlcGVhdFgsIGJvb2wgcmVwZWF0WSwgYm9vbCBvcmln
aW5DbGVhbikKK0NhbnZhc1BhdHRlcm46OkNhbnZhc1BhdHRlcm4oU291cmNlSW1hZ2UmJiBpbWFn
ZSwgYm9vbCByZXBlYXRYLCBib29sIHJlcGVhdFksIGJvb2wgb3JpZ2luQ2xlYW4pCiAgICAgOiBt
X3BhdHRlcm4oUGF0dGVybjo6Y3JlYXRlKFdURk1vdmUoaW1hZ2UpLCB7IHJlcGVhdFgsIHJlcGVh
dFkgfSkpCiAgICAgLCBtX29yaWdpbkNsZWFuKG9yaWdpbkNsZWFuKQogewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUGF0dGVybi5oIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvQ2FudmFzUGF0dGVybi5oCmluZGV4IGU0NmQyMWJjNTEzNWQ5YTc0ZjQ1
NzVjOWRkNjVlOWNlY2RjYjhkMmEuLjg3MWUwNDU3N2NjNTFlNTk4MDU3YmVjZTJhYmQ3NWY2NmFj
OTljNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1BhdHRl
cm4uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNQYXR0ZXJuLmgKQEAg
LTMyLDEzICszMiwxMyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIE5hdGl2ZUlt
YWdlOwogY2xhc3MgUGF0dGVybjsKK2NsYXNzIFNvdXJjZUltYWdlOwogc3RydWN0IERPTU1hdHJp
eDJESW5pdDsKIAogY2xhc3MgQ2FudmFzUGF0dGVybiA6IHB1YmxpYyBSZWZDb3VudGVkPENhbnZh
c1BhdHRlcm4+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPENhbnZhc1BhdHRlcm4+IGNyZWF0
ZShSZWY8TmF0aXZlSW1hZ2U+JiYsIGJvb2wgcmVwZWF0WCwgYm9vbCByZXBlYXRZLCBib29sIG9y
aWdpbkNsZWFuKTsKKyAgICBzdGF0aWMgUmVmPENhbnZhc1BhdHRlcm4+IGNyZWF0ZShTb3VyY2VJ
bWFnZSYmLCBib29sIHJlcGVhdFgsIGJvb2wgcmVwZWF0WSwgYm9vbCBvcmlnaW5DbGVhbik7CiAg
ICAgfkNhbnZhc1BhdHRlcm4oKTsKIAogICAgIHN0YXRpYyBib29sIHBhcnNlUmVwZXRpdGlvblR5
cGUoY29uc3QgU3RyaW5nJiwgYm9vbCYgcmVwZWF0WCwgYm9vbCYgcmVwZWF0WSk7CkBAIC01MSw3
ICs1MSw3IEBAIHB1YmxpYzoKICAgICBFeGNlcHRpb25Pcjx2b2lkPiBzZXRUcmFuc2Zvcm0oRE9N
TWF0cml4MkRJbml0JiYpOwogCiBwcml2YXRlOgotICAgIENhbnZhc1BhdHRlcm4oUmVmPE5hdGl2
ZUltYWdlPiYmLCBib29sIHJlcGVhdFgsIGJvb2wgcmVwZWF0WSwgYm9vbCBvcmlnaW5DbGVhbik7
CisgICAgQ2FudmFzUGF0dGVybihTb3VyY2VJbWFnZSYmLCBib29sIHJlcGVhdFgsIGJvb2wgcmVw
ZWF0WSwgYm9vbCBvcmlnaW5DbGVhbik7CiAKICAgICBSZWY8UGF0dGVybj4gbV9wYXR0ZXJuOwog
ICAgIGJvb2wgbV9vcmlnaW5DbGVhbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAKaW5kZXggNmRlZmVi
ODEyYzM3MjJjMzhlYTJmYzhkMDc5MWZhZTI5YjE2MGQ2ZS4uMWUwNjY0N2RkZTdmZmU3MDgxNjA1
YTNhZjcyMGQ5NDRlNTQyMjBlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAKQEAgLTE5OTQsNyAr
MTk5NCw3IEBAIEV4Y2VwdGlvbk9yPFJlZlB0cjxDYW52YXNQYXR0ZXJuPj4gQ2FudmFzUmVuZGVy
aW5nQ29udGV4dDJEQmFzZTo6Y3JlYXRlUGF0dGVybihICiAKICAgICB2aWRlb0VsZW1lbnQucGFp
bnRDdXJyZW50RnJhbWVJbkNvbnRleHQoaW1hZ2VCdWZmZXItPmNvbnRleHQoKSwgRmxvYXRSZWN0
KEZsb2F0UG9pbnQoKSwgc2l6ZSh2aWRlb0VsZW1lbnQpKSk7CiAgICAgCi0gICAgcmV0dXJuIFJl
ZlB0cjxDYW52YXNQYXR0ZXJuPiB7IENhbnZhc1BhdHRlcm46OmNyZWF0ZShJbWFnZUJ1ZmZlcjo6
c2lua0ludG9OYXRpdmVJbWFnZShXVEZNb3ZlKGltYWdlQnVmZmVyKSkucmVsZWFzZU5vbk51bGwo
KSwgcmVwZWF0WCwgcmVwZWF0WSwgb3JpZ2luQ2xlYW4pIH07CisgICAgcmV0dXJuIFJlZlB0cjxD
YW52YXNQYXR0ZXJuPiB7IENhbnZhc1BhdHRlcm46OmNyZWF0ZShpbWFnZUJ1ZmZlci5yZWxlYXNl
Tm9uTnVsbCgpLCByZXBlYXRYLCByZXBlYXRZLCBvcmlnaW5DbGVhbikgfTsKIH0KIAogI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXMuY3BwCmluZGV4IGU4
NDdmZTY4MTEyNzMyNTA2YjFkMDg0NmY2MzNkYWM0Yjk2OWQxNjUuLjAzMTljYzM3ZGYyNWYyYzY2
Zjk2YzI1OTYxMjExNWM4OTM4M2M3N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JDYW52YXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JDYW52YXMuY3BwCkBAIC0xMzM2LDEwICsxMzM2LDcgQEAgUmVmPEpTT046OkFycmF5
T2Y8SlNPTjo6VmFsdWU+PiBJbnNwZWN0b3JDYW52YXM6OmJ1aWxkQXJyYXlGb3JDYW52YXNHcmFk
aWVudChjb24KIAogUmVmPEpTT046OkFycmF5T2Y8SlNPTjo6VmFsdWU+PiBJbnNwZWN0b3JDYW52
YXM6OmJ1aWxkQXJyYXlGb3JDYW52YXNQYXR0ZXJuKGNvbnN0IENhbnZhc1BhdHRlcm4mIGNhbnZh
c1BhdHRlcm4pCiB7Ci0gICAgYXV0byYgdGlsZUltYWdlID0gY2FudmFzUGF0dGVybi5wYXR0ZXJu
KCkudGlsZUltYWdlKCk7Ci0gICAgRmxvYXRSZWN0IHJlY3QgPSB7IHsgfSwgdGlsZUltYWdlLnNp
emUoKSB9OwotICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHRpbGVJ
bWFnZS5zaXplKCksIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEsIERlc3RpbmF0aW9u
Q29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdSQTgpOwotICAgIGltYWdlQnVmZmVy
LT5jb250ZXh0KCkuZHJhd05hdGl2ZUltYWdlKHRpbGVJbWFnZSwgdGlsZUltYWdlLnNpemUoKSwg
cmVjdCwgcmVjdCk7CisgICAgYXV0byBpbWFnZUJ1ZmZlciA9IGNhbnZhc1BhdHRlcm4ucGF0dGVy
bigpLnRpbGVJbWFnZUJ1ZmZlcigpOwogCiAgICAgU3RyaW5nIHJlcGVhdDsKICAgICBib29sIHJl
cGVhdFggPSBjYW52YXNQYXR0ZXJuLnBhdHRlcm4oKS5yZXBlYXRYKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXR0ZXJuLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BhdHRlcm4uY3BwCmluZGV4IDYzNTMyMzc2OWY4MDMzZGUz
MjhlOGQ0NGU1Nzk3NWExZDNjZDYwNjUuLjEwNGIzMDZhM2E4ODEzMDk0YzE3NTMwZGVhZGMxYmVj
N2I3MzAyNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1Bh
dHRlcm4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BhdHRlcm4u
Y3BwCkBAIC0yNywxNiArMjcsMTggQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJQ
YXR0ZXJuLmgiCiAKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJJbWFn
ZS5oIgorI2luY2x1ZGUgIkltYWdlQnVmZmVyLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
UmVmPFBhdHRlcm4+IFBhdHRlcm46OmNyZWF0ZShSZWY8TmF0aXZlSW1hZ2U+JiYgdGlsZUltYWdl
LCBjb25zdCBQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQorUmVmPFBhdHRlcm4+IFBhdHRlcm46OmNy
ZWF0ZShTb3VyY2VJbWFnZSYmIHRpbGVJbWFnZSwgY29uc3QgUGFyYW1ldGVycyYgcGFyYW1ldGVy
cykKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBQYXR0ZXJuKFdURk1vdmUodGlsZUltYWdl
KSwgcGFyYW1ldGVycykpOwogfQogCi1QYXR0ZXJuOjpQYXR0ZXJuKFJlZjxOYXRpdmVJbWFnZT4m
JiBpbWFnZSwgY29uc3QgUGFyYW1ldGVycyYgcGFyYW1ldGVycykKK1BhdHRlcm46OlBhdHRlcm4o
U291cmNlSW1hZ2UmJiBpbWFnZSwgY29uc3QgUGFyYW1ldGVycyYgcGFyYW1ldGVycykKICAgICA6
IG1fdGlsZUltYWdlKFdURk1vdmUoaW1hZ2UpKQogICAgICwgbV9wYXJhbWV0ZXJzKHBhcmFtZXRl
cnMpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXR0
ZXJuLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXR0ZXJuLmgKaW5kZXgg
MWM5NjFmYmY0NmU4MzZmNDAwN2U2MGE5ODE0MWY0OTEyNGI1NDUwMy4uNDYxZGI2YTg4NDVmYmJl
ODY3ZWE1OTZmMjAwZTgyZjg5MGViZmZiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvUGF0dGVybi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL1BhdHRlcm4uaApAQCAtMjgsNyArMjgsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNs
dWRlICJBZmZpbmVUcmFuc2Zvcm0uaCIKLSNpbmNsdWRlICJJbWFnZS5oIgorI2luY2x1ZGUgIlNv
dXJjZUltYWdlLmgiCiAKICNpbmNsdWRlIDx3dGYvUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNv
dW50ZWQuaD4KQEAgLTUyLDcgKzUyLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBB
ZmZpbmVUcmFuc2Zvcm07CiBjbGFzcyBHcmFwaGljc0NvbnRleHQ7Ci1jbGFzcyBJbWFnZTsKIAog
Y2xhc3MgUGF0dGVybiBmaW5hbCA6IHB1YmxpYyBSZWZDb3VudGVkPFBhdHRlcm4+IHsKIHB1Ymxp
YzoKQEAgLTcwLDEwICs2OSwxNCBAQCBwdWJsaWM6CiAgICAgICAgIGJvb2wgcmVwZWF0WTsKICAg
ICB9OwogCi0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxQYXR0ZXJuPiBjcmVhdGUoUmVm
PE5hdGl2ZUltYWdlPiYmIHRpbGVJbWFnZSwgY29uc3QgUGFyYW1ldGVycyYgPSB7IH0pOworICAg
IFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8UGF0dGVybj4gY3JlYXRlKFNvdXJjZUltYWdlJiYg
dGlsZUltYWdlLCBjb25zdCBQYXJhbWV0ZXJzJiA9IHsgfSk7CiAgICAgV0VCQ09SRV9FWFBPUlQg
flBhdHRlcm4oKTsKIAotICAgIE5hdGl2ZUltYWdlJiB0aWxlSW1hZ2UoKSBjb25zdCB7IHJldHVy
biBtX3RpbGVJbWFnZS5nZXQoKTsgfQorICAgIFNvdXJjZUltYWdlJiB0aWxlSW1hZ2UoKSBjb25z
dCB7IHJldHVybiBtX3RpbGVJbWFnZTsgfQorICAgIE5hdGl2ZUltYWdlKiB0aWxlTmF0aXZlSW1h
Z2UoKSBjb25zdCB7IHJldHVybiBtX3RpbGVJbWFnZS5uYXRpdmVJbWFnZSgpOyB9CisgICAgSW1h
Z2VCdWZmZXIqIHRpbGVJbWFnZUJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fdGlsZUltYWdlLmlt
YWdlQnVmZmVyKCk7IH0KKyAgICBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgdGlsZUltYWdl
SWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fdGlsZUltYWdlLmltYWdlSWRlbnRpZmllcigp
OyB9CisKICAgICBjb25zdCBQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKCkgY29uc3QgeyByZXR1cm4g
bV9wYXJhbWV0ZXJzOyB9CiAKICAgICAvLyBQYXR0ZXJuIHNwYWNlIGlzIGFuIGFic3RyYWN0IHNw
YWNlIHRoYXQgbWFwcyB0byB0aGUgZGVmYXVsdCB1c2VyIHNwYWNlIGJ5IHRoZSB0cmFuc2Zvcm1h
dGlvbiAndXNlclNwYWNlVHJhbnNmb3JtJwpAQCAtODgsOSArOTEsOSBAQCBwdWJsaWM6CiAgICAg
Ym9vbCByZXBlYXRZKCkgY29uc3QgeyByZXR1cm4gbV9wYXJhbWV0ZXJzLnJlcGVhdFk7IH0KIAog
cHJpdmF0ZToKLSAgICBQYXR0ZXJuKFJlZjxOYXRpdmVJbWFnZT4mJiwgY29uc3QgUGFyYW1ldGVy
cyYpOworICAgIFBhdHRlcm4oU291cmNlSW1hZ2UmJiwgY29uc3QgUGFyYW1ldGVycyYpOwogCi0g
ICAgUmVmPE5hdGl2ZUltYWdlPiBtX3RpbGVJbWFnZTsKKyAgICBtdXRhYmxlIFNvdXJjZUltYWdl
IG1fdGlsZUltYWdlOwogICAgIFBhcmFtZXRlcnMgbV9wYXJhbWV0ZXJzOwogfTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlSW1hZ2UuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlSW1hZ2UuY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjFjMjVhNmE4ZDcxM2YzMTVhYzNkYzljYTQ5ZWU0YWVmNTEzZTY4NTgKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Tb3VyY2VJbWFnZS5jcHAK
QEAgLTAsMCArMSwxMDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiAg
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlNvdXJjZUltYWdlLmgiCisK
KyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitT
b3VyY2VJbWFnZTo6U291cmNlSW1hZ2UoUmVmPE5hdGl2ZUltYWdlPiYmIG5hdGl2ZUltYWdlKQor
ICAgIDogbV9pbWFnZShXVEZNb3ZlKG5hdGl2ZUltYWdlKSkKK3sKK30KKworU291cmNlSW1hZ2U6
OlNvdXJjZUltYWdlKFJlZjxJbWFnZUJ1ZmZlcj4mJiBpbWFnZUJ1ZmZlcikKKyAgICA6IG1faW1h
Z2UoV1RGTW92ZShpbWFnZUJ1ZmZlcikpCit7Cit9CisKK05hdGl2ZUltYWdlKiBTb3VyY2VJbWFn
ZTo6bmF0aXZlSW1hZ2VJZkV4aXN0cygpIGNvbnN0Cit7CisgICAgaWYgKGF1dG8qIG5hdGl2ZUlt
YWdlID0gc3RkOjpnZXRfaWY8UmVmPE5hdGl2ZUltYWdlPj4oJm1faW1hZ2UpKQorICAgICAgICBy
ZXR1cm4gbmF0aXZlSW1hZ2UtPnB0cigpOworICAgIHJldHVybiBudWxscHRyOworfQorCitOYXRp
dmVJbWFnZSogU291cmNlSW1hZ2U6Om5hdGl2ZUltYWdlKCkKK3sKKyAgICBpZiAoYXV0byogbmF0
aXZlSW1hZ2UgPSBuYXRpdmVJbWFnZUlmRXhpc3RzKCkpCisgICAgICAgIHJldHVybiBuYXRpdmVJ
bWFnZTsKKworICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBzdGQ6OmdldDxSZWY8SW1hZ2VCdWZmZXI+
PihtX2ltYWdlKTsKKworICAgIGF1dG8gbmF0aXZlSW1hZ2UgPSBJbWFnZUJ1ZmZlcjo6c2lua0lu
dG9OYXRpdmVJbWFnZShXVEZNb3ZlKGltYWdlQnVmZmVyKSk7CisgICAgaWYgKCFuYXRpdmVJbWFn
ZSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBtX2ltYWdlID0gbmF0aXZlSW1hZ2Uu
cmVsZWFzZU5vbk51bGwoKTsKKyAgICByZXR1cm4gbmF0aXZlSW1hZ2VJZkV4aXN0cygpOworfQor
CitJbWFnZUJ1ZmZlciogU291cmNlSW1hZ2U6OmltYWdlQnVmZmVySWZFeGlzdHMoKSBjb25zdAor
eworICAgIGlmIChhdXRvKiBpbWFnZUJ1ZmZlciA9IHN0ZDo6Z2V0X2lmPFJlZjxJbWFnZUJ1ZmZl
cj4+KCZtX2ltYWdlKSkKKyAgICAgICAgcmV0dXJuIGltYWdlQnVmZmVyLT5wdHIoKTsKKyAgICBy
ZXR1cm4gbnVsbHB0cjsKK30KKworSW1hZ2VCdWZmZXIqIFNvdXJjZUltYWdlOjppbWFnZUJ1ZmZl
cigpCit7CisgICAgaWYgKGF1dG8qIGltYWdlQnVmZmVyID0gaW1hZ2VCdWZmZXJJZkV4aXN0cygp
KQorICAgICAgICByZXR1cm4gaW1hZ2VCdWZmZXI7CisKKyAgICBhdXRvIG5hdGl2ZUltYWdlID0g
c3RkOjpnZXQ8UmVmPE5hdGl2ZUltYWdlPj4obV9pbWFnZSk7CisKKyAgICBGbG9hdFJlY3QgcmVj
dCA9IHsgeyB9LCBuYXRpdmVJbWFnZS0+c2l6ZSgpIH07CisgICAgYXV0byBpbWFnZUJ1ZmZlciA9
IEltYWdlQnVmZmVyOjpjcmVhdGUobmF0aXZlSW1hZ2UtPnNpemUoKSwgUmVuZGVyaW5nTW9kZTo6
VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9y
bWF0OjpCR1JBOCk7CisgICAgaWYgKCFpbWFnZUJ1ZmZlcikKKyAgICAgICAgcmV0dXJuIG51bGxw
dHI7CisKKyAgICBpbWFnZUJ1ZmZlci0+Y29udGV4dCgpLmRyYXdOYXRpdmVJbWFnZShuYXRpdmVJ
bWFnZSwgbmF0aXZlSW1hZ2UtPnNpemUoKSwgcmVjdCwgcmVjdCk7CisKKyAgICBtX2ltYWdlID0g
aW1hZ2VCdWZmZXIucmVsZWFzZU5vbk51bGwoKTsKKyAgICByZXR1cm4gaW1hZ2VCdWZmZXJJZkV4
aXN0cygpOworfQorCitSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgU291cmNlSW1hZ2U6Omlt
YWdlSWRlbnRpZmllcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIFdURjo6c3dpdGNoT24obV9pbWFn
ZSwKKyAgICAgICAgWyZdIChjb25zdCBSZWY8TmF0aXZlSW1hZ2U+JiBuYXRpdmVJbWFnZSkgewor
ICAgICAgICAgICAgcmV0dXJuIG5hdGl2ZUltYWdlLT5yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXIoKTsKKyAgICAgICAgfSwKKyAgICAgICAgWyZdIChjb25zdCBSZWY8SW1hZ2VCdWZmZXI+JiBp
bWFnZUJ1ZmZlcikgeworICAgICAgICAgICAgcmV0dXJuIGltYWdlQnVmZmVyLT5yZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXIoKTsKKyAgICAgICAgfQorICAgICk7Cit9CisKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L1NvdXJjZUltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Tb3VyY2VJ
bWFnZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjYxZWRlMTVkOTk5MjhkYTQwMTBiZTg5OGU2Y2U0YjdmNTcyYTUy
MDgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9T
b3VyY2VJbWFnZS5oCkBAIC0wLDAgKzEsNTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEg
QXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJJbWFnZUJ1ZmZl
ci5oIgorI2luY2x1ZGUgIk5hdGl2ZUltYWdlLmgiCisjaW5jbHVkZSAiUmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaWVyLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgV0VCQ09SRV9F
WFBPUlQgU291cmNlSW1hZ2UgeworcHVibGljOgorICAgIFNvdXJjZUltYWdlKFJlZjxOYXRpdmVJ
bWFnZT4mJik7CisgICAgU291cmNlSW1hZ2UoUmVmPEltYWdlQnVmZmVyPiYmKTsKKworICAgIE5h
dGl2ZUltYWdlKiBuYXRpdmVJbWFnZUlmRXhpc3RzKCkgY29uc3Q7CisgICAgTmF0aXZlSW1hZ2Uq
IG5hdGl2ZUltYWdlKCk7CisKKyAgICBJbWFnZUJ1ZmZlciogaW1hZ2VCdWZmZXJJZkV4aXN0cygp
IGNvbnN0OworICAgIEltYWdlQnVmZmVyKiBpbWFnZUJ1ZmZlcigpOworCisgICAgUmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyIGltYWdlSWRlbnRpZmllcigpIGNvbnN0OworCitwcml2YXRlOgor
ICAgIHVzaW5nIEltYWdlID0gc3RkOjp2YXJpYW50PFJlZjxOYXRpdmVJbWFnZT4sIFJlZjxJbWFn
ZUJ1ZmZlcj4+OworICAgIEltYWdlIG1faW1hZ2U7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9D
YWlyb09wZXJhdGlvbnMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vQ2Fpcm9PcGVyYXRpb25zLmNwcAppbmRleCAxNTUyMzU2YTIzYTVmZGZiMTBhZmVjYTJjYzky
YTcyNzk0NTgxMDJlLi45YWU2NDM0MmIxODRkNThhZmU3Yjc0MjdhZDUzNzI2YWFlY2FjZWZhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9DYWlyb09w
ZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJv
L0NhaXJvT3BlcmF0aW9ucy5jcHAKQEAgLTU2Miw4ICs1NjIsOCBAQCBGaWxsU291cmNlOjpGaWxs
U291cmNlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSkKICAgICBpZiAoc3RhdGUu
ZmlsbFBhdHRlcm4pIHsKICAgICAgICAgcGF0dGVybi5vYmplY3QgPSBhZG9wdFJlZihzdGF0ZS5m
aWxsUGF0dGVybi0+Y3JlYXRlUGxhdGZvcm1QYXR0ZXJuKEFmZmluZVRyYW5zZm9ybSgpKSk7CiAK
LSAgICAgICAgYXV0byYgcGF0dGVybkltYWdlID0gc3RhdGUuZmlsbFBhdHRlcm4tPnRpbGVJbWFn
ZSgpOwotICAgICAgICBwYXR0ZXJuLnNpemUgPSBwYXR0ZXJuSW1hZ2Uuc2l6ZSgpOworICAgICAg
ICBpZiAoYXV0byBwYXR0ZXJuSW1hZ2UgPSBzdGF0ZS5maWxsUGF0dGVybi0+dGlsZU5hdGl2ZUlt
YWdlKCkpCisgICAgICAgICAgICBwYXR0ZXJuLnNpemUgPSBwYXR0ZXJuSW1hZ2UtPnNpemUoKTsK
ICAgICAgICAgcGF0dGVybi50cmFuc2Zvcm0gPSBzdGF0ZS5maWxsUGF0dGVybi0+cGF0dGVyblNw
YWNlVHJhbnNmb3JtKCk7CiAgICAgICAgIHBhdHRlcm4ucmVwZWF0WCA9IHN0YXRlLmZpbGxQYXR0
ZXJuLT5yZXBlYXRYKCk7CiAgICAgICAgIHBhdHRlcm4ucmVwZWF0WSA9IHN0YXRlLmZpbGxQYXR0
ZXJuLT5yZXBlYXRZKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYWlyby9QYXR0ZXJuQ2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vUGF0dGVybkNhaXJvLmNwcAppbmRleCA2OGRhYmFmOThhY2E5ZDFjZmI3MWUx
NjUyMmI5ZGViMjU4MDdmZjFmLi5hM2ZjZDY4ZmY4YjdjZDk2ZDQ0ZTJmNTdhOTRhMzllOTM3MWFj
MTlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Q
YXR0ZXJuQ2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
aXJvL1BhdHRlcm5DYWlyby5jcHAKQEAgLTM1LDcgKzM1LDExIEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogY2Fpcm9fcGF0dGVybl90KiBQYXR0ZXJuOjpjcmVhdGVQbGF0Zm9ybVBhdHRlcm4oY29u
c3QgQWZmaW5lVHJhbnNmb3JtJikgY29uc3QKIHsKLSAgICBhdXRvIHBsYXRmb3JtSW1hZ2UgPSB0
aWxlSW1hZ2UoKS5wbGF0Zm9ybUltYWdlKCk7CisgICAgYXV0byBuYXRpdmVJbWFnZSA9IHRpbGVO
YXRpdmVJbWFnZSgpOworICAgIGlmICghbmF0aXZlSW1hZ2UpCisgICAgICAgIHJldHVybiBudWxs
cHRyOworCisgICAgYXV0byBwbGF0Zm9ybUltYWdlID0gbmF0aXZlSW1hZ2UtPnBsYXRmb3JtSW1h
Z2UoKTsKICAgICBpZiAoIXBsYXRmb3JtSW1hZ2UpCiAgICAgICAgIHJldHVybiBudWxscHRyOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QYXR0ZXJu
Q0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGF0dGVybkNHLmNw
cAppbmRleCAwNWEzOTE2NTQwYmI3NmRhM2YwYWJhYTMzOTRmYzhkZDA4OGM4ZGE5Li5kNDVmYTky
Y2M1NGNjZDhmZTE4NzI1ZTZjZjdmMDMwNWViOGNiZmFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QYXR0ZXJuQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BhdHRlcm5DRy5jcHAKQEAgLTU1LDEzICs1NSwxNyBA
QCBzdGF0aWMgdm9pZCBwYXR0ZXJuUmVsZWFzZUNhbGxiYWNrKHZvaWQqIGluZm8pCiAKIFJldGFp
blB0cjxDR1BhdHRlcm5SZWY+IFBhdHRlcm46OmNyZWF0ZVBsYXRmb3JtUGF0dGVybihjb25zdCBB
ZmZpbmVUcmFuc2Zvcm0mIHVzZXJTcGFjZVRyYW5zZm9ybSkgY29uc3QKIHsKLSAgICBGbG9hdFJl
Y3QgdGlsZVJlY3QgPSB7IHsgfSwgdGlsZUltYWdlKCkuc2l6ZSgpIH07CisgICAgYXV0byBuYXRp
dmVJbWFnZSA9IHRpbGVOYXRpdmVJbWFnZSgpOworICAgIGlmICghbmF0aXZlSW1hZ2UpCisgICAg
ICAgIHJldHVybiBudWxscHRyOworICAgIAorICAgIEZsb2F0UmVjdCB0aWxlUmVjdCA9IHsgeyB9
LCBuYXRpdmVJbWFnZS0+c2l6ZSgpIH07CiAKICAgICBBZmZpbmVUcmFuc2Zvcm0gcGF0dGVyblRy
YW5zZm9ybSA9IHVzZXJTcGFjZVRyYW5zZm9ybSAqIHBhdHRlcm5TcGFjZVRyYW5zZm9ybSgpOwog
ICAgIHBhdHRlcm5UcmFuc2Zvcm0uc2NhbGVOb25Vbmlmb3JtKDEsIC0xKTsKICAgICBwYXR0ZXJu
VHJhbnNmb3JtLnRyYW5zbGF0ZSgwLCAtdGlsZVJlY3QuaGVpZ2h0KCkpOwogCi0gICAgUGxhdGZv
cm1JbWFnZVB0ciBwbGF0Zm9ybUltYWdlID0gdGlsZUltYWdlKCkucGxhdGZvcm1JbWFnZSgpOwor
ICAgIFBsYXRmb3JtSW1hZ2VQdHIgcGxhdGZvcm1JbWFnZSA9IG5hdGl2ZUltYWdlLT5wbGF0Zm9y
bUltYWdlKCk7CiAgICAgaWYgKCFwbGF0Zm9ybUltYWdlKQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwCmluZGV4IGU3MjZkOTRmMzAw
NTAwMjMxMmJjNjQyYjMwMTVlY2JhZTMxNDg0OGMuLmJlM2YxYzRiYTFjOThhNjI3MDYzZjEwM2My
ZDM1ZDg4MTgwOTU4ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHAKQEAg
LTE1OSwxMiArMTU5LDEyIEBAIFNldFN0YXRlOjpTZXRTdGF0ZShjb25zdCBHcmFwaGljc0NvbnRl
eHRTdGF0ZUNoYW5nZSYgc3RhdGVDaGFuZ2UsIGNvbnN0IFBhdHRlcm5ECiB7CiB9CiAKLXZvaWQg
U2V0U3RhdGU6OmFwcGx5KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgTmF0aXZlSW1hZ2UqIHN0
cm9rZVBhdHRlcm5JbWFnZSwgTmF0aXZlSW1hZ2UqIGZpbGxQYXR0ZXJuSW1hZ2UpCit2b2lkIFNl
dFN0YXRlOjphcHBseShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIHN0ZDo6b3B0aW9uYWw8U291
cmNlSW1hZ2U+JiYgc3Ryb2tlUGF0dGVybkltYWdlLCBzdGQ6Om9wdGlvbmFsPFNvdXJjZUltYWdl
PiYmIGZpbGxQYXR0ZXJuSW1hZ2UpCiB7CiAgICAgaWYgKG1fc3RhdGVDaGFuZ2UubV9jaGFuZ2VG
bGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlUGF0dGVybkNoYW5nZSkg
JiYgc3Ryb2tlUGF0dGVybkltYWdlKQotICAgICAgICBtX3N0YXRlQ2hhbmdlLm1fc3RhdGUuc3Ry
b2tlUGF0dGVybiA9IFBhdHRlcm46OmNyZWF0ZSgqc3Ryb2tlUGF0dGVybkltYWdlLCBtX3N0cm9r
ZVBhdHRlcm4ucGFyYW1ldGVycyk7CisgICAgICAgIG1fc3RhdGVDaGFuZ2UubV9zdGF0ZS5zdHJv
a2VQYXR0ZXJuID0gUGF0dGVybjo6Y3JlYXRlKFdURk1vdmUoKnN0cm9rZVBhdHRlcm5JbWFnZSks
IG1fc3Ryb2tlUGF0dGVybi5wYXJhbWV0ZXJzKTsKICAgICBpZiAobV9zdGF0ZUNoYW5nZS5tX2No
YW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpGaWxsUGF0dGVybkNoYW5n
ZSkgJiYgZmlsbFBhdHRlcm5JbWFnZSkKLSAgICAgICAgbV9zdGF0ZUNoYW5nZS5tX3N0YXRlLmZp
bGxQYXR0ZXJuID0gUGF0dGVybjo6Y3JlYXRlKCpmaWxsUGF0dGVybkltYWdlLCBtX2ZpbGxQYXR0
ZXJuLnBhcmFtZXRlcnMpOworICAgICAgICBtX3N0YXRlQ2hhbmdlLm1fc3RhdGUuZmlsbFBhdHRl
cm4gPSBQYXR0ZXJuOjpjcmVhdGUoV1RGTW92ZSgqZmlsbFBhdHRlcm5JbWFnZSksIG1fZmlsbFBh
dHRlcm4ucGFyYW1ldGVycyk7CiAgICAgbV9zdGF0ZUNoYW5nZS5hcHBseShjb250ZXh0KTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0Rpc3BsYXlMaXN0SXRlbXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmgKaW5kZXggY2ViZjM2OWJmYTJlZjBmNjdm
MTMxZmI4NTIzNmU5YWE4OTdkNDQ4MC4uOGE4ZGNjZWMyYjA1YTc2YjIxOWI5ODE2NzgyZmYzOGI1
MDhhNTRmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlz
cGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oCkBAIC0yNTcsNyArMjU3
LDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVu
Y29kZXImKSBjb25zdDsKICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpv
cHRpb25hbDxTZXRTdGF0ZT4gZGVjb2RlKERlY29kZXImKTsKIAotICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgYXBwbHkoR3JhcGhpY3NDb250ZXh0JiwgTmF0aXZlSW1hZ2UqIHN0cm9rZVBhdHRlcm5J
bWFnZSwgTmF0aXZlSW1hZ2UqIGZpbGxQYXR0ZXJuSW1hZ2UpOworICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgYXBwbHkoR3JhcGhpY3NDb250ZXh0Jiwgc3RkOjpvcHRpb25hbDxTb3VyY2VJbWFnZT4m
JiBzdHJva2VQYXR0ZXJuSW1hZ2UsIHN0ZDo6b3B0aW9uYWw8U291cmNlSW1hZ2U+JiYgZmlsbFBh
dHRlcm5JbWFnZSk7CiAKIHByaXZhdGU6CiAgICAgc3RydWN0IFBhdHRlcm5EYXRhIHsKQEAgLTI4
Nyw3ICsyODcsNyBAQCB2b2lkIFNldFN0YXRlOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29u
c3QKIAogICAgIGlmIChjaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6
U3Ryb2tlUGF0dGVybkNoYW5nZSkpIHsKICAgICAgICAgQVNTRVJUKHN0YXRlLnN0cm9rZVBhdHRl
cm4pOwotICAgICAgICBlbmNvZGVyIDw8IHN0YXRlLnN0cm9rZVBhdHRlcm4tPnRpbGVJbWFnZSgp
LnJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcigpOworICAgICAgICBlbmNvZGVyIDw8IHN0YXRl
LnN0cm9rZVBhdHRlcm4tPnRpbGVJbWFnZUlkZW50aWZpZXIoKTsKICAgICAgICAgZW5jb2RlciA8
PCBzdGF0ZS5zdHJva2VQYXR0ZXJuLT5wYXJhbWV0ZXJzKCk7CiAgICAgfQogCkBAIC0yOTgsNyAr
Mjk4LDcgQEAgdm9pZCBTZXRTdGF0ZTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAK
ICAgICBpZiAoY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkZpbGxQ
YXR0ZXJuQ2hhbmdlKSkgewogICAgICAgICBBU1NFUlQoc3RhdGUuZmlsbFBhdHRlcm4pOwotICAg
ICAgICBlbmNvZGVyIDw8IHN0YXRlLmZpbGxQYXR0ZXJuLT50aWxlSW1hZ2UoKS5yZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXIoKTsKKyAgICAgICAgZW5jb2RlciA8PCBzdGF0ZS5maWxsUGF0dGVy
bi0+dGlsZUltYWdlSWRlbnRpZmllcigpOwogICAgICAgICBlbmNvZGVyIDw8IHN0YXRlLmZpbGxQ
YXR0ZXJuLT5wYXJhbWV0ZXJzKCk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
UmVjb3JkZXIuaAppbmRleCA5YTQwMTQzNjdkYjFlZjQzYjhhNTllNTBlM2Q0NzEwZjkzZTAzZWJm
Li4xNGE4NjUxMmI3YmIwYmRlZjE4NmQwOWEzODQ5OTNjNTY0ZmFiYWY3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RS
ZWNvcmRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmgKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJH
cmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJJbWFnZS5oIiAvLyBGb3IgSW1hZ2U6OlRpbGVS
dWxlLgogI2luY2x1ZGUgIklubGluZVBhdGhEYXRhLmgiCisjaW5jbHVkZSAiU291cmNlSW1hZ2Uu
aCIKICNpbmNsdWRlICJUZXh0RmxhZ3MuaCIKICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4K
IApAQCAtMTM2LDggKzEzNyw5IEBAIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIHZvaWQgcmVjb3Jk
QXBwbHlEZXZpY2VTY2FsZUZhY3RvcihmbG9hdCkgPSAwOwogCiAgICAgdmlydHVhbCB2b2lkIHJl
Y29yZFJlc291cmNlVXNlKE5hdGl2ZUltYWdlJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCByZWNv
cmRSZXNvdXJjZVVzZShGb250JikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCByZWNvcmRSZXNvdXJj
ZVVzZShJbWFnZUJ1ZmZlciYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVjb3JkUmVzb3VyY2VV
c2UoU291cmNlSW1hZ2UmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlY29yZFJlc291cmNlVXNl
KEZvbnQmKSA9IDA7CiAKICAgICAvLyBGSVhNRTogTWF5YmUgcmVtb3ZlIHRoaXM/CiAgICAgdmly
dHVhbCBib29sIGNhbkRyYXdJbWFnZUJ1ZmZlcihjb25zdCBJbWFnZUJ1ZmZlciYpIGNvbnN0ID0g
MDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdFJlY29yZGVySW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlckltcGwuY3BwCmluZGV4
IGE1ZTJkM2IyMDk4NWUzZWY5NDFhMzIzNTc1NmUyODBlYWNkNTE2M2MuLmQ2YmY2ZmI2MTc3NjE1
NWVmMzM1ZTk1ZDg1ZmE0NDAwNGJkODc0YTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVySW1wbC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3Bs
YXlMaXN0UmVjb3JkZXJJbXBsLmNwcApAQCAtNDEyLDI1ICs0MTIsMzcgQEAgdm9pZCBSZWNvcmRl
ckltcGw6OnJlY29yZEFwcGx5RGV2aWNlU2NhbGVGYWN0b3IoZmxvYXQgc2NhbGVGYWN0b3IpCiAg
ICAgYXBwZW5kPEFwcGx5RGV2aWNlU2NhbGVGYWN0b3I+KHNjYWxlRmFjdG9yKTsKIH0KIAotdm9p
ZCBSZWNvcmRlckltcGw6OnJlY29yZFJlc291cmNlVXNlKE5hdGl2ZUltYWdlJiBpbWFnZSkKK3Zv
aWQgUmVjb3JkZXJJbXBsOjpyZWNvcmRSZXNvdXJjZVVzZShOYXRpdmVJbWFnZSYgbmF0aXZlSW1h
Z2UpCiB7CiAgICAgaWYgKG1fZGVsZWdhdGUpCi0gICAgICAgIG1fZGVsZWdhdGUtPnJlY29yZE5h
dGl2ZUltYWdlVXNlKGltYWdlKTsKLSAgICBtX2Rpc3BsYXlMaXN0LmNhY2hlTmF0aXZlSW1hZ2Uo
aW1hZ2UpOworICAgICAgICBtX2RlbGVnYXRlLT5yZWNvcmROYXRpdmVJbWFnZVVzZShuYXRpdmVJ
bWFnZSk7CisgICAgbV9kaXNwbGF5TGlzdC5jYWNoZU5hdGl2ZUltYWdlKG5hdGl2ZUltYWdlKTsK
IH0KIAotdm9pZCBSZWNvcmRlckltcGw6OnJlY29yZFJlc291cmNlVXNlKEZvbnQmIGZvbnQpCit2
b2lkIFJlY29yZGVySW1wbDo6cmVjb3JkUmVzb3VyY2VVc2UoSW1hZ2VCdWZmZXImIGltYWdlQnVm
ZmVyKQogewogICAgIGlmIChtX2RlbGVnYXRlKQotICAgICAgICBtX2RlbGVnYXRlLT5yZWNvcmRG
b250VXNlKGZvbnQpOwotICAgIG1fZGlzcGxheUxpc3QuY2FjaGVGb250KGZvbnQpOworICAgICAg
ICBtX2RlbGVnYXRlLT5yZWNvcmRJbWFnZUJ1ZmZlclVzZShpbWFnZUJ1ZmZlcik7CisgICAgbV9k
aXNwbGF5TGlzdC5jYWNoZUltYWdlQnVmZmVyKGltYWdlQnVmZmVyKTsKIH0KIAotdm9pZCBSZWNv
cmRlckltcGw6OnJlY29yZFJlc291cmNlVXNlKEltYWdlQnVmZmVyJiBpbWFnZUJ1ZmZlcikKK3Zv
aWQgUmVjb3JkZXJJbXBsOjpyZWNvcmRSZXNvdXJjZVVzZShTb3VyY2VJbWFnZSYgaW1hZ2UpCit7
CisgICAgYXV0byBpbWFnZUJ1ZmZlciA9IGltYWdlLmltYWdlQnVmZmVySWZFeGlzdHMoKTsKKyAg
ICBpZiAoaW1hZ2VCdWZmZXIgJiYgY2FuRHJhd0ltYWdlQnVmZmVyKCppbWFnZUJ1ZmZlcikpIHsK
KyAgICAgICAgcmVjb3JkUmVzb3VyY2VVc2UoKmltYWdlQnVmZmVyKTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKworICAgIGlmIChhdXRvIG5hdGl2ZUltYWdlID0gaW1hZ2UubmF0aXZlSW1hZ2Uo
KSkKKyAgICAgICAgcmVjb3JkUmVzb3VyY2VVc2UoKm5hdGl2ZUltYWdlKTsKK30KKwordm9pZCBS
ZWNvcmRlckltcGw6OnJlY29yZFJlc291cmNlVXNlKEZvbnQmIGZvbnQpCiB7CiAgICAgaWYgKG1f
ZGVsZWdhdGUpCi0gICAgICAgIG1fZGVsZWdhdGUtPnJlY29yZEltYWdlQnVmZmVyVXNlKGltYWdl
QnVmZmVyKTsKLSAgICBtX2Rpc3BsYXlMaXN0LmNhY2hlSW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXIp
OworICAgICAgICBtX2RlbGVnYXRlLT5yZWNvcmRGb250VXNlKGZvbnQpOworICAgIG1fZGlzcGxh
eUxpc3QuY2FjaGVGb250KGZvbnQpOwogfQogCiAvLyBGSVhNRTogc2hhcmUgd2l0aCBTaGFkb3dE
YXRhCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5
bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlckltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVySW1wbC5oCmluZGV4IDNl
NmQwOTAyNjkwNDZmMWIxMjRhMzljMWUxMjExMDBiMzI3MjYwYzUuLjI5OWEzYmYzZmEyYzMxMWVj
ODQ5MzczZDBjMWZjODNiYjFmMTE4MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVySW1wbC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dFJlY29yZGVySW1wbC5oCkBAIC0xMzQsOCArMTM0LDkgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJl
Y29yZEFwcGx5RGV2aWNlU2NhbGVGYWN0b3IoZmxvYXQpIGZpbmFsOwogCiAgICAgdm9pZCByZWNv
cmRSZXNvdXJjZVVzZShOYXRpdmVJbWFnZSYpIGZpbmFsOwotICAgIHZvaWQgcmVjb3JkUmVzb3Vy
Y2VVc2UoRm9udCYpIGZpbmFsOwogICAgIHZvaWQgcmVjb3JkUmVzb3VyY2VVc2UoSW1hZ2VCdWZm
ZXImKSBmaW5hbDsKKyAgICB2b2lkIHJlY29yZFJlc291cmNlVXNlKFNvdXJjZUltYWdlJikgZmlu
YWw7CisgICAgdm9pZCByZWNvcmRSZXNvdXJjZVVzZShGb250JikgZmluYWw7CiAKICAgICBzdGQ6
OnVuaXF1ZV9wdHI8R3JhcGhpY3NDb250ZXh0PiBjcmVhdGVOZXN0ZWRDb250ZXh0KGNvbnN0IEZs
b2F0UmVjdCYgaW5pdGlhbENsaXAsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgaW5pdGlhbENUTSkg
ZmluYWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rp
c3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmNwcAppbmRleCA5
NDFjMjA5M2NmNTZmMjIyMTEzYWJmMDAzZWQwOWYyYzg1MzNiNjU1Li4zMjVkODE5ZDY0Mjk0MzYz
ZjhiNzFhYzIyMGIzZGMxZWU1YjU3NDgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
UmVwbGF5ZXIuY3BwCkBAIC04NSwyNCArODUsMjkgQEAgaW5saW5lIHN0YXRpYyBzdGQ6Om9wdGlv
bmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4gYXBwbHlTZXRTdGF0ZUl0ZW0oR3JhcGgK
IHsKICAgICBhdXRvJiBzZXRTdGF0ZUl0ZW0gPSBpdGVtLmdldDxTZXRTdGF0ZT4oKTsKIAotICAg
IFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBzdHJva2VQYXR0ZXJuUmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaWVyOwotICAgIE5hdGl2ZUltYWdlKiBzdHJva2VQYXR0ZXJuSW1hZ2UgPSBudWxs
cHRyOwotICAgIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBmaWxsUGF0dGVyblJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllcjsKLSAgICBOYXRpdmVJbWFnZSogZmlsbFBhdHRlcm5JbWFnZSA9
IG51bGxwdHI7Ci0KLSAgICBpZiAoKHN0cm9rZVBhdHRlcm5SZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXIgPSBzZXRTdGF0ZUl0ZW0uc3Ryb2tlUGF0dGVybkltYWdlSWRlbnRpZmllcigpKSkgewot
ICAgICAgICBzdHJva2VQYXR0ZXJuSW1hZ2UgPSByZXNvdXJjZUhlYXAuZ2V0TmF0aXZlSW1hZ2Uo
c3Ryb2tlUGF0dGVyblJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7Ci0gICAgICAgIGlmICgh
c3Ryb2tlUGF0dGVybkltYWdlKQotICAgICAgICAgICAgcmV0dXJuIHN0cm9rZVBhdHRlcm5SZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI7Ci0gICAgfQorICAgIGF1dG8gY2FjaGVkU291cmNlSW1h
Z2UgPSBbJl0oUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHBhdHRlcm5JbWFnZUlkZW50aWZp
ZXIpIC0+IHN0ZDo6b3B0aW9uYWw8U291cmNlSW1hZ2U+IHsKKyAgICAgICAgaWYgKCFwYXR0ZXJu
SW1hZ2VJZGVudGlmaWVyKQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAg
IGlmICgoZmlsbFBhdHRlcm5SZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgPSBzZXRTdGF0ZUl0
ZW0uZmlsbFBhdHRlcm5JbWFnZUlkZW50aWZpZXIoKSkpIHsKLSAgICAgICAgZmlsbFBhdHRlcm5J
bWFnZSA9IHJlc291cmNlSGVhcC5nZXROYXRpdmVJbWFnZShmaWxsUGF0dGVyblJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllcik7Ci0gICAgICAgIGlmICghZmlsbFBhdHRlcm5JbWFnZSkKLSAgICAg
ICAgICAgIHJldHVybiBmaWxsUGF0dGVyblJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcjsKLSAg
ICB9CisgICAgICAgIGlmIChhdXRvIG5hdGl2ZUltYWdlID0gcmVzb3VyY2VIZWFwLmdldE5hdGl2
ZUltYWdlKHBhdHRlcm5JbWFnZUlkZW50aWZpZXIpKQorICAgICAgICAgICAgcmV0dXJuIFJlZiB7
ICpuYXRpdmVJbWFnZSB9OworICAgICAgICBpZiAoYXV0byBpbWFnZUJ1ZmZlciA9IHJlc291cmNl
SGVhcC5nZXRJbWFnZUJ1ZmZlcihwYXR0ZXJuSW1hZ2VJZGVudGlmaWVyKSkKKyAgICAgICAgICAg
IHJldHVybiBSZWYgeyAqaW1hZ2VCdWZmZXIgfTsKKworICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OworICAgIH07CisKKyAgICBhdXRvIHN0cm9rZVBhdHRlcm5SZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXIgPSBzZXRTdGF0ZUl0ZW0uc3Ryb2tlUGF0dGVybkltYWdlSWRlbnRpZmllcigpOwor
ICAgIGF1dG8gc3Ryb2tlUGF0dGVybkltYWdlID0gY2FjaGVkU291cmNlSW1hZ2Uoc3Ryb2tlUGF0
dGVyblJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CisgICAgaWYgKCFzdHJva2VQYXR0ZXJu
SW1hZ2UgJiYgc3Ryb2tlUGF0dGVyblJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikKKyAgICAg
ICAgcmV0dXJuIHN0cm9rZVBhdHRlcm5SZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI7CisKKyAg
ICBhdXRvIGZpbGxQYXR0ZXJuUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyID0gc2V0U3RhdGVJ
dGVtLmZpbGxQYXR0ZXJuSW1hZ2VJZGVudGlmaWVyKCk7CisgICAgYXV0byBmaWxsUGF0dGVybklt
YWdlID0gY2FjaGVkU291cmNlSW1hZ2UoZmlsbFBhdHRlcm5SZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXIpOworICAgIGlmICghZmlsbFBhdHRlcm5JbWFnZSAmJiBmaWxsUGF0dGVyblJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllcikKKyAgICAgICAgcmV0dXJuIGZpbGxQYXR0ZXJuUmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyOwogCi0gICAgc2V0U3RhdGVJdGVtLmFwcGx5KGNvbnRleHQsIHN0
cm9rZVBhdHRlcm5JbWFnZSwgZmlsbFBhdHRlcm5JbWFnZSk7CisgICAgc2V0U3RhdGVJdGVtLmFw
cGx5KGNvbnRleHQsIFdURk1vdmUoc3Ryb2tlUGF0dGVybkltYWdlKSwgV1RGTW92ZShmaWxsUGF0
dGVybkltYWdlKSk7CiAKICAgICBpZiAoIWRlbGVnYXRlKQogICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GRVRpbGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9GRVRpbGUuY3BwCmluZGV4IDgxYWEwYzUzYTFhODM2NTVmNzgyZWM5MmFlMTcwOTg5ZTQ4OGY1
M2UuLmY2NGQ4YmRjMTM2ZDAwYWYwYmMxMjc0MmNkMjdkODgzMjc3OGJkOWIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVUaWxlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFVGlsZS5jcHAKQEAg
LTcyLDE0ICs3MiwxMCBAQCB2b2lkIEZFVGlsZTo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKGNvbnN0
IEZpbHRlciYgZmlsdGVyKQogICAgIHRpbGVJbWFnZUNvbnRleHQudHJhbnNsYXRlKC1pbk1heEVm
ZmVjdExvY2F0aW9uLngoKSwgLWluTWF4RWZmZWN0TG9jYXRpb24ueSgpKTsKICAgICB0aWxlSW1h
Z2VDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcigqaW5CdWZmZXIsIGluLT5hYnNvbHV0ZVBhaW50UmVj
dCgpLmxvY2F0aW9uKCkpOwogCi0gICAgYXV0byB0aWxlSW1hZ2VDb3B5ID0gSW1hZ2VCdWZmZXI6
OnNpbmtJbnRvTmF0aXZlSW1hZ2UoV1RGTW92ZSh0aWxlSW1hZ2UpKTsKLSAgICBpZiAoIXRpbGVJ
bWFnZUNvcHkpCi0gICAgICAgIHJldHVybjsKLQogICAgIEFmZmluZVRyYW5zZm9ybSBwYXR0ZXJu
VHJhbnNmb3JtOwogICAgIHBhdHRlcm5UcmFuc2Zvcm0udHJhbnNsYXRlKGluTWF4RWZmZWN0TG9j
YXRpb24gLSBtYXhFZmZlY3RMb2NhdGlvbik7CiAKLSAgICBhdXRvIHBhdHRlcm4gPSBQYXR0ZXJu
OjpjcmVhdGUodGlsZUltYWdlQ29weS5yZWxlYXNlTm9uTnVsbCgpLCB7IHRydWUsIHRydWUsIHBh
dHRlcm5UcmFuc2Zvcm0gfSk7CisgICAgYXV0byBwYXR0ZXJuID0gUGF0dGVybjo6Y3JlYXRlKHRp
bGVJbWFnZS5yZWxlYXNlTm9uTnVsbCgpLCB7IHRydWUsIHRydWUsIHBhdHRlcm5UcmFuc2Zvcm0g
fSk7CiAKICAgICBHcmFwaGljc0NvbnRleHQmIGZpbHRlckNvbnRleHQgPSByZXN1bHRJbWFnZS0+
Y29udGV4dCgpOwogICAgIGZpbHRlckNvbnRleHQuc2V0RmlsbFBhdHRlcm4oV1RGTW92ZShwYXR0
ZXJuKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJC
YWNraW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcu
Y3BwCmluZGV4IGE3ODRkYmJiODM3ZjdiN2U0MTdiMjY5YjZiNzBiYzkyNzIzNGQ1MWQuLmUxMTBm
YjBkYzNmYzg0YzFmY2U2YWRjNzc2Mjc3NzI4MDc4ZWUxYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCkBAIC0zMzE1LDEzICszMzE1LDEx
IEBAIHN0YXRpYyBSZWZQdHI8UGF0dGVybj4gcGF0dGVybkZvckRlc2NyaXB0aW9uKFBhdHRlcm5E
ZXNjcmlwdGlvbiBkZXNjcmlwdGlvbiwgRmxvCiAgICAgICAgIGltYWdlQ29udGV4dC5kcmF3VGV4
dChmb250LCB0ZXh0UnVuLCB7IHRleHRHYXAsIHlPZmZzZXQgfSwgMCk7CiAgICAgfQogCi0gICAg
YXV0byB0aWxlSW1hZ2UgPSBJbWFnZUJ1ZmZlcjo6c2lua0ludG9OYXRpdmVJbWFnZShXVEZNb3Zl
KGltYWdlQnVmZmVyKSk7Ci0KICAgICBBZmZpbmVUcmFuc2Zvcm0gcGF0dGVybk9mZnNldFRyYW5z
Zm9ybTsKICAgICBwYXR0ZXJuT2Zmc2V0VHJhbnNmb3JtLnRyYW5zbGF0ZShjb250ZW50T2Zmc2V0
ICsgZGVzY3JpcHRpb24ucGhhc2UpOwogICAgIHBhdHRlcm5PZmZzZXRUcmFuc2Zvcm0uc2NhbGUo
MSAvIGRlc3RDb250ZXh0LnNjYWxlRmFjdG9yKCkpOwogCi0gICAgcmV0dXJuIFBhdHRlcm46OmNy
ZWF0ZSh0aWxlSW1hZ2UucmVsZWFzZU5vbk51bGwoKSwgeyB0cnVlLCB0cnVlLCBwYXR0ZXJuT2Zm
c2V0VHJhbnNmb3JtfSk7CisgICAgcmV0dXJuIFBhdHRlcm46OmNyZWF0ZShpbWFnZUJ1ZmZlci5y
ZWxlYXNlTm9uTnVsbCgpLCB7IHRydWUsIHRydWUsIHBhdHRlcm5PZmZzZXRUcmFuc2Zvcm0gfSk7
CiB9OwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuLmNwcAppbmRleCAyYzYwNTU5MGRiNDAzZWY0NGJm
MTc4YmMwN2M4NDE2MDQ5YzA5NTFiLi42ZGRjN2EwNjA0NWEyNGE4NzU2MTU1YTMxOWU2N2U5NmE4
NDZlOWM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R1Jlc291cmNlUGF0dGVybi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4uY3BwCkBAIC0yNSw2ICsyNSw3IEBACiAjaW5jbHVkZSAi
RnJhbWVWaWV3LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCiAjaW5jbHVkZSAiUmVu
ZGVyU1ZHUm9vdC5oIgorI2luY2x1ZGUgIlJlbmRlclZpZXcuaCIKICNpbmNsdWRlICJTVkdFbGVt
ZW50VHlwZUhlbHBlcnMuaCIKICNpbmNsdWRlICJTVkdGaXRUb1ZpZXdCb3guaCIKICNpbmNsdWRl
ICJTVkdSZW5kZXJpbmdDb250ZXh0LmgiCkBAIC0xMTMsMTAgKzExNCw2IEBAIFBhdHRlcm5EYXRh
KiBSZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm46OmJ1aWxkUGF0dGVybihSZW5kZXJFbGVtZW50JiBy
ZW5kZXJlciwgT3B0CiAKICAgICBhdXRvIHRpbGVJbWFnZVNpemUgPSB0aWxlSW1hZ2UtPmxvZ2lj
YWxTaXplKCk7CiAKLSAgICBhdXRvIGNvcGllZEltYWdlID0gSW1hZ2VCdWZmZXI6OnNpbmtJbnRv
TmF0aXZlSW1hZ2UoV1RGTW92ZSh0aWxlSW1hZ2UpKTsKLSAgICBpZiAoIWNvcGllZEltYWdlKQot
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQogICAgIC8vIENvbXB1dGUgcGF0dGVybiBzcGFjZSB0
cmFuc2Zvcm1hdGlvbi4KICAgICBhdXRvIHBhdHRlcm5EYXRhID0gbWFrZVVuaXF1ZTxQYXR0ZXJu
RGF0YT4oKTsKICAgICBwYXR0ZXJuRGF0YS0+dHJhbnNmb3JtLnRyYW5zbGF0ZSh0aWxlQm91bmRh
cmllcy5sb2NhdGlvbigpKTsKQEAgLTEzNCw3ICsxMzEsNyBAQCBQYXR0ZXJuRGF0YSogUmVuZGVy
U1ZHUmVzb3VyY2VQYXR0ZXJuOjpidWlsZFBhdHRlcm4oUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIs
IE9wdAogICAgIH0KIAogICAgIC8vIEJ1aWxkIHBhdHRlcm4uCi0gICAgcGF0dGVybkRhdGEtPnBh
dHRlcm4gPSBQYXR0ZXJuOjpjcmVhdGUoY29waWVkSW1hZ2UucmVsZWFzZU5vbk51bGwoKSwgeyB0
cnVlLCB0cnVlLCBwYXR0ZXJuRGF0YS0+dHJhbnNmb3JtIH0pOworICAgIHBhdHRlcm5EYXRhLT5w
YXR0ZXJuID0gUGF0dGVybjo6Y3JlYXRlKHRpbGVJbWFnZS5yZWxlYXNlTm9uTnVsbCgpLCB7IHRy
dWUsIHRydWUsIHBhdHRlcm5EYXRhLT50cmFuc2Zvcm0gfSk7CiAKICAgICAvLyBWYXJpb3VzIGNh
bGxzIGFib3ZlIG1heSB0cmlnZ2VyIGludmFsaWRhdGlvbnMgaW4gc29tZSBmcmluZ2UgY2FzZXMg
KEltYWdlQnVmZmVyIGFsbG9jYXRpb24KICAgICAvLyBmYWlsdXJlcyBpbiB0aGUgU1ZHIGltYWdl
IGNhY2hlIGZvciBleGFtcGxlKS4gVG8gYXZvaWQgaGF2aW5nIG91ciBQYXR0ZXJuRGF0YSBkZWxl
dGVkIGJ5CkBAIC0yNTQsNyArMjUxLDkgQEAgYm9vbCBSZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm46
OmJ1aWxkVGlsZUltYWdlVHJhbnNmb3JtKFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLAogUmVmUHRy
PEltYWdlQnVmZmVyPiBSZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm46OmNyZWF0ZVRpbGVJbWFnZShj
b25zdCBQYXR0ZXJuQXR0cmlidXRlcyYgYXR0cmlidXRlcywgY29uc3QgRmxvYXRSZWN0JiB0aWxl
Qm91bmRhcmllcywgY29uc3QgRmxvYXRSZWN0JiBhYnNvbHV0ZVRpbGVCb3VuZGFyaWVzLCBjb25z
dCBBZmZpbmVUcmFuc2Zvcm0mIHRpbGVJbWFnZVRyYW5zZm9ybSwgRmxvYXRSZWN0JiBjbGFtcGVk
QWJzb2x1dGVUaWxlQm91bmRhcmllcywgUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlKSBjb25z
dAogewogICAgIGNsYW1wZWRBYnNvbHV0ZVRpbGVCb3VuZGFyaWVzID0gSW1hZ2VCdWZmZXI6OmNs
YW1wZWRSZWN0KGFic29sdXRlVGlsZUJvdW5kYXJpZXMpOwotICAgIGF1dG8gdGlsZUltYWdlID0g
U1ZHUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlSW1hZ2VCdWZmZXIoYWJzb2x1dGVUaWxlQm91bmRh
cmllcywgY2xhbXBlZEFic29sdXRlVGlsZUJvdW5kYXJpZXMsIERlc3RpbmF0aW9uQ29sb3JTcGFj
ZTo6U1JHQigpLCByZW5kZXJpbmdNb2RlKTsKKyAgICAKKyAgICBhdXRvIGhvc3RXaW5kb3cgPSB2
aWV3KCkuZnJhbWVWaWV3KCkucm9vdCgpID8gdmlldygpLmZyYW1lVmlldygpLnJvb3QoKS0+aG9z
dFdpbmRvdygpIDogbnVsbHB0cjsKKyAgICBhdXRvIHRpbGVJbWFnZSA9IFNWR1JlbmRlcmluZ0Nv
bnRleHQ6OmNyZWF0ZUltYWdlQnVmZmVyKGFic29sdXRlVGlsZUJvdW5kYXJpZXMsIGNsYW1wZWRB
YnNvbHV0ZVRpbGVCb3VuZGFyaWVzLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgcmVu
ZGVyaW5nTW9kZSwgaG9zdFdpbmRvdyk7CiAgICAgaWYgKCF0aWxlSW1hZ2UpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1NWR1JlbmRlcmluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9T
VkdSZW5kZXJpbmdDb250ZXh0LmNwcAppbmRleCAyMGI4YjVlN2IwN2IzMWExMmM1YWFjYmEzODU4
OTJmYmYzYTIzNTczLi5iZjFlN2Y5MTE5YjE3YzM4NzYwOTg1ZGRjZTk3MTUxMzI5ODJiMTE4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0NvbnRl
eHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyaW5nQ29u
dGV4dC5jcHAKQEAgLTI1Niw3ICsyNTYsNyBAQCBSZWZQdHI8SW1hZ2VCdWZmZXI+IFNWR1JlbmRl
cmluZ0NvbnRleHQ6OmNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0UmVjdCYgdGFyZwogICAg
IHJldHVybiBpbWFnZUJ1ZmZlcjsKIH0KIAotUmVmUHRyPEltYWdlQnVmZmVyPiBTVkdSZW5kZXJp
bmdDb250ZXh0OjpjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3Qs
IGNvbnN0IEZsb2F0UmVjdCYgY2xhbXBlZFJlY3QsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFj
ZSYgY29sb3JTcGFjZSwgUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlLCBjb25zdCBHcmFwaGlj
c0NvbnRleHQqIGNvbnRleHQpCitSZWZQdHI8SW1hZ2VCdWZmZXI+IFNWR1JlbmRlcmluZ0NvbnRl
eHQ6OmNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3Qg
RmxvYXRSZWN0JiBjbGFtcGVkUmVjdCwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiBjb2xv
clNwYWNlLCBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUsIEhvc3RXaW5kb3cqIGhvc3RXaW5k
b3csIGNvbnN0IEdyYXBoaWNzQ29udGV4dCogY29udGV4dCkKIHsKICAgICBJbnRTaXplIGNsYW1w
ZWRTaXplID0gcm91bmRlZEludFNpemUoY2xhbXBlZFJlY3Quc2l6ZSgpKTsKICAgICBGbG9hdFNp
emUgdW5jbGFtcGVkU2l6ZSA9IHJvdW5kZWRJbnRTaXplKHRhcmdldFJlY3Quc2l6ZSgpKTsKQEAg
LTI2OSw3ICsyNjksNyBAQCBSZWZQdHI8SW1hZ2VCdWZmZXI+IFNWR1JlbmRlcmluZ0NvbnRleHQ6
OmNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0UmVjdCYgdGFyZwogICAgIGF1dG8gaW1hZ2VC
dWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGNsYW1wZWRTaXplLCByZW5kZXJpbmdNb2RlLCBj
b250ZXh0LCAxLCBjb2xvclNwYWNlLCBQaXhlbEZvcm1hdDo6QkdSQTgpOwogI2Vsc2UKICAgICBV
TlVTRURfUEFSQU0oY29udGV4dCk7Ci0gICAgYXV0byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVy
OjpjcmVhdGUoY2xhbXBlZFNpemUsIHJlbmRlcmluZ01vZGUsIDEsIGNvbG9yU3BhY2UsIFBpeGVs
Rm9ybWF0OjpCR1JBOCk7CisgICAgYXV0byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVh
dGUoY2xhbXBlZFNpemUsIHJlbmRlcmluZ01vZGUsIFNob3VsZFVzZURpc3BsYXlMaXN0OjpObywg
UmVuZGVyaW5nUHVycG9zZTo6RE9NLCAxLCBjb2xvclNwYWNlLCBQaXhlbEZvcm1hdDo6QkdSQTgs
IGhvc3RXaW5kb3cpOwogI2VuZGlmCiAgICAgaWYgKCFpbWFnZUJ1ZmZlcikKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NW
R1JlbmRlcmluZ0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVu
ZGVyaW5nQ29udGV4dC5oCmluZGV4IDU5NjU5N2JlMTI0N2E5NmE2MDRhY2NmNDU3ZTA5MjlmZDBm
NTBhMGUuLmVmZmY4M2RlYzA1MzdkZDdlZWUyMjEwMmQ0ZWE2Y2Q0ODgwNDhlZTMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyaW5nQ29udGV4dC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyaW5nQ29udGV4dC5oCkBA
IC02MSw3ICs2MSw3IEBAIHB1YmxpYzoKICAgICBib29sIGlzUmVuZGVyaW5nUHJlcGFyZWQoKSBj
b25zdCB7IHJldHVybiBtX3JlbmRlcmluZ0ZsYWdzICYgUmVuZGVyaW5nUHJlcGFyZWQ7IH0KIAog
ICAgIHN0YXRpYyBSZWZQdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZs
b2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBhYnNvbHV0ZVRyYW5z
Zm9ybSwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiwgUmVuZGVyaW5nTW9kZSwgY29uc3Qg
R3JhcGhpY3NDb250ZXh0KiA9IG51bGxwdHIpOwotICAgIHN0YXRpYyBSZWZQdHI8SW1hZ2VCdWZm
ZXI+IGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3Qg
RmxvYXRSZWN0JiBjbGFtcGVkUmVjdCwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiwgUmVu
ZGVyaW5nTW9kZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0KiA9IG51bGxwdHIpOworICAgIHN0YXRp
YyBSZWZQdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0UmVjdCYg
dGFyZ2V0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBjbGFtcGVkUmVjdCwgY29uc3QgRGVzdGluYXRp
b25Db2xvclNwYWNlJiwgUmVuZGVyaW5nTW9kZSwgSG9zdFdpbmRvdyogPSBudWxscHRyLCBjb25z
dCBHcmFwaGljc0NvbnRleHQqID0gbnVsbHB0cik7CiAKICAgICBzdGF0aWMgdm9pZCByZW5kZXJT
dWJ0cmVlVG9Db250ZXh0KEdyYXBoaWNzQ29udGV4dCYsIFJlbmRlckVsZW1lbnQmLCBjb25zdCBB
ZmZpbmVUcmFuc2Zvcm0mKTsKICAgICBzdGF0aWMgdm9pZCBjbGlwVG9JbWFnZUJ1ZmZlcihHcmFw
aGljc0NvbnRleHQmLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIGFic29sdXRlVHJhbnNmb3JtLCBj
b25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIFJlZlB0cjxJbWFnZUJ1ZmZlcj4mLCBib29sIHNh
ZmVUb0NsZWFyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGlj
cy9SZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9ncmFwaGljcy9SZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyLmNwcAppbmRleCBhZGE1NGQ0MThh
MGI2MDI1NDZiMTdlNTdjNjZkZDBjZDY5MDMwZDEzLi40NTBkOGY3YjNmODBmNDAyNzQ3OWRmYTMx
ZGVkNjYxNWZlMzVlNzM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3Jh
cGhpY3MvUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCkBAIC0xMjMs
MjAgKzEyMywzMiBAQCB2b2lkIFJlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXI6OnNldFN0YXRlKERp
c3BsYXlMaXN0OjpTZXRTdGF0ZSYmIGl0ZW0pCiAKIHZvaWQgUmVtb3RlRGlzcGxheUxpc3RSZWNv
cmRlcjo6c2V0U3RhdGVXaXRoUXVhbGlmaWVkSWRlbnRpZmllcnMoRGlzcGxheUxpc3Q6OlNldFN0
YXRlJiYgaXRlbSwgUXVhbGlmaWVkUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHN0cm9rZVBh
dHRlcm5JbWFnZUlkZW50aWZpZXIsIFF1YWxpZmllZFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
ciBmaWxsUGF0dGVybkltYWdlSWRlbnRpZmllcikKIHsKLSAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+
IHN0cm9rZVBhdHRlcm5JbWFnZTsKLSAgICBpZiAoc3Ryb2tlUGF0dGVybkltYWdlSWRlbnRpZmll
cikKLSAgICAgICAgc3Ryb2tlUGF0dGVybkltYWdlID0gcmVzb3VyY2VDYWNoZSgpLmNhY2hlZE5h
dGl2ZUltYWdlKHN0cm9rZVBhdHRlcm5JbWFnZUlkZW50aWZpZXIpOworICAgIGF1dG8gY2FjaGVk
U291cmNlSW1hZ2UgPSBbJl0oUXVhbGlmaWVkUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHBh
dHRlcm5JbWFnZUlkZW50aWZpZXIpIC0+IHN0ZDo6b3B0aW9uYWw8U291cmNlSW1hZ2U+IHsKKyAg
ICAgICAgaWYgKCFwYXR0ZXJuSW1hZ2VJZGVudGlmaWVyKQorICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIAotICAgIFJlZlB0cjxOYXRpdmVJbWFnZT4gZmlsbFBhdHRlcm5JbWFnZTsK
LSAgICBpZiAoZmlsbFBhdHRlcm5JbWFnZUlkZW50aWZpZXIpCi0gICAgICAgIGZpbGxQYXR0ZXJu
SW1hZ2UgPSByZXNvdXJjZUNhY2hlKCkuY2FjaGVkTmF0aXZlSW1hZ2UoZmlsbFBhdHRlcm5JbWFn
ZUlkZW50aWZpZXIpOworICAgICAgICBpZiAoYXV0byBuYXRpdmVJbWFnZSA9IHJlc291cmNlQ2Fj
aGUoKS5jYWNoZWROYXRpdmVJbWFnZShwYXR0ZXJuSW1hZ2VJZGVudGlmaWVyKSkKKyAgICAgICAg
ICAgIHJldHVybiBSZWYgeyAqbmF0aXZlSW1hZ2UgfTsKKyAgICAgICAgaWYgKGF1dG8gaW1hZ2VC
dWZmZXIgPSByZXNvdXJjZUNhY2hlKCkuY2FjaGVkSW1hZ2VCdWZmZXIocGF0dGVybkltYWdlSWRl
bnRpZmllcikpCisgICAgICAgICAgICByZXR1cm4gUmVmIHsgKmltYWdlQnVmZmVyIH07CisKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICB9OworICAgIAorICAgIGF1dG8gc3Ryb2tl
UGF0dGVybkltYWdlID0gY2FjaGVkU291cmNlSW1hZ2Uoc3Ryb2tlUGF0dGVybkltYWdlSWRlbnRp
Zmllcik7CisgICAgaWYgKCFzdHJva2VQYXR0ZXJuSW1hZ2UpCisgICAgICAgIHN0cm9rZVBhdHRl
cm5JbWFnZUlkZW50aWZpZXIgPSB7IH07CiAKLSAgICBoYW5kbGVJdGVtKFdURk1vdmUoaXRlbSks
IHN0cm9rZVBhdHRlcm5JbWFnZS5nZXQoKSwgZmlsbFBhdHRlcm5JbWFnZS5nZXQoKSk7CisgICAg
YXV0byBmaWxsUGF0dGVybkltYWdlID0gY2FjaGVkU291cmNlSW1hZ2UoZmlsbFBhdHRlcm5JbWFn
ZUlkZW50aWZpZXIpOworICAgIGlmICghZmlsbFBhdHRlcm5JbWFnZSkKKyAgICAgICAgZmlsbFBh
dHRlcm5JbWFnZUlkZW50aWZpZXIgPSB7IH07CiAKLSAgICBpZiAoc3Ryb2tlUGF0dGVybkltYWdl
KQorICAgIGhhbmRsZUl0ZW0oV1RGTW92ZShpdGVtKSwgV1RGTW92ZShzdHJva2VQYXR0ZXJuSW1h
Z2UpLCBXVEZNb3ZlKGZpbGxQYXR0ZXJuSW1hZ2UpKTsKKworICAgIGlmIChzdHJva2VQYXR0ZXJu
SW1hZ2VJZGVudGlmaWVyKQogICAgICAgICByZXNvdXJjZUNhY2hlKCkucmVjb3JkUmVzb3VyY2VV
c2Uoc3Ryb2tlUGF0dGVybkltYWdlSWRlbnRpZmllcik7CiAKLSAgICBpZiAoZmlsbFBhdHRlcm5J
bWFnZSkKKyAgICBpZiAoZmlsbFBhdHRlcm5JbWFnZUlkZW50aWZpZXIpCiAgICAgICAgIHJlc291
cmNlQ2FjaGUoKS5yZWNvcmRSZXNvdXJjZVVzZShmaWxsUGF0dGVybkltYWdlSWRlbnRpZmllcik7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mv
UmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlclByb3h5LmNwcAppbmRl
eCA5NDIxZGQyMzhjYjZlYzYzZmUxYzA3ZDQ3MzYxY2IwYjY1ZmY0MGNiLi41NzMwZGQ4ODE5ZThl
NDJlM2I2YjY2ZWYxN2IzNDZlODdiNTI0MjYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXJQcm94eS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVEaXNwbGF5
TGlzdFJlY29yZGVyUHJveHkuY3BwCkBAIC00MDYsMjQgKzQwNiwzNiBAQCB2b2lkIFJlbW90ZURp
c3BsYXlMaXN0UmVjb3JkZXJQcm94eTo6cmVjb3JkUmVzb3VyY2VVc2UoTmF0aXZlSW1hZ2UmIGlt
YWdlKQogICAgIG1fcmVuZGVyaW5nQmFja2VuZC0+cmVjb3JkTmF0aXZlSW1hZ2VVc2UoaW1hZ2Up
OwogfQogCi12b2lkIFJlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXJQcm94eTo6cmVjb3JkUmVzb3Vy
Y2VVc2UoRm9udCYgZm9udCkKK3ZvaWQgUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlclByb3h5Ojpy
ZWNvcmRSZXNvdXJjZVVzZShJbWFnZUJ1ZmZlciYgaW1hZ2VCdWZmZXIpCiB7CiAgICAgaWYgKFVO
TElLRUxZKCFtX3JlbmRlcmluZ0JhY2tlbmQpKSB7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbV9yZW5kZXJpbmdCYWNrZW5kLT5y
ZWNvcmRGb250VXNlKGZvbnQpOworICAgIG1fcmVuZGVyaW5nQmFja2VuZC0+cmVjb3JkSW1hZ2VC
dWZmZXJVc2UoaW1hZ2VCdWZmZXIpOwogfQogCi12b2lkIFJlbW90ZURpc3BsYXlMaXN0UmVjb3Jk
ZXJQcm94eTo6cmVjb3JkUmVzb3VyY2VVc2UoSW1hZ2VCdWZmZXImIGltYWdlQnVmZmVyKQordm9p
ZCBSZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyUHJveHk6OnJlY29yZFJlc291cmNlVXNlKFNvdXJj
ZUltYWdlJiBpbWFnZSkKK3sKKyAgICBhdXRvIGltYWdlQnVmZmVyID0gaW1hZ2UuaW1hZ2VCdWZm
ZXJJZkV4aXN0cygpOworICAgIGlmIChpbWFnZUJ1ZmZlciAmJiBjYW5EcmF3SW1hZ2VCdWZmZXIo
KmltYWdlQnVmZmVyKSkgeworICAgICAgICByZWNvcmRSZXNvdXJjZVVzZSgqaW1hZ2VCdWZmZXIp
OworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKGF1dG8gbmF0aXZlSW1hZ2UgPSBp
bWFnZS5uYXRpdmVJbWFnZSgpKQorICAgICAgICByZWNvcmRSZXNvdXJjZVVzZSgqbmF0aXZlSW1h
Z2UpOworfQorCit2b2lkIFJlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXJQcm94eTo6cmVjb3JkUmVz
b3VyY2VVc2UoRm9udCYgZm9udCkKIHsKICAgICBpZiAoVU5MSUtFTFkoIW1fcmVuZGVyaW5nQmFj
a2VuZCkpIHsKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKLSAgICBtX3JlbmRlcmluZ0JhY2tlbmQtPnJlY29yZEltYWdlQnVmZmVyVXNlKGlt
YWdlQnVmZmVyKTsKKyAgICBtX3JlbmRlcmluZ0JhY2tlbmQtPnJlY29yZEZvbnRVc2UoZm9udCk7
CiB9CiAKIHZvaWQgUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlclByb3h5OjpmbHVzaENvbnRleHQo
R3JhcGhpY3NDb250ZXh0Rmx1c2hJZGVudGlmaWVyIGlkZW50aWZpZXIpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZURpc3BsYXlMaXN0UmVj
b3JkZXJQcm94eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1v
dGVEaXNwbGF5TGlzdFJlY29yZGVyUHJveHkuaAppbmRleCA3MWZkYjYzZGY0YWM4NDk3NDcyMzI2
OWI3ZjAzZDk5N2I4MTM5ODlkLi5jY2E2Y2Y2MGVkMDlkMjE5ZGI1ODIzZWUyMzQ0MWE3MjQ2NTA0
YjgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1Jl
bW90ZURpc3BsYXlMaXN0UmVjb3JkZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlclByb3h5LmgKQEAgLTEz
Niw4ICsxMzYsOSBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVjb3JkQXBwbHlEZXZpY2VTY2FsZUZh
Y3RvcihmbG9hdCkgZmluYWw7CiAKICAgICB2b2lkIHJlY29yZFJlc291cmNlVXNlKFdlYkNvcmU6
Ok5hdGl2ZUltYWdlJikgZmluYWw7Ci0gICAgdm9pZCByZWNvcmRSZXNvdXJjZVVzZShXZWJDb3Jl
OjpGb250JikgZmluYWw7CiAgICAgdm9pZCByZWNvcmRSZXNvdXJjZVVzZShXZWJDb3JlOjpJbWFn
ZUJ1ZmZlciYpIGZpbmFsOworICAgIHZvaWQgcmVjb3JkUmVzb3VyY2VVc2UoV2ViQ29yZTo6U291
cmNlSW1hZ2UmKSBmaW5hbDsKKyAgICB2b2lkIHJlY29yZFJlc291cmNlVXNlKFdlYkNvcmU6OkZv
bnQmKSBmaW5hbDsKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQ+IGNyZWF0ZU5lc3RlZENvbnRleHQoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBpbml0aWFs
Q2xpcCwgY29uc3QgV2ViQ29yZTo6QWZmaW5lVHJhbnNmb3JtJiBpbml0aWFsQ1RNKSBmaW5hbDsK
IAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>444423</attachid>
            <date>2021-11-16 12:44:44 -0800</date>
            <delta_ts>2022-01-23 22:06:47 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-232411-20211116124443.patch</filename>
            <type>text/plain</type>
            <size>49978</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg1Nzk2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmQ1YWJmYjdlYThmZGY3
ODJlN2EyM2Q0NTQxY2RjOWFiN2U1NzUxNy4uNDEzYjVhODE1MWM3MTcwOWYyNTI3YmY0NWE2YWVi
MTk5NjgzMzM1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc5IEBACisyMDIxLTExLTE2ICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2VzcyBd
IFBhdHRlcm4gc2hvdWxkIGhvbGQgYW4gSW1hZ2VCdWZmZXIgd2hpY2ggY2FuIGJlIGNvbnZlcnRl
ZCB0byBhIE5hdGl2ZUltYWdlIHdoZW4gbmVlZGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzI0MTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgdGhlIG5ldyB0eXBlIGNhbGxlZCAnU291cmNlSW1h
Z2UnIHdoaWNoIGlzIGEgdmFyaWFudCBvZiBOYXRpdmVJbWFnZSAKKyAgICAgICAgYW5kIEltYWdl
QnVmZmVyLiBNYWtlIFBhdHRlcm4gaG9sZCBhIFNvdXJjZUltYWdlIGFuZCBwcm92aWRlIGdldHRl
cnMgdG8gCisgICAgICAgIHJldHJpZXZlIHRoZSBOYXRpdmVJbWFnZSBhbmQgSW1hZ2VCdWZmZXIu
IEluIHRoZXNlIGdldHRlcnMgd2UgY29udmVydAorICAgICAgICBmcm9tIGFuIGltYWdlIHNvdXJj
ZSB0byB0aGUgb3RoZXIgaWYgbmVlZGVkLgorCisgICAgICAgICogSGVhZGVycy5jbWFrZToKKyAg
ICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2o6CisgICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFzUGF0dGVybi5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDYW52YXNQYXR0ZXJuOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
Q2FudmFzUGF0dGVybjo6Q2FudmFzUGF0dGVybik6CisgICAgICAgICogaHRtbC9jYW52YXMvQ2Fu
dmFzUGF0dGVybi5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRl
eHQyREJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJE
QmFzZTo6Y3JlYXRlUGF0dGVybik6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNhbnZh
cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDYW52YXM6OmJ1aWxkQXJyYXlGb3JD
YW52YXNQYXR0ZXJuKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9QYXR0ZXJuLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlBhdHRlcm46OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpQ
YXR0ZXJuOjpQYXR0ZXJuKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9QYXR0ZXJuLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlSW1hZ2UuY3BwOiBBZGRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OlNvdXJjZUltYWdlOjpTb3VyY2VJbWFnZSk6CisgICAgICAgIChXZWJD
b3JlOjpTb3VyY2VJbWFnZTo6bmF0aXZlSW1hZ2VJZkV4aXN0cyBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpTb3VyY2VJbWFnZTo6bmF0aXZlSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6U291
cmNlSW1hZ2U6OmltYWdlQnVmZmVySWZFeGlzdHMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
U291cmNlSW1hZ2U6OmltYWdlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUltYWdl
OjppbWFnZUlkZW50aWZpZXIgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1Nv
dXJjZUltYWdlLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L1BhdHRlcm4uY3BwLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0NhaXJvT3Bl
cmF0aW9ucy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWlybzo6RmlsbFNvdXJjZTo6RmlsbFNv
dXJjZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGF0dGVybkNhaXJvLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlBhdHRlcm46OmNyZWF0ZVBsYXRmb3JtUGF0dGVybiBjb25z
dCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGF0dGVybkNHLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlBhdHRlcm46OmNyZWF0ZVBsYXRmb3JtUGF0dGVybiBjb25zdCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlNldFN0YXRlOjphcHBseSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaDoK
KyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpTZXRTdGF0ZTo6ZW5jb2RlIGNvbnN0KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNv
cmRlci5oOgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3Bs
YXlMaXN0UmVjb3JkZXJJbXBsLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNw
bGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlckltcGwuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpSZWNvcmRlckltcGw6OnJlY29yZFJlc291cmNlVXNlKToKKyAgICAgICAgQ2hl
Y2sgaWYgdGhlIFNvdXJjZUltYWdlIGhhcyBhIHJlbW90ZSBJbWFnZUJ1ZmZlciBiZWZvcmUgcmVj
b3JkaW5nIGl0IGZvcgorICAgICAgICB1c2UuIE90aGVyd2lzZSByZWNvcmQgdGhlIHVzZSBvZiB0
aGUgTmF0aXZlSW1hZ2UuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3RSZXBsYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlz
dDo6YXBwbHlTZXRTdGF0ZUl0ZW0pOgorICAgICAgICBCdWlsZCBhbiBzdGQ6Om9wdGlvbmFsPFNv
dXJjZUltYWdlPiBmcm9tIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBvZgorICAgICAgICB0
aGUgcGF0dGVybiByZXNvdXJjZSBpZGVudGlmaWVyLiBQYXNzIHRoaXMgU291cmNlSW1hZ2UgdG8g
U2V0U3RhdGU6OmFwcGx5KCkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0ZFVGlsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRVRpbGU6OnBsYXRmb3JtQXBwbHlTb2Z0
d2FyZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpwYXR0ZXJuRm9yRGVzY3JpcHRpb24pOgorICAgICAgICAqIHJlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclNWR1Jlc291cmNlUGF0dGVybjo6YnVpbGRQYXR0ZXJuKToKKworICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuOjpjcmVhdGVUaWxlSW1hZ2UgY29uc3QpOgorICAg
ICAgICBQYXNzIHRoZSBIb3NXaW5kb3cgdG8gU1ZHUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlSW1h
Z2VCdWZmZXIoKSBzbyBpdCBjYW4KKyAgICAgICAgY3JlYXRlIGEgcmVtb3RlIEltYWdlQnVmZmVy
IGlmIHRoZSBHUFUgUHJvY2VzcyBET00gcmVuZGVyaW5nIGlzIGVuYWJsZWQuCisKKyAgICAgICAg
KiByZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlSW1hZ2VCdWZmZXIpOgorICAgICAgICAqIHJl
bmRlcmluZy9zdmcvU1ZHUmVuZGVyaW5nQ29udGV4dC5oOgorICAgICAgICBQYXNzIHRoZSBIb3N0
V2luZG93IGFuZCBSZW5kZXJpbmdQdXJwb3NlOjpET00gdG8gSW1hZ2VCdWZmZXI6OmNyZWF0ZSgp
CisgICAgICAgIHNvICBpdCBjYW4gY3JlYXRlIGEgcmVtb3RlIEltYWdlQnVmZmVyIGlmIHRoZSBH
UFUgUHJvY2VzcyBET00gcmVuZGVyaW5nCisgICAgICAgIGlzIGVuYWJsZWQuCisKIDIwMjEtMTEt
MTQgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2FpZEBhcHBsZS5jb20+CiAKICAgICAgICAgW0dQVSBQ
cm9jZXNzXSBSZW1vdmUgdGhlIHJlZmVyZW5jZSB0byBGaWx0ZXIgZnJvbSBGaWx0ZXJFZmZlY3QK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKaW5kZXggYWY2Nzc1NzUwNDliZjE3ODA1OTQ4ODU2NjkwZGI2MmQxYjQwZWM2OC4uNjEz
YzkxZWY0ZGZjZWEwNzYyMWZkMzM5YjdmMGIwNDljZDI3ZTMwMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwzMSBAQAorMjAyMS0xMS0xNiAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWlkQGFwcGxlLmNvbT4K
KworICAgICAgICBbR1BVIFByb2Nlc3MgXSBQYXR0ZXJuIHNob3VsZCBob2xkIGFuIEltYWdlQnVm
ZmVyIHdoaWNoIGNhbiBiZSBjb252ZXJ0ZWQgdG8gYSBOYXRpdmVJbWFnZSB3aGVuIG5lZWRlZAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMyNDExCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSGFuZGxlIGVu
Y29kaW5nIGFtZCBkZWNvZGluZyB0aGUgU291cmNlSW1hZ2UgZm9yIHJlY29yZGluZyBhbmQgcmVw
bGF5aW5nCisgICAgICAgIHRoZSBTZXRTdGF0ZSBEaXNwbGF5TGlzdCBpdGVtIGluIEdQVVByb2Nl
c3MuCisKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1F1YWxpZmllZFJlc291cmNlSGVh
cC5oOgorICAgICAgICAoV2ViS2l0OjpRdWFsaWZpZWRSZXNvdXJjZUhlYXA6OmdldCBjb25zdCk6
CisgICAgICAgIERvIG5vdCBhc3NlcnQgaGVyZSBpZiB0aGUgZW50cnkgb2YgdGhlIEhhc2hNYXAg
ZG9lcyBub3QgaG9sZCBhIHZhcmlhbnQKKyAgICAgICAgb2YgdGhlIHJlcXVpcmVkIHR5cGUuIFdl
IGFscmVhZHkgcmV0dXJuIG51bGxwdHIgd2l0aG91dCBhc3NlcnRpb24gaWYgdGhlcmUKKyAgICAg
ICAgaXMgbm8gZW50cnkgZm9yIHRoZSByZXF1aXJlZCByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXIuIFdlIHNob3VsZCBsZXQKKyAgICAgICAgdGhlIGNhbGxlciBkZWNpZGVzIHdoYXQgdG8gZG8g
aW4gdGhlIGNhc2Ugb2YgZXJyb3IuCisKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1Jl
bW90ZURpc3BsYXlMaXN0UmVjb3JkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVEaXNw
bGF5TGlzdFJlY29yZGVyOjpzZXRTdGF0ZVdpdGhRdWFsaWZpZWRJZGVudGlmaWVycyk6CisgICAg
ICAgIEJ1aWxkIGFuIHN0ZDo6b3B0aW9uYWw8U291cmNlSW1hZ2U+IGZyb20gUmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyIG9mCisgICAgICAgIHRoZSBwYXR0ZXJuIHJlc291cmNlIGlkZW50aWZp
ZXIuIFBhc3MgdGhpcyBTb3VyY2VJbWFnZSB0byBoYW5kbGVJdGVtKCkuCisKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyUHJveHkuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyUHJveHk6OnJlY29y
ZFJlc291cmNlVXNlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVE
aXNwbGF5TGlzdFJlY29yZGVyUHJveHkuaDoKKyAgICAgICAgQ2hlY2sgaWYgdGhlIFNvdXJjZUlt
YWdlIGhhcyBhIHJlbW90ZSBJbWFnZUJ1ZmZlciBiZWZvcmUgcmVjb3JkaW5nIGl0IGZvcgorICAg
ICAgICB1c2UuIE90aGVyd2lzZSByZWNvcmQgdGhlIHVzZSBvZiB0aGUgTmF0aXZlSW1hZ2UuCisK
IDIwMjEtMTEtMTQgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAg
ICAgICAgQXR0YWNoIElPSElERXZlbnQgdGltZXN0YW1wcyB0byB3aGVlbCBldmVudHMKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9IZWFk
ZXJzLmNtYWtlCmluZGV4IDM5MTU3M2YwODI0Y2NkMzQ4MmRmZDYxN2Y5N2Q2YWE1YjBiN2NlZGMu
LjdkNzk5MGU3NmY4N2Y2MTUwZTM0ODQ5ZDExMjU4M2RlYzBhMGQxMjQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5j
bWFrZQpAQCAtMTM4NCw2ICsxMzg0LDcgQEAgc2V0KFdlYkNvcmVfUFJJVkFURV9GUkFNRVdPUktf
SEVBREVSUwogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1Nob3VsZExvY2FsaXplQXhpc05hbWVzLmgK
ICAgICBwbGF0Zm9ybS9ncmFwaGljcy9Tb3VyY2VCdWZmZXJQcml2YXRlLmgKICAgICBwbGF0Zm9y
bS9ncmFwaGljcy9Tb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50LmgKKyAgICBwbGF0Zm9ybS9ncmFw
aGljcy9Tb3VyY2VJbWFnZS5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvU3RyaW5nVHJ1bmNhdG9y
LmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9UYWJTaXplLmgKICAgICBwbGF0Zm9ybS9ncmFwaGlj
cy9UZXh0UnVuLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291
cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXggNTRkOGQzYmQ5ODBlOGI5YjZiODIxZjljY2I0
ZmE1MjJlMWJmMWUwMi4uNzI4ZTRkYjE0MjA1MDk2ODI1MjE3YzEzNmNmNWQwMDAxMGEwOTc2NiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNv
cmUvU291cmNlcy50eHQKQEAgLTIwNTksNiArMjA1OSw3IEBAIHBsYXRmb3JtL2dyYXBoaWNzL1Jl
bW90ZVZpZGVvU2FtcGxlLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvUm91bmRlZFJlY3QuY3BwCiBw
bGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVyLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNl
QnVmZmVyUHJpdmF0ZS5jcHAKK3BsYXRmb3JtL2dyYXBoaWNzL1NvdXJjZUltYWdlLmNwcAogcGxh
dGZvcm0vZ3JhcGhpY3MvU3RyaW5nVHJ1bmNhdG9yLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvVGV4
dFJ1bi5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL1RleHRUcmFja1JlcHJlc2VudGF0aW9uLmNwcApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmlu
ZGV4IDk5ODEwZWI4MjAzY2NkYTZiNWM5ZTM4MTYxNGI2MmJlNmVmMmExY2MuLjdjOTNlZWY1MmU3
OTcyNzY5NmYwNjBlNWUxMjgzMDgzZDcxZGUxODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTIyOTEsNiArMjI5MSw3IEBACiAJ
CTcxRjA1RjgwMjUxMjQ0MkUwMDcxRTY5MyAvKiBDU1NQcm9wZXJ0eUFuaW1hdGlvbi5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzFGMDVGN0UyNTEyNDQw
QzAwNzFFNjkzIC8qIENTU1Byb3BlcnR5QW5pbWF0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzIxNDQzMzMyMjNFQzhCMDAwRjEyRkY3IC8q
IFNWR1Byb3BlcnR5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1NUVFNTM2MzIyM0IyQTI0MDBGQkE5NDQgLyogU1ZHUHJvcGVydHkuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3MjE0NDMzNDIyM0VDOTE2
MDBGMTJGRjcgLyogU1ZHUHJvcGVydHlPd25lci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTVFRTUzNjAyMjNCMkEyMTAwRkJBOTQ0IC8qIFNWR1Byb3Bl
cnR5T3duZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OworCQk3MjE0QjlBOTI3NDJGQjk5MDAzQkU2REYgLyogU291cmNlSW1hZ2UuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyMTRCOUE4Mjc0MkY2MjkwMDNC
RTZERiAvKiBTb3VyY2VJbWFnZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTcyMUI0OTc0MjUxMkJBM0IwMEZFOUQzQiAvKiBJbWFnZUJpdG1hcEJh
Y2tpbmcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcy
MUI0OTcwMjUxMkFDMDQwMEZFOUQzQiAvKiBJbWFnZUJpdG1hcEJhY2tpbmcuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3MjI4M0YwRTIzMEIyNjhD
MDBGNUQ4MjggLyogSW1hZ2VQYWludGluZ09wdGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyQzE4QTNGMjMwQjA0QjcwMDY4NDdDNyAvKiBJbWFn
ZVBhaW50aW5nT3B0aW9ucy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTcyNEVEMzMyMUEzQThCMjMwMEY1RjEzQyAvKiBKU0VYVEJsZW5kTWluTWF4
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MjRFRDMz
MDFBM0E4QjIzMDBGNUYxM0MgLyogSlNFWFRCbGVuZE1pbk1heC5oICovOyB9OwpAQCAtMTA4NDcs
NiArMTA4NDgsOCBAQAogCQk3MUZGODUxODIyQTNGODFGMDA1RDU5NTkgLyogTmF2aWdhdG9yTWF4
VG91Y2hQb2ludHMuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IE5hdmlnYXRvck1heFRvdWNo
UG9pbnRzLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzIxNDQzNDUyMjQwQzhC
QTAwRjEyRkY3IC8qIFNWR0FuaW1hdGVkVmFsdWVQcm9wZXJ0eS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBT
VkdBbmltYXRlZFZhbHVlUHJvcGVydHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NzIxNDQzNDYyMjQwQ0FEMjAwRjEyRkY3IC8qIFNWR1ZhbHVlUHJvcGVydHkuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gU1ZHVmFsdWVQcm9wZXJ0eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3
MjE0QjlBODI3NDJGNjI5MDAzQkU2REYgLyogU291cmNlSW1hZ2UuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
U291cmNlSW1hZ2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzIxNEI5QUMyNzQz
NTE0QTAwM0JFNkRGIC8qIFNvdXJjZUltYWdlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNvdXJj
ZUltYWdlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzIxQjQ5NkYyNTEyQUMw
NDAwRkU5RDNCIC8qIEltYWdlQml0bWFwQmFja2luZy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJ
bWFnZUJpdG1hcEJhY2tpbmcuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MjFC
NDk3MDI1MTJBQzA0MDBGRTlEM0IgLyogSW1hZ2VCaXRtYXBCYWNraW5nLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEltYWdlQml0bWFwQmFja2luZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3
MjJBODE1QzIzOEZENTA1MDBDMDA1ODMgLyogQW5pbWF0aW9uRnJhbWVSYXRlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEFuaW1hdGlvbkZyYW1lUmF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtMjgwMzQsNiArMjgwMzcsOCBAQAogCQkJCTFERDEyN0FDMjU2RTNBODcwMEIyMjdENyAvKiBT
b3VyY2VCdWZmZXJQcml2YXRlLmNwcCAqLywKIAkJCQlDRDY0MUVCMjE4MThGNUVEMDBFRTRDNDEg
LyogU291cmNlQnVmZmVyUHJpdmF0ZS5oICovLAogCQkJCUNEQzhCNUFDMTgwNEFFNUQwMDE2RTY4
NSAvKiBTb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50LmggKi8sCisJCQkJNzIxNEI5QUMyNzQzNTE0
QTAwM0JFNkRGIC8qIFNvdXJjZUltYWdlLmNwcCAqLywKKwkJCQk3MjE0QjlBODI3NDJGNjI5MDAz
QkU2REYgLyogU291cmNlSW1hZ2UuaCAqLywKIAkJCQk3QzgzREU4NTFEMDRDQkQ0MDBGRUJDRjMg
LyogU3ByaW5nU29sdmVyLmggKi8sCiAJCQkJQjIzNTQwRjAwRDAwNzgyRTAwMjM4MkZBIC8qIFN0
cmluZ1RydW5jYXRvci5jcHAgKi8sCiAJCQkJQjIzNTQwRjEwRDAwNzgyRTAwMjM4MkZBIC8qIFN0
cmluZ1RydW5jYXRvci5oICovLApAQCAtMzYxMDksNiArMzYxMTQsNyBAQAogCQkJCUNEQzhCNUFC
MTgwNDdGRjEwMDE2RTY4NSAvKiBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQ0RDOEI1QUQxODA0QUU1RDAwMTZFNjg1IC8qIFNvdXJjZUJ1ZmZlclByaXZh
dGVDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTg0QTgxRjQyMEZDN0UwMjcwMDk1NTMwMCAv
KiBTb3VyY2VHcmFwaGljLmggaW4gSGVhZGVycyAqLywKKwkJCQk3MjE0QjlBOTI3NDJGQjk5MDAz
QkU2REYgLyogU291cmNlSW1hZ2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUQwMUEyN0FFMTBDOUJG
RDgwMDAyNkE0MiAvKiBTcGFjZVNwbGl0U3RyaW5nLmggaW4gSGVhZGVycyAqLywKIAkJCQk2MjZD
REUwRjExNDA0MjRDMDAxRTVBNjggLyogU3BhdGlhbE5hdmlnYXRpb24uaCBpbiBIZWFkZXJzICov
LAogCQkJCTkzNDk1MENEMjUzOTQzNjEwMDk5RjE3MSAvKiBTcGVlY2hSZWNvZ25pdGlvbi5oIGlu
IEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52
YXNQYXR0ZXJuLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1BhdHRlcm4u
Y3BwCmluZGV4IDhmMTkzODJjYjIwM2QyZTQxMWJjYTk1N2E2OTFiMWZhYzk4YTJjYTEuLjYwY2Uz
ZGVhNjFlMjRmYTdiZDQ5ZTI4ZjE3ZTdlNDQ4Y2RiMjA4MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1BhdHRlcm4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL0NhbnZhc1BhdHRlcm4uY3BwCkBAIC0zNCwxMiArMzQsMTIgQEAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1SZWY8Q2FudmFzUGF0dGVybj4gQ2FudmFzUGF0dGVybjo6Y3Jl
YXRlKFJlZjxOYXRpdmVJbWFnZT4mJiBpbWFnZSwgYm9vbCByZXBlYXRYLCBib29sIHJlcGVhdFks
IGJvb2wgb3JpZ2luQ2xlYW4pCitSZWY8Q2FudmFzUGF0dGVybj4gQ2FudmFzUGF0dGVybjo6Y3Jl
YXRlKFNvdXJjZUltYWdlJiYgaW1hZ2UsIGJvb2wgcmVwZWF0WCwgYm9vbCByZXBlYXRZLCBib29s
IG9yaWdpbkNsZWFuKQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENhbnZhc1BhdHRlcm4o
V1RGTW92ZShpbWFnZSksIHJlcGVhdFgsIHJlcGVhdFksIG9yaWdpbkNsZWFuKSk7CiB9CiAKLUNh
bnZhc1BhdHRlcm46OkNhbnZhc1BhdHRlcm4oUmVmPE5hdGl2ZUltYWdlPiYmIGltYWdlLCBib29s
IHJlcGVhdFgsIGJvb2wgcmVwZWF0WSwgYm9vbCBvcmlnaW5DbGVhbikKK0NhbnZhc1BhdHRlcm46
OkNhbnZhc1BhdHRlcm4oU291cmNlSW1hZ2UmJiBpbWFnZSwgYm9vbCByZXBlYXRYLCBib29sIHJl
cGVhdFksIGJvb2wgb3JpZ2luQ2xlYW4pCiAgICAgOiBtX3BhdHRlcm4oUGF0dGVybjo6Y3JlYXRl
KFdURk1vdmUoaW1hZ2UpLCB7IHJlcGVhdFgsIHJlcGVhdFkgfSkpCiAgICAgLCBtX29yaWdpbkNs
ZWFuKG9yaWdpbkNsZWFuKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvQ2FudmFzUGF0dGVybi5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUGF0
dGVybi5oCmluZGV4IGU0NmQyMWJjNTEzNWQ5YTc0ZjQ1NzVjOWRkNjVlOWNlY2RjYjhkMmEuLjg3
MWUwNDU3N2NjNTFlNTk4MDU3YmVjZTJhYmQ3NWY2NmFjOTljNjEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1BhdHRlcm4uaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9DYW52YXNQYXR0ZXJuLmgKQEAgLTMyLDEzICszMiwxMyBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIE5hdGl2ZUltYWdlOwogY2xhc3MgUGF0dGVybjsKK2Ns
YXNzIFNvdXJjZUltYWdlOwogc3RydWN0IERPTU1hdHJpeDJESW5pdDsKIAogY2xhc3MgQ2FudmFz
UGF0dGVybiA6IHB1YmxpYyBSZWZDb3VudGVkPENhbnZhc1BhdHRlcm4+IHsKIHB1YmxpYzoKLSAg
ICBzdGF0aWMgUmVmPENhbnZhc1BhdHRlcm4+IGNyZWF0ZShSZWY8TmF0aXZlSW1hZ2U+JiYsIGJv
b2wgcmVwZWF0WCwgYm9vbCByZXBlYXRZLCBib29sIG9yaWdpbkNsZWFuKTsKKyAgICBzdGF0aWMg
UmVmPENhbnZhc1BhdHRlcm4+IGNyZWF0ZShTb3VyY2VJbWFnZSYmLCBib29sIHJlcGVhdFgsIGJv
b2wgcmVwZWF0WSwgYm9vbCBvcmlnaW5DbGVhbik7CiAgICAgfkNhbnZhc1BhdHRlcm4oKTsKIAog
ICAgIHN0YXRpYyBib29sIHBhcnNlUmVwZXRpdGlvblR5cGUoY29uc3QgU3RyaW5nJiwgYm9vbCYg
cmVwZWF0WCwgYm9vbCYgcmVwZWF0WSk7CkBAIC01MSw3ICs1MSw3IEBAIHB1YmxpYzoKICAgICBF
eGNlcHRpb25Pcjx2b2lkPiBzZXRUcmFuc2Zvcm0oRE9NTWF0cml4MkRJbml0JiYpOwogCiBwcml2
YXRlOgotICAgIENhbnZhc1BhdHRlcm4oUmVmPE5hdGl2ZUltYWdlPiYmLCBib29sIHJlcGVhdFgs
IGJvb2wgcmVwZWF0WSwgYm9vbCBvcmlnaW5DbGVhbik7CisgICAgQ2FudmFzUGF0dGVybihTb3Vy
Y2VJbWFnZSYmLCBib29sIHJlcGVhdFgsIGJvb2wgcmVwZWF0WSwgYm9vbCBvcmlnaW5DbGVhbik7
CiAKICAgICBSZWY8UGF0dGVybj4gbV9wYXR0ZXJuOwogICAgIGJvb2wgbV9vcmlnaW5DbGVhbjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0Nv
bnRleHQyREJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVy
aW5nQ29udGV4dDJEQmFzZS5jcHAKaW5kZXggNmRlZmViODEyYzM3MjJjMzhlYTJmYzhkMDc5MWZh
ZTI5YjE2MGQ2ZS4uMWUwNjY0N2RkZTdmZmU3MDgxNjA1YTNhZjcyMGQ5NDRlNTQyMjBlMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDJEQmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVy
aW5nQ29udGV4dDJEQmFzZS5jcHAKQEAgLTE5OTQsNyArMTk5NCw3IEBAIEV4Y2VwdGlvbk9yPFJl
ZlB0cjxDYW52YXNQYXR0ZXJuPj4gQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6Y3JlYXRl
UGF0dGVybihICiAKICAgICB2aWRlb0VsZW1lbnQucGFpbnRDdXJyZW50RnJhbWVJbkNvbnRleHQo
aW1hZ2VCdWZmZXItPmNvbnRleHQoKSwgRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgc2l6ZSh2aWRl
b0VsZW1lbnQpKSk7CiAgICAgCi0gICAgcmV0dXJuIFJlZlB0cjxDYW52YXNQYXR0ZXJuPiB7IENh
bnZhc1BhdHRlcm46OmNyZWF0ZShJbWFnZUJ1ZmZlcjo6c2lua0ludG9OYXRpdmVJbWFnZShXVEZN
b3ZlKGltYWdlQnVmZmVyKSkucmVsZWFzZU5vbk51bGwoKSwgcmVwZWF0WCwgcmVwZWF0WSwgb3Jp
Z2luQ2xlYW4pIH07CisgICAgcmV0dXJuIFJlZlB0cjxDYW52YXNQYXR0ZXJuPiB7IENhbnZhc1Bh
dHRlcm46OmNyZWF0ZShpbWFnZUJ1ZmZlci5yZWxlYXNlTm9uTnVsbCgpLCByZXBlYXRYLCByZXBl
YXRZLCBvcmlnaW5DbGVhbikgfTsKIH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JDYW52YXMuY3BwCmluZGV4IGU4NDdmZTY4MTEyNzMyNTA2YjFkMDg0NmY2
MzNkYWM0Yjk2OWQxNjUuLjAzMTljYzM3ZGYyNWYyYzY2Zjk2YzI1OTYxMjExNWM4OTM4M2M3N2Ug
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXMuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXMuY3BwCkBAIC0x
MzM2LDEwICsxMzM2LDcgQEAgUmVmPEpTT046OkFycmF5T2Y8SlNPTjo6VmFsdWU+PiBJbnNwZWN0
b3JDYW52YXM6OmJ1aWxkQXJyYXlGb3JDYW52YXNHcmFkaWVudChjb24KIAogUmVmPEpTT046OkFy
cmF5T2Y8SlNPTjo6VmFsdWU+PiBJbnNwZWN0b3JDYW52YXM6OmJ1aWxkQXJyYXlGb3JDYW52YXNQ
YXR0ZXJuKGNvbnN0IENhbnZhc1BhdHRlcm4mIGNhbnZhc1BhdHRlcm4pCiB7Ci0gICAgYXV0byYg
dGlsZUltYWdlID0gY2FudmFzUGF0dGVybi5wYXR0ZXJuKCkudGlsZUltYWdlKCk7Ci0gICAgRmxv
YXRSZWN0IHJlY3QgPSB7IHsgfSwgdGlsZUltYWdlLnNpemUoKSB9OwotICAgIGF1dG8gaW1hZ2VC
dWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHRpbGVJbWFnZS5zaXplKCksIFJlbmRlcmluZ01v
ZGU6OlVuYWNjZWxlcmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhl
bEZvcm1hdDo6QkdSQTgpOwotICAgIGltYWdlQnVmZmVyLT5jb250ZXh0KCkuZHJhd05hdGl2ZUlt
YWdlKHRpbGVJbWFnZSwgdGlsZUltYWdlLnNpemUoKSwgcmVjdCwgcmVjdCk7CisgICAgYXV0byBp
bWFnZUJ1ZmZlciA9IGNhbnZhc1BhdHRlcm4ucGF0dGVybigpLnRpbGVJbWFnZUJ1ZmZlcigpOwog
CiAgICAgU3RyaW5nIHJlcGVhdDsKICAgICBib29sIHJlcGVhdFggPSBjYW52YXNQYXR0ZXJuLnBh
dHRlcm4oKS5yZXBlYXRYKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9QYXR0ZXJuLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1Bh
dHRlcm4uY3BwCmluZGV4IDYzNTMyMzc2OWY4MDMzZGUzMjhlOGQ0NGU1Nzk3NWExZDNjZDYwNjUu
LjEwNGIzMDZhM2E4ODEzMDk0YzE3NTMwZGVhZGMxYmVjN2I3MzAyNGEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BhdHRlcm4uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BhdHRlcm4uY3BwCkBAIC0yNywxNiArMjcsMTggQEAK
ICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJQYXR0ZXJuLmgiCiAKKyNpbmNsdWRlICJH
cmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJJbWFnZS5oIgorI2luY2x1ZGUgIkltYWdlQnVm
ZmVyLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVmPFBhdHRlcm4+IFBhdHRlcm46OmNy
ZWF0ZShSZWY8TmF0aXZlSW1hZ2U+JiYgdGlsZUltYWdlLCBjb25zdCBQYXJhbWV0ZXJzJiBwYXJh
bWV0ZXJzKQorUmVmPFBhdHRlcm4+IFBhdHRlcm46OmNyZWF0ZShTb3VyY2VJbWFnZSYmIHRpbGVJ
bWFnZSwgY29uc3QgUGFyYW1ldGVycyYgcGFyYW1ldGVycykKIHsKICAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBQYXR0ZXJuKFdURk1vdmUodGlsZUltYWdlKSwgcGFyYW1ldGVycykpOwogfQogCi1Q
YXR0ZXJuOjpQYXR0ZXJuKFJlZjxOYXRpdmVJbWFnZT4mJiBpbWFnZSwgY29uc3QgUGFyYW1ldGVy
cyYgcGFyYW1ldGVycykKK1BhdHRlcm46OlBhdHRlcm4oU291cmNlSW1hZ2UmJiBpbWFnZSwgY29u
c3QgUGFyYW1ldGVycyYgcGFyYW1ldGVycykKICAgICA6IG1fdGlsZUltYWdlKFdURk1vdmUoaW1h
Z2UpKQogICAgICwgbV9wYXJhbWV0ZXJzKHBhcmFtZXRlcnMpCiB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXR0ZXJuLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9QYXR0ZXJuLmgKaW5kZXggMWM5NjFmYmY0NmU4MzZmNDAwN2U2MGE5
ODE0MWY0OTEyNGI1NDUwMy4uNDYxZGI2YTg4NDVmYmJlODY3ZWE1OTZmMjAwZTgyZjg5MGViZmZi
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0dGVybi5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BhdHRlcm4uaApAQCAtMjgs
NyArMjgsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJBZmZpbmVUcmFuc2Zvcm0uaCIK
LSNpbmNsdWRlICJJbWFnZS5oIgorI2luY2x1ZGUgIlNvdXJjZUltYWdlLmgiCiAKICNpbmNsdWRl
IDx3dGYvUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KQEAgLTUyLDcgKzUyLDYg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBBZmZpbmVUcmFuc2Zvcm07CiBjbGFzcyBH
cmFwaGljc0NvbnRleHQ7Ci1jbGFzcyBJbWFnZTsKIAogY2xhc3MgUGF0dGVybiBmaW5hbCA6IHB1
YmxpYyBSZWZDb3VudGVkPFBhdHRlcm4+IHsKIHB1YmxpYzoKQEAgLTcwLDEwICs2OSwxNCBAQCBw
dWJsaWM6CiAgICAgICAgIGJvb2wgcmVwZWF0WTsKICAgICB9OwogCi0gICAgV0VCQ09SRV9FWFBP
UlQgc3RhdGljIFJlZjxQYXR0ZXJuPiBjcmVhdGUoUmVmPE5hdGl2ZUltYWdlPiYmIHRpbGVJbWFn
ZSwgY29uc3QgUGFyYW1ldGVycyYgPSB7IH0pOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBS
ZWY8UGF0dGVybj4gY3JlYXRlKFNvdXJjZUltYWdlJiYgdGlsZUltYWdlLCBjb25zdCBQYXJhbWV0
ZXJzJiA9IHsgfSk7CiAgICAgV0VCQ09SRV9FWFBPUlQgflBhdHRlcm4oKTsKIAotICAgIE5hdGl2
ZUltYWdlJiB0aWxlSW1hZ2UoKSBjb25zdCB7IHJldHVybiBtX3RpbGVJbWFnZS5nZXQoKTsgfQor
ICAgIFNvdXJjZUltYWdlJiB0aWxlSW1hZ2UoKSBjb25zdCB7IHJldHVybiBtX3RpbGVJbWFnZTsg
fQorICAgIE5hdGl2ZUltYWdlKiB0aWxlTmF0aXZlSW1hZ2UoKSBjb25zdCB7IHJldHVybiBtX3Rp
bGVJbWFnZS5uYXRpdmVJbWFnZSgpOyB9CisgICAgSW1hZ2VCdWZmZXIqIHRpbGVJbWFnZUJ1ZmZl
cigpIGNvbnN0IHsgcmV0dXJuIG1fdGlsZUltYWdlLmltYWdlQnVmZmVyKCk7IH0KKyAgICBSZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgdGlsZUltYWdlSWRlbnRpZmllcigpIGNvbnN0IHsgcmV0
dXJuIG1fdGlsZUltYWdlLmltYWdlSWRlbnRpZmllcigpOyB9CisKICAgICBjb25zdCBQYXJhbWV0
ZXJzJiBwYXJhbWV0ZXJzKCkgY29uc3QgeyByZXR1cm4gbV9wYXJhbWV0ZXJzOyB9CiAKICAgICAv
LyBQYXR0ZXJuIHNwYWNlIGlzIGFuIGFic3RyYWN0IHNwYWNlIHRoYXQgbWFwcyB0byB0aGUgZGVm
YXVsdCB1c2VyIHNwYWNlIGJ5IHRoZSB0cmFuc2Zvcm1hdGlvbiAndXNlclNwYWNlVHJhbnNmb3Jt
JwpAQCAtODgsOSArOTEsOSBAQCBwdWJsaWM6CiAgICAgYm9vbCByZXBlYXRZKCkgY29uc3QgeyBy
ZXR1cm4gbV9wYXJhbWV0ZXJzLnJlcGVhdFk7IH0KIAogcHJpdmF0ZToKLSAgICBQYXR0ZXJuKFJl
ZjxOYXRpdmVJbWFnZT4mJiwgY29uc3QgUGFyYW1ldGVycyYpOworICAgIFBhdHRlcm4oU291cmNl
SW1hZ2UmJiwgY29uc3QgUGFyYW1ldGVycyYpOwogCi0gICAgUmVmPE5hdGl2ZUltYWdlPiBtX3Rp
bGVJbWFnZTsKKyAgICBtdXRhYmxlIFNvdXJjZUltYWdlIG1fdGlsZUltYWdlOwogICAgIFBhcmFt
ZXRlcnMgbV9wYXJhbWV0ZXJzOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvU291cmNlSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvU291cmNlSW1hZ2UuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFjMjVhNmE4ZDcxM2YzMTVhYzNk
YzljYTQ5ZWU0YWVmNTEzZTY4NTgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9Tb3VyY2VJbWFnZS5jcHAKQEAgLTAsMCArMSwxMDIgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIlNvdXJjZUltYWdlLmgiCisKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRl
eHQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitTb3VyY2VJbWFnZTo6U291cmNlSW1hZ2Uo
UmVmPE5hdGl2ZUltYWdlPiYmIG5hdGl2ZUltYWdlKQorICAgIDogbV9pbWFnZShXVEZNb3ZlKG5h
dGl2ZUltYWdlKSkKK3sKK30KKworU291cmNlSW1hZ2U6OlNvdXJjZUltYWdlKFJlZjxJbWFnZUJ1
ZmZlcj4mJiBpbWFnZUJ1ZmZlcikKKyAgICA6IG1faW1hZ2UoV1RGTW92ZShpbWFnZUJ1ZmZlcikp
Cit7Cit9CisKK05hdGl2ZUltYWdlKiBTb3VyY2VJbWFnZTo6bmF0aXZlSW1hZ2VJZkV4aXN0cygp
IGNvbnN0Cit7CisgICAgaWYgKGF1dG8qIG5hdGl2ZUltYWdlID0gc3RkOjpnZXRfaWY8UmVmPE5h
dGl2ZUltYWdlPj4oJm1faW1hZ2UpKQorICAgICAgICByZXR1cm4gbmF0aXZlSW1hZ2UtPnB0cigp
OworICAgIHJldHVybiBudWxscHRyOworfQorCitOYXRpdmVJbWFnZSogU291cmNlSW1hZ2U6Om5h
dGl2ZUltYWdlKCkKK3sKKyAgICBpZiAoYXV0byogbmF0aXZlSW1hZ2UgPSBuYXRpdmVJbWFnZUlm
RXhpc3RzKCkpCisgICAgICAgIHJldHVybiBuYXRpdmVJbWFnZTsKKworICAgIGF1dG8gaW1hZ2VC
dWZmZXIgPSBzdGQ6OmdldDxSZWY8SW1hZ2VCdWZmZXI+PihtX2ltYWdlKTsKKworICAgIGF1dG8g
bmF0aXZlSW1hZ2UgPSBJbWFnZUJ1ZmZlcjo6c2lua0ludG9OYXRpdmVJbWFnZShXVEZNb3ZlKGlt
YWdlQnVmZmVyKSk7CisgICAgaWYgKCFuYXRpdmVJbWFnZSkKKyAgICAgICAgcmV0dXJuIG51bGxw
dHI7CisKKyAgICBtX2ltYWdlID0gbmF0aXZlSW1hZ2UucmVsZWFzZU5vbk51bGwoKTsKKyAgICBy
ZXR1cm4gbmF0aXZlSW1hZ2VJZkV4aXN0cygpOworfQorCitJbWFnZUJ1ZmZlciogU291cmNlSW1h
Z2U6OmltYWdlQnVmZmVySWZFeGlzdHMoKSBjb25zdAoreworICAgIGlmIChhdXRvKiBpbWFnZUJ1
ZmZlciA9IHN0ZDo6Z2V0X2lmPFJlZjxJbWFnZUJ1ZmZlcj4+KCZtX2ltYWdlKSkKKyAgICAgICAg
cmV0dXJuIGltYWdlQnVmZmVyLT5wdHIoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworSW1h
Z2VCdWZmZXIqIFNvdXJjZUltYWdlOjppbWFnZUJ1ZmZlcigpCit7CisgICAgaWYgKGF1dG8qIGlt
YWdlQnVmZmVyID0gaW1hZ2VCdWZmZXJJZkV4aXN0cygpKQorICAgICAgICByZXR1cm4gaW1hZ2VC
dWZmZXI7CisKKyAgICBhdXRvIG5hdGl2ZUltYWdlID0gc3RkOjpnZXQ8UmVmPE5hdGl2ZUltYWdl
Pj4obV9pbWFnZSk7CisKKyAgICBGbG9hdFJlY3QgcmVjdCA9IHsgeyB9LCBuYXRpdmVJbWFnZS0+
c2l6ZSgpIH07CisgICAgYXV0byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUobmF0
aXZlSW1hZ2UtPnNpemUoKSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGlu
YXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9ybWF0OjpCR1JBOCk7CisgICAgaWYgKCFp
bWFnZUJ1ZmZlcikKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBpbWFnZUJ1ZmZlci0+
Y29udGV4dCgpLmRyYXdOYXRpdmVJbWFnZShuYXRpdmVJbWFnZSwgbmF0aXZlSW1hZ2UtPnNpemUo
KSwgcmVjdCwgcmVjdCk7CisKKyAgICBtX2ltYWdlID0gaW1hZ2VCdWZmZXIucmVsZWFzZU5vbk51
bGwoKTsKKyAgICByZXR1cm4gaW1hZ2VCdWZmZXJJZkV4aXN0cygpOworfQorCitSZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXIgU291cmNlSW1hZ2U6OmltYWdlSWRlbnRpZmllcigpIGNvbnN0Cit7
CisgICAgcmV0dXJuIFdURjo6c3dpdGNoT24obV9pbWFnZSwKKyAgICAgICAgWyZdIChjb25zdCBS
ZWY8TmF0aXZlSW1hZ2U+JiBuYXRpdmVJbWFnZSkgeworICAgICAgICAgICAgcmV0dXJuIG5hdGl2
ZUltYWdlLT5yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIoKTsKKyAgICAgICAgfSwKKyAgICAg
ICAgWyZdIChjb25zdCBSZWY8SW1hZ2VCdWZmZXI+JiBpbWFnZUJ1ZmZlcikgeworICAgICAgICAg
ICAgcmV0dXJuIGltYWdlQnVmZmVyLT5yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIoKTsKKyAg
ICAgICAgfQorICAgICk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NvdXJjZUltYWdlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Tb3VyY2VJbWFnZS5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYxZWRl
MTVkOTk5MjhkYTQwMTBiZTg5OGU2Y2U0YjdmNTcyYTUyMDgKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Tb3VyY2VJbWFnZS5oCkBAIC0wLDAgKzEs
NTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3By
YWdtYSBvbmNlCisKKyNpbmNsdWRlICJJbWFnZUJ1ZmZlci5oIgorI2luY2x1ZGUgIk5hdGl2ZUlt
YWdlLmgiCisjaW5jbHVkZSAiUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLmgiCisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworY2xhc3MgV0VCQ09SRV9FWFBPUlQgU291cmNlSW1hZ2UgeworcHVi
bGljOgorICAgIFNvdXJjZUltYWdlKFJlZjxOYXRpdmVJbWFnZT4mJik7CisgICAgU291cmNlSW1h
Z2UoUmVmPEltYWdlQnVmZmVyPiYmKTsKKworICAgIE5hdGl2ZUltYWdlKiBuYXRpdmVJbWFnZUlm
RXhpc3RzKCkgY29uc3Q7CisgICAgTmF0aXZlSW1hZ2UqIG5hdGl2ZUltYWdlKCk7CisKKyAgICBJ
bWFnZUJ1ZmZlciogaW1hZ2VCdWZmZXJJZkV4aXN0cygpIGNvbnN0OworICAgIEltYWdlQnVmZmVy
KiBpbWFnZUJ1ZmZlcigpOworCisgICAgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIGltYWdl
SWRlbnRpZmllcigpIGNvbnN0OworCitwcml2YXRlOgorICAgIHVzaW5nIEltYWdlID0gc3RkOjp2
YXJpYW50PFJlZjxOYXRpdmVJbWFnZT4sIFJlZjxJbWFnZUJ1ZmZlcj4+OworICAgIEltYWdlIG1f
aW1hZ2U7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9DYWlyb09wZXJhdGlvbnMuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQ2Fpcm9PcGVyYXRpb25zLmNwcApp
bmRleCAxNTUyMzU2YTIzYTVmZGZiMTBhZmVjYTJjYzkyYTcyNzk0NTgxMDJlLi45YWU2NDM0MmIx
ODRkNThhZmU3Yjc0MjdhZDUzNzI2YWFlY2FjZWZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9DYWlyb09wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0NhaXJvT3BlcmF0aW9ucy5jcHAKQEAg
LTU2Miw4ICs1NjIsOCBAQCBGaWxsU291cmNlOjpGaWxsU291cmNlKGNvbnN0IEdyYXBoaWNzQ29u
dGV4dFN0YXRlJiBzdGF0ZSkKICAgICBpZiAoc3RhdGUuZmlsbFBhdHRlcm4pIHsKICAgICAgICAg
cGF0dGVybi5vYmplY3QgPSBhZG9wdFJlZihzdGF0ZS5maWxsUGF0dGVybi0+Y3JlYXRlUGxhdGZv
cm1QYXR0ZXJuKEFmZmluZVRyYW5zZm9ybSgpKSk7CiAKLSAgICAgICAgYXV0byYgcGF0dGVybklt
YWdlID0gc3RhdGUuZmlsbFBhdHRlcm4tPnRpbGVJbWFnZSgpOwotICAgICAgICBwYXR0ZXJuLnNp
emUgPSBwYXR0ZXJuSW1hZ2Uuc2l6ZSgpOworICAgICAgICBpZiAoYXV0byBwYXR0ZXJuSW1hZ2Ug
PSBzdGF0ZS5maWxsUGF0dGVybi0+dGlsZU5hdGl2ZUltYWdlKCkpCisgICAgICAgICAgICBwYXR0
ZXJuLnNpemUgPSBwYXR0ZXJuSW1hZ2UtPnNpemUoKTsKICAgICAgICAgcGF0dGVybi50cmFuc2Zv
cm0gPSBzdGF0ZS5maWxsUGF0dGVybi0+cGF0dGVyblNwYWNlVHJhbnNmb3JtKCk7CiAgICAgICAg
IHBhdHRlcm4ucmVwZWF0WCA9IHN0YXRlLmZpbGxQYXR0ZXJuLT5yZXBlYXRYKCk7CiAgICAgICAg
IHBhdHRlcm4ucmVwZWF0WSA9IHN0YXRlLmZpbGxQYXR0ZXJuLT5yZXBlYXRZKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QYXR0ZXJuQ2Fpcm8u
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGF0dGVybkNhaXJv
LmNwcAppbmRleCA2OGRhYmFmOThhY2E5ZDFjZmI3MWUxNjUyMmI5ZGViMjU4MDdmZjFmLi5hM2Zj
ZDY4ZmY4YjdjZDk2ZDQ0ZTJmNTdhOTRhMzllOTM3MWFjMTlhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QYXR0ZXJuQ2Fpcm8uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BhdHRlcm5DYWlyby5jcHAKQEAg
LTM1LDcgKzM1LDExIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2Fpcm9fcGF0dGVybl90KiBQ
YXR0ZXJuOjpjcmVhdGVQbGF0Zm9ybVBhdHRlcm4oY29uc3QgQWZmaW5lVHJhbnNmb3JtJikgY29u
c3QKIHsKLSAgICBhdXRvIHBsYXRmb3JtSW1hZ2UgPSB0aWxlSW1hZ2UoKS5wbGF0Zm9ybUltYWdl
KCk7CisgICAgYXV0byBuYXRpdmVJbWFnZSA9IHRpbGVOYXRpdmVJbWFnZSgpOworICAgIGlmICgh
bmF0aXZlSW1hZ2UpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgYXV0byBwbGF0Zm9y
bUltYWdlID0gbmF0aXZlSW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKTsKICAgICBpZiAoIXBsYXRmb3Jt
SW1hZ2UpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QYXR0ZXJuQ0cuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGF0dGVybkNHLmNwcAppbmRleCAwNWEzOTE2NTQwYmI3NmRh
M2YwYWJhYTMzOTRmYzhkZDA4OGM4ZGE5Li5kNDVmYTkyY2M1NGNjZDhmZTE4NzI1ZTZjZjdmMDMw
NWViOGNiZmFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
Zy9QYXR0ZXJuQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L1BhdHRlcm5DRy5jcHAKQEAgLTU1LDEzICs1NSwxNyBAQCBzdGF0aWMgdm9pZCBwYXR0ZXJuUmVs
ZWFzZUNhbGxiYWNrKHZvaWQqIGluZm8pCiAKIFJldGFpblB0cjxDR1BhdHRlcm5SZWY+IFBhdHRl
cm46OmNyZWF0ZVBsYXRmb3JtUGF0dGVybihjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHVzZXJTcGFj
ZVRyYW5zZm9ybSkgY29uc3QKIHsKLSAgICBGbG9hdFJlY3QgdGlsZVJlY3QgPSB7IHsgfSwgdGls
ZUltYWdlKCkuc2l6ZSgpIH07CisgICAgYXV0byBuYXRpdmVJbWFnZSA9IHRpbGVOYXRpdmVJbWFn
ZSgpOworICAgIGlmICghbmF0aXZlSW1hZ2UpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAg
IAorICAgIEZsb2F0UmVjdCB0aWxlUmVjdCA9IHsgeyB9LCBuYXRpdmVJbWFnZS0+c2l6ZSgpIH07
CiAKICAgICBBZmZpbmVUcmFuc2Zvcm0gcGF0dGVyblRyYW5zZm9ybSA9IHVzZXJTcGFjZVRyYW5z
Zm9ybSAqIHBhdHRlcm5TcGFjZVRyYW5zZm9ybSgpOwogICAgIHBhdHRlcm5UcmFuc2Zvcm0uc2Nh
bGVOb25Vbmlmb3JtKDEsIC0xKTsKICAgICBwYXR0ZXJuVHJhbnNmb3JtLnRyYW5zbGF0ZSgwLCAt
dGlsZVJlY3QuaGVpZ2h0KCkpOwogCi0gICAgUGxhdGZvcm1JbWFnZVB0ciBwbGF0Zm9ybUltYWdl
ID0gdGlsZUltYWdlKCkucGxhdGZvcm1JbWFnZSgpOworICAgIFBsYXRmb3JtSW1hZ2VQdHIgcGxh
dGZvcm1JbWFnZSA9IG5hdGl2ZUltYWdlLT5wbGF0Zm9ybUltYWdlKCk7CiAgICAgaWYgKCFwbGF0
Zm9ybUltYWdlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3Bs
YXlMaXN0SXRlbXMuY3BwCmluZGV4IGU3MjZkOTRmMzAwNTAwMjMxMmJjNjQyYjMwMTVlY2JhZTMx
NDg0OGMuLmJlM2YxYzRiYTFjOThhNjI3MDYzZjEwM2MyZDM1ZDg4MTgwOTU4ZDAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdEl0ZW1zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNw
bGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHAKQEAgLTE1OSwxMiArMTU5LDEyIEBAIFNldFN0
YXRlOjpTZXRTdGF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZUNoYW5nZSYgc3RhdGVDaGFu
Z2UsIGNvbnN0IFBhdHRlcm5ECiB7CiB9CiAKLXZvaWQgU2V0U3RhdGU6OmFwcGx5KEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCwgTmF0aXZlSW1hZ2UqIHN0cm9rZVBhdHRlcm5JbWFnZSwgTmF0aXZl
SW1hZ2UqIGZpbGxQYXR0ZXJuSW1hZ2UpCit2b2lkIFNldFN0YXRlOjphcHBseShHcmFwaGljc0Nv
bnRleHQmIGNvbnRleHQsIHN0ZDo6b3B0aW9uYWw8U291cmNlSW1hZ2U+JiYgc3Ryb2tlUGF0dGVy
bkltYWdlLCBzdGQ6Om9wdGlvbmFsPFNvdXJjZUltYWdlPiYmIGZpbGxQYXR0ZXJuSW1hZ2UpCiB7
CiAgICAgaWYgKG1fc3RhdGVDaGFuZ2UubV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0Nv
bnRleHRTdGF0ZTo6U3Ryb2tlUGF0dGVybkNoYW5nZSkgJiYgc3Ryb2tlUGF0dGVybkltYWdlKQot
ICAgICAgICBtX3N0YXRlQ2hhbmdlLm1fc3RhdGUuc3Ryb2tlUGF0dGVybiA9IFBhdHRlcm46OmNy
ZWF0ZSgqc3Ryb2tlUGF0dGVybkltYWdlLCBtX3N0cm9rZVBhdHRlcm4ucGFyYW1ldGVycyk7Cisg
ICAgICAgIG1fc3RhdGVDaGFuZ2UubV9zdGF0ZS5zdHJva2VQYXR0ZXJuID0gUGF0dGVybjo6Y3Jl
YXRlKFdURk1vdmUoKnN0cm9rZVBhdHRlcm5JbWFnZSksIG1fc3Ryb2tlUGF0dGVybi5wYXJhbWV0
ZXJzKTsKICAgICBpZiAobV9zdGF0ZUNoYW5nZS5tX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBo
aWNzQ29udGV4dFN0YXRlOjpGaWxsUGF0dGVybkNoYW5nZSkgJiYgZmlsbFBhdHRlcm5JbWFnZSkK
LSAgICAgICAgbV9zdGF0ZUNoYW5nZS5tX3N0YXRlLmZpbGxQYXR0ZXJuID0gUGF0dGVybjo6Y3Jl
YXRlKCpmaWxsUGF0dGVybkltYWdlLCBtX2ZpbGxQYXR0ZXJuLnBhcmFtZXRlcnMpOworICAgICAg
ICBtX3N0YXRlQ2hhbmdlLm1fc3RhdGUuZmlsbFBhdHRlcm4gPSBQYXR0ZXJuOjpjcmVhdGUoV1RG
TW92ZSgqZmlsbFBhdHRlcm5JbWFnZSksIG1fZmlsbFBhdHRlcm4ucGFyYW1ldGVycyk7CiAgICAg
bV9zdGF0ZUNoYW5nZS5hcHBseShjb250ZXh0KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dEl0ZW1zLmgKaW5kZXggY2ViZjM2OWJmYTJlZjBmNjdmMTMxZmI4NTIzNmU5YWE4OTdkNDQ4MC4u
OGE4ZGNjZWMyYjA1YTc2YjIxOWI5ODE2NzgyZmYzOGI1MDhhNTRmNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRl
bXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3RJdGVtcy5oCkBAIC0yNTcsNyArMjU3LDcgQEAgcHVibGljOgogICAgIHRlbXBs
YXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKICAgICB0ZW1w
bGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxTZXRTdGF0ZT4gZGVjb2Rl
KERlY29kZXImKTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwbHkoR3JhcGhpY3NDb250
ZXh0JiwgTmF0aXZlSW1hZ2UqIHN0cm9rZVBhdHRlcm5JbWFnZSwgTmF0aXZlSW1hZ2UqIGZpbGxQ
YXR0ZXJuSW1hZ2UpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwbHkoR3JhcGhpY3NDb250
ZXh0Jiwgc3RkOjpvcHRpb25hbDxTb3VyY2VJbWFnZT4mJiBzdHJva2VQYXR0ZXJuSW1hZ2UsIHN0
ZDo6b3B0aW9uYWw8U291cmNlSW1hZ2U+JiYgZmlsbFBhdHRlcm5JbWFnZSk7CiAKIHByaXZhdGU6
CiAgICAgc3RydWN0IFBhdHRlcm5EYXRhIHsKQEAgLTI4Nyw3ICsyODcsNyBAQCB2b2lkIFNldFN0
YXRlOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIAogICAgIGlmIChjaGFuZ2VGbGFn
cy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlUGF0dGVybkNoYW5nZSkpIHsK
ICAgICAgICAgQVNTRVJUKHN0YXRlLnN0cm9rZVBhdHRlcm4pOwotICAgICAgICBlbmNvZGVyIDw8
IHN0YXRlLnN0cm9rZVBhdHRlcm4tPnRpbGVJbWFnZSgpLnJlbmRlcmluZ1Jlc291cmNlSWRlbnRp
ZmllcigpOworICAgICAgICBlbmNvZGVyIDw8IHN0YXRlLnN0cm9rZVBhdHRlcm4tPnRpbGVJbWFn
ZUlkZW50aWZpZXIoKTsKICAgICAgICAgZW5jb2RlciA8PCBzdGF0ZS5zdHJva2VQYXR0ZXJuLT5w
YXJhbWV0ZXJzKCk7CiAgICAgfQogCkBAIC0yOTgsNyArMjk4LDcgQEAgdm9pZCBTZXRTdGF0ZTo6
ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAKICAgICBpZiAoY2hhbmdlRmxhZ3MuY29u
dGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkZpbGxQYXR0ZXJuQ2hhbmdlKSkgewogICAgICAg
ICBBU1NFUlQoc3RhdGUuZmlsbFBhdHRlcm4pOwotICAgICAgICBlbmNvZGVyIDw8IHN0YXRlLmZp
bGxQYXR0ZXJuLT50aWxlSW1hZ2UoKS5yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIoKTsKKyAg
ICAgICAgZW5jb2RlciA8PCBzdGF0ZS5maWxsUGF0dGVybi0+dGlsZUltYWdlSWRlbnRpZmllcigp
OwogICAgICAgICBlbmNvZGVyIDw8IHN0YXRlLmZpbGxQYXR0ZXJuLT5wYXJhbWV0ZXJzKCk7CiAg
ICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNw
bGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaAppbmRleCA5YTQwMTQz
NjdkYjFlZjQzYjhhNTllNTBlM2Q0NzEwZjkzZTAzZWJmLi4xNGE4NjUxMmI3YmIwYmRlZjE4NmQw
OWEzODQ5OTNjNTY0ZmFiYWY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVy
LmgKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKICNpbmNs
dWRlICJJbWFnZS5oIiAvLyBGb3IgSW1hZ2U6OlRpbGVSdWxlLgogI2luY2x1ZGUgIklubGluZVBh
dGhEYXRhLmgiCisjaW5jbHVkZSAiU291cmNlSW1hZ2UuaCIKICNpbmNsdWRlICJUZXh0RmxhZ3Mu
aCIKICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KIApAQCAtMTM2LDggKzEzNyw5IEBAIHBy
b3RlY3RlZDoKICAgICB2aXJ0dWFsIHZvaWQgcmVjb3JkQXBwbHlEZXZpY2VTY2FsZUZhY3Rvcihm
bG9hdCkgPSAwOwogCiAgICAgdmlydHVhbCB2b2lkIHJlY29yZFJlc291cmNlVXNlKE5hdGl2ZUlt
YWdlJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCByZWNvcmRSZXNvdXJjZVVzZShGb250JikgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCByZWNvcmRSZXNvdXJjZVVzZShJbWFnZUJ1ZmZlciYpID0gMDsK
KyAgICB2aXJ0dWFsIHZvaWQgcmVjb3JkUmVzb3VyY2VVc2UoU291cmNlSW1hZ2UmKSA9IDA7Cisg
ICAgdmlydHVhbCB2b2lkIHJlY29yZFJlc291cmNlVXNlKEZvbnQmKSA9IDA7CiAKICAgICAvLyBG
SVhNRTogTWF5YmUgcmVtb3ZlIHRoaXM/CiAgICAgdmlydHVhbCBib29sIGNhbkRyYXdJbWFnZUJ1
ZmZlcihjb25zdCBJbWFnZUJ1ZmZlciYpIGNvbnN0ID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVy
SW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3RSZWNvcmRlckltcGwuY3BwCmluZGV4IGE1ZTJkM2IyMDk4NWUzZWY5NDFhMzIz
NTc1NmUyODBlYWNkNTE2M2MuLmQ2YmY2ZmI2MTc3NjE1NWVmMzM1ZTk1ZDg1ZmE0NDAwNGJkODc0
YTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdFJlY29yZGVySW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXJJbXBsLmNwcApA
QCAtNDEyLDI1ICs0MTIsMzcgQEAgdm9pZCBSZWNvcmRlckltcGw6OnJlY29yZEFwcGx5RGV2aWNl
U2NhbGVGYWN0b3IoZmxvYXQgc2NhbGVGYWN0b3IpCiAgICAgYXBwZW5kPEFwcGx5RGV2aWNlU2Nh
bGVGYWN0b3I+KHNjYWxlRmFjdG9yKTsKIH0KIAotdm9pZCBSZWNvcmRlckltcGw6OnJlY29yZFJl
c291cmNlVXNlKE5hdGl2ZUltYWdlJiBpbWFnZSkKK3ZvaWQgUmVjb3JkZXJJbXBsOjpyZWNvcmRS
ZXNvdXJjZVVzZShOYXRpdmVJbWFnZSYgbmF0aXZlSW1hZ2UpCiB7CiAgICAgaWYgKG1fZGVsZWdh
dGUpCi0gICAgICAgIG1fZGVsZWdhdGUtPnJlY29yZE5hdGl2ZUltYWdlVXNlKGltYWdlKTsKLSAg
ICBtX2Rpc3BsYXlMaXN0LmNhY2hlTmF0aXZlSW1hZ2UoaW1hZ2UpOworICAgICAgICBtX2RlbGVn
YXRlLT5yZWNvcmROYXRpdmVJbWFnZVVzZShuYXRpdmVJbWFnZSk7CisgICAgbV9kaXNwbGF5TGlz
dC5jYWNoZU5hdGl2ZUltYWdlKG5hdGl2ZUltYWdlKTsKIH0KIAotdm9pZCBSZWNvcmRlckltcGw6
OnJlY29yZFJlc291cmNlVXNlKEZvbnQmIGZvbnQpCit2b2lkIFJlY29yZGVySW1wbDo6cmVjb3Jk
UmVzb3VyY2VVc2UoSW1hZ2VCdWZmZXImIGltYWdlQnVmZmVyKQogewogICAgIGlmIChtX2RlbGVn
YXRlKQotICAgICAgICBtX2RlbGVnYXRlLT5yZWNvcmRGb250VXNlKGZvbnQpOwotICAgIG1fZGlz
cGxheUxpc3QuY2FjaGVGb250KGZvbnQpOworICAgICAgICBtX2RlbGVnYXRlLT5yZWNvcmRJbWFn
ZUJ1ZmZlclVzZShpbWFnZUJ1ZmZlcik7CisgICAgbV9kaXNwbGF5TGlzdC5jYWNoZUltYWdlQnVm
ZmVyKGltYWdlQnVmZmVyKTsKIH0KIAotdm9pZCBSZWNvcmRlckltcGw6OnJlY29yZFJlc291cmNl
VXNlKEltYWdlQnVmZmVyJiBpbWFnZUJ1ZmZlcikKK3ZvaWQgUmVjb3JkZXJJbXBsOjpyZWNvcmRS
ZXNvdXJjZVVzZShTb3VyY2VJbWFnZSYgaW1hZ2UpCit7CisgICAgYXV0byBpbWFnZUJ1ZmZlciA9
IGltYWdlLmltYWdlQnVmZmVySWZFeGlzdHMoKTsKKyAgICBpZiAoaW1hZ2VCdWZmZXIgJiYgY2Fu
RHJhd0ltYWdlQnVmZmVyKCppbWFnZUJ1ZmZlcikpIHsKKyAgICAgICAgcmVjb3JkUmVzb3VyY2VV
c2UoKmltYWdlQnVmZmVyKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChhdXRv
IG5hdGl2ZUltYWdlID0gaW1hZ2UubmF0aXZlSW1hZ2UoKSkKKyAgICAgICAgcmVjb3JkUmVzb3Vy
Y2VVc2UoKm5hdGl2ZUltYWdlKTsKK30KKwordm9pZCBSZWNvcmRlckltcGw6OnJlY29yZFJlc291
cmNlVXNlKEZvbnQmIGZvbnQpCiB7CiAgICAgaWYgKG1fZGVsZWdhdGUpCi0gICAgICAgIG1fZGVs
ZWdhdGUtPnJlY29yZEltYWdlQnVmZmVyVXNlKGltYWdlQnVmZmVyKTsKLSAgICBtX2Rpc3BsYXlM
aXN0LmNhY2hlSW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXIpOworICAgICAgICBtX2RlbGVnYXRlLT5y
ZWNvcmRGb250VXNlKGZvbnQpOworICAgIG1fZGlzcGxheUxpc3QuY2FjaGVGb250KGZvbnQpOwog
fQogCiAvLyBGSVhNRTogc2hhcmUgd2l0aCBTaGFkb3dEYXRhCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRl
ckltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdFJlY29yZGVySW1wbC5oCmluZGV4IDNlNmQwOTAyNjkwNDZmMWIxMjRhMzljMWUx
MjExMDBiMzI3MjYwYzUuLjI5OWEzYmYzZmEyYzMxMWVjODQ5MzczZDBjMWZjODNiYjFmMTE4MDgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0
cy9EaXNwbGF5TGlzdFJlY29yZGVySW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVySW1wbC5oCkBAIC0xMzQs
OCArMTM0LDkgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlY29yZEFwcGx5RGV2aWNlU2NhbGVGYWN0
b3IoZmxvYXQpIGZpbmFsOwogCiAgICAgdm9pZCByZWNvcmRSZXNvdXJjZVVzZShOYXRpdmVJbWFn
ZSYpIGZpbmFsOwotICAgIHZvaWQgcmVjb3JkUmVzb3VyY2VVc2UoRm9udCYpIGZpbmFsOwogICAg
IHZvaWQgcmVjb3JkUmVzb3VyY2VVc2UoSW1hZ2VCdWZmZXImKSBmaW5hbDsKKyAgICB2b2lkIHJl
Y29yZFJlc291cmNlVXNlKFNvdXJjZUltYWdlJikgZmluYWw7CisgICAgdm9pZCByZWNvcmRSZXNv
dXJjZVVzZShGb250JikgZmluYWw7CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8R3JhcGhpY3NDb250
ZXh0PiBjcmVhdGVOZXN0ZWRDb250ZXh0KGNvbnN0IEZsb2F0UmVjdCYgaW5pdGlhbENsaXAsIGNv
bnN0IEFmZmluZVRyYW5zZm9ybSYgaW5pdGlhbENUTSkgZmluYWw7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJl
cGxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0
cy9EaXNwbGF5TGlzdFJlcGxheWVyLmNwcAppbmRleCA5NDFjMjA5M2NmNTZmMjIyMTEzYWJmMDAz
ZWQwOWYyYzg1MzNiNjU1Li45NWQ0NzY5MDlkZGU0YTUwZjA5Y2YxMTIxNGEyZGY2M2VmZmVhYmVj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3RSZXBsYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuY3BwCkBAIC04NSwyNCAr
ODUsMjcgQEAgaW5saW5lIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllcj4gYXBwbHlTZXRTdGF0ZUl0ZW0oR3JhcGgKIHsKICAgICBhdXRvJiBzZXRTdGF0ZUl0
ZW0gPSBpdGVtLmdldDxTZXRTdGF0ZT4oKTsKIAotICAgIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRp
ZmllciBzdHJva2VQYXR0ZXJuUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyOwotICAgIE5hdGl2
ZUltYWdlKiBzdHJva2VQYXR0ZXJuSW1hZ2UgPSBudWxscHRyOwotICAgIFJlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllciBmaWxsUGF0dGVyblJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcjsKLSAg
ICBOYXRpdmVJbWFnZSogZmlsbFBhdHRlcm5JbWFnZSA9IG51bGxwdHI7Ci0KLSAgICBpZiAoKHN0
cm9rZVBhdHRlcm5SZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgPSBzZXRTdGF0ZUl0ZW0uc3Ry
b2tlUGF0dGVybkltYWdlSWRlbnRpZmllcigpKSkgewotICAgICAgICBzdHJva2VQYXR0ZXJuSW1h
Z2UgPSByZXNvdXJjZUhlYXAuZ2V0TmF0aXZlSW1hZ2Uoc3Ryb2tlUGF0dGVyblJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllcik7Ci0gICAgICAgIGlmICghc3Ryb2tlUGF0dGVybkltYWdlKQotICAg
ICAgICAgICAgcmV0dXJuIHN0cm9rZVBhdHRlcm5SZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI7
Ci0gICAgfQorICAgIGF1dG8gY2FjaGVkU291cmNlSW1hZ2UgPSBbJl0oUmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaWVyIHBhdHRlcm5JbWFnZUlkZW50aWZpZXIpIC0+IHN0ZDo6b3B0aW9uYWw8U291
cmNlSW1hZ2U+IHsKKyAgICAgICAgaWYgKCFwYXR0ZXJuSW1hZ2VJZGVudGlmaWVyKQorICAgICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgaWYgKGF1dG8gbmF0aXZlSW1hZ2Ug
PSByZXNvdXJjZUhlYXAuZ2V0TmF0aXZlSW1hZ2UocGF0dGVybkltYWdlSWRlbnRpZmllcikpCisg
ICAgICAgICAgICByZXR1cm4gUmVmIHsgKm5hdGl2ZUltYWdlIH07CisgICAgICAgIGlmIChhdXRv
IGltYWdlQnVmZmVyID0gcmVzb3VyY2VIZWFwLmdldEltYWdlQnVmZmVyKHBhdHRlcm5JbWFnZUlk
ZW50aWZpZXIpKQorICAgICAgICAgICAgcmV0dXJuIFJlZiB7ICppbWFnZUJ1ZmZlciB9OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIH07CiAKLSAgICBpZiAoKGZpbGxQYXR0ZXJu
UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyID0gc2V0U3RhdGVJdGVtLmZpbGxQYXR0ZXJuSW1h
Z2VJZGVudGlmaWVyKCkpKSB7Ci0gICAgICAgIGZpbGxQYXR0ZXJuSW1hZ2UgPSByZXNvdXJjZUhl
YXAuZ2V0TmF0aXZlSW1hZ2UoZmlsbFBhdHRlcm5SZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIp
OwotICAgICAgICBpZiAoIWZpbGxQYXR0ZXJuSW1hZ2UpCi0gICAgICAgICAgICByZXR1cm4gZmls
bFBhdHRlcm5SZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI7Ci0gICAgfQorICAgIGF1dG8gc3Ry
b2tlUGF0dGVyblJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciA9IHNldFN0YXRlSXRlbS5zdHJv
a2VQYXR0ZXJuSW1hZ2VJZGVudGlmaWVyKCk7CisgICAgYXV0byBzdHJva2VQYXR0ZXJuSW1hZ2Ug
PSBjYWNoZWRTb3VyY2VJbWFnZShzdHJva2VQYXR0ZXJuUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyKTsKKyAgICBpZiAoIXN0cm9rZVBhdHRlcm5JbWFnZSAmJiBzdHJva2VQYXR0ZXJuUmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyKQorICAgICAgICByZXR1cm4gc3Ryb2tlUGF0dGVyblJlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllcjsKKworICAgIGF1dG8gZmlsbFBhdHRlcm5SZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXIgPSBzZXRTdGF0ZUl0ZW0uZmlsbFBhdHRlcm5JbWFnZUlkZW50aWZp
ZXIoKTsKKyAgICBhdXRvIGZpbGxQYXR0ZXJuSW1hZ2UgPSBjYWNoZWRTb3VyY2VJbWFnZShmaWxs
UGF0dGVyblJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CisgICAgaWYgKCFmaWxsUGF0dGVy
bkltYWdlICYmIGZpbGxQYXR0ZXJuUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQorICAgICAg
ICByZXR1cm4gZmlsbFBhdHRlcm5SZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI7CiAKLSAgICBz
ZXRTdGF0ZUl0ZW0uYXBwbHkoY29udGV4dCwgc3Ryb2tlUGF0dGVybkltYWdlLCBmaWxsUGF0dGVy
bkltYWdlKTsKKyAgICBzZXRTdGF0ZUl0ZW0uYXBwbHkoY29udGV4dCwgV1RGTW92ZShzdHJva2VQ
YXR0ZXJuSW1hZ2UpLCBXVEZNb3ZlKGZpbGxQYXR0ZXJuSW1hZ2UpKTsKIAogICAgIGlmICghZGVs
ZWdhdGUpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFVGlsZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFVGlsZS5jcHAKaW5kZXggODFhYTBjNTNh
MWE4MzY1NWY3ODJlYzkyYWUxNzA5ODllNDg4ZjUzZS4uZjY0ZDhiZGMxMzZkMDBhZjBiYzEyNzQy
Y2QyN2Q4ODMyNzc4YmQ5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9GRVRpbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRkVUaWxlLmNwcApAQCAtNzIsMTQgKzcyLDEwIEBAIHZvaWQgRkVUaWxl
OjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoY29uc3QgRmlsdGVyJiBmaWx0ZXIpCiAgICAgdGlsZUlt
YWdlQ29udGV4dC50cmFuc2xhdGUoLWluTWF4RWZmZWN0TG9jYXRpb24ueCgpLCAtaW5NYXhFZmZl
Y3RMb2NhdGlvbi55KCkpOwogICAgIHRpbGVJbWFnZUNvbnRleHQuZHJhd0ltYWdlQnVmZmVyKCpp
bkJ1ZmZlciwgaW4tPmFic29sdXRlUGFpbnRSZWN0KCkubG9jYXRpb24oKSk7CiAKLSAgICBhdXRv
IHRpbGVJbWFnZUNvcHkgPSBJbWFnZUJ1ZmZlcjo6c2lua0ludG9OYXRpdmVJbWFnZShXVEZNb3Zl
KHRpbGVJbWFnZSkpOwotICAgIGlmICghdGlsZUltYWdlQ29weSkKLSAgICAgICAgcmV0dXJuOwot
CiAgICAgQWZmaW5lVHJhbnNmb3JtIHBhdHRlcm5UcmFuc2Zvcm07CiAgICAgcGF0dGVyblRyYW5z
Zm9ybS50cmFuc2xhdGUoaW5NYXhFZmZlY3RMb2NhdGlvbiAtIG1heEVmZmVjdExvY2F0aW9uKTsK
IAotICAgIGF1dG8gcGF0dGVybiA9IFBhdHRlcm46OmNyZWF0ZSh0aWxlSW1hZ2VDb3B5LnJlbGVh
c2VOb25OdWxsKCksIHsgdHJ1ZSwgdHJ1ZSwgcGF0dGVyblRyYW5zZm9ybSB9KTsKKyAgICBhdXRv
IHBhdHRlcm4gPSBQYXR0ZXJuOjpjcmVhdGUodGlsZUltYWdlLnJlbGVhc2VOb25OdWxsKCksIHsg
dHJ1ZSwgdHJ1ZSwgcGF0dGVyblRyYW5zZm9ybSB9KTsKIAogICAgIEdyYXBoaWNzQ29udGV4dCYg
ZmlsdGVyQ29udGV4dCA9IHJlc3VsdEltYWdlLT5jb250ZXh0KCk7CiAgICAgZmlsdGVyQ29udGV4
dC5zZXRGaWxsUGF0dGVybihXVEZNb3ZlKHBhdHRlcm4pKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAKaW5kZXggYTc4NGRiYmI4MzdmN2I3ZTQx
N2IyNjliNmI3MGJjOTI3MjM0ZDUxZC4uZTExMGZiMGRjM2ZjODRjMWZjZTZhZGM3NzYyNzc3Mjgw
NzhlZTFjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVy
QmFja2luZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFj
a2luZy5jcHAKQEAgLTMzMTUsMTMgKzMzMTUsMTEgQEAgc3RhdGljIFJlZlB0cjxQYXR0ZXJuPiBw
YXR0ZXJuRm9yRGVzY3JpcHRpb24oUGF0dGVybkRlc2NyaXB0aW9uIGRlc2NyaXB0aW9uLCBGbG8K
ICAgICAgICAgaW1hZ2VDb250ZXh0LmRyYXdUZXh0KGZvbnQsIHRleHRSdW4sIHsgdGV4dEdhcCwg
eU9mZnNldCB9LCAwKTsKICAgICB9CiAKLSAgICBhdXRvIHRpbGVJbWFnZSA9IEltYWdlQnVmZmVy
OjpzaW5rSW50b05hdGl2ZUltYWdlKFdURk1vdmUoaW1hZ2VCdWZmZXIpKTsKLQogICAgIEFmZmlu
ZVRyYW5zZm9ybSBwYXR0ZXJuT2Zmc2V0VHJhbnNmb3JtOwogICAgIHBhdHRlcm5PZmZzZXRUcmFu
c2Zvcm0udHJhbnNsYXRlKGNvbnRlbnRPZmZzZXQgKyBkZXNjcmlwdGlvbi5waGFzZSk7CiAgICAg
cGF0dGVybk9mZnNldFRyYW5zZm9ybS5zY2FsZSgxIC8gZGVzdENvbnRleHQuc2NhbGVGYWN0b3Io
KSk7CiAKLSAgICByZXR1cm4gUGF0dGVybjo6Y3JlYXRlKHRpbGVJbWFnZS5yZWxlYXNlTm9uTnVs
bCgpLCB7IHRydWUsIHRydWUsIHBhdHRlcm5PZmZzZXRUcmFuc2Zvcm19KTsKKyAgICByZXR1cm4g
UGF0dGVybjo6Y3JlYXRlKGltYWdlQnVmZmVyLnJlbGVhc2VOb25OdWxsKCksIHsgdHJ1ZSwgdHJ1
ZSwgcGF0dGVybk9mZnNldFRyYW5zZm9ybSB9KTsKIH07CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4uY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4u
Y3BwCmluZGV4IDJjNjA1NTkwZGI0MDNlZjQ0YmYxNzhiYzA3Yzg0MTYwNDljMDk1MWIuLjZkZGM3
YTA2MDQ1YTI0YTg3NTYxNTVhMzE5ZTY3ZTk2YTg0NmU5YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlUGF0dGVybi5jcHAK
QEAgLTI1LDYgKzI1LDcgQEAKICNpbmNsdWRlICJGcmFtZVZpZXcuaCIKICNpbmNsdWRlICJHcmFw
aGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJSZW5kZXJTVkdSb290LmgiCisjaW5jbHVkZSAiUmVu
ZGVyVmlldy5oIgogI2luY2x1ZGUgIlNWR0VsZW1lbnRUeXBlSGVscGVycy5oIgogI2luY2x1ZGUg
IlNWR0ZpdFRvVmlld0JveC5oIgogI2luY2x1ZGUgIlNWR1JlbmRlcmluZ0NvbnRleHQuaCIKQEAg
LTExMywxMCArMTE0LDYgQEAgUGF0dGVybkRhdGEqIFJlbmRlclNWR1Jlc291cmNlUGF0dGVybjo6
YnVpbGRQYXR0ZXJuKFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBPcHQKIAogICAgIGF1dG8gdGls
ZUltYWdlU2l6ZSA9IHRpbGVJbWFnZS0+bG9naWNhbFNpemUoKTsKIAotICAgIGF1dG8gY29waWVk
SW1hZ2UgPSBJbWFnZUJ1ZmZlcjo6c2lua0ludG9OYXRpdmVJbWFnZShXVEZNb3ZlKHRpbGVJbWFn
ZSkpOwotICAgIGlmICghY29waWVkSW1hZ2UpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCiAg
ICAgLy8gQ29tcHV0ZSBwYXR0ZXJuIHNwYWNlIHRyYW5zZm9ybWF0aW9uLgogICAgIGF1dG8gcGF0
dGVybkRhdGEgPSBtYWtlVW5pcXVlPFBhdHRlcm5EYXRhPigpOwogICAgIHBhdHRlcm5EYXRhLT50
cmFuc2Zvcm0udHJhbnNsYXRlKHRpbGVCb3VuZGFyaWVzLmxvY2F0aW9uKCkpOwpAQCAtMTM0LDcg
KzEzMSw3IEBAIFBhdHRlcm5EYXRhKiBSZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm46OmJ1aWxkUGF0
dGVybihSZW5kZXJFbGVtZW50JiByZW5kZXJlciwgT3B0CiAgICAgfQogCiAgICAgLy8gQnVpbGQg
cGF0dGVybi4KLSAgICBwYXR0ZXJuRGF0YS0+cGF0dGVybiA9IFBhdHRlcm46OmNyZWF0ZShjb3Bp
ZWRJbWFnZS5yZWxlYXNlTm9uTnVsbCgpLCB7IHRydWUsIHRydWUsIHBhdHRlcm5EYXRhLT50cmFu
c2Zvcm0gfSk7CisgICAgcGF0dGVybkRhdGEtPnBhdHRlcm4gPSBQYXR0ZXJuOjpjcmVhdGUodGls
ZUltYWdlLnJlbGVhc2VOb25OdWxsKCksIHsgdHJ1ZSwgdHJ1ZSwgcGF0dGVybkRhdGEtPnRyYW5z
Zm9ybSB9KTsKIAogICAgIC8vIFZhcmlvdXMgY2FsbHMgYWJvdmUgbWF5IHRyaWdnZXIgaW52YWxp
ZGF0aW9ucyBpbiBzb21lIGZyaW5nZSBjYXNlcyAoSW1hZ2VCdWZmZXIgYWxsb2NhdGlvbgogICAg
IC8vIGZhaWx1cmVzIGluIHRoZSBTVkcgaW1hZ2UgY2FjaGUgZm9yIGV4YW1wbGUpLiBUbyBhdm9p
ZCBoYXZpbmcgb3VyIFBhdHRlcm5EYXRhIGRlbGV0ZWQgYnkKQEAgLTI1NCw3ICsyNTEsOSBAQCBi
b29sIFJlbmRlclNWR1Jlc291cmNlUGF0dGVybjo6YnVpbGRUaWxlSW1hZ2VUcmFuc2Zvcm0oUmVu
ZGVyRWxlbWVudCYgcmVuZGVyZXIsCiBSZWZQdHI8SW1hZ2VCdWZmZXI+IFJlbmRlclNWR1Jlc291
cmNlUGF0dGVybjo6Y3JlYXRlVGlsZUltYWdlKGNvbnN0IFBhdHRlcm5BdHRyaWJ1dGVzJiBhdHRy
aWJ1dGVzLCBjb25zdCBGbG9hdFJlY3QmIHRpbGVCb3VuZGFyaWVzLCBjb25zdCBGbG9hdFJlY3Qm
IGFic29sdXRlVGlsZUJvdW5kYXJpZXMsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdGlsZUltYWdl
VHJhbnNmb3JtLCBGbG9hdFJlY3QmIGNsYW1wZWRBYnNvbHV0ZVRpbGVCb3VuZGFyaWVzLCBSZW5k
ZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUpIGNvbnN0CiB7CiAgICAgY2xhbXBlZEFic29sdXRlVGls
ZUJvdW5kYXJpZXMgPSBJbWFnZUJ1ZmZlcjo6Y2xhbXBlZFJlY3QoYWJzb2x1dGVUaWxlQm91bmRh
cmllcyk7Ci0gICAgYXV0byB0aWxlSW1hZ2UgPSBTVkdSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGVJ
bWFnZUJ1ZmZlcihhYnNvbHV0ZVRpbGVCb3VuZGFyaWVzLCBjbGFtcGVkQWJzb2x1dGVUaWxlQm91
bmRhcmllcywgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIHJlbmRlcmluZ01vZGUpOwor
ICAgIAorICAgIGF1dG8gaG9zdFdpbmRvdyA9IHZpZXcoKS5mcmFtZVZpZXcoKS5yb290KCkgPyB2
aWV3KCkuZnJhbWVWaWV3KCkucm9vdCgpLT5ob3N0V2luZG93KCkgOiBudWxscHRyOworICAgIGF1
dG8gdGlsZUltYWdlID0gU1ZHUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlSW1hZ2VCdWZmZXIoYWJz
b2x1dGVUaWxlQm91bmRhcmllcywgY2xhbXBlZEFic29sdXRlVGlsZUJvdW5kYXJpZXMsIERlc3Rp
bmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCByZW5kZXJpbmdNb2RlLCBob3N0V2luZG93KTsKICAg
ICBpZiAoIXRpbGVJbWFnZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyaW5nQ29udGV4dC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0NvbnRleHQuY3BwCmluZGV4
IDIwYjhiNWU3YjA3YjMxYTEyYzVhYWNiYTM4NTg5MmZiZjNhMjM1NzMuLmJmMWU3ZjkxMTliMTdj
Mzg3NjA5ODVkZGNlOTcxNTEzMjk4MmIxMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvU1ZHUmVuZGVyaW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJpbmdDb250ZXh0LmNwcApAQCAtMjU2LDcgKzI1Niw3IEBA
IFJlZlB0cjxJbWFnZUJ1ZmZlcj4gU1ZHUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlSW1hZ2VCdWZm
ZXIoY29uc3QgRmxvYXRSZWN0JiB0YXJnCiAgICAgcmV0dXJuIGltYWdlQnVmZmVyOwogfQogCi1S
ZWZQdHI8SW1hZ2VCdWZmZXI+IFNWR1JlbmRlcmluZ0NvbnRleHQ6OmNyZWF0ZUltYWdlQnVmZmVy
KGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBjbGFtcGVkUmVj
dCwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiBjb2xvclNwYWNlLCBSZW5kZXJpbmdNb2Rl
IHJlbmRlcmluZ01vZGUsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCogY29udGV4dCkKK1JlZlB0cjxJ
bWFnZUJ1ZmZlcj4gU1ZHUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlSW1hZ2VCdWZmZXIoY29uc3Qg
RmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBGbG9hdFJlY3QmIGNsYW1wZWRSZWN0LCBjb25z
dCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9yU3BhY2UsIFJlbmRlcmluZ01vZGUgcmVuZGVy
aW5nTW9kZSwgSG9zdFdpbmRvdyogaG9zdFdpbmRvdywgY29uc3QgR3JhcGhpY3NDb250ZXh0KiBj
b250ZXh0KQogewogICAgIEludFNpemUgY2xhbXBlZFNpemUgPSByb3VuZGVkSW50U2l6ZShjbGFt
cGVkUmVjdC5zaXplKCkpOwogICAgIEZsb2F0U2l6ZSB1bmNsYW1wZWRTaXplID0gcm91bmRlZElu
dFNpemUodGFyZ2V0UmVjdC5zaXplKCkpOwpAQCAtMjY5LDcgKzI2OSw3IEBAIFJlZlB0cjxJbWFn
ZUJ1ZmZlcj4gU1ZHUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxv
YXRSZWN0JiB0YXJnCiAgICAgYXV0byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUo
Y2xhbXBlZFNpemUsIHJlbmRlcmluZ01vZGUsIGNvbnRleHQsIDEsIGNvbG9yU3BhY2UsIFBpeGVs
Rm9ybWF0OjpCR1JBOCk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShjb250ZXh0KTsKLSAgICBh
dXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShjbGFtcGVkU2l6ZSwgcmVuZGVy
aW5nTW9kZSwgMSwgY29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKKyAgICBhdXRvIGlt
YWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShjbGFtcGVkU2l6ZSwgcmVuZGVyaW5nTW9k
ZSwgU2hvdWxkVXNlRGlzcGxheUxpc3Q6Ok5vLCBSZW5kZXJpbmdQdXJwb3NlOjpET00sIDEsIGNv
bG9yU3BhY2UsIFBpeGVsRm9ybWF0OjpCR1JBOCwgaG9zdFdpbmRvdyk7CiAjZW5kaWYKICAgICBp
ZiAoIWltYWdlQnVmZmVyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyaW5nQ29udGV4dC5oIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJpbmdDb250ZXh0LmgKaW5kZXggNTk2NTk3
YmUxMjQ3YTk2YTYwNGFjY2Y0NTdlMDkyOWZkMGY1MGEwZS4uZWZmZjgzZGVjMDUzN2RkN2VlZTIy
MTAyZDRlYTZjZDQ4ODA0OGVlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9TVkdSZW5kZXJpbmdDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9TVkdSZW5kZXJpbmdDb250ZXh0LmgKQEAgLTYxLDcgKzYxLDcgQEAgcHVibGljOgogICAg
IGJvb2wgaXNSZW5kZXJpbmdQcmVwYXJlZCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVuZGVyaW5nRmxh
Z3MgJiBSZW5kZXJpbmdQcmVwYXJlZDsgfQogCiAgICAgc3RhdGljIFJlZlB0cjxJbWFnZUJ1ZmZl
cj4gY3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBB
ZmZpbmVUcmFuc2Zvcm0mIGFic29sdXRlVHJhbnNmb3JtLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9y
U3BhY2UmLCBSZW5kZXJpbmdNb2RlLCBjb25zdCBHcmFwaGljc0NvbnRleHQqID0gbnVsbHB0cik7
Ci0gICAgc3RhdGljIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlSW1hZ2VCdWZmZXIoY29uc3Qg
RmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBGbG9hdFJlY3QmIGNsYW1wZWRSZWN0LCBjb25z
dCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmLCBSZW5kZXJpbmdNb2RlLCBjb25zdCBHcmFwaGljc0Nv
bnRleHQqID0gbnVsbHB0cik7CisgICAgc3RhdGljIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRl
SW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBGbG9hdFJlY3Qm
IGNsYW1wZWRSZWN0LCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmLCBSZW5kZXJpbmdNb2Rl
LCBIb3N0V2luZG93KiA9IG51bGxwdHIsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCogPSBudWxscHRy
KTsKIAogICAgIHN0YXRpYyB2b2lkIHJlbmRlclN1YnRyZWVUb0NvbnRleHQoR3JhcGhpY3NDb250
ZXh0JiwgUmVuZGVyRWxlbWVudCYsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYpOwogICAgIHN0YXRp
YyB2b2lkIGNsaXBUb0ltYWdlQnVmZmVyKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEFmZmluZVRy
YW5zZm9ybSYgYWJzb2x1dGVUcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwg
UmVmUHRyPEltYWdlQnVmZmVyPiYsIGJvb2wgc2FmZVRvQ2xlYXIpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1F1YWxpZmllZFJlc291cmNlSGVhcC5oIGIv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1F1YWxpZmllZFJlc291cmNlSGVhcC5o
CmluZGV4IGU3M2QyMmEwMjI0OWY3N2ZjZmQ5ZDk4MDliNmYzZGI2MDk0NDgzMjguLmQ4MWM1MDQ3
NTFiYjYzZjkyZTJhMGNiNjQ0ZjE3NTVmMWJiMmFjYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9RdWFsaWZpZWRSZXNvdXJjZUhlYXAuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUXVhbGlmaWVkUmVzb3VyY2VIZWFwLmgKQEAg
LTE1OSw4ICsxNTksOSBAQCBwcml2YXRlOgogICAgICAgICBhdXRvIGl0ZXJhdG9yID0gbV9yZXNv
dXJjZXMuZmluZChyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwogICAgICAgICBpZiAoaXRl
cmF0b3IgPT0gbV9yZXNvdXJjZXMuZW5kKCkpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsK
LSAgICAgICAgQVNTRVJUKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPFQ+PihpdGVyYXRvci0+
dmFsdWUpKTsKLSAgICAgICAgcmV0dXJuIHN0ZDo6Z2V0PFJlZjxUPj4oaXRlcmF0b3ItPnZhbHVl
KS5wdHIoKTsKKyAgICAgICAgaWYgKGF1dG8qIHZhbHVlID0gc3RkOjpnZXRfaWY8UmVmPFQ+Pigm
aXRlcmF0b3ItPnZhbHVlKSkKKyAgICAgICAgICAgIHJldHVybiB2YWx1ZS0+cHRyKCk7CisgICAg
ICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZURpc3Bs
YXlMaXN0UmVjb3JkZXIuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1Jl
bW90ZURpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCmluZGV4IGFkYTU0ZDQxOGEwYjYwMjU0NmIxN2U1
N2M2NmRkMGNkNjkwMzBkMTMuLmEzODlkZTI2YTcxNzAyZDVlYzIyZmQ3OTZmOGM0MGUxOWVmN2Ez
OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVE
aXNwbGF5TGlzdFJlY29yZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3Jh
cGhpY3MvUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlci5jcHAKQEAgLTEyMywyMCArMTIzLDMwIEBA
IHZvaWQgUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlcjo6c2V0U3RhdGUoRGlzcGxheUxpc3Q6OlNl
dFN0YXRlJiYgaXRlbSkKIAogdm9pZCBSZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyOjpzZXRTdGF0
ZVdpdGhRdWFsaWZpZWRJZGVudGlmaWVycyhEaXNwbGF5TGlzdDo6U2V0U3RhdGUmJiBpdGVtLCBR
dWFsaWZpZWRSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgc3Ryb2tlUGF0dGVybkltYWdlSWRl
bnRpZmllciwgUXVhbGlmaWVkUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIGZpbGxQYXR0ZXJu
SW1hZ2VJZGVudGlmaWVyKQogewotICAgIFJlZlB0cjxOYXRpdmVJbWFnZT4gc3Ryb2tlUGF0dGVy
bkltYWdlOwotICAgIGlmIChzdHJva2VQYXR0ZXJuSW1hZ2VJZGVudGlmaWVyKQotICAgICAgICBz
dHJva2VQYXR0ZXJuSW1hZ2UgPSByZXNvdXJjZUNhY2hlKCkuY2FjaGVkTmF0aXZlSW1hZ2Uoc3Ry
b2tlUGF0dGVybkltYWdlSWRlbnRpZmllcik7Ci0KLSAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+IGZp
bGxQYXR0ZXJuSW1hZ2U7Ci0gICAgaWYgKGZpbGxQYXR0ZXJuSW1hZ2VJZGVudGlmaWVyKQotICAg
ICAgICBmaWxsUGF0dGVybkltYWdlID0gcmVzb3VyY2VDYWNoZSgpLmNhY2hlZE5hdGl2ZUltYWdl
KGZpbGxQYXR0ZXJuSW1hZ2VJZGVudGlmaWVyKTsKKyAgICBhdXRvIGNhY2hlZFNvdXJjZUltYWdl
ID0gWyZdKFF1YWxpZmllZFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBwYXR0ZXJuSW1hZ2VJ
ZGVudGlmaWVyKSAtPiBzdGQ6Om9wdGlvbmFsPFNvdXJjZUltYWdlPiB7CisgICAgICAgIGlmICgh
cGF0dGVybkltYWdlSWRlbnRpZmllcikKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CisgICAgICAgIGlmIChhdXRvIG5hdGl2ZUltYWdlID0gcmVzb3VyY2VDYWNoZSgpLmNhY2hlZE5h
dGl2ZUltYWdlKHBhdHRlcm5JbWFnZUlkZW50aWZpZXIpKQorICAgICAgICAgICAgcmV0dXJuIFJl
ZiB7ICpuYXRpdmVJbWFnZSB9OworICAgICAgICBpZiAoYXV0byBpbWFnZUJ1ZmZlciA9IHJlc291
cmNlQ2FjaGUoKS5jYWNoZWRJbWFnZUJ1ZmZlcihwYXR0ZXJuSW1hZ2VJZGVudGlmaWVyKSkKKyAg
ICAgICAgICAgIHJldHVybiBSZWYgeyAqaW1hZ2VCdWZmZXIgfTsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKKyAgICB9OworICAgIAorICAgIGF1dG8gc3Ryb2tlUGF0dGVybkltYWdlID0g
Y2FjaGVkU291cmNlSW1hZ2Uoc3Ryb2tlUGF0dGVybkltYWdlSWRlbnRpZmllcik7CisgICAgaWYg
KCFzdHJva2VQYXR0ZXJuSW1hZ2UpCisgICAgICAgIHN0cm9rZVBhdHRlcm5JbWFnZUlkZW50aWZp
ZXIgPSB7IH07CisKKyAgICBhdXRvIGZpbGxQYXR0ZXJuSW1hZ2UgPSBjYWNoZWRTb3VyY2VJbWFn
ZShmaWxsUGF0dGVybkltYWdlSWRlbnRpZmllcik7CisgICAgaWYgKCFmaWxsUGF0dGVybkltYWdl
KQorICAgICAgICBmaWxsUGF0dGVybkltYWdlSWRlbnRpZmllciA9IHsgfTsKKworICAgIGhhbmRs
ZUl0ZW0oV1RGTW92ZShpdGVtKSwgV1RGTW92ZShzdHJva2VQYXR0ZXJuSW1hZ2UpLCBXVEZNb3Zl
KGZpbGxQYXR0ZXJuSW1hZ2UpKTsKIAotICAgIGhhbmRsZUl0ZW0oV1RGTW92ZShpdGVtKSwgc3Ry
b2tlUGF0dGVybkltYWdlLmdldCgpLCBmaWxsUGF0dGVybkltYWdlLmdldCgpKTsKLQotICAgIGlm
IChzdHJva2VQYXR0ZXJuSW1hZ2UpCisgICAgaWYgKHN0cm9rZVBhdHRlcm5JbWFnZUlkZW50aWZp
ZXIpCiAgICAgICAgIHJlc291cmNlQ2FjaGUoKS5yZWNvcmRSZXNvdXJjZVVzZShzdHJva2VQYXR0
ZXJuSW1hZ2VJZGVudGlmaWVyKTsKIAotICAgIGlmIChmaWxsUGF0dGVybkltYWdlKQorICAgIGlm
IChmaWxsUGF0dGVybkltYWdlSWRlbnRpZmllcikKICAgICAgICAgcmVzb3VyY2VDYWNoZSgpLnJl
Y29yZFJlc291cmNlVXNlKGZpbGxQYXR0ZXJuSW1hZ2VJZGVudGlmaWVyKTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVEaXNwbGF5
TGlzdFJlY29yZGVyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFw
aGljcy9SZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyUHJveHkuY3BwCmluZGV4IDk0MjFkZDIzOGNi
NmVjNjNmZTFjMDdkNDczNjFjYjBiNjVmZjQwY2IuLjU3MzBkZDg4MTllOGU0MmUzYjZiNjZlZjE3
YjM0NmU4N2I1MjQyNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
Z3JhcGhpY3MvUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlclByb3h5LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXJQ
cm94eS5jcHAKQEAgLTQwNiwyNCArNDA2LDM2IEBAIHZvaWQgUmVtb3RlRGlzcGxheUxpc3RSZWNv
cmRlclByb3h5OjpyZWNvcmRSZXNvdXJjZVVzZShOYXRpdmVJbWFnZSYgaW1hZ2UpCiAgICAgbV9y
ZW5kZXJpbmdCYWNrZW5kLT5yZWNvcmROYXRpdmVJbWFnZVVzZShpbWFnZSk7CiB9CiAKLXZvaWQg
UmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlclByb3h5OjpyZWNvcmRSZXNvdXJjZVVzZShGb250JiBm
b250KQordm9pZCBSZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyUHJveHk6OnJlY29yZFJlc291cmNl
VXNlKEltYWdlQnVmZmVyJiBpbWFnZUJ1ZmZlcikKIHsKICAgICBpZiAoVU5MSUtFTFkoIW1fcmVu
ZGVyaW5nQmFja2VuZCkpIHsKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKLSAgICBtX3JlbmRlcmluZ0JhY2tlbmQtPnJlY29yZEZvbnRVc2Uo
Zm9udCk7CisgICAgbV9yZW5kZXJpbmdCYWNrZW5kLT5yZWNvcmRJbWFnZUJ1ZmZlclVzZShpbWFn
ZUJ1ZmZlcik7CiB9CiAKLXZvaWQgUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlclByb3h5OjpyZWNv
cmRSZXNvdXJjZVVzZShJbWFnZUJ1ZmZlciYgaW1hZ2VCdWZmZXIpCit2b2lkIFJlbW90ZURpc3Bs
YXlMaXN0UmVjb3JkZXJQcm94eTo6cmVjb3JkUmVzb3VyY2VVc2UoU291cmNlSW1hZ2UmIGltYWdl
KQoreworICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBpbWFnZS5pbWFnZUJ1ZmZlcklmRXhpc3RzKCk7
CisgICAgaWYgKGltYWdlQnVmZmVyICYmIGNhbkRyYXdJbWFnZUJ1ZmZlcigqaW1hZ2VCdWZmZXIp
KSB7CisgICAgICAgIHJlY29yZFJlc291cmNlVXNlKCppbWFnZUJ1ZmZlcik7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICBpZiAoYXV0byBuYXRpdmVJbWFnZSA9IGltYWdlLm5hdGl2ZUlt
YWdlKCkpCisgICAgICAgIHJlY29yZFJlc291cmNlVXNlKCpuYXRpdmVJbWFnZSk7Cit9CisKK3Zv
aWQgUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlclByb3h5OjpyZWNvcmRSZXNvdXJjZVVzZShGb250
JiBmb250KQogewogICAgIGlmIChVTkxJS0VMWSghbV9yZW5kZXJpbmdCYWNrZW5kKSkgewogICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAg
IG1fcmVuZGVyaW5nQmFja2VuZC0+cmVjb3JkSW1hZ2VCdWZmZXJVc2UoaW1hZ2VCdWZmZXIpOwor
ICAgIG1fcmVuZGVyaW5nQmFja2VuZC0+cmVjb3JkRm9udFVzZShmb250KTsKIH0KIAogdm9pZCBS
ZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyUHJveHk6OmZsdXNoQ29udGV4dChHcmFwaGljc0NvbnRl
eHRGbHVzaElkZW50aWZpZXIgaWRlbnRpZmllcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlclByb3h5Lmgg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZURpc3BsYXlMaXN0
UmVjb3JkZXJQcm94eS5oCmluZGV4IDcxZmRiNjNkZjRhYzg0OTc0NzIzMjY5YjdmMDNkOTk3Yjgx
Mzk4OWQuLmNjYTZjZjYwZWQwOWQyMTlkYjU4MjNlZTIzNDQxYTcyNDY1MDRiODAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlRGlzcGxheUxp
c3RSZWNvcmRlclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFw
aGljcy9SZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyUHJveHkuaApAQCAtMTM2LDggKzEzNiw5IEBA
IHByaXZhdGU6CiAgICAgdm9pZCByZWNvcmRBcHBseURldmljZVNjYWxlRmFjdG9yKGZsb2F0KSBm
aW5hbDsKIAogICAgIHZvaWQgcmVjb3JkUmVzb3VyY2VVc2UoV2ViQ29yZTo6TmF0aXZlSW1hZ2Um
KSBmaW5hbDsKLSAgICB2b2lkIHJlY29yZFJlc291cmNlVXNlKFdlYkNvcmU6OkZvbnQmKSBmaW5h
bDsKICAgICB2b2lkIHJlY29yZFJlc291cmNlVXNlKFdlYkNvcmU6OkltYWdlQnVmZmVyJikgZmlu
YWw7CisgICAgdm9pZCByZWNvcmRSZXNvdXJjZVVzZShXZWJDb3JlOjpTb3VyY2VJbWFnZSYpIGZp
bmFsOworICAgIHZvaWQgcmVjb3JkUmVzb3VyY2VVc2UoV2ViQ29yZTo6Rm9udCYpIGZpbmFsOwog
CiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dD4gY3JlYXRlTmVz
dGVkQ29udGV4dChjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIGluaXRpYWxDbGlwLCBjb25zdCBX
ZWJDb3JlOjpBZmZpbmVUcmFuc2Zvcm0mIGluaXRpYWxDVE0pIGZpbmFsOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>449781</attachid>
            <date>2022-01-23 22:06:51 -0800</date>
            <delta_ts>2022-01-25 01:55:16 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-232411-20220123220650.patch</filename>
            <type>text/plain</type>
            <size>33061</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg4NDEyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODQ2Zjc1MDk1OTU3YTVi
NTFlNDJmYTEzMmU4MjNhYWQ4NzQwYzY3Ny4uNDk2ZmI4Y2QxMWU0ZjI3ZjQ4MTFjMmYwZmZhMjAy
MmQ5NmNhNTRjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBACisyMDIyLTAxLTIzICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vzc10g
UGF0dGVybiBzaG91bGQgaG9sZCBTb3VyY2VJbWFnZSB3aGljaCBjYW4gYmUgY29udmVydGVkIHRv
IGEgTmF0aXZlSW1hZ2Ugb25seSB3aGVuIG5lZWRlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMyNDExCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS84
NDk5ODczOD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBNYWtlIFBhdHRlcm4gaG9sZCBhIFNvdXJjZUltYWdlIGFuZCBwcm92aWRlIGdldHRlcnMgdG8g
cmV0cmlldmUgZWl0aGVyIGEKKyAgICAgICAgTmF0aXZlSW1hZ2Ugb3IgYW4gSW1hZ2VCdWZmZXIu
IEluIHRoZXNlIGdldHRlcnMgdGhlIFNvdXJjZUltYWdlIHdpbGwgCisgICAgICAgIGNvbnZlcnQg
aXRzIEltYWdlVmFyaWFudCBmcm9tIGFuIGltYWdlIHNvdXJjZSB0byB0aGUgb3RoZXIgaWYgbmVl
ZGVkLgorCisgICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFzUGF0dGVybi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDYW52YXNQYXR0ZXJuOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q2Fu
dmFzUGF0dGVybjo6Q2FudmFzUGF0dGVybik6CisgICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFz
UGF0dGVybi5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQy
REJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFz
ZTo6Y3JlYXRlUGF0dGVybik6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhcy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDYW52YXM6OmJ1aWxkQXJyYXlGb3JDYW52
YXNQYXR0ZXJuKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9QYXR0ZXJuLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlBhdHRlcm46OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpQYXR0
ZXJuOjpQYXR0ZXJuKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9QYXR0ZXJuLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGF0dGVybkNHLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlBhdHRlcm46OmNyZWF0ZVBsYXRmb3JtUGF0dGVybiBjb25zdCk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlNldFN0YXRlOjphcHBseSk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpTZXRTdGF0ZTo6ZW5jb2RlIGNvbnN0KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6YXBwbHlTZXRTdGF0ZUl0ZW0pOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc29mdHdhcmUvRkVUaWxlU29mdHdh
cmVBcHBsaWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFVGlsZVNvZnR3YXJlQXBwbGllcjo6
YXBwbHkgY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6cGF0dGVybkZvckRlc2NyaXB0aW9uKToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlUGF0dGVybi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm46OmJ1aWxkUGF0dGVybik6CisKIDIwMjItMDEt
MjIgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2FpZEBhcHBsZS5jb20+CiAKICAgICAgICAgW0dQVSBQ
cm9jZXNzXSBBZGQgdGhlIGNsYXNzICdTb3VyY2VJbWFnZScgdG8gcmVwcmVzZW50IHZhcmlhbnRz
IG9mIGltYWdlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGIxMDczNDI2ZGRmYTZiYjM2MTZkOWVmZmVmYmFlZDU4MThj
NDgyNGQuLmY1N2MyMmQxNjQ1MWRjODhiN2IzMzk5NTE2NjlmZjA4NWNiYTdlOGEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTYgQEAKKzIwMjItMDEtMjMgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2FpZEBh
cHBsZS5jb20+CisKKyAgICAgICAgW0dQVSBQcm9jZXNzXSBQYXR0ZXJuIHNob3VsZCBob2xkIFNv
dXJjZUltYWdlIHdoaWNoIGNhbiBiZSBjb252ZXJ0ZWQgdG8gYSBOYXRpdmVJbWFnZSBvbmx5IHdo
ZW4gbmVlZGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMzI0MTEKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzg0OTk4NzM4PgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGlj
cy9SZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
RGlzcGxheUxpc3RSZWNvcmRlcjo6c2V0U3RhdGVXaXRoUXVhbGlmaWVkSWRlbnRpZmllcnMpOgor
ICAgICAgICBCdWlsZCBhbiBzdGQ6Om9wdGlvbmFsPFNvdXJjZUltYWdlPiBmcm9tIFJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllciBvZgorICAgICAgICB0aGUgcGF0dGVybiByZXNvdXJjZSBpZGVu
dGlmaWVyLiBQYXNzIHRoaXMgU291cmNlSW1hZ2UgdG8gaGFuZGxlSXRlbSgpLgorCiAyMDIyLTAx
LTIyICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgogCiAgICAgICAgIFtHUFUg
UHJvY2Vzc10gQWRkIHRoZSBjbGFzcyAnU291cmNlSW1hZ2UnIHRvIHJlcHJlc2VudCB2YXJpYW50
cyBvZiBpbWFnZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFz
UGF0dGVybi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNQYXR0ZXJuLmNw
cAppbmRleCA4ZjE5MzgyY2IyMDNkMmU0MTFiY2E5NTdhNjkxYjFmYWM5OGEyY2ExLi42MGNlM2Rl
YTYxZTI0ZmE3YmQ0OWUyOGYxN2U3ZTQ0OGNkYjIwODJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9DYW52YXNQYXR0ZXJuLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9DYW52YXNQYXR0ZXJuLmNwcApAQCAtMzQsMTIgKzM0LDEyIEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotUmVmPENhbnZhc1BhdHRlcm4+IENhbnZhc1BhdHRlcm46OmNyZWF0
ZShSZWY8TmF0aXZlSW1hZ2U+JiYgaW1hZ2UsIGJvb2wgcmVwZWF0WCwgYm9vbCByZXBlYXRZLCBi
b29sIG9yaWdpbkNsZWFuKQorUmVmPENhbnZhc1BhdHRlcm4+IENhbnZhc1BhdHRlcm46OmNyZWF0
ZShTb3VyY2VJbWFnZSYmIGltYWdlLCBib29sIHJlcGVhdFgsIGJvb2wgcmVwZWF0WSwgYm9vbCBv
cmlnaW5DbGVhbikKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDYW52YXNQYXR0ZXJuKFdU
Rk1vdmUoaW1hZ2UpLCByZXBlYXRYLCByZXBlYXRZLCBvcmlnaW5DbGVhbikpOwogfQogCi1DYW52
YXNQYXR0ZXJuOjpDYW52YXNQYXR0ZXJuKFJlZjxOYXRpdmVJbWFnZT4mJiBpbWFnZSwgYm9vbCBy
ZXBlYXRYLCBib29sIHJlcGVhdFksIGJvb2wgb3JpZ2luQ2xlYW4pCitDYW52YXNQYXR0ZXJuOjpD
YW52YXNQYXR0ZXJuKFNvdXJjZUltYWdlJiYgaW1hZ2UsIGJvb2wgcmVwZWF0WCwgYm9vbCByZXBl
YXRZLCBib29sIG9yaWdpbkNsZWFuKQogICAgIDogbV9wYXR0ZXJuKFBhdHRlcm46OmNyZWF0ZShX
VEZNb3ZlKGltYWdlKSwgeyByZXBlYXRYLCByZXBlYXRZIH0pKQogICAgICwgbV9vcmlnaW5DbGVh
bihvcmlnaW5DbGVhbikKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L0NhbnZhc1BhdHRlcm4uaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1BhdHRl
cm4uaAppbmRleCBlNDZkMjFiYzUxMzVkOWE3NGY0NTc1YzlkZDY1ZTljZWNkY2I4ZDJhLi44NzFl
MDQ1NzdjYzUxZTU5ODA1N2JlY2UyYWJkNzVmNjZhYzk5YzYxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNQYXR0ZXJuLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvQ2FudmFzUGF0dGVybi5oCkBAIC0zMiwxMyArMzIsMTMgQEAKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi1jbGFzcyBOYXRpdmVJbWFnZTsKIGNsYXNzIFBhdHRlcm47CitjbGFz
cyBTb3VyY2VJbWFnZTsKIHN0cnVjdCBET01NYXRyaXgyREluaXQ7CiAKIGNsYXNzIENhbnZhc1Bh
dHRlcm4gOiBwdWJsaWMgUmVmQ291bnRlZDxDYW52YXNQYXR0ZXJuPiB7CiBwdWJsaWM6Ci0gICAg
c3RhdGljIFJlZjxDYW52YXNQYXR0ZXJuPiBjcmVhdGUoUmVmPE5hdGl2ZUltYWdlPiYmLCBib29s
IHJlcGVhdFgsIGJvb2wgcmVwZWF0WSwgYm9vbCBvcmlnaW5DbGVhbik7CisgICAgc3RhdGljIFJl
ZjxDYW52YXNQYXR0ZXJuPiBjcmVhdGUoU291cmNlSW1hZ2UmJiwgYm9vbCByZXBlYXRYLCBib29s
IHJlcGVhdFksIGJvb2wgb3JpZ2luQ2xlYW4pOwogICAgIH5DYW52YXNQYXR0ZXJuKCk7CiAKICAg
ICBzdGF0aWMgYm9vbCBwYXJzZVJlcGV0aXRpb25UeXBlKGNvbnN0IFN0cmluZyYsIGJvb2wmIHJl
cGVhdFgsIGJvb2wmIHJlcGVhdFkpOwpAQCAtNTEsNyArNTEsNyBAQCBwdWJsaWM6CiAgICAgRXhj
ZXB0aW9uT3I8dm9pZD4gc2V0VHJhbnNmb3JtKERPTU1hdHJpeDJESW5pdCYmKTsKIAogcHJpdmF0
ZToKLSAgICBDYW52YXNQYXR0ZXJuKFJlZjxOYXRpdmVJbWFnZT4mJiwgYm9vbCByZXBlYXRYLCBi
b29sIHJlcGVhdFksIGJvb2wgb3JpZ2luQ2xlYW4pOworICAgIENhbnZhc1BhdHRlcm4oU291cmNl
SW1hZ2UmJiwgYm9vbCByZXBlYXRYLCBib29sIHJlcGVhdFksIGJvb2wgb3JpZ2luQ2xlYW4pOwog
CiAgICAgUmVmPFBhdHRlcm4+IG1fcGF0dGVybjsKICAgICBib29sIG1fb3JpZ2luQ2xlYW47CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250
ZXh0MkRCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmlu
Z0NvbnRleHQyREJhc2UuY3BwCmluZGV4IDU3N2Q1NWU3ZjA0MmE3ODQ4MjIwZTM4YWMzMmQzMDY5
ODM2YTM4OWQuLmI4OWU3N2ZiNjAwZTBlY2E5M2YwMTkyNDM5ZTQxMDczYzk1YWQxMzggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQy
REJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmlu
Z0NvbnRleHQyREJhc2UuY3BwCkBAIC0xOTUzLDcgKzE5NTMsNyBAQCBFeGNlcHRpb25PcjxSZWZQ
dHI8Q2FudmFzUGF0dGVybj4+IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmNyZWF0ZVBh
dHRlcm4oSAogICAgIGlmICghbmF0aXZlSW1hZ2UpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24g
eyBJbnZhbGlkU3RhdGVFcnJvciB9OwogCi0gICAgcmV0dXJuIFJlZlB0cjxDYW52YXNQYXR0ZXJu
PiB7IENhbnZhc1BhdHRlcm46OmNyZWF0ZShuYXRpdmVJbWFnZS5yZWxlYXNlTm9uTnVsbCgpLCBy
ZXBlYXRYLCByZXBlYXRZLCBvcmlnaW5DbGVhbikgfTsKKyAgICByZXR1cm4gUmVmUHRyPENhbnZh
c1BhdHRlcm4+IHsgQ2FudmFzUGF0dGVybjo6Y3JlYXRlKHsgbmF0aXZlSW1hZ2UucmVsZWFzZU5v
bk51bGwoKSB9LCByZXBlYXRYLCByZXBlYXRZLCBvcmlnaW5DbGVhbikgfTsKIH0KIAogRXhjZXB0
aW9uT3I8UmVmUHRyPENhbnZhc1BhdHRlcm4+PiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNl
OjpjcmVhdGVQYXR0ZXJuKENhbnZhc0Jhc2UmIGNhbnZhcywgYm9vbCByZXBlYXRYLCBib29sIHJl
cGVhdFkpCkBAIC0xOTY5LDcgKzE5NjksNyBAQCBFeGNlcHRpb25PcjxSZWZQdHI8Q2FudmFzUGF0
dGVybj4+IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmNyZWF0ZVBhdHRlcm4oQwogICAg
IGlmICghbmF0aXZlSW1hZ2UpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3Rh
dGVFcnJvciB9OwogCi0gICAgcmV0dXJuIFJlZlB0cjxDYW52YXNQYXR0ZXJuPiB7IENhbnZhc1Bh
dHRlcm46OmNyZWF0ZShuYXRpdmVJbWFnZS5yZWxlYXNlTm9uTnVsbCgpLCByZXBlYXRYLCByZXBl
YXRZLCBjYW52YXMub3JpZ2luQ2xlYW4oKSkgfTsKKyAgICByZXR1cm4gUmVmUHRyPENhbnZhc1Bh
dHRlcm4+IHsgQ2FudmFzUGF0dGVybjo6Y3JlYXRlKHsgbmF0aXZlSW1hZ2UucmVsZWFzZU5vbk51
bGwoKSB9LCByZXBlYXRYLCByZXBlYXRZLCBjYW52YXMub3JpZ2luQ2xlYW4oKSkgfTsKIH0KICAg
ICAKICNpZiBFTkFCTEUoVklERU8pCkBAIC0xOTg0LDcgKzE5ODQsNyBAQCBFeGNlcHRpb25PcjxS
ZWZQdHI8Q2FudmFzUGF0dGVybj4+IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmNyZWF0
ZVBhdHRlcm4oSAogCiAjaWYgVVNFKENHKQogICAgIGlmIChhdXRvIG5hdGl2ZUltYWdlID0gdmlk
ZW9FbGVtZW50Lm5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKSkKLSAgICAgICAgcmV0dXJuIFJl
ZlB0cjxDYW52YXNQYXR0ZXJuPiB7IENhbnZhc1BhdHRlcm46OmNyZWF0ZShuYXRpdmVJbWFnZS5y
ZWxlYXNlTm9uTnVsbCgpLCByZXBlYXRYLCByZXBlYXRZLCBvcmlnaW5DbGVhbikgfTsKKyAgICAg
ICAgcmV0dXJuIFJlZlB0cjxDYW52YXNQYXR0ZXJuPiB7IENhbnZhc1BhdHRlcm46OmNyZWF0ZSh7
IG5hdGl2ZUltYWdlLnJlbGVhc2VOb25OdWxsKCkgfSwgcmVwZWF0WCwgcmVwZWF0WSwgb3JpZ2lu
Q2xlYW4pIH07CiAjZW5kaWYKIAogICAgIGF1dG8gcmVuZGVyaW5nTW9kZSA9IGRyYXdpbmdDb250
ZXh0KCkgPyBkcmF3aW5nQ29udGV4dCgpLT5yZW5kZXJpbmdNb2RlKCkgOiBSZW5kZXJpbmdNb2Rl
OjpVbmFjY2VsZXJhdGVkOwpAQCAtMTk5NCw3ICsxOTk0LDcgQEAgRXhjZXB0aW9uT3I8UmVmUHRy
PENhbnZhc1BhdHRlcm4+PiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpjcmVhdGVQYXR0
ZXJuKEgKIAogICAgIHZpZGVvRWxlbWVudC5wYWludEN1cnJlbnRGcmFtZUluQ29udGV4dChpbWFn
ZUJ1ZmZlci0+Y29udGV4dCgpLCBGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBzaXplKHZpZGVvRWxl
bWVudCkpKTsKICAgICAKLSAgICByZXR1cm4gUmVmUHRyPENhbnZhc1BhdHRlcm4+IHsgQ2FudmFz
UGF0dGVybjo6Y3JlYXRlKEltYWdlQnVmZmVyOjpzaW5rSW50b05hdGl2ZUltYWdlKFdURk1vdmUo
aW1hZ2VCdWZmZXIpKS5yZWxlYXNlTm9uTnVsbCgpLCByZXBlYXRYLCByZXBlYXRZLCBvcmlnaW5D
bGVhbikgfTsKKyAgICByZXR1cm4gUmVmUHRyPENhbnZhc1BhdHRlcm4+IHsgQ2FudmFzUGF0dGVy
bjo6Y3JlYXRlKHsgaW1hZ2VCdWZmZXIucmVsZWFzZU5vbk51bGwoKSB9LCByZXBlYXRYLCByZXBl
YXRZLCBvcmlnaW5DbGVhbikgfTsKIH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JDYW52YXMuY3BwCmluZGV4IGU4NDdmZTY4MTEyNzMyNTA2YjFkMDg0NmY2
MzNkYWM0Yjk2OWQxNjUuLjAzMTljYzM3ZGYyNWYyYzY2Zjk2YzI1OTYxMjExNWM4OTM4M2M3N2Ug
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXMuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXMuY3BwCkBAIC0x
MzM2LDEwICsxMzM2LDcgQEAgUmVmPEpTT046OkFycmF5T2Y8SlNPTjo6VmFsdWU+PiBJbnNwZWN0
b3JDYW52YXM6OmJ1aWxkQXJyYXlGb3JDYW52YXNHcmFkaWVudChjb24KIAogUmVmPEpTT046OkFy
cmF5T2Y8SlNPTjo6VmFsdWU+PiBJbnNwZWN0b3JDYW52YXM6OmJ1aWxkQXJyYXlGb3JDYW52YXNQ
YXR0ZXJuKGNvbnN0IENhbnZhc1BhdHRlcm4mIGNhbnZhc1BhdHRlcm4pCiB7Ci0gICAgYXV0byYg
dGlsZUltYWdlID0gY2FudmFzUGF0dGVybi5wYXR0ZXJuKCkudGlsZUltYWdlKCk7Ci0gICAgRmxv
YXRSZWN0IHJlY3QgPSB7IHsgfSwgdGlsZUltYWdlLnNpemUoKSB9OwotICAgIGF1dG8gaW1hZ2VC
dWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHRpbGVJbWFnZS5zaXplKCksIFJlbmRlcmluZ01v
ZGU6OlVuYWNjZWxlcmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhl
bEZvcm1hdDo6QkdSQTgpOwotICAgIGltYWdlQnVmZmVyLT5jb250ZXh0KCkuZHJhd05hdGl2ZUlt
YWdlKHRpbGVJbWFnZSwgdGlsZUltYWdlLnNpemUoKSwgcmVjdCwgcmVjdCk7CisgICAgYXV0byBp
bWFnZUJ1ZmZlciA9IGNhbnZhc1BhdHRlcm4ucGF0dGVybigpLnRpbGVJbWFnZUJ1ZmZlcigpOwog
CiAgICAgU3RyaW5nIHJlcGVhdDsKICAgICBib29sIHJlcGVhdFggPSBjYW52YXNQYXR0ZXJuLnBh
dHRlcm4oKS5yZXBlYXRYKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9QYXR0ZXJuLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1Bh
dHRlcm4uY3BwCmluZGV4IDYzNTMyMzc2OWY4MDMzZGUzMjhlOGQ0NGU1Nzk3NWExZDNjZDYwNjUu
LmRhNGMwZjE1Y2ExNDAxMTFiYmFlMTJkMjU4OWEzZDg0ZGJhNjAwNmYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BhdHRlcm4uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BhdHRlcm4uY3BwCkBAIC0zMSwxMiArMzEsMTIgQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZWY8UGF0dGVybj4gUGF0dGVybjo6Y3JlYXRlKFJl
ZjxOYXRpdmVJbWFnZT4mJiB0aWxlSW1hZ2UsIGNvbnN0IFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMp
CitSZWY8UGF0dGVybj4gUGF0dGVybjo6Y3JlYXRlKFNvdXJjZUltYWdlJiYgdGlsZUltYWdlLCBj
b25zdCBQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IFBhdHRlcm4oV1RGTW92ZSh0aWxlSW1hZ2UpLCBwYXJhbWV0ZXJzKSk7CiB9CiAKLVBhdHRlcm46
OlBhdHRlcm4oUmVmPE5hdGl2ZUltYWdlPiYmIGltYWdlLCBjb25zdCBQYXJhbWV0ZXJzJiBwYXJh
bWV0ZXJzKQorUGF0dGVybjo6UGF0dGVybihTb3VyY2VJbWFnZSYmIGltYWdlLCBjb25zdCBQYXJh
bWV0ZXJzJiBwYXJhbWV0ZXJzKQogICAgIDogbV90aWxlSW1hZ2UoV1RGTW92ZShpbWFnZSkpCiAg
ICAgLCBtX3BhcmFtZXRlcnMocGFyYW1ldGVycykKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BhdHRlcm4uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL1BhdHRlcm4uaAppbmRleCA3MjE0ZTgyNTA3MWI1NDQ3ZTdiY2JmMjAzMDNkOTJm
NjJjMjUyN2FmLi4wMzFhZTU0Y2M3OTI0YmQxYmFlMjlmYTBkNzRmMGU1NjNmN2QxNTQ0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXR0ZXJuLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0dGVybi5oCkBAIC0yOCw3ICsyOCw3
IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkFmZmluZVRyYW5zZm9ybS5oIgotI2luY2x1
ZGUgIkltYWdlLmgiCisjaW5jbHVkZSAiU291cmNlSW1hZ2UuaCIKIAogI2luY2x1ZGUgPHd0Zi9S
ZWYuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgpAQCAtNDUsNyArNDUsNiBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEFmZmluZVRyYW5zZm9ybTsKIGNsYXNzIEdyYXBoaWNz
Q29udGV4dDsKLWNsYXNzIEltYWdlOwogCiBjbGFzcyBQYXR0ZXJuIGZpbmFsIDogcHVibGljIFJl
ZkNvdW50ZWQ8UGF0dGVybj4gewogcHVibGljOgpAQCAtNjMsMTAgKzYyLDEyIEBAIHB1YmxpYzoK
ICAgICAgICAgYm9vbCByZXBlYXRZOwogICAgIH07CiAKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0
aWMgUmVmPFBhdHRlcm4+IGNyZWF0ZShSZWY8TmF0aXZlSW1hZ2U+JiYgdGlsZUltYWdlLCBjb25z
dCBQYXJhbWV0ZXJzJiA9IHsgfSk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxQYXR0
ZXJuPiBjcmVhdGUoU291cmNlSW1hZ2UmJiB0aWxlSW1hZ2UsIGNvbnN0IFBhcmFtZXRlcnMmID0g
eyB9KTsKICAgICBXRUJDT1JFX0VYUE9SVCB+UGF0dGVybigpOwogCi0gICAgTmF0aXZlSW1hZ2Um
IHRpbGVJbWFnZSgpIGNvbnN0IHsgcmV0dXJuIG1fdGlsZUltYWdlLmdldCgpOyB9CisgICAgU291
cmNlSW1hZ2UmIHRpbGVJbWFnZSgpIGNvbnN0IHsgcmV0dXJuIG1fdGlsZUltYWdlOyB9CisgICAg
TmF0aXZlSW1hZ2UqIHRpbGVOYXRpdmVJbWFnZSgpIGNvbnN0IHsgcmV0dXJuIG1fdGlsZUltYWdl
Lm5hdGl2ZUltYWdlKCk7IH0KKyAgICBJbWFnZUJ1ZmZlciogdGlsZUltYWdlQnVmZmVyKCkgY29u
c3QgeyByZXR1cm4gbV90aWxlSW1hZ2UuaW1hZ2VCdWZmZXIoKTsgfQogICAgIGNvbnN0IFBhcmFt
ZXRlcnMmIHBhcmFtZXRlcnMoKSBjb25zdCB7IHJldHVybiBtX3BhcmFtZXRlcnM7IH0KIAogICAg
IC8vIFBhdHRlcm4gc3BhY2UgaXMgYW4gYWJzdHJhY3Qgc3BhY2UgdGhhdCBtYXBzIHRvIHRoZSBk
ZWZhdWx0IHVzZXIgc3BhY2UgYnkgdGhlIHRyYW5zZm9ybWF0aW9uICd1c2VyU3BhY2VUcmFuc2Zv
cm0nCkBAIC03OCw5ICs3OSw5IEBAIHB1YmxpYzoKICAgICBib29sIHJlcGVhdFkoKSBjb25zdCB7
IHJldHVybiBtX3BhcmFtZXRlcnMucmVwZWF0WTsgfQogCiBwcml2YXRlOgotICAgIFBhdHRlcm4o
UmVmPE5hdGl2ZUltYWdlPiYmLCBjb25zdCBQYXJhbWV0ZXJzJik7CisgICAgUGF0dGVybihTb3Vy
Y2VJbWFnZSYmLCBjb25zdCBQYXJhbWV0ZXJzJik7CiAKLSAgICBSZWY8TmF0aXZlSW1hZ2U+IG1f
dGlsZUltYWdlOworICAgIG11dGFibGUgU291cmNlSW1hZ2UgbV90aWxlSW1hZ2U7CiAgICAgUGFy
YW1ldGVycyBtX3BhcmFtZXRlcnM7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jZy9QYXR0ZXJuQ0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvUGF0dGVybkNHLmNwcAppbmRleCAwNWEzOTE2NTQwYmI3NmRhM2YwYWJh
YTMzOTRmYzhkZDA4OGM4ZGE5Li5mNjVhNzc2MGM2NTk5MWIyNzFmMmQzZjJiYzI1MjgxNjE1ZDE3
NGQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QYXR0
ZXJuQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BhdHRl
cm5DRy5jcHAKQEAgLTU1LDE2ICs1NSwyMCBAQCBzdGF0aWMgdm9pZCBwYXR0ZXJuUmVsZWFzZUNh
bGxiYWNrKHZvaWQqIGluZm8pCiAKIFJldGFpblB0cjxDR1BhdHRlcm5SZWY+IFBhdHRlcm46OmNy
ZWF0ZVBsYXRmb3JtUGF0dGVybihjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHVzZXJTcGFjZVRyYW5z
Zm9ybSkgY29uc3QKIHsKLSAgICBGbG9hdFJlY3QgdGlsZVJlY3QgPSB7IHsgfSwgdGlsZUltYWdl
KCkuc2l6ZSgpIH07Ci0KLSAgICBBZmZpbmVUcmFuc2Zvcm0gcGF0dGVyblRyYW5zZm9ybSA9IHVz
ZXJTcGFjZVRyYW5zZm9ybSAqIHBhdHRlcm5TcGFjZVRyYW5zZm9ybSgpOwotICAgIHBhdHRlcm5U
cmFuc2Zvcm0uc2NhbGVOb25Vbmlmb3JtKDEsIC0xKTsKLSAgICBwYXR0ZXJuVHJhbnNmb3JtLnRy
YW5zbGF0ZSgwLCAtdGlsZVJlY3QuaGVpZ2h0KCkpOworICAgIGF1dG8gbmF0aXZlSW1hZ2UgPSB0
aWxlTmF0aXZlSW1hZ2UoKTsKKyAgICBpZiAoIW5hdGl2ZUltYWdlKQorICAgICAgICByZXR1cm4g
bnVsbHB0cjsKIAotICAgIFBsYXRmb3JtSW1hZ2VQdHIgcGxhdGZvcm1JbWFnZSA9IHRpbGVJbWFn
ZSgpLnBsYXRmb3JtSW1hZ2UoKTsKKyAgICBhdXRvIHBsYXRmb3JtSW1hZ2UgPSBuYXRpdmVJbWFn
ZS0+cGxhdGZvcm1JbWFnZSgpOwogICAgIGlmICghcGxhdGZvcm1JbWFnZSkKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAKKyAgICBGbG9hdFJlY3QgdGlsZVJlY3QgPSB7IHsgfSwgbmF0aXZlSW1h
Z2UtPnNpemUoKSB9OworCisgICAgYXV0byBwYXR0ZXJuVHJhbnNmb3JtID0gdXNlclNwYWNlVHJh
bnNmb3JtICogcGF0dGVyblNwYWNlVHJhbnNmb3JtKCk7CisgICAgcGF0dGVyblRyYW5zZm9ybS5z
Y2FsZU5vblVuaWZvcm0oMSwgLTEpOworICAgIHBhdHRlcm5UcmFuc2Zvcm0udHJhbnNsYXRlKDAs
IC10aWxlUmVjdC5oZWlnaHQoKSk7CisKICAgICAvLyBJZiB3ZSdyZSByZXBlYXRpbmcgaW4gYm90
aCBkaXJlY3Rpb25zLCB3ZSBjYW4gdXNlIGltYWdlLWJhY2tlZCBwYXR0ZXJucwogICAgIC8vIGlu
c3RlYWQgb2YgY3VzdG9tIHBhdHRlcm5zLCBhbmQgYXZvaWQgdGlsaW5nLWVkZ2UgcGl4ZWwgY3Jh
Y2tzLgogICAgIGlmIChyZXBlYXRYKCkgJiYgcmVwZWF0WSgpKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3Bs
YXlMaXN0SXRlbXMuY3BwCmluZGV4IDMxYWM4YjRhZDdkYmY3MmRhMzY0YTA1NTc3NmY2YjI5Nzlh
NDY5ZDcuLjBkYmQ0OWU1MmUzOTM4NTRmNjIwZTNiNzAxM2RjMGQxYzRkZWMxNzAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdEl0ZW1zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNw
bGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHAKQEAgLTE2MCwxMiArMTYwLDEyIEBAIFNldFN0
YXRlOjpTZXRTdGF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZUNoYW5nZSYgc3RhdGVDaGFu
Z2UsIGNvbnN0IFBhdHRlcm5ECiB7CiB9CiAKLXZvaWQgU2V0U3RhdGU6OmFwcGx5KEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCwgTmF0aXZlSW1hZ2UqIHN0cm9rZVBhdHRlcm5JbWFnZSwgTmF0aXZl
SW1hZ2UqIGZpbGxQYXR0ZXJuSW1hZ2UpCit2b2lkIFNldFN0YXRlOjphcHBseShHcmFwaGljc0Nv
bnRleHQmIGNvbnRleHQsIHN0ZDo6b3B0aW9uYWw8U291cmNlSW1hZ2U+JiYgc3Ryb2tlUGF0dGVy
bkltYWdlLCBzdGQ6Om9wdGlvbmFsPFNvdXJjZUltYWdlPiYmIGZpbGxQYXR0ZXJuSW1hZ2UpCiB7
CiAgICAgaWYgKG1fc3RhdGVDaGFuZ2UubV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0Nv
bnRleHRTdGF0ZTo6U3Ryb2tlUGF0dGVybkNoYW5nZSkgJiYgc3Ryb2tlUGF0dGVybkltYWdlKQot
ICAgICAgICBtX3N0YXRlQ2hhbmdlLm1fc3RhdGUuc3Ryb2tlUGF0dGVybiA9IFBhdHRlcm46OmNy
ZWF0ZSgqc3Ryb2tlUGF0dGVybkltYWdlLCBtX3N0cm9rZVBhdHRlcm4ucGFyYW1ldGVycyk7Cisg
ICAgICAgIG1fc3RhdGVDaGFuZ2UubV9zdGF0ZS5zdHJva2VQYXR0ZXJuID0gUGF0dGVybjo6Y3Jl
YXRlKFdURk1vdmUoKnN0cm9rZVBhdHRlcm5JbWFnZSksIG1fc3Ryb2tlUGF0dGVybi5wYXJhbWV0
ZXJzKTsKICAgICBpZiAobV9zdGF0ZUNoYW5nZS5tX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBo
aWNzQ29udGV4dFN0YXRlOjpGaWxsUGF0dGVybkNoYW5nZSkgJiYgZmlsbFBhdHRlcm5JbWFnZSkK
LSAgICAgICAgbV9zdGF0ZUNoYW5nZS5tX3N0YXRlLmZpbGxQYXR0ZXJuID0gUGF0dGVybjo6Y3Jl
YXRlKCpmaWxsUGF0dGVybkltYWdlLCBtX2ZpbGxQYXR0ZXJuLnBhcmFtZXRlcnMpOworICAgICAg
ICBtX3N0YXRlQ2hhbmdlLm1fc3RhdGUuZmlsbFBhdHRlcm4gPSBQYXR0ZXJuOjpjcmVhdGUoV1RG
TW92ZSgqZmlsbFBhdHRlcm5JbWFnZSksIG1fZmlsbFBhdHRlcm4ucGFyYW1ldGVycyk7CiAgICAg
bV9zdGF0ZUNoYW5nZS5hcHBseShjb250ZXh0KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dEl0ZW1zLmgKaW5kZXggZWYwYzE4NzdkMTkzOGJkYzA2MTA1NGI5NDJmYTYyODBiYzQ3ZjIwMy4u
ZWEyZTc1NjI3NDU3MGI3Y2I3YjE0NTBlNzg5NzRmNzRiMzZiNzU4ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRl
bXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3RJdGVtcy5oCkBAIC0yNTcsNyArMjU3LDcgQEAgcHVibGljOgogICAgIHRlbXBs
YXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKICAgICB0ZW1w
bGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxTZXRTdGF0ZT4gZGVjb2Rl
KERlY29kZXImKTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwbHkoR3JhcGhpY3NDb250
ZXh0JiwgTmF0aXZlSW1hZ2UqIHN0cm9rZVBhdHRlcm5JbWFnZSwgTmF0aXZlSW1hZ2UqIGZpbGxQ
YXR0ZXJuSW1hZ2UpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwbHkoR3JhcGhpY3NDb250
ZXh0Jiwgc3RkOjpvcHRpb25hbDxTb3VyY2VJbWFnZT4mJiBzdHJva2VQYXR0ZXJuSW1hZ2UsIHN0
ZDo6b3B0aW9uYWw8U291cmNlSW1hZ2U+JiYgZmlsbFBhdHRlcm5JbWFnZSk7CiAKIHByaXZhdGU6
CiAgICAgc3RydWN0IFBhdHRlcm5EYXRhIHsKQEAgLTI4Nyw3ICsyODcsNyBAQCB2b2lkIFNldFN0
YXRlOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIAogICAgIGlmIChjaGFuZ2VGbGFn
cy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlUGF0dGVybkNoYW5nZSkpIHsK
ICAgICAgICAgQVNTRVJUKHN0YXRlLnN0cm9rZVBhdHRlcm4pOwotICAgICAgICBlbmNvZGVyIDw8
IHN0YXRlLnN0cm9rZVBhdHRlcm4tPnRpbGVJbWFnZSgpLnJlbmRlcmluZ1Jlc291cmNlSWRlbnRp
ZmllcigpOworICAgICAgICBlbmNvZGVyIDw8IHN0YXRlLnN0cm9rZVBhdHRlcm4tPnRpbGVJbWFn
ZSgpOwogICAgICAgICBlbmNvZGVyIDw8IHN0YXRlLnN0cm9rZVBhdHRlcm4tPnBhcmFtZXRlcnMo
KTsKICAgICB9CiAKQEAgLTI5OCw3ICsyOTgsNyBAQCB2b2lkIFNldFN0YXRlOjplbmNvZGUoRW5j
b2RlciYgZW5jb2RlcikgY29uc3QKIAogICAgIGlmIChjaGFuZ2VGbGFncy5jb250YWlucyhHcmFw
aGljc0NvbnRleHRTdGF0ZTo6RmlsbFBhdHRlcm5DaGFuZ2UpKSB7CiAgICAgICAgIEFTU0VSVChz
dGF0ZS5maWxsUGF0dGVybik7Ci0gICAgICAgIGVuY29kZXIgPDwgc3RhdGUuZmlsbFBhdHRlcm4t
PnRpbGVJbWFnZSgpLnJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcigpOworICAgICAgICBlbmNv
ZGVyIDw8IHN0YXRlLmZpbGxQYXR0ZXJuLT50aWxlSW1hZ2UoKTsKICAgICAgICAgZW5jb2RlciA8
PCBzdGF0ZS5maWxsUGF0dGVybi0+cGFyYW1ldGVycygpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
UmVwbGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuY3BwCmluZGV4IDIxODY1MGFmNThhNGE3YmNmMmMxNDEw
ZmYwZWYwMDUwNjgxYjZlZWQuLmFjNmVhOTVmYTdiMzkyMDM5ZmU0NzM3NTBiYmQ0Mzc3YjY4ZWNl
M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5jcHAKQEAgLTg1LDMy
ICs4NSwzNSBAQCBpbmxpbmUgc3RhdGljIHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJ
ZGVudGlmaWVyPiBhcHBseVNldFN0YXRlSXRlbShHcmFwaAogewogICAgIGF1dG8mIHNldFN0YXRl
SXRlbSA9IGl0ZW0uZ2V0PFNldFN0YXRlPigpOwogCi0gICAgUmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyIHN0cm9rZVBhdHRlcm5SZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI7Ci0gICAgTmF0
aXZlSW1hZ2UqIHN0cm9rZVBhdHRlcm5JbWFnZSA9IG51bGxwdHI7Ci0gICAgUmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyIGZpbGxQYXR0ZXJuUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyOwot
ICAgIE5hdGl2ZUltYWdlKiBmaWxsUGF0dGVybkltYWdlID0gbnVsbHB0cjsKLQotICAgIGlmICgo
c3Ryb2tlUGF0dGVyblJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciA9IHNldFN0YXRlSXRlbS5z
dHJva2VQYXR0ZXJuSW1hZ2VJZGVudGlmaWVyKCkpKSB7Ci0gICAgICAgIHN0cm9rZVBhdHRlcm5J
bWFnZSA9IHJlc291cmNlSGVhcC5nZXROYXRpdmVJbWFnZShzdHJva2VQYXR0ZXJuUmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyKTsKLSAgICAgICAgaWYgKCFzdHJva2VQYXR0ZXJuSW1hZ2UpCi0g
ICAgICAgICAgICByZXR1cm4gc3Ryb2tlUGF0dGVyblJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
cjsKLSAgICB9CisgICAgYXV0byBjYWNoZWRTb3VyY2VJbWFnZSA9IFsmXShhdXRvIGltYWdlSWRl
bnRpZmllcikgLT4gc3RkOjpvcHRpb25hbDxTb3VyY2VJbWFnZT4geworICAgICAgICBpZiAoIWlt
YWdlSWRlbnRpZmllcikKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgICAg
IGlmIChhdXRvIG5hdGl2ZUltYWdlID0gcmVzb3VyY2VIZWFwLmdldE5hdGl2ZUltYWdlKGltYWdl
SWRlbnRpZmllcikpCisgICAgICAgICAgICByZXR1cm4gU291cmNlSW1hZ2UoKm5hdGl2ZUltYWdl
KTsKKyAgICAgICAgaWYgKGF1dG8gaW1hZ2VCdWZmZXIgPSByZXNvdXJjZUhlYXAuZ2V0SW1hZ2VC
dWZmZXIoaW1hZ2VJZGVudGlmaWVyKSkKKyAgICAgICAgICAgIHJldHVybiBTb3VyY2VJbWFnZSgq
aW1hZ2VCdWZmZXIpOworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIH07CiAKLSAg
ICBpZiAoKGZpbGxQYXR0ZXJuUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyID0gc2V0U3RhdGVJ
dGVtLmZpbGxQYXR0ZXJuSW1hZ2VJZGVudGlmaWVyKCkpKSB7Ci0gICAgICAgIGZpbGxQYXR0ZXJu
SW1hZ2UgPSByZXNvdXJjZUhlYXAuZ2V0TmF0aXZlSW1hZ2UoZmlsbFBhdHRlcm5SZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXIpOwotICAgICAgICBpZiAoIWZpbGxQYXR0ZXJuSW1hZ2UpCi0gICAg
ICAgICAgICByZXR1cm4gZmlsbFBhdHRlcm5SZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI7Ci0g
ICAgfQorICAgIGF1dG8gc3Ryb2tlUGF0dGVybkltYWdlSWRlbnRpZmllciA9IHNldFN0YXRlSXRl
bS5zdHJva2VQYXR0ZXJuSW1hZ2VJZGVudGlmaWVyKCk7CisgICAgYXV0byBzdHJva2VQYXR0ZXJu
SW1hZ2UgPSBjYWNoZWRTb3VyY2VJbWFnZShzdHJva2VQYXR0ZXJuSW1hZ2VJZGVudGlmaWVyKTsK
KyAgICBpZiAoIXN0cm9rZVBhdHRlcm5JbWFnZSAmJiBzdHJva2VQYXR0ZXJuSW1hZ2VJZGVudGlm
aWVyKQorICAgICAgICByZXR1cm4gc3Ryb2tlUGF0dGVybkltYWdlSWRlbnRpZmllcjsKKworICAg
IGF1dG8gZmlsbFBhdHRlcm5JbWFnZUlkZW50aWZpZXIgPSBzZXRTdGF0ZUl0ZW0uZmlsbFBhdHRl
cm5JbWFnZUlkZW50aWZpZXIoKTsKKyAgICBhdXRvIGZpbGxQYXR0ZXJuSW1hZ2UgPSBjYWNoZWRT
b3VyY2VJbWFnZShmaWxsUGF0dGVybkltYWdlSWRlbnRpZmllcik7CisgICAgaWYgKCFmaWxsUGF0
dGVybkltYWdlICYmIGZpbGxQYXR0ZXJuSW1hZ2VJZGVudGlmaWVyKQorICAgICAgICByZXR1cm4g
ZmlsbFBhdHRlcm5JbWFnZUlkZW50aWZpZXI7CiAKLSAgICBzZXRTdGF0ZUl0ZW0uYXBwbHkoY29u
dGV4dCwgc3Ryb2tlUGF0dGVybkltYWdlLCBmaWxsUGF0dGVybkltYWdlKTsKKyAgICBzZXRTdGF0
ZUl0ZW0uYXBwbHkoY29udGV4dCwgV1RGTW92ZShzdHJva2VQYXR0ZXJuSW1hZ2UpLCBXVEZNb3Zl
KGZpbGxQYXR0ZXJuSW1hZ2UpKTsKIAogICAgIGlmICghZGVsZWdhdGUpCiAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAKLSAgICBpZiAoc3Ryb2tlUGF0dGVyblJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllcikKLSAgICAgICAgZGVsZWdhdGUtPnJlY29yZFJlc291cmNlVXNlKHN0cm9rZVBh
dHRlcm5SZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwotICAgIGlmIChmaWxsUGF0dGVyblJl
bmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikKLSAgICAgICAgZGVsZWdhdGUtPnJlY29yZFJlc291
cmNlVXNlKGZpbGxQYXR0ZXJuUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKKyAgICBpZiAo
c3Ryb2tlUGF0dGVybkltYWdlSWRlbnRpZmllcikKKyAgICAgICAgZGVsZWdhdGUtPnJlY29yZFJl
c291cmNlVXNlKHN0cm9rZVBhdHRlcm5JbWFnZUlkZW50aWZpZXIpOworICAgIGlmIChmaWxsUGF0
dGVybkltYWdlSWRlbnRpZmllcikKKyAgICAgICAgZGVsZWdhdGUtPnJlY29yZFJlc291cmNlVXNl
KGZpbGxQYXR0ZXJuSW1hZ2VJZGVudGlmaWVyKTsKICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L3NvZnR3YXJlL0ZFVGlsZVNvZnR3YXJlQXBwbGllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NvZnR3YXJlL0ZFVGlsZVNvZnR3YXJlQXBwbGllci5jcHAK
aW5kZXggYjc5OTFmNDk0OTA0ZTljM2U0NTFhNGEzNGE2ZjI4OWRjY2ZhNDMxYi4uNTUyZDE5NDZm
MjhiZTA5NDZjYTA0NmUwNmZkN2UzYThjOWZmZmVjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9zb2Z0d2FyZS9GRVRpbGVTb2Z0d2FyZUFwcGxp
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc29m
dHdhcmUvRkVUaWxlU29mdHdhcmVBcHBsaWVyLmNwcApAQCAtNTcsMTQgKzU3LDEwIEBAIGJvb2wg
RkVUaWxlU29mdHdhcmVBcHBsaWVyOjphcHBseShjb25zdCBGaWx0ZXImIGZpbHRlciwgY29uc3Qg
RmlsdGVySW1hZ2VWZWN0b3ImCiAgICAgdGlsZUltYWdlQ29udGV4dC50cmFuc2xhdGUoLXRpbGVS
ZWN0LmxvY2F0aW9uKCkpOwogICAgIHRpbGVJbWFnZUNvbnRleHQuZHJhd0ltYWdlQnVmZmVyKCpp
bnB1dEltYWdlLCBpbnB1dEltYWdlUmVjdC5sb2NhdGlvbigpKTsKIAotICAgIGF1dG8gcGF0dGVy
bkltYWdlID0gSW1hZ2VCdWZmZXI6OnNpbmtJbnRvTmF0aXZlSW1hZ2UoV1RGTW92ZSh0aWxlSW1h
Z2UpKTsKLSAgICBpZiAoIXBhdHRlcm5JbWFnZSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCiAg
ICAgQWZmaW5lVHJhbnNmb3JtIHBhdHRlcm5UcmFuc2Zvcm07CiAgICAgcGF0dGVyblRyYW5zZm9y
bS50cmFuc2xhdGUodGlsZVJlY3QubG9jYXRpb24oKSAtIG1heFJlc3VsdFJlY3QubG9jYXRpb24o
KSk7CiAKLSAgICBhdXRvIHBhdHRlcm4gPSBQYXR0ZXJuOjpjcmVhdGUocGF0dGVybkltYWdlLnJl
bGVhc2VOb25OdWxsKCksIHsgdHJ1ZSwgdHJ1ZSwgcGF0dGVyblRyYW5zZm9ybSB9KTsKKyAgICBh
dXRvIHBhdHRlcm4gPSBQYXR0ZXJuOjpjcmVhdGUoeyB0aWxlSW1hZ2UucmVsZWFzZU5vbk51bGwo
KSB9LCB7IHRydWUsIHRydWUsIHBhdHRlcm5UcmFuc2Zvcm0gfSk7CiAKICAgICBhdXRvJiByZXN1
bHRDb250ZXh0ID0gcmVzdWx0SW1hZ2UtPmNvbnRleHQoKTsKICAgICByZXN1bHRDb250ZXh0LnNl
dEZpbGxQYXR0ZXJuKFdURk1vdmUocGF0dGVybikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcAppbmRleCBmM2QxZTg0MTNlNTA5NTMwOGJjMGI4
NmVmZDY4Njg2ZjM4OWRkYTliLi45YTMzMWVhMDNiYzhmMDcyNTRhYmJhZDY3ZWY4OGVkMjc4OWRl
MjZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNr
aW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5n
LmNwcApAQCAtMzMxMywxMyArMzMxMywxMSBAQCBzdGF0aWMgUmVmUHRyPFBhdHRlcm4+IHBhdHRl
cm5Gb3JEZXNjcmlwdGlvbihQYXR0ZXJuRGVzY3JpcHRpb24gZGVzY3JpcHRpb24sIEZsbwogICAg
ICAgICBpbWFnZUNvbnRleHQuZHJhd1RleHQoZm9udCwgdGV4dFJ1biwgeyB0ZXh0R2FwLCB5T2Zm
c2V0IH0sIDApOwogICAgIH0KIAotICAgIGF1dG8gdGlsZUltYWdlID0gSW1hZ2VCdWZmZXI6OnNp
bmtJbnRvTmF0aXZlSW1hZ2UoV1RGTW92ZShpbWFnZUJ1ZmZlcikpOwotCiAgICAgQWZmaW5lVHJh
bnNmb3JtIHBhdHRlcm5PZmZzZXRUcmFuc2Zvcm07CiAgICAgcGF0dGVybk9mZnNldFRyYW5zZm9y
bS50cmFuc2xhdGUoY29udGVudE9mZnNldCArIGRlc2NyaXB0aW9uLnBoYXNlKTsKICAgICBwYXR0
ZXJuT2Zmc2V0VHJhbnNmb3JtLnNjYWxlKDEgLyBkZXN0Q29udGV4dC5zY2FsZUZhY3RvcigpKTsK
IAotICAgIHJldHVybiBQYXR0ZXJuOjpjcmVhdGUodGlsZUltYWdlLnJlbGVhc2VOb25OdWxsKCks
IHsgdHJ1ZSwgdHJ1ZSwgcGF0dGVybk9mZnNldFRyYW5zZm9ybX0pOworICAgIHJldHVybiBQYXR0
ZXJuOjpjcmVhdGUoeyBpbWFnZUJ1ZmZlci5yZWxlYXNlTm9uTnVsbCgpIH0sIHsgdHJ1ZSwgdHJ1
ZSwgcGF0dGVybk9mZnNldFRyYW5zZm9ybSB9KTsKIH07CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4uY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4u
Y3BwCmluZGV4IGIxMjY4YjgzNTcwNTVhMGFjMDY4MzRkMTE5Y2E3YTYyNmE0ZmY2OTYuLmU4YjUx
Y2ZiOTM5NDkyNjM4MWVmM2IwNGEzZTE3YTVmZDE1YzA4NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlUGF0dGVybi5jcHAK
QEAgLTExMywxMCArMTEzLDYgQEAgUGF0dGVybkRhdGEqIFJlbmRlclNWR1Jlc291cmNlUGF0dGVy
bjo6YnVpbGRQYXR0ZXJuKFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBPcHQKIAogICAgIGF1dG8g
dGlsZUltYWdlU2l6ZSA9IHRpbGVJbWFnZS0+bG9naWNhbFNpemUoKTsKIAotICAgIGF1dG8gY29w
aWVkSW1hZ2UgPSBJbWFnZUJ1ZmZlcjo6c2lua0ludG9OYXRpdmVJbWFnZShXVEZNb3ZlKHRpbGVJ
bWFnZSkpOwotICAgIGlmICghY29waWVkSW1hZ2UpCi0gICAgICAgIHJldHVybiBudWxscHRyOwot
CiAgICAgLy8gQ29tcHV0ZSBwYXR0ZXJuIHNwYWNlIHRyYW5zZm9ybWF0aW9uLgogICAgIGF1dG8g
cGF0dGVybkRhdGEgPSBtYWtlVW5pcXVlPFBhdHRlcm5EYXRhPigpOwogICAgIHBhdHRlcm5EYXRh
LT50cmFuc2Zvcm0udHJhbnNsYXRlKHRpbGVCb3VuZGFyaWVzLmxvY2F0aW9uKCkpOwpAQCAtMTM0
LDcgKzEzMCw3IEBAIFBhdHRlcm5EYXRhKiBSZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm46OmJ1aWxk
UGF0dGVybihSZW5kZXJFbGVtZW50JiByZW5kZXJlciwgT3B0CiAgICAgfQogCiAgICAgLy8gQnVp
bGQgcGF0dGVybi4KLSAgICBwYXR0ZXJuRGF0YS0+cGF0dGVybiA9IFBhdHRlcm46OmNyZWF0ZShj
b3BpZWRJbWFnZS5yZWxlYXNlTm9uTnVsbCgpLCB7IHRydWUsIHRydWUsIHBhdHRlcm5EYXRhLT50
cmFuc2Zvcm0gfSk7CisgICAgcGF0dGVybkRhdGEtPnBhdHRlcm4gPSBQYXR0ZXJuOjpjcmVhdGUo
eyB0aWxlSW1hZ2UucmVsZWFzZU5vbk51bGwoKSB9LCB7IHRydWUsIHRydWUsIHBhdHRlcm5EYXRh
LT50cmFuc2Zvcm0gfSk7CiAKICAgICAvLyBWYXJpb3VzIGNhbGxzIGFib3ZlIG1heSB0cmlnZ2Vy
IGludmFsaWRhdGlvbnMgaW4gc29tZSBmcmluZ2UgY2FzZXMgKEltYWdlQnVmZmVyIGFsbG9jYXRp
b24KICAgICAvLyBmYWlsdXJlcyBpbiB0aGUgU1ZHIGltYWdlIGNhY2hlIGZvciBleGFtcGxlKS4g
VG8gYXZvaWQgaGF2aW5nIG91ciBQYXR0ZXJuRGF0YSBkZWxldGVkIGJ5CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRl
ci5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlRGlzcGxheUxp
c3RSZWNvcmRlci5jcHAKaW5kZXggZDlhZjU4NDBkZjY4NDNkOWU2MTlkYjY2MmVjOTBlYTQ4MTg1
Nzk2YS4uYTBhNjIyZmQ0NmU5OWY2ZTM0MzIxNzkyMDM2NDE5ODYzYjU3ZmE5OCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZURpc3BsYXlMaXN0UmVj
b3JkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVE
aXNwbGF5TGlzdFJlY29yZGVyLmNwcApAQCAtMTI1LDIwICsxMjUsMzAgQEAgdm9pZCBSZW1vdGVE
aXNwbGF5TGlzdFJlY29yZGVyOjpzZXRTdGF0ZShEaXNwbGF5TGlzdDo6U2V0U3RhdGUmJiBpdGVt
KQogCiB2b2lkIFJlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXI6OnNldFN0YXRlV2l0aFF1YWxpZmll
ZElkZW50aWZpZXJzKERpc3BsYXlMaXN0OjpTZXRTdGF0ZSYmIGl0ZW0sIFF1YWxpZmllZFJlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllciBzdHJva2VQYXR0ZXJuSW1hZ2VJZGVudGlmaWVyLCBRdWFs
aWZpZWRSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgZmlsbFBhdHRlcm5JbWFnZUlkZW50aWZp
ZXIpCiB7Ci0gICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBzdHJva2VQYXR0ZXJuSW1hZ2U7CisgICAg
YXV0byBjYWNoZWRTb3VyY2VJbWFnZSA9IFsmXShhdXRvIGltYWdlSWRlbnRpZmllcikgLT4gc3Rk
OjpvcHRpb25hbDxTb3VyY2VJbWFnZT4geworICAgICAgICBpZiAoIWltYWdlSWRlbnRpZmllcikK
KyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgICAgIGlmIChhdXRvIG5hdGl2
ZUltYWdlID0gcmVzb3VyY2VDYWNoZSgpLmNhY2hlZE5hdGl2ZUltYWdlKGltYWdlSWRlbnRpZmll
cikpCisgICAgICAgICAgICByZXR1cm4gU291cmNlSW1hZ2UoKm5hdGl2ZUltYWdlKTsKKyAgICAg
ICAgaWYgKGF1dG8gaW1hZ2VCdWZmZXIgPSByZXNvdXJjZUNhY2hlKCkuY2FjaGVkSW1hZ2VCdWZm
ZXIoaW1hZ2VJZGVudGlmaWVyKSkKKyAgICAgICAgICAgIHJldHVybiBTb3VyY2VJbWFnZSgqaW1h
Z2VCdWZmZXIpOworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIH07CisKKyAgICBh
dXRvIHN0cm9rZVBhdHRlcm5JbWFnZSA9IGNhY2hlZFNvdXJjZUltYWdlKHN0cm9rZVBhdHRlcm5J
bWFnZUlkZW50aWZpZXIpOworICAgIGlmICghc3Ryb2tlUGF0dGVybkltYWdlKQorICAgICAgICBz
dHJva2VQYXR0ZXJuSW1hZ2VJZGVudGlmaWVyID0geyB9OworCisgICAgYXV0byBmaWxsUGF0dGVy
bkltYWdlID0gY2FjaGVkU291cmNlSW1hZ2UoZmlsbFBhdHRlcm5JbWFnZUlkZW50aWZpZXIpOwor
ICAgIGlmICghZmlsbFBhdHRlcm5JbWFnZSkKKyAgICAgICAgZmlsbFBhdHRlcm5JbWFnZUlkZW50
aWZpZXIgPSB7IH07CisKKyAgICBoYW5kbGVJdGVtKFdURk1vdmUoaXRlbSksIFdURk1vdmUoc3Ry
b2tlUGF0dGVybkltYWdlKSwgV1RGTW92ZShmaWxsUGF0dGVybkltYWdlKSk7CisgICAgCiAgICAg
aWYgKHN0cm9rZVBhdHRlcm5JbWFnZUlkZW50aWZpZXIpCi0gICAgICAgIHN0cm9rZVBhdHRlcm5J
bWFnZSA9IHJlc291cmNlQ2FjaGUoKS5jYWNoZWROYXRpdmVJbWFnZShzdHJva2VQYXR0ZXJuSW1h
Z2VJZGVudGlmaWVyKTsKLQotICAgIFJlZlB0cjxOYXRpdmVJbWFnZT4gZmlsbFBhdHRlcm5JbWFn
ZTsKLSAgICBpZiAoZmlsbFBhdHRlcm5JbWFnZUlkZW50aWZpZXIpCi0gICAgICAgIGZpbGxQYXR0
ZXJuSW1hZ2UgPSByZXNvdXJjZUNhY2hlKCkuY2FjaGVkTmF0aXZlSW1hZ2UoZmlsbFBhdHRlcm5J
bWFnZUlkZW50aWZpZXIpOwotCi0gICAgaGFuZGxlSXRlbShXVEZNb3ZlKGl0ZW0pLCBzdHJva2VQ
YXR0ZXJuSW1hZ2UuZ2V0KCksIGZpbGxQYXR0ZXJuSW1hZ2UuZ2V0KCkpOwotCi0gICAgaWYgKHN0
cm9rZVBhdHRlcm5JbWFnZSkKICAgICAgICAgcmVzb3VyY2VDYWNoZSgpLnJlY29yZFJlc291cmNl
VXNlKHN0cm9rZVBhdHRlcm5JbWFnZUlkZW50aWZpZXIpOwogCi0gICAgaWYgKGZpbGxQYXR0ZXJu
SW1hZ2UpCisgICAgaWYgKGZpbGxQYXR0ZXJuSW1hZ2VJZGVudGlmaWVyKQogICAgICAgICByZXNv
dXJjZUNhY2hlKCkucmVjb3JkUmVzb3VyY2VVc2UoZmlsbFBhdHRlcm5JbWFnZUlkZW50aWZpZXIp
OwogfQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKaW5kZXggYmZlNWUxNDNkZWRmYjg4ZmZkNDAwZTFiOTU0YzhlNDM0OTk0ZmQ3YS4u
YjVhNmY3ZTljYTlhYWVlNmY3ZmIyMTE4MmUyYzRlYjI5ZDk2MGFiMCAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE1IEBACisyMDIyLTAxLTIzICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgor
CisgICAgICAgIFtHUFUgUHJvY2Vzc10gUGF0dGVybiBzaG91bGQgaG9sZCBTb3VyY2VJbWFnZSB3
aGljaCBjYW4gYmUgY29udmVydGVkIHRvIGEgTmF0aXZlSW1hZ2Ugb25seSB3aGVuIG5lZWRlZAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMyNDExCisg
ICAgICAgIDxyZGFyOi8vcHJvYmxlbS84NDk5ODczOD4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVbnNraXAgbGF5b3V0IHRlc3RzIGZvciBncHUgcHJv
Y2VzcyBiZWNhdXNlIHRoZXkgYXJlIGZpeGVkIGJ5IHRoaXMgY2hhbmdlLgorCisgICAgICAgICog
Z3B1LXByb2Nlc3MvVGVzdEV4cGVjdGF0aW9uczoKKwogMjAyMi0wMS0yMSAgWXVzdWtlIFN1enVr
aSAgPHlzdXp1a2lAYXBwbGUuY29tPgogCiAgICAgICAgIFtKU0NdIFJlbGF4IERhdGUucGFyc2Ug
cmVxdWlyZW1lbnQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2dwdS1wcm9jZXNzL1Rlc3RFeHBl
Y3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9ncHUtcHJvY2Vzcy9UZXN0RXhwZWN0YXRpb25zCmluZGV4
IGNhOGU0OWFlMTQyZTk2NDhjYjFlNDg4YjJjNTI5NDI1ZWNjYWFhYjcuLjVhZThjOGFmNGMzY2U2
NmQzNTgzMDRhM2M2MmYyYzc0ODJkYjU1MTAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2dwdS1w
cm9jZXNzL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvZ3B1LXByb2Nlc3MvVGVz
dEV4cGVjdGF0aW9ucwpAQCAtMjQ1LDggKzI0NSw2IEBAIGltcG9ydGVkL2JsaW5rL3N2Zy9hcy1p
bWFnZS9zdmctYXMtaW1hZ2Utb2JqZWN0LWZpdC1jb250YWluLmh0bWwKIGltcG9ydGVkL2JsaW5r
L3N2Zy9hcy1pbWFnZS9zdmctYXMtaW1hZ2Utb2JqZWN0LWZpdC1jb3Zlci5odG1sCiBpbXBvcnRl
ZC9ibGluay9zdmcvYXMtaW1hZ2Uvc3Zndmlldy1yZWZlcmVuY2VzLmh0bWwKIGltcG9ydGVkL2Js
aW5rL3N2Zy9jdXN0b20vZmlsbC1mYWxsYmFjay1jdXJyZW50Y29sb3ItMS5zdmcKLWltcG9ydGVk
L2JsaW5rL3N2Zy9jdXN0b20vdHJhbnNmb3JtZWQtdGV4dC1wYXR0ZXJuLmh0bWwgWyBDcmFzaCBd
Ci1pbXBvcnRlZC9ibGluay9zdmcvY3VzdG9tL3ZpZXdwb3J0LXJlc291cmNlLWludmFsLnN2ZyBb
IENyYXNoIF0KIGltcG9ydGVkL2JsaW5rL3N2Zy90ZXh0L29iYi1wYWludHNlcnZlci5odG1sCiBp
bXBvcnRlZC9tb3ppbGxhL3N2Zy9hcy1pbWFnZS9iYWNrZ3JvdW5kLXJlc2l6ZS0zLmh0bWwKIGlt
cG9ydGVkL21vemlsbGEvc3ZnL2FzLWltYWdlL2JhY2tncm91bmQtcmVzaXplLTQuaHRtbApAQCAt
MjYxLDM5ICsyNTksMTkgQEAgaW1wb3J0ZWQvbW96aWxsYS9zdmcvYmxlbmQtb3ZlcmxheS5zdmcK
IGltcG9ydGVkL21vemlsbGEvc3ZnL2JsZW5kLXNhdHVyYXRpb24uc3ZnCiBpbXBvcnRlZC9tb3pp
bGxhL3N2Zy9jb25kaXRpb25zLTA4LnN2ZyBbIENyYXNoIF0KIGltcG9ydGVkL21vemlsbGEvc3Zn
L2R5bmFtaWMtcGF0dGVybi0wMS5zdmcgWyBDcmFzaCBdCi1pbXBvcnRlZC9tb3ppbGxhL3N2Zy9k
eW5hbWljLXBhdHRlcm4tMDIuc3ZnIFsgQ3Jhc2ggXQotaW1wb3J0ZWQvbW96aWxsYS9zdmcvZHlu
YW1pYy1wYXR0ZXJuLWNvbnRlbnRzLTAxLnN2ZyBbIENyYXNoIF0KLWltcG9ydGVkL21vemlsbGEv
c3ZnL2R5bmFtaWMtcGF0dGVybi1jb250ZW50cy0wMi5zdmcgWyBDcmFzaCBdCiBpbXBvcnRlZC9t
b3ppbGxhL3N2Zy9maWx0ZXJzL2ZlQ29tcG9zaXRlLTIuc3ZnCiBpbXBvcnRlZC9tb3ppbGxhL3N2
Zy9maWx0ZXJzL2ZlRmxvb2QtMS5zdmcKIGltcG9ydGVkL21vemlsbGEvc3ZnL2ZpbHRlcnMvZmVG
bG9vZC0yLnN2ZwogaW1wb3J0ZWQvbW96aWxsYS9zdmcvZmlsdGVycy9mZUltYWdlLTEuc3ZnCiBp
bXBvcnRlZC9tb3ppbGxhL3N2Zy9saW5lYXJHcmFkaWVudC1iYXNpYy0wMy5zdmcKIGltcG9ydGVk
L21vemlsbGEvc3ZnL21hc2stdHlwZS0wMS5zdmcKLWltcG9ydGVkL21vemlsbGEvc3ZnL29iamVj
dEJvdW5kaW5nQm94LWFuZC1wYXR0ZXJuLTAxYS5zdmcgWyBDcmFzaCBdCi1pbXBvcnRlZC9tb3pp
bGxhL3N2Zy9vYmplY3RCb3VuZGluZ0JveC1hbmQtcGF0dGVybi0wMWIuc3ZnIFsgQ3Jhc2ggXQot
aW1wb3J0ZWQvbW96aWxsYS9zdmcvb2JqZWN0Qm91bmRpbmdCb3gtYW5kLXBhdHRlcm4tMDFjLnN2
ZyBbIENyYXNoIF0KLWltcG9ydGVkL21vemlsbGEvc3ZnL29iamVjdEJvdW5kaW5nQm94LWFuZC1w
YXR0ZXJuLTAyLnN2ZyBbIENyYXNoIF0KLWltcG9ydGVkL21vemlsbGEvc3ZnL29iamVjdEJvdW5k
aW5nQm94LWFuZC1wYXR0ZXJuLTAzLnN2ZyBbIENyYXNoIF0KIGltcG9ydGVkL21vemlsbGEvc3Zn
L29wYWNpdHktYW5kLWdyYWRpZW50LTAyLnN2ZwogaW1wb3J0ZWQvbW96aWxsYS9zdmcvcGFpbnQt
b3JkZXItMDEuc3ZnCiBpbXBvcnRlZC9tb3ppbGxhL3N2Zy9wYXRoLTAyLnN2ZwotaW1wb3J0ZWQv
bW96aWxsYS9zdmcvcGF0dGVybi1iYXNpYy0wMS5zdmcgWyBDcmFzaCBdCi1pbXBvcnRlZC9tb3pp
bGxhL3N2Zy9wYXR0ZXJuLWxpdmUtMDFhLnN2ZyBbIENyYXNoIF0KLWltcG9ydGVkL21vemlsbGEv
c3ZnL3BhdHRlcm4tbGl2ZS0wMWIuc3ZnIFsgQ3Jhc2ggXQotaW1wb3J0ZWQvbW96aWxsYS9zdmcv
cGF0dGVybi1zY2FsZS0wMWEuc3ZnIFsgQ3Jhc2ggXQotaW1wb3J0ZWQvbW96aWxsYS9zdmcvcGF0
dGVybi1zY2FsZS0wMWIuc3ZnIFsgQ3Jhc2ggXQotaW1wb3J0ZWQvbW96aWxsYS9zdmcvcGF0dGVy
bi1zY2FsZS0wMWMuc3ZnIFsgQ3Jhc2ggXQotaW1wb3J0ZWQvbW96aWxsYS9zdmcvcGF0dGVybi10
cmFuc2Zvcm0tcHJlc2VuY2UtMDEuc3ZnIFsgQ3Jhc2ggXQogaW1wb3J0ZWQvbW96aWxsYS9zdmcv
cGF0dGVybi10cmFuc2Zvcm1lZC0wMS5zdmcKIGltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQtZ3Jh
ZGllbnQtMDEuc3ZnCiBpbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0LXNjYWxlLTAyLnN2ZwotaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC9tYXNrLWNvbnRlbnQtMi5zdmcgWyBDcmFzaCBdCiBpbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3NpbXBsZS1maWxsLWdyYWRpZW50LnN2ZwotaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdXNlclNwYWNlT25Vc2UtYW5kLXBhdHRlcm4tMDEuc3ZnIFsgQ3Jhc2ggXQot
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdmlld0JveC1hbmQtcGF0dGVybi0wMS5zdmcgWyBDcmFzaCBd
Ci1pbXBvcnRlZC9tb3ppbGxhL3N2Zy92aWV3Qm94LWFuZC1wYXR0ZXJuLTAyLnN2ZyBbIENyYXNo
IF0KLWltcG9ydGVkL21vemlsbGEvc3ZnL3ZpZXdCb3gtYW5kLXBhdHRlcm4tMDMuc3ZnIFsgQ3Jh
c2ggXQogaW1wb3J0ZWQvdzNjL2kxOG4vYmlkaS9iaWRpLXBsYWludGV4dC0wMTEuaHRtbCBbIFBh
c3MgXQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb21wYXQvd2Via2l0LWJhY2tn
cm91bmQtb3JpZ2luLXRleHQuaHRtbAogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9j
b21wYXQvd2Via2l0LWxpbmVhci1ncmFkaWVudC1saW5lLWJvdHRvbS5odG1sCkBAIC05MTAsMjQg
Kzg4OCw3IEBAIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvbWVkaWFjYXB0dXJlLXJl
Y29yZC9NZWRpYVJlY29yZGVyLXBlZXJjb25uZWN0aW9uCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL21pbWVzbmlmZi9taW1lLXR5cGVzL2NoYXJzZXQtcGFyYW1ldGVyLndpbmRvdy5o
dG1sCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3NlbGVjdGlvbi9zZWxlY3Rpb24t
c2VsZWN0LWFsbC1tb3ZlLWlucHV0LWNyYXNoLmh0bWwKIGltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyL2ZldGNoLXJlcXVlc3QtcmVk
aXJlY3QuaHR0cHMuaHRtbCBbIFBhc3MgXQotaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9zdmcvYW5pbWF0aW9ucy9hbmltYXRlVHJhbnNmb3JtLXBhdHRlcm4tdHJhbnNmb3JtLmh0bWwg
WyBDcmFzaCBdCi1pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N2Zy9hbmltYXRpb25z
L3N2Z2VudW0tYW5pbWF0aW9uLTEuaHRtbCBbIENyYXNoIF0KIGltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvc3ZnL2V4dGVuc2liaWxpdHkvZm9yZWlnbk9iamVjdC9tYXNrZWQuaHRtbAot
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdmcvaW1wb3J0L2Nvb3Jkcy11bml0cy0w
MS1iLW1hbnVhbC5zdmcgWyBDcmFzaCBdCi1pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3N2Zy9pbXBvcnQvbGlua2luZy1hLTEwLWYtbWFudWFsLnN2ZyBbIENyYXNoIF0KLWltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3ZnL2ltcG9ydC9tYXNraW5nLXBhdGgtMDctYi1tYW51
YWwuc3ZnIFsgQ3Jhc2ggXQotaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdmcvaW1w
b3J0L3BzZXJ2ZXJzLWdyYWQtMDMtYi1tYW51YWwuc3ZnIFsgQ3Jhc2ggXQotaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9zdmcvaW1wb3J0L3BzZXJ2ZXJzLWdyYWQtMDYtYi1tYW51YWwu
c3ZnIFsgQ3Jhc2ggXQotaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdmcvaW1wb3J0
L3BzZXJ2ZXJzLXBhdHRlcm4tMDEtYi1tYW51YWwuc3ZnIFsgQ3Jhc2ggXQotaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9zdmcvaW1wb3J0L3BzZXJ2ZXJzLXBhdHRlcm4tMDItZi1tYW51
YWwuc3ZnIFsgQ3Jhc2ggXQotaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdmcvaW1w
b3J0L3BzZXJ2ZXJzLXBhdHRlcm4tMDQtZi1tYW51YWwuc3ZnIFsgQ3Jhc2ggXQotaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdmcvaW1wb3J0L3BzZXJ2ZXJzLXBhdHRlcm4tMDUtZi1t
YW51YWwuc3ZnIFsgQ3Jhc2ggXQotaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdmcv
aW1wb3J0L3BzZXJ2ZXJzLXBhdHRlcm4tMDgtZi1tYW51YWwuc3ZnIFsgQ3Jhc2ggXQotaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdmcvaW1wb3J0L3BzZXJ2ZXJzLXBhdHRlcm4tMDkt
Zi1tYW51YWwuc3ZnIFsgQ3Jhc2ggXQotaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9z
dmcvbGlua2luZy9yZWZ0ZXN0cy9ocmVmLXBhdHRlcm4tZWxlbWVudC5odG1sIFsgQ3Jhc2ggXQot
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdmcvcGFpbnRpbmcvY3VycmVudENvbG9y
LW92ZXJyaWRlLXBzZXJ2ZXItc3Ryb2tlLnN2ZyBbIENyYXNoIF0KLWltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvc3ZnL3BzZXJ2ZXJzL3JlZnRlc3RzL3BhdHRlcm4taW5oZXJpdGFuY2Ut
bm90LWluLXJlbmRlcnRyZWUtMDIudGVudGF0aXZlLnN2ZyBbIENyYXNoIF0KLWltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvc3ZnL3JlbmRlci9yZWZ0ZXN0cy9maWx0ZXItZWZmZWN0cy1v
bi1wYXR0ZXJuLmh0bWwgWyBDcmFzaCBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3dlYi1hbmltYXRpb25zL3RpbWluZy1tb2RlbC9hbmltYXRpb25zL3VwZGF0ZS1wbGF5YmFjay1y
YXRlLXplcm8uaHRtbCBbIFBhc3MgXQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93
ZWJhdWRpby90aGUtYXVkaW8tYXBpL3RoZS1iaXF1YWRmaWx0ZXJub2RlLWludGVyZmFjZS9uby1k
ZXppcHBlcmluZy5odG1sCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3hoci9yZXNw
b25zZS1tZXRob2QuaHRtIFsgUGFzcyBdCkBAIC05NTQsMjggKzkxNSwxMSBAQCBzdmcvYmF0aWsv
cGFpbnRzL3BhdHRlcm5QcmVzZXJ2ZUFzcGVjdFJhdGlvQS5zdmcgWyBDcmFzaCBdCiBzdmcvYmF0
aWsvcGFpbnRzL3BhdHRlcm5SZWdpb25BLnN2ZyBbIENyYXNoIF0KIHN2Zy9iYXRpay9wYWludHMv
cGF0dGVyblJlZ2lvbnMtcG9zaXRpb25lZC1vYmplY3RzLnN2ZyBbIENyYXNoIF0KIHN2Zy9iYXRp
ay9wYWludHMvcGF0dGVyblJlZ2lvbnMuc3ZnIFsgQ3Jhc2ggXQotc3ZnL2JhdGlrL3RleHQvdGV4
dEVmZmVjdDIuc3ZnIFsgQ3Jhc2ggXQogc3ZnL2NsaXAtcGF0aC9jbGlwLXBhdGgtbGluZS11c2Ut
YmVmb3JlLWRlZmluZWQuc3ZnIFsgUGFzcyBdCiBzdmcvY2xpcC1wYXRoL3dlYmtpdC1jbGlwLXBh
dGgtYWZ0ZXIuc3ZnCiBzdmcvY2xpcC1wYXRoL3dlYmtpdC1jbGlwLXBhdGgtYmVmb3JlLnN2Zwot
c3ZnL2N1c3RvbS9oaWRwaS1tYXNraW5nLWNsaXBwaW5nLnN2ZyBbIENyYXNoIF0KLXN2Zy9jdXN0
b20vaHJlZi1zdmctbmFtZXNwYWNlLXN0YXRpYy5zdmcgWyBDcmFzaCBdCi1zdmcvY3VzdG9tL2pz
LWxhdGUtcGF0dGVybi1jcmVhdGlvbi5zdmcgWyBDcmFzaCBdCi1zdmcvY3VzdG9tL2pzLXVwZGF0
ZS1wYXR0ZXJuLnN2ZyBbIENyYXNoIF0KLXN2Zy9jdXN0b20vbGFyZ2UtaW1hZ2UtcGF0dGVybi1j
cmFzaC5odG1sIFsgQ3Jhc2ggXQotc3ZnL2N1c3RvbS9sb2NhbC11cmwtcmVmZXJlbmNlLXBhdHRl
cm4uaHRtbCBbIENyYXNoIF0KLXN2Zy9jdXN0b20vbmV3LWltYWdlLWlzLWh0bWwtZWxlbWVudC5z
dmcgWyBDcmFzaCBdCiBzdmcvY3VzdG9tL3N1YnBhdGhzLW1vdmV0by1vbmx5LXJlbmRlcmluZy5z
dmcgWyBQYXNzIF0KIHN2Zy9jdXN0b20vc3ZnLWZvbnRzLXNraXAtaW5rLmh0bWwKLXN2Zy9kb20v
dmlld3BvcnQtY29udGFpbmVyLWNyYXNoLnN2ZyBbIENyYXNoIF0KLXN2Zy9keW5hbWljLXVwZGF0
ZXMvU1ZHUGF0dGVybkVsZW1lbnQtZG9tLWhlaWdodC1hdHRyLmh0bWwgWyBDcmFzaCBdCi1zdmcv
ZHluYW1pYy11cGRhdGVzL1NWR1BhdHRlcm5FbGVtZW50LWRvbS1wYXR0ZXJuVHJhbnNmb3JtLWF0
dHIuaHRtbCBbIENyYXNoIF0KLXN2Zy9keW5hbWljLXVwZGF0ZXMvU1ZHUGF0dGVybkVsZW1lbnQt
ZG9tLXBhdHRlcm5Vbml0cy1hdHRyLmh0bWwgWyBDcmFzaCBdCi1zdmcvZHluYW1pYy11cGRhdGVz
L1NWR1BhdHRlcm5FbGVtZW50LWRvbS13aWR0aC1hdHRyLmh0bWwgWyBDcmFzaCBdCi1zdmcvZHlu
YW1pYy11cGRhdGVzL1NWR1BhdHRlcm5FbGVtZW50LWRvbS15LWF0dHIuaHRtbCBbIENyYXNoIF0K
LXN2Zy9keW5hbWljLXVwZGF0ZXMvU1ZHUGF0dGVybkVsZW1lbnQtc3ZnZG9tLXBhdHRlcm5Db250
ZW50VW5pdHMtcHJvcC5odG1sIFsgQ3Jhc2ggXQotc3ZnL2R5bmFtaWMtdXBkYXRlcy9TVkdQYXR0
ZXJuRWxlbWVudC1zdmdkb20td2lkdGgtcHJvcC5odG1sIFsgQ3Jhc2ggXQotc3ZnL2R5bmFtaWMt
dXBkYXRlcy9TVkdQYXR0ZXJuRWxlbWVudC1zdmdkb20teS1wcm9wLmh0bWwgWyBDcmFzaCBdCiBz
dmcvZ3JhZGllbnRzL2dyYWRpZW50LWZsaXBwZWQtc3RhcnQtZW5kLXBvaW50cy5zdmcKIHN2Zy9n
cmFkaWVudHMvc3ByZWFkTWV0aG9kLnN2Zwogc3ZnL2dyYWRpZW50cy9zcHJlYWRNZXRob2RBbHBo
YS5zdmcKQEAgLTk4OSwxMSArOTMzLDYgQEAgc3ZnL2dyYWRpZW50cy9zcHJlYWRNZXRob2RSZXZl
cnNlZC5zdmcKIHN2Zy9ncmFkaWVudHMvc3RvcEFscGhhLnN2Zwogc3ZnL3RyYW5zZm9ybXMvdHJh
bnNmb3JtZWQtdGV4dC1maWxsLWdyYWRpZW50Lmh0bWwKIHN2Zy90cmFuc2Zvcm1zL3RyYW5zZm9y
bWVkLXRleHQtZmlsbC1wYXR0ZXJuLmh0bWwKLXN2Zy9XM0MtU1ZHLTEuMS1TRS9zdHJ1Y3QtZG9t
LTExLWYuc3ZnIFsgQ3Jhc2ggXQotc3ZnL1czQy1TVkctMS4xL2Nvb3Jkcy11bml0cy0wMS1iLnN2
ZyBbIENyYXNoIF0KLXN2Zy9XM0MtU1ZHLTEuMS9wc2VydmVycy1ncmFkLTA0LWIuc3ZnIFsgQ3Jh
c2ggXQotc3ZnL1czQy1TVkctMS4xL3BzZXJ2ZXJzLWdyYWQtMDctYi5zdmcgWyBDcmFzaCBdCi1z
dmcvVzNDLVNWRy0xLjEvcmVuZGVyLWVsZW1zLTAxLXQuc3ZnIFsgQ3Jhc2ggXQogc3lzdGVtLXBy
ZXZpZXcvYmFkZ2UuaHRtbAogd2ViYW5pbWF0aW9ucy9vcGFjaXR5LWFuaW1hdGlvbi5odG1sCiB3
ZWJnbC8xLjAuMy9jb25mb3JtYW5jZS9jb250ZXh0L3ByZW11bHRpcGx5YWxwaGEtdGVzdC5odG1s
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>449788</attachid>
            <date>2022-01-24 01:36:50 -0800</date>
            <delta_ts>2022-01-24 01:57:26 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-232411-20220124013649.patch</filename>
            <type>text/plain</type>
            <size>35422</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg4NDI5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTdmZDk3MzFiZTZmYjVl
ZWJiYWZhNDY5ZDAyNjE1YWU0NGNmZTRkOC4uMDE3MThlMGM0MTBlNGEzNGRlYWVkZjU3NzYwMjk0
NmVmNDdjZWVmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDIyLTAxLTI0ICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vzc10g
UGF0dGVybiBzaG91bGQgaG9sZCBTb3VyY2VJbWFnZSB3aGljaCBjYW4gYmUgY29udmVydGVkIHRv
IGEgTmF0aXZlSW1hZ2Ugb25seSB3aGVuIG5lZWRlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMyNDExCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS84
NDk5ODczOD4KKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICBN
YWtlIFBhdHRlcm4gaG9sZCBhIFNvdXJjZUltYWdlIGFuZCBwcm92aWRlIGdldHRlcnMgdG8gcmV0
cmlldmUgZWl0aGVyIGEKKyAgICAgICAgTmF0aXZlSW1hZ2Ugb3IgYW4gSW1hZ2VCdWZmZXIuIElu
IHRoZXNlIGdldHRlcnMgdGhlIFNvdXJjZUltYWdlIHdpbGwgCisgICAgICAgIGNvbnZlcnQgaXRz
IEltYWdlVmFyaWFudCBmcm9tIGFuIGltYWdlIHNvdXJjZSB0byB0aGUgb3RoZXIgaWYgbmVlZGVk
LgorCisgICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFzUGF0dGVybi5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDYW52YXNQYXR0ZXJuOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFz
UGF0dGVybjo6Q2FudmFzUGF0dGVybik6CisgICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFzUGF0
dGVybi5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJh
c2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6
Y3JlYXRlUGF0dGVybik6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhcy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDYW52YXM6OmJ1aWxkQXJyYXlGb3JDYW52YXNQ
YXR0ZXJuKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9QYXR0ZXJuLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlBhdHRlcm46OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpQYXR0ZXJu
OjpQYXR0ZXJuKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9QYXR0ZXJuLmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U291cmNlSW1hZ2U6OnNpemUgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L1NvdXJjZUltYWdlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGF0dGVy
bkNhaXJvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhdHRlcm46OmNyZWF0ZVBsYXRmb3JtUGF0
dGVybiBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGF0dGVybkNHLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlBhdHRlcm46OmNyZWF0ZVBsYXRmb3JtUGF0dGVybiBjb25z
dCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
SXRlbXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlNldFN0YXRlOjphcHBs
eSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
SXRlbXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpTZXRTdGF0ZTo6ZW5jb2Rl
IGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3RSZXBsYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6YXBwbHlT
ZXRTdGF0ZUl0ZW0pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc29mdHdh
cmUvRkVUaWxlU29mdHdhcmVBcHBsaWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFVGlsZVNv
ZnR3YXJlQXBwbGllcjo6YXBwbHkgY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJM
YXllckJhY2tpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cGF0dGVybkZvckRlc2NyaXB0aW9u
KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlUGF0dGVybi5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm46OmJ1aWxkUGF0dGVy
bik6CisKIDIwMjItMDEtMjMgIE1hdHQgV29vZHJvdyAgPG1hdHR3b29kcm93QGFwcGxlLmNvbT4K
IAogICAgICAgICBQb3NpdGlvbjpmaXhlZCBsYXllcnMgc2hvdWxkbid0IGFsbG9jYXRlIGEgYmFj
a2luZyBidWZmZXIgaWYgYWxsIGNoaWxkcmVuIGFyZSBvZmZzY3JlZW4uCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDUw
YTUyZDQ2ZDg3NGI2YzMyODhhZjRmM2IyNDRlZGZiZTliMTE0YmIuLjk4MDdlYjQ4ZWQwMDllNmFh
ZDAyY2YyYmRlZWY4MDVhMWRhZWY3YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMjIt
MDEtMjQgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2FpZEBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQ
VSBQcm9jZXNzXSBQYXR0ZXJuIHNob3VsZCBob2xkIFNvdXJjZUltYWdlIHdoaWNoIGNhbiBiZSBj
b252ZXJ0ZWQgdG8gYSBOYXRpdmVJbWFnZSBvbmx5IHdoZW4gbmVlZGVkCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzI0MTEKKyAgICAgICAgPHJkYXI6
Ly9wcm9ibGVtLzg0OTk4NzM4PgorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgor
CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVy
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlcjo6c2V0U3Rh
dGVXaXRoUXVhbGlmaWVkSWRlbnRpZmllcnMpOgorICAgICAgICBCdWlsZCBhbiBzdGQ6Om9wdGlv
bmFsPFNvdXJjZUltYWdlPiBmcm9tIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBvZgorICAg
ICAgICB0aGUgcGF0dGVybiByZXNvdXJjZSBpZGVudGlmaWVyLiBQYXNzIHRoaXMgU291cmNlSW1h
Z2UgdG8gaGFuZGxlSXRlbSgpLgorCiAyMDIyLTAxLTIyICBCZW4gTmhhbSAgPG5oYW1AYXBwbGUu
Y29tPgogCiAgICAgICAgIEFkZCBQdXNoU3Vic2NyaXB0aW9uSWRlbnRpZmllcgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUGF0dGVybi5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNQYXR0ZXJuLmNwcAppbmRleCA4ZjE5MzgyY2IyMDNk
MmU0MTFiY2E5NTdhNjkxYjFmYWM5OGEyY2ExLi42MGNlM2RlYTYxZTI0ZmE3YmQ0OWUyOGYxN2U3
ZTQ0OGNkYjIwODJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52
YXNQYXR0ZXJuLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNQYXR0
ZXJuLmNwcApAQCAtMzQsMTIgKzM0LDEyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVm
PENhbnZhc1BhdHRlcm4+IENhbnZhc1BhdHRlcm46OmNyZWF0ZShSZWY8TmF0aXZlSW1hZ2U+JiYg
aW1hZ2UsIGJvb2wgcmVwZWF0WCwgYm9vbCByZXBlYXRZLCBib29sIG9yaWdpbkNsZWFuKQorUmVm
PENhbnZhc1BhdHRlcm4+IENhbnZhc1BhdHRlcm46OmNyZWF0ZShTb3VyY2VJbWFnZSYmIGltYWdl
LCBib29sIHJlcGVhdFgsIGJvb2wgcmVwZWF0WSwgYm9vbCBvcmlnaW5DbGVhbikKIHsKICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBDYW52YXNQYXR0ZXJuKFdURk1vdmUoaW1hZ2UpLCByZXBlYXRY
LCByZXBlYXRZLCBvcmlnaW5DbGVhbikpOwogfQogCi1DYW52YXNQYXR0ZXJuOjpDYW52YXNQYXR0
ZXJuKFJlZjxOYXRpdmVJbWFnZT4mJiBpbWFnZSwgYm9vbCByZXBlYXRYLCBib29sIHJlcGVhdFks
IGJvb2wgb3JpZ2luQ2xlYW4pCitDYW52YXNQYXR0ZXJuOjpDYW52YXNQYXR0ZXJuKFNvdXJjZUlt
YWdlJiYgaW1hZ2UsIGJvb2wgcmVwZWF0WCwgYm9vbCByZXBlYXRZLCBib29sIG9yaWdpbkNsZWFu
KQogICAgIDogbV9wYXR0ZXJuKFBhdHRlcm46OmNyZWF0ZShXVEZNb3ZlKGltYWdlKSwgeyByZXBl
YXRYLCByZXBlYXRZIH0pKQogICAgICwgbV9vcmlnaW5DbGVhbihvcmlnaW5DbGVhbikKIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1BhdHRlcm4uaCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1BhdHRlcm4uaAppbmRleCBlNDZkMjFiYzUx
MzVkOWE3NGY0NTc1YzlkZDY1ZTljZWNkY2I4ZDJhLi44NzFlMDQ1NzdjYzUxZTU5ODA1N2JlY2Uy
YWJkNzVmNjZhYzk5YzYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9D
YW52YXNQYXR0ZXJuLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUGF0
dGVybi5oCkBAIC0zMiwxMyArMzIsMTMgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFz
cyBOYXRpdmVJbWFnZTsKIGNsYXNzIFBhdHRlcm47CitjbGFzcyBTb3VyY2VJbWFnZTsKIHN0cnVj
dCBET01NYXRyaXgyREluaXQ7CiAKIGNsYXNzIENhbnZhc1BhdHRlcm4gOiBwdWJsaWMgUmVmQ291
bnRlZDxDYW52YXNQYXR0ZXJuPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxDYW52YXNQYXR0
ZXJuPiBjcmVhdGUoUmVmPE5hdGl2ZUltYWdlPiYmLCBib29sIHJlcGVhdFgsIGJvb2wgcmVwZWF0
WSwgYm9vbCBvcmlnaW5DbGVhbik7CisgICAgc3RhdGljIFJlZjxDYW52YXNQYXR0ZXJuPiBjcmVh
dGUoU291cmNlSW1hZ2UmJiwgYm9vbCByZXBlYXRYLCBib29sIHJlcGVhdFksIGJvb2wgb3JpZ2lu
Q2xlYW4pOwogICAgIH5DYW52YXNQYXR0ZXJuKCk7CiAKICAgICBzdGF0aWMgYm9vbCBwYXJzZVJl
cGV0aXRpb25UeXBlKGNvbnN0IFN0cmluZyYsIGJvb2wmIHJlcGVhdFgsIGJvb2wmIHJlcGVhdFkp
OwpAQCAtNTEsNyArNTEsNyBAQCBwdWJsaWM6CiAgICAgRXhjZXB0aW9uT3I8dm9pZD4gc2V0VHJh
bnNmb3JtKERPTU1hdHJpeDJESW5pdCYmKTsKIAogcHJpdmF0ZToKLSAgICBDYW52YXNQYXR0ZXJu
KFJlZjxOYXRpdmVJbWFnZT4mJiwgYm9vbCByZXBlYXRYLCBib29sIHJlcGVhdFksIGJvb2wgb3Jp
Z2luQ2xlYW4pOworICAgIENhbnZhc1BhdHRlcm4oU291cmNlSW1hZ2UmJiwgYm9vbCByZXBlYXRY
LCBib29sIHJlcGVhdFksIGJvb2wgb3JpZ2luQ2xlYW4pOwogCiAgICAgUmVmPFBhdHRlcm4+IG1f
cGF0dGVybjsKICAgICBib29sIG1fb3JpZ2luQ2xlYW47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuY3BwCmlu
ZGV4IDU3N2Q1NWU3ZjA0MmE3ODQ4MjIwZTM4YWMzMmQzMDY5ODM2YTM4OWQuLjE0YTQzMDcwNDA4
ZDY0ZWQwNDA1MGQ1ZWNlN2JkMjZjZGI3OTM0MmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuY3BwCkBA
IC0xOTUzLDcgKzE5NTMsNyBAQCBFeGNlcHRpb25PcjxSZWZQdHI8Q2FudmFzUGF0dGVybj4+IENh
bnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmNyZWF0ZVBhdHRlcm4oSAogICAgIGlmICghbmF0
aXZlSW1hZ2UpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciB9
OwogCi0gICAgcmV0dXJuIFJlZlB0cjxDYW52YXNQYXR0ZXJuPiB7IENhbnZhc1BhdHRlcm46OmNy
ZWF0ZShuYXRpdmVJbWFnZS5yZWxlYXNlTm9uTnVsbCgpLCByZXBlYXRYLCByZXBlYXRZLCBvcmln
aW5DbGVhbikgfTsKKyAgICByZXR1cm4gQ2FudmFzUGF0dGVybjo6Y3JlYXRlKHsgbmF0aXZlSW1h
Z2UucmVsZWFzZU5vbk51bGwoKSB9LCByZXBlYXRYLCByZXBlYXRZLCBvcmlnaW5DbGVhbik7CiB9
CiAKIEV4Y2VwdGlvbk9yPFJlZlB0cjxDYW52YXNQYXR0ZXJuPj4gQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJEQmFzZTo6Y3JlYXRlUGF0dGVybihDYW52YXNCYXNlJiBjYW52YXMsIGJvb2wgcmVwZWF0
WCwgYm9vbCByZXBlYXRZKQpAQCAtMTk2OSw3ICsxOTY5LDcgQEAgRXhjZXB0aW9uT3I8UmVmUHRy
PENhbnZhc1BhdHRlcm4+PiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpjcmVhdGVQYXR0
ZXJuKEMKICAgICBpZiAoIW5hdGl2ZUltYWdlKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsg
SW52YWxpZFN0YXRlRXJyb3IgfTsKIAotICAgIHJldHVybiBSZWZQdHI8Q2FudmFzUGF0dGVybj4g
eyBDYW52YXNQYXR0ZXJuOjpjcmVhdGUobmF0aXZlSW1hZ2UucmVsZWFzZU5vbk51bGwoKSwgcmVw
ZWF0WCwgcmVwZWF0WSwgY2FudmFzLm9yaWdpbkNsZWFuKCkpIH07CisgICAgcmV0dXJuIENhbnZh
c1BhdHRlcm46OmNyZWF0ZSh7IG5hdGl2ZUltYWdlLnJlbGVhc2VOb25OdWxsKCkgfSwgcmVwZWF0
WCwgcmVwZWF0WSwgY2FudmFzLm9yaWdpbkNsZWFuKCkpOwogfQogICAgIAogI2lmIEVOQUJMRShW
SURFTykKQEAgLTE5ODQsNyArMTk4NCw3IEBAIEV4Y2VwdGlvbk9yPFJlZlB0cjxDYW52YXNQYXR0
ZXJuPj4gQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6Y3JlYXRlUGF0dGVybihICiAKICNp
ZiBVU0UoQ0cpCiAgICAgaWYgKGF1dG8gbmF0aXZlSW1hZ2UgPSB2aWRlb0VsZW1lbnQubmF0aXZl
SW1hZ2VGb3JDdXJyZW50VGltZSgpKQotICAgICAgICByZXR1cm4gUmVmUHRyPENhbnZhc1BhdHRl
cm4+IHsgQ2FudmFzUGF0dGVybjo6Y3JlYXRlKG5hdGl2ZUltYWdlLnJlbGVhc2VOb25OdWxsKCks
IHJlcGVhdFgsIHJlcGVhdFksIG9yaWdpbkNsZWFuKSB9OworICAgICAgICByZXR1cm4gQ2FudmFz
UGF0dGVybjo6Y3JlYXRlKHsgbmF0aXZlSW1hZ2UucmVsZWFzZU5vbk51bGwoKSB9LCByZXBlYXRY
LCByZXBlYXRZLCBvcmlnaW5DbGVhbik7CiAjZW5kaWYKIAogICAgIGF1dG8gcmVuZGVyaW5nTW9k
ZSA9IGRyYXdpbmdDb250ZXh0KCkgPyBkcmF3aW5nQ29udGV4dCgpLT5yZW5kZXJpbmdNb2RlKCkg
OiBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkOwpAQCAtMTk5NCw3ICsxOTk0LDcgQEAgRXhj
ZXB0aW9uT3I8UmVmUHRyPENhbnZhc1BhdHRlcm4+PiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRC
YXNlOjpjcmVhdGVQYXR0ZXJuKEgKIAogICAgIHZpZGVvRWxlbWVudC5wYWludEN1cnJlbnRGcmFt
ZUluQ29udGV4dChpbWFnZUJ1ZmZlci0+Y29udGV4dCgpLCBGbG9hdFJlY3QoRmxvYXRQb2ludCgp
LCBzaXplKHZpZGVvRWxlbWVudCkpKTsKICAgICAKLSAgICByZXR1cm4gUmVmUHRyPENhbnZhc1Bh
dHRlcm4+IHsgQ2FudmFzUGF0dGVybjo6Y3JlYXRlKEltYWdlQnVmZmVyOjpzaW5rSW50b05hdGl2
ZUltYWdlKFdURk1vdmUoaW1hZ2VCdWZmZXIpKS5yZWxlYXNlTm9uTnVsbCgpLCByZXBlYXRYLCBy
ZXBlYXRZLCBvcmlnaW5DbGVhbikgfTsKKyAgICByZXR1cm4gQ2FudmFzUGF0dGVybjo6Y3JlYXRl
KHsgaW1hZ2VCdWZmZXIucmVsZWFzZU5vbk51bGwoKSB9LCByZXBlYXRYLCByZXBlYXRZLCBvcmln
aW5DbGVhbik7CiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckNhbnZhcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yQ2FudmFzLmNwcAppbmRleCBlODQ3ZmU2ODExMjczMjUwNmIxZDA4NDZmNjMzZGFjNGI5Njlk
MTY1Li4wMzE5Y2MzN2RmMjVmMmM2NmY5NmMyNTk2MTIxMTVjODkzODNjNzdlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzLmNwcApAQCAtMTMzNiwxMCArMTMz
Niw3IEBAIFJlZjxKU09OOjpBcnJheU9mPEpTT046OlZhbHVlPj4gSW5zcGVjdG9yQ2FudmFzOjpi
dWlsZEFycmF5Rm9yQ2FudmFzR3JhZGllbnQoY29uCiAKIFJlZjxKU09OOjpBcnJheU9mPEpTT046
OlZhbHVlPj4gSW5zcGVjdG9yQ2FudmFzOjpidWlsZEFycmF5Rm9yQ2FudmFzUGF0dGVybihjb25z
dCBDYW52YXNQYXR0ZXJuJiBjYW52YXNQYXR0ZXJuKQogewotICAgIGF1dG8mIHRpbGVJbWFnZSA9
IGNhbnZhc1BhdHRlcm4ucGF0dGVybigpLnRpbGVJbWFnZSgpOwotICAgIEZsb2F0UmVjdCByZWN0
ID0geyB7IH0sIHRpbGVJbWFnZS5zaXplKCkgfTsKLSAgICBhdXRvIGltYWdlQnVmZmVyID0gSW1h
Z2VCdWZmZXI6OmNyZWF0ZSh0aWxlSW1hZ2Uuc2l6ZSgpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2Vs
ZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJH
UkE4KTsKLSAgICBpbWFnZUJ1ZmZlci0+Y29udGV4dCgpLmRyYXdOYXRpdmVJbWFnZSh0aWxlSW1h
Z2UsIHRpbGVJbWFnZS5zaXplKCksIHJlY3QsIHJlY3QpOworICAgIGF1dG8gaW1hZ2VCdWZmZXIg
PSBjYW52YXNQYXR0ZXJuLnBhdHRlcm4oKS50aWxlSW1hZ2VCdWZmZXIoKTsKIAogICAgIFN0cmlu
ZyByZXBlYXQ7CiAgICAgYm9vbCByZXBlYXRYID0gY2FudmFzUGF0dGVybi5wYXR0ZXJuKCkucmVw
ZWF0WCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0
dGVybi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXR0ZXJuLmNwcApp
bmRleCA2MzUzMjM3NjlmODAzM2RlMzI4ZThkNDRlNTc5NzVhMWQzY2Q2MDY1Li5kYTRjMGYxNWNh
MTQwMTExYmJhZTEyZDI1ODlhM2Q4NGRiYTYwMDZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXR0ZXJuLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9QYXR0ZXJuLmNwcApAQCAtMzEsMTIgKzMxLDEyIEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotUmVmPFBhdHRlcm4+IFBhdHRlcm46OmNyZWF0ZShSZWY8TmF0aXZlSW1h
Z2U+JiYgdGlsZUltYWdlLCBjb25zdCBQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQorUmVmPFBhdHRl
cm4+IFBhdHRlcm46OmNyZWF0ZShTb3VyY2VJbWFnZSYmIHRpbGVJbWFnZSwgY29uc3QgUGFyYW1l
dGVycyYgcGFyYW1ldGVycykKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBQYXR0ZXJuKFdU
Rk1vdmUodGlsZUltYWdlKSwgcGFyYW1ldGVycykpOwogfQogCi1QYXR0ZXJuOjpQYXR0ZXJuKFJl
ZjxOYXRpdmVJbWFnZT4mJiBpbWFnZSwgY29uc3QgUGFyYW1ldGVycyYgcGFyYW1ldGVycykKK1Bh
dHRlcm46OlBhdHRlcm4oU291cmNlSW1hZ2UmJiBpbWFnZSwgY29uc3QgUGFyYW1ldGVycyYgcGFy
YW1ldGVycykKICAgICA6IG1fdGlsZUltYWdlKFdURk1vdmUoaW1hZ2UpKQogICAgICwgbV9wYXJh
bWV0ZXJzKHBhcmFtZXRlcnMpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9QYXR0ZXJuLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Q
YXR0ZXJuLmgKaW5kZXggNzIxNGU4MjUwNzFiNTQ0N2U3YmNiZjIwMzAzZDkyZjYyYzI1MjdhZi4u
NWEyMzdhMmU2MGE1MTdkZmMzMTlhMjc0OTI1YmI1MWIyZTkyM2UxMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0dGVybi5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BhdHRlcm4uaApAQCAtMjgsNyArMjgsNyBAQAogI3ByYWdt
YSBvbmNlCiAKICNpbmNsdWRlICJBZmZpbmVUcmFuc2Zvcm0uaCIKLSNpbmNsdWRlICJJbWFnZS5o
IgorI2luY2x1ZGUgIlNvdXJjZUltYWdlLmgiCiAKICNpbmNsdWRlIDx3dGYvUmVmLmg+CiAjaW5j
bHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KQEAgLTQ1LDcgKzQ1LDYgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBjbGFzcyBBZmZpbmVUcmFuc2Zvcm07CiBjbGFzcyBHcmFwaGljc0NvbnRleHQ7Ci1j
bGFzcyBJbWFnZTsKIAogY2xhc3MgUGF0dGVybiBmaW5hbCA6IHB1YmxpYyBSZWZDb3VudGVkPFBh
dHRlcm4+IHsKIHB1YmxpYzoKQEAgLTYzLDEwICs2MiwxMiBAQCBwdWJsaWM6CiAgICAgICAgIGJv
b2wgcmVwZWF0WTsKICAgICB9OwogCi0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxQYXR0
ZXJuPiBjcmVhdGUoUmVmPE5hdGl2ZUltYWdlPiYmIHRpbGVJbWFnZSwgY29uc3QgUGFyYW1ldGVy
cyYgPSB7IH0pOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8UGF0dGVybj4gY3JlYXRl
KFNvdXJjZUltYWdlJiYgdGlsZUltYWdlLCBjb25zdCBQYXJhbWV0ZXJzJiA9IHsgfSk7CiAgICAg
V0VCQ09SRV9FWFBPUlQgflBhdHRlcm4oKTsKIAotICAgIE5hdGl2ZUltYWdlJiB0aWxlSW1hZ2Uo
KSBjb25zdCB7IHJldHVybiBtX3RpbGVJbWFnZS5nZXQoKTsgfQorICAgIGNvbnN0IFNvdXJjZUlt
YWdlJiB0aWxlSW1hZ2UoKSBjb25zdCB7IHJldHVybiBtX3RpbGVJbWFnZTsgfQorICAgIE5hdGl2
ZUltYWdlKiB0aWxlTmF0aXZlSW1hZ2UoKSBjb25zdCB7IHJldHVybiBtX3RpbGVJbWFnZS5uYXRp
dmVJbWFnZSgpOyB9CisgICAgSW1hZ2VCdWZmZXIqIHRpbGVJbWFnZUJ1ZmZlcigpIGNvbnN0IHsg
cmV0dXJuIG1fdGlsZUltYWdlLmltYWdlQnVmZmVyKCk7IH0KICAgICBjb25zdCBQYXJhbWV0ZXJz
JiBwYXJhbWV0ZXJzKCkgY29uc3QgeyByZXR1cm4gbV9wYXJhbWV0ZXJzOyB9CiAKICAgICAvLyBQ
YXR0ZXJuIHNwYWNlIGlzIGFuIGFic3RyYWN0IHNwYWNlIHRoYXQgbWFwcyB0byB0aGUgZGVmYXVs
dCB1c2VyIHNwYWNlIGJ5IHRoZSB0cmFuc2Zvcm1hdGlvbiAndXNlclNwYWNlVHJhbnNmb3JtJwpA
QCAtNzgsOSArNzksOSBAQCBwdWJsaWM6CiAgICAgYm9vbCByZXBlYXRZKCkgY29uc3QgeyByZXR1
cm4gbV9wYXJhbWV0ZXJzLnJlcGVhdFk7IH0KIAogcHJpdmF0ZToKLSAgICBQYXR0ZXJuKFJlZjxO
YXRpdmVJbWFnZT4mJiwgY29uc3QgUGFyYW1ldGVycyYpOworICAgIFBhdHRlcm4oU291cmNlSW1h
Z2UmJiwgY29uc3QgUGFyYW1ldGVycyYpOwogCi0gICAgUmVmPE5hdGl2ZUltYWdlPiBtX3RpbGVJ
bWFnZTsKKyAgICBtdXRhYmxlIFNvdXJjZUltYWdlIG1fdGlsZUltYWdlOwogICAgIFBhcmFtZXRl
cnMgbV9wYXJhbWV0ZXJzOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvU291cmNlSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvU291cmNlSW1hZ2UuY3BwCmluZGV4IDljYzNiMmM4NjQxMjJkYTE3ZWNjMDkwMGU5NmY4
NzdmNDU2NmJkNWMuLjZlZjM2NjM3ZDYzMzJmMzU0MmVlOGMwYzFmMTgyMmY5MWVjYTExZjIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NvdXJjZUltYWdlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Tb3VyY2VJbWFnZS5jcHAK
QEAgLTk2LDQgKzk2LDIwIEBAIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBTb3VyY2VJbWFn
ZTo6aW1hZ2VJZGVudGlmaWVyKCkgY29uc3QKICAgICApOwogfQogCitJbnRTaXplIFNvdXJjZUlt
YWdlOjpzaXplKCkgY29uc3QKK3sKKyAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihtX2ltYWdlVmFy
aWFudCwKKyAgICAgICAgWyZdIChjb25zdCBSZWY8TmF0aXZlSW1hZ2U+JiBuYXRpdmVJbWFnZSkg
eworICAgICAgICAgICAgcmV0dXJuIG5hdGl2ZUltYWdlLT5zaXplKCk7CisgICAgICAgIH0sCisg
ICAgICAgIFsmXSAoY29uc3QgUmVmPEltYWdlQnVmZmVyPiYgaW1hZ2VCdWZmZXIpIHsKKyAgICAg
ICAgICAgIHJldHVybiBpbWFnZUJ1ZmZlci0+YmFja2VuZFNpemUoKTsKKyAgICAgICAgfSwKKyAg
ICAgICAgWyZdIChSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpIHsKKyAgICAgICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgcmV0dXJuIEludFNpemUoKTsKKyAgICAg
ICAgfQorICAgICk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NvdXJjZUltYWdlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Tb3VyY2VJbWFnZS5oCmluZGV4IDIwZDNkODBkNDM2MTU4
NGQ4ZjRmNGVjY2U4MzBjNTQ5YTljYzgyOTAuLjA0M2NjNTVlZDQ0ZWFjODFmMGU5NGI5YzIyNWM1
NzNmMTgwNTc0N2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L1NvdXJjZUltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU291
cmNlSW1hZ2UuaApAQCAtNDgsNiArNDgsNyBAQCBwdWJsaWM6CiAgICAgSW1hZ2VCdWZmZXIqIGlt
YWdlQnVmZmVyKCk7CiAKICAgICBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgaW1hZ2VJZGVu
dGlmaWVyKCkgY29uc3Q7CisgICAgSW50U2l6ZSBzaXplKCkgY29uc3Q7CiAKICAgICB0ZW1wbGF0
ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CiAgICAgdGVtcGxh
dGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8U291cmNlSW1hZ2U+IGRlY29k
ZShEZWNvZGVyJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9QYXR0ZXJuQ2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Fpcm8vUGF0dGVybkNhaXJvLmNwcAppbmRleCA2OGRhYmFmOThhY2E5ZDFjZmI3MWUxNjUy
MmI5ZGViMjU4MDdmZjFmLi5hM2ZjZDY4ZmY4YjdjZDk2ZDQ0ZTJmNTdhOTRhMzllOTM3MWFjMTlh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QYXR0
ZXJuQ2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJv
L1BhdHRlcm5DYWlyby5jcHAKQEAgLTM1LDcgKzM1LDExIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogY2Fpcm9fcGF0dGVybl90KiBQYXR0ZXJuOjpjcmVhdGVQbGF0Zm9ybVBhdHRlcm4oY29uc3Qg
QWZmaW5lVHJhbnNmb3JtJikgY29uc3QKIHsKLSAgICBhdXRvIHBsYXRmb3JtSW1hZ2UgPSB0aWxl
SW1hZ2UoKS5wbGF0Zm9ybUltYWdlKCk7CisgICAgYXV0byBuYXRpdmVJbWFnZSA9IHRpbGVOYXRp
dmVJbWFnZSgpOworICAgIGlmICghbmF0aXZlSW1hZ2UpCisgICAgICAgIHJldHVybiBudWxscHRy
OworCisgICAgYXV0byBwbGF0Zm9ybUltYWdlID0gbmF0aXZlSW1hZ2UtPnBsYXRmb3JtSW1hZ2Uo
KTsKICAgICBpZiAoIXBsYXRmb3JtSW1hZ2UpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QYXR0ZXJuQ0cu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGF0dGVybkNHLmNwcApp
bmRleCAwNWEzOTE2NTQwYmI3NmRhM2YwYWJhYTMzOTRmYzhkZDA4OGM4ZGE5Li5mNjVhNzc2MGM2
NTk5MWIyNzFmMmQzZjJiYzI1MjgxNjE1ZDE3NGQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QYXR0ZXJuQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BhdHRlcm5DRy5jcHAKQEAgLTU1LDE2ICs1NSwyMCBAQCBz
dGF0aWMgdm9pZCBwYXR0ZXJuUmVsZWFzZUNhbGxiYWNrKHZvaWQqIGluZm8pCiAKIFJldGFpblB0
cjxDR1BhdHRlcm5SZWY+IFBhdHRlcm46OmNyZWF0ZVBsYXRmb3JtUGF0dGVybihjb25zdCBBZmZp
bmVUcmFuc2Zvcm0mIHVzZXJTcGFjZVRyYW5zZm9ybSkgY29uc3QKIHsKLSAgICBGbG9hdFJlY3Qg
dGlsZVJlY3QgPSB7IHsgfSwgdGlsZUltYWdlKCkuc2l6ZSgpIH07Ci0KLSAgICBBZmZpbmVUcmFu
c2Zvcm0gcGF0dGVyblRyYW5zZm9ybSA9IHVzZXJTcGFjZVRyYW5zZm9ybSAqIHBhdHRlcm5TcGFj
ZVRyYW5zZm9ybSgpOwotICAgIHBhdHRlcm5UcmFuc2Zvcm0uc2NhbGVOb25Vbmlmb3JtKDEsIC0x
KTsKLSAgICBwYXR0ZXJuVHJhbnNmb3JtLnRyYW5zbGF0ZSgwLCAtdGlsZVJlY3QuaGVpZ2h0KCkp
OworICAgIGF1dG8gbmF0aXZlSW1hZ2UgPSB0aWxlTmF0aXZlSW1hZ2UoKTsKKyAgICBpZiAoIW5h
dGl2ZUltYWdlKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIFBsYXRmb3JtSW1hZ2VQ
dHIgcGxhdGZvcm1JbWFnZSA9IHRpbGVJbWFnZSgpLnBsYXRmb3JtSW1hZ2UoKTsKKyAgICBhdXRv
IHBsYXRmb3JtSW1hZ2UgPSBuYXRpdmVJbWFnZS0+cGxhdGZvcm1JbWFnZSgpOwogICAgIGlmICgh
cGxhdGZvcm1JbWFnZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKKyAgICBGbG9hdFJlY3Qg
dGlsZVJlY3QgPSB7IHsgfSwgbmF0aXZlSW1hZ2UtPnNpemUoKSB9OworCisgICAgYXV0byBwYXR0
ZXJuVHJhbnNmb3JtID0gdXNlclNwYWNlVHJhbnNmb3JtICogcGF0dGVyblNwYWNlVHJhbnNmb3Jt
KCk7CisgICAgcGF0dGVyblRyYW5zZm9ybS5zY2FsZU5vblVuaWZvcm0oMSwgLTEpOworICAgIHBh
dHRlcm5UcmFuc2Zvcm0udHJhbnNsYXRlKDAsIC10aWxlUmVjdC5oZWlnaHQoKSk7CisKICAgICAv
LyBJZiB3ZSdyZSByZXBlYXRpbmcgaW4gYm90aCBkaXJlY3Rpb25zLCB3ZSBjYW4gdXNlIGltYWdl
LWJhY2tlZCBwYXR0ZXJucwogICAgIC8vIGluc3RlYWQgb2YgY3VzdG9tIHBhdHRlcm5zLCBhbmQg
YXZvaWQgdGlsaW5nLWVkZ2UgcGl4ZWwgY3JhY2tzLgogICAgIGlmIChyZXBlYXRYKCkgJiYgcmVw
ZWF0WSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlz
cGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwCmluZGV4IDMxYWM4YjRh
ZDdkYmY3MmRhMzY0YTA1NTc3NmY2YjI5NzlhNDY5ZDcuLjBkYmQ0OWU1MmUzOTM4NTRmNjIwZTNi
NzAxM2RjMGQxYzRkZWMxNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHAK
QEAgLTE2MCwxMiArMTYwLDEyIEBAIFNldFN0YXRlOjpTZXRTdGF0ZShjb25zdCBHcmFwaGljc0Nv
bnRleHRTdGF0ZUNoYW5nZSYgc3RhdGVDaGFuZ2UsIGNvbnN0IFBhdHRlcm5ECiB7CiB9CiAKLXZv
aWQgU2V0U3RhdGU6OmFwcGx5KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgTmF0aXZlSW1hZ2Uq
IHN0cm9rZVBhdHRlcm5JbWFnZSwgTmF0aXZlSW1hZ2UqIGZpbGxQYXR0ZXJuSW1hZ2UpCit2b2lk
IFNldFN0YXRlOjphcHBseShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIHN0ZDo6b3B0aW9uYWw8
U291cmNlSW1hZ2U+JiYgc3Ryb2tlUGF0dGVybkltYWdlLCBzdGQ6Om9wdGlvbmFsPFNvdXJjZUlt
YWdlPiYmIGZpbGxQYXR0ZXJuSW1hZ2UpCiB7CiAgICAgaWYgKG1fc3RhdGVDaGFuZ2UubV9jaGFu
Z2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlUGF0dGVybkNoYW5n
ZSkgJiYgc3Ryb2tlUGF0dGVybkltYWdlKQotICAgICAgICBtX3N0YXRlQ2hhbmdlLm1fc3RhdGUu
c3Ryb2tlUGF0dGVybiA9IFBhdHRlcm46OmNyZWF0ZSgqc3Ryb2tlUGF0dGVybkltYWdlLCBtX3N0
cm9rZVBhdHRlcm4ucGFyYW1ldGVycyk7CisgICAgICAgIG1fc3RhdGVDaGFuZ2UubV9zdGF0ZS5z
dHJva2VQYXR0ZXJuID0gUGF0dGVybjo6Y3JlYXRlKFdURk1vdmUoKnN0cm9rZVBhdHRlcm5JbWFn
ZSksIG1fc3Ryb2tlUGF0dGVybi5wYXJhbWV0ZXJzKTsKICAgICBpZiAobV9zdGF0ZUNoYW5nZS5t
X2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpGaWxsUGF0dGVybkNo
YW5nZSkgJiYgZmlsbFBhdHRlcm5JbWFnZSkKLSAgICAgICAgbV9zdGF0ZUNoYW5nZS5tX3N0YXRl
LmZpbGxQYXR0ZXJuID0gUGF0dGVybjo6Y3JlYXRlKCpmaWxsUGF0dGVybkltYWdlLCBtX2ZpbGxQ
YXR0ZXJuLnBhcmFtZXRlcnMpOworICAgICAgICBtX3N0YXRlQ2hhbmdlLm1fc3RhdGUuZmlsbFBh
dHRlcm4gPSBQYXR0ZXJuOjpjcmVhdGUoV1RGTW92ZSgqZmlsbFBhdHRlcm5JbWFnZSksIG1fZmls
bFBhdHRlcm4ucGFyYW1ldGVycyk7CiAgICAgbV9zdGF0ZUNoYW5nZS5hcHBseShjb250ZXh0KTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmgKaW5kZXggZWYwYzE4NzdkMTkzOGJk
YzA2MTA1NGI5NDJmYTYyODBiYzQ3ZjIwMy4uZWEyZTc1NjI3NDU3MGI3Y2I3YjE0NTBlNzg5NzRm
NzRiMzZiNzU4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oCkBAIC0yNTcsNyAr
MjU3LDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2Rl
KEVuY29kZXImKSBjb25zdDsKICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3Rk
OjpvcHRpb25hbDxTZXRTdGF0ZT4gZGVjb2RlKERlY29kZXImKTsKIAotICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgYXBwbHkoR3JhcGhpY3NDb250ZXh0JiwgTmF0aXZlSW1hZ2UqIHN0cm9rZVBhdHRl
cm5JbWFnZSwgTmF0aXZlSW1hZ2UqIGZpbGxQYXR0ZXJuSW1hZ2UpOworICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgYXBwbHkoR3JhcGhpY3NDb250ZXh0Jiwgc3RkOjpvcHRpb25hbDxTb3VyY2VJbWFn
ZT4mJiBzdHJva2VQYXR0ZXJuSW1hZ2UsIHN0ZDo6b3B0aW9uYWw8U291cmNlSW1hZ2U+JiYgZmls
bFBhdHRlcm5JbWFnZSk7CiAKIHByaXZhdGU6CiAgICAgc3RydWN0IFBhdHRlcm5EYXRhIHsKQEAg
LTI4Nyw3ICsyODcsNyBAQCB2b2lkIFNldFN0YXRlOjplbmNvZGUoRW5jb2RlciYgZW5jb2Rlcikg
Y29uc3QKIAogICAgIGlmIChjaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0
ZTo6U3Ryb2tlUGF0dGVybkNoYW5nZSkpIHsKICAgICAgICAgQVNTRVJUKHN0YXRlLnN0cm9rZVBh
dHRlcm4pOwotICAgICAgICBlbmNvZGVyIDw8IHN0YXRlLnN0cm9rZVBhdHRlcm4tPnRpbGVJbWFn
ZSgpLnJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcigpOworICAgICAgICBlbmNvZGVyIDw8IHN0
YXRlLnN0cm9rZVBhdHRlcm4tPnRpbGVJbWFnZSgpOwogICAgICAgICBlbmNvZGVyIDw8IHN0YXRl
LnN0cm9rZVBhdHRlcm4tPnBhcmFtZXRlcnMoKTsKICAgICB9CiAKQEAgLTI5OCw3ICsyOTgsNyBA
QCB2b2lkIFNldFN0YXRlOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIAogICAgIGlm
IChjaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6RmlsbFBhdHRlcm5D
aGFuZ2UpKSB7CiAgICAgICAgIEFTU0VSVChzdGF0ZS5maWxsUGF0dGVybik7Ci0gICAgICAgIGVu
Y29kZXIgPDwgc3RhdGUuZmlsbFBhdHRlcm4tPnRpbGVJbWFnZSgpLnJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllcigpOworICAgICAgICBlbmNvZGVyIDw8IHN0YXRlLmZpbGxQYXR0ZXJuLT50aWxl
SW1hZ2UoKTsKICAgICAgICAgZW5jb2RlciA8PCBzdGF0ZS5maWxsUGF0dGVybi0+cGFyYW1ldGVy
cygpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuY3BwCmlu
ZGV4IDIxODY1MGFmNThhNGE3YmNmMmMxNDEwZmYwZWYwMDUwNjgxYjZlZWQuLmFjNmVhOTVmYTdi
MzkyMDM5ZmU0NzM3NTBiYmQ0Mzc3YjY4ZWNlM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3RSZXBsYXllci5jcHAKQEAgLTg1LDMyICs4NSwzNSBAQCBpbmxpbmUgc3RhdGljIHN0ZDo6
b3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPiBhcHBseVNldFN0YXRlSXRlbShH
cmFwaAogewogICAgIGF1dG8mIHNldFN0YXRlSXRlbSA9IGl0ZW0uZ2V0PFNldFN0YXRlPigpOwog
Ci0gICAgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHN0cm9rZVBhdHRlcm5SZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXI7Ci0gICAgTmF0aXZlSW1hZ2UqIHN0cm9rZVBhdHRlcm5JbWFnZSA9
IG51bGxwdHI7Ci0gICAgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIGZpbGxQYXR0ZXJuUmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyOwotICAgIE5hdGl2ZUltYWdlKiBmaWxsUGF0dGVybklt
YWdlID0gbnVsbHB0cjsKLQotICAgIGlmICgoc3Ryb2tlUGF0dGVyblJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllciA9IHNldFN0YXRlSXRlbS5zdHJva2VQYXR0ZXJuSW1hZ2VJZGVudGlmaWVyKCkp
KSB7Ci0gICAgICAgIHN0cm9rZVBhdHRlcm5JbWFnZSA9IHJlc291cmNlSGVhcC5nZXROYXRpdmVJ
bWFnZShzdHJva2VQYXR0ZXJuUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKLSAgICAgICAg
aWYgKCFzdHJva2VQYXR0ZXJuSW1hZ2UpCi0gICAgICAgICAgICByZXR1cm4gc3Ryb2tlUGF0dGVy
blJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcjsKLSAgICB9CisgICAgYXV0byBjYWNoZWRTb3Vy
Y2VJbWFnZSA9IFsmXShhdXRvIGltYWdlSWRlbnRpZmllcikgLT4gc3RkOjpvcHRpb25hbDxTb3Vy
Y2VJbWFnZT4geworICAgICAgICBpZiAoIWltYWdlSWRlbnRpZmllcikKKyAgICAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CisgICAgICAgIGlmIChhdXRvIG5hdGl2ZUltYWdlID0gcmVzb3Vy
Y2VIZWFwLmdldE5hdGl2ZUltYWdlKGltYWdlSWRlbnRpZmllcikpCisgICAgICAgICAgICByZXR1
cm4gU291cmNlSW1hZ2UoKm5hdGl2ZUltYWdlKTsKKyAgICAgICAgaWYgKGF1dG8gaW1hZ2VCdWZm
ZXIgPSByZXNvdXJjZUhlYXAuZ2V0SW1hZ2VCdWZmZXIoaW1hZ2VJZGVudGlmaWVyKSkKKyAgICAg
ICAgICAgIHJldHVybiBTb3VyY2VJbWFnZSgqaW1hZ2VCdWZmZXIpOworICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OworICAgIH07CiAKLSAgICBpZiAoKGZpbGxQYXR0ZXJuUmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyID0gc2V0U3RhdGVJdGVtLmZpbGxQYXR0ZXJuSW1hZ2VJZGVudGlmaWVy
KCkpKSB7Ci0gICAgICAgIGZpbGxQYXR0ZXJuSW1hZ2UgPSByZXNvdXJjZUhlYXAuZ2V0TmF0aXZl
SW1hZ2UoZmlsbFBhdHRlcm5SZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwotICAgICAgICBp
ZiAoIWZpbGxQYXR0ZXJuSW1hZ2UpCi0gICAgICAgICAgICByZXR1cm4gZmlsbFBhdHRlcm5SZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI7Ci0gICAgfQorICAgIGF1dG8gc3Ryb2tlUGF0dGVybklt
YWdlSWRlbnRpZmllciA9IHNldFN0YXRlSXRlbS5zdHJva2VQYXR0ZXJuSW1hZ2VJZGVudGlmaWVy
KCk7CisgICAgYXV0byBzdHJva2VQYXR0ZXJuSW1hZ2UgPSBjYWNoZWRTb3VyY2VJbWFnZShzdHJv
a2VQYXR0ZXJuSW1hZ2VJZGVudGlmaWVyKTsKKyAgICBpZiAoIXN0cm9rZVBhdHRlcm5JbWFnZSAm
JiBzdHJva2VQYXR0ZXJuSW1hZ2VJZGVudGlmaWVyKQorICAgICAgICByZXR1cm4gc3Ryb2tlUGF0
dGVybkltYWdlSWRlbnRpZmllcjsKKworICAgIGF1dG8gZmlsbFBhdHRlcm5JbWFnZUlkZW50aWZp
ZXIgPSBzZXRTdGF0ZUl0ZW0uZmlsbFBhdHRlcm5JbWFnZUlkZW50aWZpZXIoKTsKKyAgICBhdXRv
IGZpbGxQYXR0ZXJuSW1hZ2UgPSBjYWNoZWRTb3VyY2VJbWFnZShmaWxsUGF0dGVybkltYWdlSWRl
bnRpZmllcik7CisgICAgaWYgKCFmaWxsUGF0dGVybkltYWdlICYmIGZpbGxQYXR0ZXJuSW1hZ2VJ
ZGVudGlmaWVyKQorICAgICAgICByZXR1cm4gZmlsbFBhdHRlcm5JbWFnZUlkZW50aWZpZXI7CiAK
LSAgICBzZXRTdGF0ZUl0ZW0uYXBwbHkoY29udGV4dCwgc3Ryb2tlUGF0dGVybkltYWdlLCBmaWxs
UGF0dGVybkltYWdlKTsKKyAgICBzZXRTdGF0ZUl0ZW0uYXBwbHkoY29udGV4dCwgV1RGTW92ZShz
dHJva2VQYXR0ZXJuSW1hZ2UpLCBXVEZNb3ZlKGZpbGxQYXR0ZXJuSW1hZ2UpKTsKIAogICAgIGlm
ICghZGVsZWdhdGUpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBpZiAoc3Ry
b2tlUGF0dGVyblJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikKLSAgICAgICAgZGVsZWdhdGUt
PnJlY29yZFJlc291cmNlVXNlKHN0cm9rZVBhdHRlcm5SZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXIpOwotICAgIGlmIChmaWxsUGF0dGVyblJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikKLSAg
ICAgICAgZGVsZWdhdGUtPnJlY29yZFJlc291cmNlVXNlKGZpbGxQYXR0ZXJuUmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyKTsKKyAgICBpZiAoc3Ryb2tlUGF0dGVybkltYWdlSWRlbnRpZmllcikK
KyAgICAgICAgZGVsZWdhdGUtPnJlY29yZFJlc291cmNlVXNlKHN0cm9rZVBhdHRlcm5JbWFnZUlk
ZW50aWZpZXIpOworICAgIGlmIChmaWxsUGF0dGVybkltYWdlSWRlbnRpZmllcikKKyAgICAgICAg
ZGVsZWdhdGUtPnJlY29yZFJlc291cmNlVXNlKGZpbGxQYXR0ZXJuSW1hZ2VJZGVudGlmaWVyKTsK
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NvZnR3YXJlL0ZFVGlsZVNvZnR3YXJlQXBwbGll
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NvZnR3YXJl
L0ZFVGlsZVNvZnR3YXJlQXBwbGllci5jcHAKaW5kZXggYjc5OTFmNDk0OTA0ZTljM2U0NTFhNGEz
NGE2ZjI4OWRjY2ZhNDMxYi4uNTUyZDE5NDZmMjhiZTA5NDZjYTA0NmUwNmZkN2UzYThjOWZmZmVj
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9z
b2Z0d2FyZS9GRVRpbGVTb2Z0d2FyZUFwcGxpZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc29mdHdhcmUvRkVUaWxlU29mdHdhcmVBcHBsaWVyLmNw
cApAQCAtNTcsMTQgKzU3LDEwIEBAIGJvb2wgRkVUaWxlU29mdHdhcmVBcHBsaWVyOjphcHBseShj
b25zdCBGaWx0ZXImIGZpbHRlciwgY29uc3QgRmlsdGVySW1hZ2VWZWN0b3ImCiAgICAgdGlsZUlt
YWdlQ29udGV4dC50cmFuc2xhdGUoLXRpbGVSZWN0LmxvY2F0aW9uKCkpOwogICAgIHRpbGVJbWFn
ZUNvbnRleHQuZHJhd0ltYWdlQnVmZmVyKCppbnB1dEltYWdlLCBpbnB1dEltYWdlUmVjdC5sb2Nh
dGlvbigpKTsKIAotICAgIGF1dG8gcGF0dGVybkltYWdlID0gSW1hZ2VCdWZmZXI6OnNpbmtJbnRv
TmF0aXZlSW1hZ2UoV1RGTW92ZSh0aWxlSW1hZ2UpKTsKLSAgICBpZiAoIXBhdHRlcm5JbWFnZSkK
LSAgICAgICAgcmV0dXJuIGZhbHNlOwotCiAgICAgQWZmaW5lVHJhbnNmb3JtIHBhdHRlcm5UcmFu
c2Zvcm07CiAgICAgcGF0dGVyblRyYW5zZm9ybS50cmFuc2xhdGUodGlsZVJlY3QubG9jYXRpb24o
KSAtIG1heFJlc3VsdFJlY3QubG9jYXRpb24oKSk7CiAKLSAgICBhdXRvIHBhdHRlcm4gPSBQYXR0
ZXJuOjpjcmVhdGUocGF0dGVybkltYWdlLnJlbGVhc2VOb25OdWxsKCksIHsgdHJ1ZSwgdHJ1ZSwg
cGF0dGVyblRyYW5zZm9ybSB9KTsKKyAgICBhdXRvIHBhdHRlcm4gPSBQYXR0ZXJuOjpjcmVhdGUo
eyB0aWxlSW1hZ2UucmVsZWFzZU5vbk51bGwoKSB9LCB7IHRydWUsIHRydWUsIHBhdHRlcm5UcmFu
c2Zvcm0gfSk7CiAKICAgICBhdXRvJiByZXN1bHRDb250ZXh0ID0gcmVzdWx0SW1hZ2UtPmNvbnRl
eHQoKTsKICAgICByZXN1bHRDb250ZXh0LnNldEZpbGxQYXR0ZXJuKFdURk1vdmUocGF0dGVybikp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2lu
Zy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcApp
bmRleCA2ODc5Y2E1ZWU3MGY1MWI3ZjQyYjRjNWY1NGNmMWI0MGMyOWUyZWJmLi5hMWM0OWUzMTk5
ZmVmNjBmZDE3ZWZmNzFhYjI0ODM0ODlhZGRiOWMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcApAQCAtMzMzNSwxMyArMzMzNSwxMSBAQCBz
dGF0aWMgUmVmUHRyPFBhdHRlcm4+IHBhdHRlcm5Gb3JEZXNjcmlwdGlvbihQYXR0ZXJuRGVzY3Jp
cHRpb24gZGVzY3JpcHRpb24sIEZsbwogICAgICAgICBpbWFnZUNvbnRleHQuZHJhd1RleHQoZm9u
dCwgdGV4dFJ1biwgeyB0ZXh0R2FwLCB5T2Zmc2V0IH0sIDApOwogICAgIH0KIAotICAgIGF1dG8g
dGlsZUltYWdlID0gSW1hZ2VCdWZmZXI6OnNpbmtJbnRvTmF0aXZlSW1hZ2UoV1RGTW92ZShpbWFn
ZUJ1ZmZlcikpOwotCiAgICAgQWZmaW5lVHJhbnNmb3JtIHBhdHRlcm5PZmZzZXRUcmFuc2Zvcm07
CiAgICAgcGF0dGVybk9mZnNldFRyYW5zZm9ybS50cmFuc2xhdGUoY29udGVudE9mZnNldCArIGRl
c2NyaXB0aW9uLnBoYXNlKTsKICAgICBwYXR0ZXJuT2Zmc2V0VHJhbnNmb3JtLnNjYWxlKDEgLyBk
ZXN0Q29udGV4dC5zY2FsZUZhY3RvcigpKTsKIAotICAgIHJldHVybiBQYXR0ZXJuOjpjcmVhdGUo
dGlsZUltYWdlLnJlbGVhc2VOb25OdWxsKCksIHsgdHJ1ZSwgdHJ1ZSwgcGF0dGVybk9mZnNldFRy
YW5zZm9ybX0pOworICAgIHJldHVybiBQYXR0ZXJuOjpjcmVhdGUoeyBpbWFnZUJ1ZmZlci5yZWxl
YXNlTm9uTnVsbCgpIH0sIHsgdHJ1ZSwgdHJ1ZSwgcGF0dGVybk9mZnNldFRyYW5zZm9ybSB9KTsK
IH07CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4uY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4uY3BwCmluZGV4IGIxMjY4YjgzNTcwNTVhMGFjMDY4
MzRkMTE5Y2E3YTYyNmE0ZmY2OTYuLmU4YjUxY2ZiOTM5NDkyNjM4MWVmM2IwNGEzZTE3YTVmZDE1
YzA4NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
UmVzb3VyY2VQYXR0ZXJuLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR1Jlc291cmNlUGF0dGVybi5jcHAKQEAgLTExMywxMCArMTEzLDYgQEAgUGF0dGVybkRh
dGEqIFJlbmRlclNWR1Jlc291cmNlUGF0dGVybjo6YnVpbGRQYXR0ZXJuKFJlbmRlckVsZW1lbnQm
IHJlbmRlcmVyLCBPcHQKIAogICAgIGF1dG8gdGlsZUltYWdlU2l6ZSA9IHRpbGVJbWFnZS0+bG9n
aWNhbFNpemUoKTsKIAotICAgIGF1dG8gY29waWVkSW1hZ2UgPSBJbWFnZUJ1ZmZlcjo6c2lua0lu
dG9OYXRpdmVJbWFnZShXVEZNb3ZlKHRpbGVJbWFnZSkpOwotICAgIGlmICghY29waWVkSW1hZ2Up
Ci0gICAgICAgIHJldHVybiBudWxscHRyOwotCiAgICAgLy8gQ29tcHV0ZSBwYXR0ZXJuIHNwYWNl
IHRyYW5zZm9ybWF0aW9uLgogICAgIGF1dG8gcGF0dGVybkRhdGEgPSBtYWtlVW5pcXVlPFBhdHRl
cm5EYXRhPigpOwogICAgIHBhdHRlcm5EYXRhLT50cmFuc2Zvcm0udHJhbnNsYXRlKHRpbGVCb3Vu
ZGFyaWVzLmxvY2F0aW9uKCkpOwpAQCAtMTM0LDcgKzEzMCw3IEBAIFBhdHRlcm5EYXRhKiBSZW5k
ZXJTVkdSZXNvdXJjZVBhdHRlcm46OmJ1aWxkUGF0dGVybihSZW5kZXJFbGVtZW50JiByZW5kZXJl
ciwgT3B0CiAgICAgfQogCiAgICAgLy8gQnVpbGQgcGF0dGVybi4KLSAgICBwYXR0ZXJuRGF0YS0+
cGF0dGVybiA9IFBhdHRlcm46OmNyZWF0ZShjb3BpZWRJbWFnZS5yZWxlYXNlTm9uTnVsbCgpLCB7
IHRydWUsIHRydWUsIHBhdHRlcm5EYXRhLT50cmFuc2Zvcm0gfSk7CisgICAgcGF0dGVybkRhdGEt
PnBhdHRlcm4gPSBQYXR0ZXJuOjpjcmVhdGUoeyB0aWxlSW1hZ2UucmVsZWFzZU5vbk51bGwoKSB9
LCB7IHRydWUsIHRydWUsIHBhdHRlcm5EYXRhLT50cmFuc2Zvcm0gfSk7CiAKICAgICAvLyBWYXJp
b3VzIGNhbGxzIGFib3ZlIG1heSB0cmlnZ2VyIGludmFsaWRhdGlvbnMgaW4gc29tZSBmcmluZ2Ug
Y2FzZXMgKEltYWdlQnVmZmVyIGFsbG9jYXRpb24KICAgICAvLyBmYWlsdXJlcyBpbiB0aGUgU1ZH
IGltYWdlIGNhY2hlIGZvciBleGFtcGxlKS4gVG8gYXZvaWQgaGF2aW5nIG91ciBQYXR0ZXJuRGF0
YSBkZWxldGVkIGJ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhp
Y3MvUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvZ3JhcGhpY3MvUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlci5jcHAKaW5kZXggZDlhZjU4NDBk
ZjY4NDNkOWU2MTlkYjY2MmVjOTBlYTQ4MTg1Nzk2YS4uYTBhNjIyZmQ0NmU5OWY2ZTM0MzIxNzky
MDM2NDE5ODYzYjU3ZmE5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dy
YXBoaWNzL1JlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyLmNwcApAQCAtMTI1
LDIwICsxMjUsMzAgQEAgdm9pZCBSZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyOjpzZXRTdGF0ZShE
aXNwbGF5TGlzdDo6U2V0U3RhdGUmJiBpdGVtKQogCiB2b2lkIFJlbW90ZURpc3BsYXlMaXN0UmVj
b3JkZXI6OnNldFN0YXRlV2l0aFF1YWxpZmllZElkZW50aWZpZXJzKERpc3BsYXlMaXN0OjpTZXRT
dGF0ZSYmIGl0ZW0sIFF1YWxpZmllZFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBzdHJva2VQ
YXR0ZXJuSW1hZ2VJZGVudGlmaWVyLCBRdWFsaWZpZWRSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXIgZmlsbFBhdHRlcm5JbWFnZUlkZW50aWZpZXIpCiB7Ci0gICAgUmVmUHRyPE5hdGl2ZUltYWdl
PiBzdHJva2VQYXR0ZXJuSW1hZ2U7CisgICAgYXV0byBjYWNoZWRTb3VyY2VJbWFnZSA9IFsmXShh
dXRvIGltYWdlSWRlbnRpZmllcikgLT4gc3RkOjpvcHRpb25hbDxTb3VyY2VJbWFnZT4geworICAg
ICAgICBpZiAoIWltYWdlSWRlbnRpZmllcikKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CisgICAgICAgIGlmIChhdXRvIG5hdGl2ZUltYWdlID0gcmVzb3VyY2VDYWNoZSgpLmNhY2hl
ZE5hdGl2ZUltYWdlKGltYWdlSWRlbnRpZmllcikpCisgICAgICAgICAgICByZXR1cm4gU291cmNl
SW1hZ2UoKm5hdGl2ZUltYWdlKTsKKyAgICAgICAgaWYgKGF1dG8gaW1hZ2VCdWZmZXIgPSByZXNv
dXJjZUNhY2hlKCkuY2FjaGVkSW1hZ2VCdWZmZXIoaW1hZ2VJZGVudGlmaWVyKSkKKyAgICAgICAg
ICAgIHJldHVybiBTb3VyY2VJbWFnZSgqaW1hZ2VCdWZmZXIpOworICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OworICAgIH07CisKKyAgICBhdXRvIHN0cm9rZVBhdHRlcm5JbWFnZSA9IGNhY2hl
ZFNvdXJjZUltYWdlKHN0cm9rZVBhdHRlcm5JbWFnZUlkZW50aWZpZXIpOworICAgIGlmICghc3Ry
b2tlUGF0dGVybkltYWdlKQorICAgICAgICBzdHJva2VQYXR0ZXJuSW1hZ2VJZGVudGlmaWVyID0g
eyB9OworCisgICAgYXV0byBmaWxsUGF0dGVybkltYWdlID0gY2FjaGVkU291cmNlSW1hZ2UoZmls
bFBhdHRlcm5JbWFnZUlkZW50aWZpZXIpOworICAgIGlmICghZmlsbFBhdHRlcm5JbWFnZSkKKyAg
ICAgICAgZmlsbFBhdHRlcm5JbWFnZUlkZW50aWZpZXIgPSB7IH07CisKKyAgICBoYW5kbGVJdGVt
KFdURk1vdmUoaXRlbSksIFdURk1vdmUoc3Ryb2tlUGF0dGVybkltYWdlKSwgV1RGTW92ZShmaWxs
UGF0dGVybkltYWdlKSk7CisgICAgCiAgICAgaWYgKHN0cm9rZVBhdHRlcm5JbWFnZUlkZW50aWZp
ZXIpCi0gICAgICAgIHN0cm9rZVBhdHRlcm5JbWFnZSA9IHJlc291cmNlQ2FjaGUoKS5jYWNoZWRO
YXRpdmVJbWFnZShzdHJva2VQYXR0ZXJuSW1hZ2VJZGVudGlmaWVyKTsKLQotICAgIFJlZlB0cjxO
YXRpdmVJbWFnZT4gZmlsbFBhdHRlcm5JbWFnZTsKLSAgICBpZiAoZmlsbFBhdHRlcm5JbWFnZUlk
ZW50aWZpZXIpCi0gICAgICAgIGZpbGxQYXR0ZXJuSW1hZ2UgPSByZXNvdXJjZUNhY2hlKCkuY2Fj
aGVkTmF0aXZlSW1hZ2UoZmlsbFBhdHRlcm5JbWFnZUlkZW50aWZpZXIpOwotCi0gICAgaGFuZGxl
SXRlbShXVEZNb3ZlKGl0ZW0pLCBzdHJva2VQYXR0ZXJuSW1hZ2UuZ2V0KCksIGZpbGxQYXR0ZXJu
SW1hZ2UuZ2V0KCkpOwotCi0gICAgaWYgKHN0cm9rZVBhdHRlcm5JbWFnZSkKICAgICAgICAgcmVz
b3VyY2VDYWNoZSgpLnJlY29yZFJlc291cmNlVXNlKHN0cm9rZVBhdHRlcm5JbWFnZUlkZW50aWZp
ZXIpOwogCi0gICAgaWYgKGZpbGxQYXR0ZXJuSW1hZ2UpCisgICAgaWYgKGZpbGxQYXR0ZXJuSW1h
Z2VJZGVudGlmaWVyKQogICAgICAgICByZXNvdXJjZUNhY2hlKCkucmVjb3JkUmVzb3VyY2VVc2Uo
ZmlsbFBhdHRlcm5JbWFnZUlkZW50aWZpZXIpOwogfQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMWI5ZjgyOGI1NzVkZDgx
ODc1NWExZGVkNTJjZTA3NjcyNzE1NzgzMS4uMWQ2MWM1ZGYyMzBhNGUwZjJjMGE1NmZhNTYzNmFi
ZDVhMjcxZWM1MSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91
dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDIyLTAxLTI0ICBTYWlkIEFib3Ut
SGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vzc10gUGF0dGVy
biBzaG91bGQgaG9sZCBTb3VyY2VJbWFnZSB3aGljaCBjYW4gYmUgY29udmVydGVkIHRvIGEgTmF0
aXZlSW1hZ2Ugb25seSB3aGVuIG5lZWRlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjMyNDExCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS84NDk5ODcz
OD4KKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICBVbnNraXAg
bGF5b3V0IHRlc3RzIGZvciBncHUgcHJvY2VzcyBiZWNhdXNlIHRoZXkgYXJlIGZpeGVkIGJ5IHRo
aXMgY2hhbmdlLgorCisgICAgICAgICogZ3B1LXByb2Nlc3MvVGVzdEV4cGVjdGF0aW9uczoKKwog
MjAyMi0wMS0yMyAgTWF0dCBXb29kcm93ICA8bWF0dHdvb2Ryb3dAYXBwbGUuY29tPgogCiAgICAg
ICAgIFBvc2l0aW9uOmZpeGVkIGxheWVycyBzaG91bGRuJ3QgYWxsb2NhdGUgYSBiYWNraW5nIGJ1
ZmZlciBpZiBhbGwgY2hpbGRyZW4gYXJlIG9mZnNjcmVlbi4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2dwdS1wcm9jZXNzL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9ncHUtcHJvY2Vz
cy9UZXN0RXhwZWN0YXRpb25zCmluZGV4IGNhOGU0OWFlMTQyZTk2NDhjYjFlNDg4YjJjNTI5NDI1
ZWNjYWFhYjcuLjVhZThjOGFmNGMzY2U2NmQzNTgzMDRhM2M2MmYyYzc0ODJkYjU1MTAgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2dwdS1wcm9jZXNzL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5
b3V0VGVzdHMvZ3B1LXByb2Nlc3MvVGVzdEV4cGVjdGF0aW9ucwpAQCAtMjQ1LDggKzI0NSw2IEBA
IGltcG9ydGVkL2JsaW5rL3N2Zy9hcy1pbWFnZS9zdmctYXMtaW1hZ2Utb2JqZWN0LWZpdC1jb250
YWluLmh0bWwKIGltcG9ydGVkL2JsaW5rL3N2Zy9hcy1pbWFnZS9zdmctYXMtaW1hZ2Utb2JqZWN0
LWZpdC1jb3Zlci5odG1sCiBpbXBvcnRlZC9ibGluay9zdmcvYXMtaW1hZ2Uvc3Zndmlldy1yZWZl
cmVuY2VzLmh0bWwKIGltcG9ydGVkL2JsaW5rL3N2Zy9jdXN0b20vZmlsbC1mYWxsYmFjay1jdXJy
ZW50Y29sb3ItMS5zdmcKLWltcG9ydGVkL2JsaW5rL3N2Zy9jdXN0b20vdHJhbnNmb3JtZWQtdGV4
dC1wYXR0ZXJuLmh0bWwgWyBDcmFzaCBdCi1pbXBvcnRlZC9ibGluay9zdmcvY3VzdG9tL3ZpZXdw
b3J0LXJlc291cmNlLWludmFsLnN2ZyBbIENyYXNoIF0KIGltcG9ydGVkL2JsaW5rL3N2Zy90ZXh0
L29iYi1wYWludHNlcnZlci5odG1sCiBpbXBvcnRlZC9tb3ppbGxhL3N2Zy9hcy1pbWFnZS9iYWNr
Z3JvdW5kLXJlc2l6ZS0zLmh0bWwKIGltcG9ydGVkL21vemlsbGEvc3ZnL2FzLWltYWdlL2JhY2tn
cm91bmQtcmVzaXplLTQuaHRtbApAQCAtMjYxLDM5ICsyNTksMTkgQEAgaW1wb3J0ZWQvbW96aWxs
YS9zdmcvYmxlbmQtb3ZlcmxheS5zdmcKIGltcG9ydGVkL21vemlsbGEvc3ZnL2JsZW5kLXNhdHVy
YXRpb24uc3ZnCiBpbXBvcnRlZC9tb3ppbGxhL3N2Zy9jb25kaXRpb25zLTA4LnN2ZyBbIENyYXNo
IF0KIGltcG9ydGVkL21vemlsbGEvc3ZnL2R5bmFtaWMtcGF0dGVybi0wMS5zdmcgWyBDcmFzaCBd
Ci1pbXBvcnRlZC9tb3ppbGxhL3N2Zy9keW5hbWljLXBhdHRlcm4tMDIuc3ZnIFsgQ3Jhc2ggXQot
aW1wb3J0ZWQvbW96aWxsYS9zdmcvZHluYW1pYy1wYXR0ZXJuLWNvbnRlbnRzLTAxLnN2ZyBbIENy
YXNoIF0KLWltcG9ydGVkL21vemlsbGEvc3ZnL2R5bmFtaWMtcGF0dGVybi1jb250ZW50cy0wMi5z
dmcgWyBDcmFzaCBdCiBpbXBvcnRlZC9tb3ppbGxhL3N2Zy9maWx0ZXJzL2ZlQ29tcG9zaXRlLTIu
c3ZnCiBpbXBvcnRlZC9tb3ppbGxhL3N2Zy9maWx0ZXJzL2ZlRmxvb2QtMS5zdmcKIGltcG9ydGVk
L21vemlsbGEvc3ZnL2ZpbHRlcnMvZmVGbG9vZC0yLnN2ZwogaW1wb3J0ZWQvbW96aWxsYS9zdmcv
ZmlsdGVycy9mZUltYWdlLTEuc3ZnCiBpbXBvcnRlZC9tb3ppbGxhL3N2Zy9saW5lYXJHcmFkaWVu
dC1iYXNpYy0wMy5zdmcKIGltcG9ydGVkL21vemlsbGEvc3ZnL21hc2stdHlwZS0wMS5zdmcKLWlt
cG9ydGVkL21vemlsbGEvc3ZnL29iamVjdEJvdW5kaW5nQm94LWFuZC1wYXR0ZXJuLTAxYS5zdmcg
WyBDcmFzaCBdCi1pbXBvcnRlZC9tb3ppbGxhL3N2Zy9vYmplY3RCb3VuZGluZ0JveC1hbmQtcGF0
dGVybi0wMWIuc3ZnIFsgQ3Jhc2ggXQotaW1wb3J0ZWQvbW96aWxsYS9zdmcvb2JqZWN0Qm91bmRp
bmdCb3gtYW5kLXBhdHRlcm4tMDFjLnN2ZyBbIENyYXNoIF0KLWltcG9ydGVkL21vemlsbGEvc3Zn
L29iamVjdEJvdW5kaW5nQm94LWFuZC1wYXR0ZXJuLTAyLnN2ZyBbIENyYXNoIF0KLWltcG9ydGVk
L21vemlsbGEvc3ZnL29iamVjdEJvdW5kaW5nQm94LWFuZC1wYXR0ZXJuLTAzLnN2ZyBbIENyYXNo
IF0KIGltcG9ydGVkL21vemlsbGEvc3ZnL29wYWNpdHktYW5kLWdyYWRpZW50LTAyLnN2ZwogaW1w
b3J0ZWQvbW96aWxsYS9zdmcvcGFpbnQtb3JkZXItMDEuc3ZnCiBpbXBvcnRlZC9tb3ppbGxhL3N2
Zy9wYXRoLTAyLnN2ZwotaW1wb3J0ZWQvbW96aWxsYS9zdmcvcGF0dGVybi1iYXNpYy0wMS5zdmcg
WyBDcmFzaCBdCi1pbXBvcnRlZC9tb3ppbGxhL3N2Zy9wYXR0ZXJuLWxpdmUtMDFhLnN2ZyBbIENy
YXNoIF0KLWltcG9ydGVkL21vemlsbGEvc3ZnL3BhdHRlcm4tbGl2ZS0wMWIuc3ZnIFsgQ3Jhc2gg
XQotaW1wb3J0ZWQvbW96aWxsYS9zdmcvcGF0dGVybi1zY2FsZS0wMWEuc3ZnIFsgQ3Jhc2ggXQot
aW1wb3J0ZWQvbW96aWxsYS9zdmcvcGF0dGVybi1zY2FsZS0wMWIuc3ZnIFsgQ3Jhc2ggXQotaW1w
b3J0ZWQvbW96aWxsYS9zdmcvcGF0dGVybi1zY2FsZS0wMWMuc3ZnIFsgQ3Jhc2ggXQotaW1wb3J0
ZWQvbW96aWxsYS9zdmcvcGF0dGVybi10cmFuc2Zvcm0tcHJlc2VuY2UtMDEuc3ZnIFsgQ3Jhc2gg
XQogaW1wb3J0ZWQvbW96aWxsYS9zdmcvcGF0dGVybi10cmFuc2Zvcm1lZC0wMS5zdmcKIGltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQtZ3JhZGllbnQtMDEuc3ZnCiBpbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0LXNjYWxlLTAyLnN2ZwotaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC9tYXNrLWNvbnRl
bnQtMi5zdmcgWyBDcmFzaCBdCiBpbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3NpbXBsZS1maWxs
LWdyYWRpZW50LnN2ZwotaW1wb3J0ZWQvbW96aWxsYS9zdmcvdXNlclNwYWNlT25Vc2UtYW5kLXBh
dHRlcm4tMDEuc3ZnIFsgQ3Jhc2ggXQotaW1wb3J0ZWQvbW96aWxsYS9zdmcvdmlld0JveC1hbmQt
cGF0dGVybi0wMS5zdmcgWyBDcmFzaCBdCi1pbXBvcnRlZC9tb3ppbGxhL3N2Zy92aWV3Qm94LWFu
ZC1wYXR0ZXJuLTAyLnN2ZyBbIENyYXNoIF0KLWltcG9ydGVkL21vemlsbGEvc3ZnL3ZpZXdCb3gt
YW5kLXBhdHRlcm4tMDMuc3ZnIFsgQ3Jhc2ggXQogaW1wb3J0ZWQvdzNjL2kxOG4vYmlkaS9iaWRp
LXBsYWludGV4dC0wMTEuaHRtbCBbIFBhc3MgXQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9jb21wYXQvd2Via2l0LWJhY2tncm91bmQtb3JpZ2luLXRleHQuaHRtbAogaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb21wYXQvd2Via2l0LWxpbmVhci1ncmFkaWVudC1saW5l
LWJvdHRvbS5odG1sCkBAIC05MTAsMjQgKzg4OCw3IEBAIGltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvbWVkaWFjYXB0dXJlLXJlY29yZC9NZWRpYVJlY29yZGVyLXBlZXJjb25uZWN0aW9u
CiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL21pbWVzbmlmZi9taW1lLXR5cGVzL2No
YXJzZXQtcGFyYW1ldGVyLndpbmRvdy5odG1sCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3NlbGVjdGlvbi9zZWxlY3Rpb24tc2VsZWN0LWFsbC1tb3ZlLWlucHV0LWNyYXNoLmh0bWwK
IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc2VydmljZS13b3JrZXJzL3NlcnZpY2Ut
d29ya2VyL2ZldGNoLXJlcXVlc3QtcmVkaXJlY3QuaHR0cHMuaHRtbCBbIFBhc3MgXQotaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdmcvYW5pbWF0aW9ucy9hbmltYXRlVHJhbnNmb3Jt
LXBhdHRlcm4tdHJhbnNmb3JtLmh0bWwgWyBDcmFzaCBdCi1pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3N2Zy9hbmltYXRpb25zL3N2Z2VudW0tYW5pbWF0aW9uLTEuaHRtbCBbIENyYXNo
IF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3ZnL2V4dGVuc2liaWxpdHkvZm9y
ZWlnbk9iamVjdC9tYXNrZWQuaHRtbAotaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9z
dmcvaW1wb3J0L2Nvb3Jkcy11bml0cy0wMS1iLW1hbnVhbC5zdmcgWyBDcmFzaCBdCi1pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N2Zy9pbXBvcnQvbGlua2luZy1hLTEwLWYtbWFudWFs
LnN2ZyBbIENyYXNoIF0KLWltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3ZnL2ltcG9y
dC9tYXNraW5nLXBhdGgtMDctYi1tYW51YWwuc3ZnIFsgQ3Jhc2ggXQotaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9zdmcvaW1wb3J0L3BzZXJ2ZXJzLWdyYWQtMDMtYi1tYW51YWwuc3Zn
IFsgQ3Jhc2ggXQotaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdmcvaW1wb3J0L3Bz
ZXJ2ZXJzLWdyYWQtMDYtYi1tYW51YWwuc3ZnIFsgQ3Jhc2ggXQotaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9zdmcvaW1wb3J0L3BzZXJ2ZXJzLXBhdHRlcm4tMDEtYi1tYW51YWwuc3Zn
IFsgQ3Jhc2ggXQotaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdmcvaW1wb3J0L3Bz
ZXJ2ZXJzLXBhdHRlcm4tMDItZi1tYW51YWwuc3ZnIFsgQ3Jhc2ggXQotaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9zdmcvaW1wb3J0L3BzZXJ2ZXJzLXBhdHRlcm4tMDQtZi1tYW51YWwu
c3ZnIFsgQ3Jhc2ggXQotaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdmcvaW1wb3J0
L3BzZXJ2ZXJzLXBhdHRlcm4tMDUtZi1tYW51YWwuc3ZnIFsgQ3Jhc2ggXQotaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9zdmcvaW1wb3J0L3BzZXJ2ZXJzLXBhdHRlcm4tMDgtZi1tYW51
YWwuc3ZnIFsgQ3Jhc2ggXQotaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdmcvaW1w
b3J0L3BzZXJ2ZXJzLXBhdHRlcm4tMDktZi1tYW51YWwuc3ZnIFsgQ3Jhc2ggXQotaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdmcvbGlua2luZy9yZWZ0ZXN0cy9ocmVmLXBhdHRlcm4t
ZWxlbWVudC5odG1sIFsgQ3Jhc2ggXQotaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9z
dmcvcGFpbnRpbmcvY3VycmVudENvbG9yLW92ZXJyaWRlLXBzZXJ2ZXItc3Ryb2tlLnN2ZyBbIENy
YXNoIF0KLWltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3ZnL3BzZXJ2ZXJzL3JlZnRl
c3RzL3BhdHRlcm4taW5oZXJpdGFuY2Utbm90LWluLXJlbmRlcnRyZWUtMDIudGVudGF0aXZlLnN2
ZyBbIENyYXNoIF0KLWltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3ZnL3JlbmRlci9y
ZWZ0ZXN0cy9maWx0ZXItZWZmZWN0cy1vbi1wYXR0ZXJuLmh0bWwgWyBDcmFzaCBdCiBpbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYi1hbmltYXRpb25zL3RpbWluZy1tb2RlbC9hbmlt
YXRpb25zL3VwZGF0ZS1wbGF5YmFjay1yYXRlLXplcm8uaHRtbCBbIFBhc3MgXQogaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJhdWRpby90aGUtYXVkaW8tYXBpL3RoZS1iaXF1YWRm
aWx0ZXJub2RlLWludGVyZmFjZS9uby1kZXppcHBlcmluZy5odG1sCiBpbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3hoci9yZXNwb25zZS1tZXRob2QuaHRtIFsgUGFzcyBdCkBAIC05NTQs
MjggKzkxNSwxMSBAQCBzdmcvYmF0aWsvcGFpbnRzL3BhdHRlcm5QcmVzZXJ2ZUFzcGVjdFJhdGlv
QS5zdmcgWyBDcmFzaCBdCiBzdmcvYmF0aWsvcGFpbnRzL3BhdHRlcm5SZWdpb25BLnN2ZyBbIENy
YXNoIF0KIHN2Zy9iYXRpay9wYWludHMvcGF0dGVyblJlZ2lvbnMtcG9zaXRpb25lZC1vYmplY3Rz
LnN2ZyBbIENyYXNoIF0KIHN2Zy9iYXRpay9wYWludHMvcGF0dGVyblJlZ2lvbnMuc3ZnIFsgQ3Jh
c2ggXQotc3ZnL2JhdGlrL3RleHQvdGV4dEVmZmVjdDIuc3ZnIFsgQ3Jhc2ggXQogc3ZnL2NsaXAt
cGF0aC9jbGlwLXBhdGgtbGluZS11c2UtYmVmb3JlLWRlZmluZWQuc3ZnIFsgUGFzcyBdCiBzdmcv
Y2xpcC1wYXRoL3dlYmtpdC1jbGlwLXBhdGgtYWZ0ZXIuc3ZnCiBzdmcvY2xpcC1wYXRoL3dlYmtp
dC1jbGlwLXBhdGgtYmVmb3JlLnN2Zwotc3ZnL2N1c3RvbS9oaWRwaS1tYXNraW5nLWNsaXBwaW5n
LnN2ZyBbIENyYXNoIF0KLXN2Zy9jdXN0b20vaHJlZi1zdmctbmFtZXNwYWNlLXN0YXRpYy5zdmcg
WyBDcmFzaCBdCi1zdmcvY3VzdG9tL2pzLWxhdGUtcGF0dGVybi1jcmVhdGlvbi5zdmcgWyBDcmFz
aCBdCi1zdmcvY3VzdG9tL2pzLXVwZGF0ZS1wYXR0ZXJuLnN2ZyBbIENyYXNoIF0KLXN2Zy9jdXN0
b20vbGFyZ2UtaW1hZ2UtcGF0dGVybi1jcmFzaC5odG1sIFsgQ3Jhc2ggXQotc3ZnL2N1c3RvbS9s
b2NhbC11cmwtcmVmZXJlbmNlLXBhdHRlcm4uaHRtbCBbIENyYXNoIF0KLXN2Zy9jdXN0b20vbmV3
LWltYWdlLWlzLWh0bWwtZWxlbWVudC5zdmcgWyBDcmFzaCBdCiBzdmcvY3VzdG9tL3N1YnBhdGhz
LW1vdmV0by1vbmx5LXJlbmRlcmluZy5zdmcgWyBQYXNzIF0KIHN2Zy9jdXN0b20vc3ZnLWZvbnRz
LXNraXAtaW5rLmh0bWwKLXN2Zy9kb20vdmlld3BvcnQtY29udGFpbmVyLWNyYXNoLnN2ZyBbIENy
YXNoIF0KLXN2Zy9keW5hbWljLXVwZGF0ZXMvU1ZHUGF0dGVybkVsZW1lbnQtZG9tLWhlaWdodC1h
dHRyLmh0bWwgWyBDcmFzaCBdCi1zdmcvZHluYW1pYy11cGRhdGVzL1NWR1BhdHRlcm5FbGVtZW50
LWRvbS1wYXR0ZXJuVHJhbnNmb3JtLWF0dHIuaHRtbCBbIENyYXNoIF0KLXN2Zy9keW5hbWljLXVw
ZGF0ZXMvU1ZHUGF0dGVybkVsZW1lbnQtZG9tLXBhdHRlcm5Vbml0cy1hdHRyLmh0bWwgWyBDcmFz
aCBdCi1zdmcvZHluYW1pYy11cGRhdGVzL1NWR1BhdHRlcm5FbGVtZW50LWRvbS13aWR0aC1hdHRy
Lmh0bWwgWyBDcmFzaCBdCi1zdmcvZHluYW1pYy11cGRhdGVzL1NWR1BhdHRlcm5FbGVtZW50LWRv
bS15LWF0dHIuaHRtbCBbIENyYXNoIF0KLXN2Zy9keW5hbWljLXVwZGF0ZXMvU1ZHUGF0dGVybkVs
ZW1lbnQtc3ZnZG9tLXBhdHRlcm5Db250ZW50VW5pdHMtcHJvcC5odG1sIFsgQ3Jhc2ggXQotc3Zn
L2R5bmFtaWMtdXBkYXRlcy9TVkdQYXR0ZXJuRWxlbWVudC1zdmdkb20td2lkdGgtcHJvcC5odG1s
IFsgQ3Jhc2ggXQotc3ZnL2R5bmFtaWMtdXBkYXRlcy9TVkdQYXR0ZXJuRWxlbWVudC1zdmdkb20t
eS1wcm9wLmh0bWwgWyBDcmFzaCBdCiBzdmcvZ3JhZGllbnRzL2dyYWRpZW50LWZsaXBwZWQtc3Rh
cnQtZW5kLXBvaW50cy5zdmcKIHN2Zy9ncmFkaWVudHMvc3ByZWFkTWV0aG9kLnN2Zwogc3ZnL2dy
YWRpZW50cy9zcHJlYWRNZXRob2RBbHBoYS5zdmcKQEAgLTk4OSwxMSArOTMzLDYgQEAgc3ZnL2dy
YWRpZW50cy9zcHJlYWRNZXRob2RSZXZlcnNlZC5zdmcKIHN2Zy9ncmFkaWVudHMvc3RvcEFscGhh
LnN2Zwogc3ZnL3RyYW5zZm9ybXMvdHJhbnNmb3JtZWQtdGV4dC1maWxsLWdyYWRpZW50Lmh0bWwK
IHN2Zy90cmFuc2Zvcm1zL3RyYW5zZm9ybWVkLXRleHQtZmlsbC1wYXR0ZXJuLmh0bWwKLXN2Zy9X
M0MtU1ZHLTEuMS1TRS9zdHJ1Y3QtZG9tLTExLWYuc3ZnIFsgQ3Jhc2ggXQotc3ZnL1czQy1TVkct
MS4xL2Nvb3Jkcy11bml0cy0wMS1iLnN2ZyBbIENyYXNoIF0KLXN2Zy9XM0MtU1ZHLTEuMS9wc2Vy
dmVycy1ncmFkLTA0LWIuc3ZnIFsgQ3Jhc2ggXQotc3ZnL1czQy1TVkctMS4xL3BzZXJ2ZXJzLWdy
YWQtMDctYi5zdmcgWyBDcmFzaCBdCi1zdmcvVzNDLVNWRy0xLjEvcmVuZGVyLWVsZW1zLTAxLXQu
c3ZnIFsgQ3Jhc2ggXQogc3lzdGVtLXByZXZpZXcvYmFkZ2UuaHRtbAogd2ViYW5pbWF0aW9ucy9v
cGFjaXR5LWFuaW1hdGlvbi5odG1sCiB3ZWJnbC8xLjAuMy9jb25mb3JtYW5jZS9jb250ZXh0L3By
ZW11bHRpcGx5YWxwaGEtdGVzdC5odG1sCg==
</data>
<flag name="commit-queue"
          id="475996"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>449791</attachid>
            <date>2022-01-24 01:55:25 -0800</date>
            <delta_ts>2022-01-25 01:55:20 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-232411-20220124015525.patch</filename>
            <type>text/plain</type>
            <size>35526</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg4NDI5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTdmZDk3MzFiZTZmYjVl
ZWJiYWZhNDY5ZDAyNjE1YWU0NGNmZTRkOC4uMDE3MThlMGM0MTBlNGEzNGRlYWVkZjU3NzYwMjk0
NmVmNDdjZWVmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDIyLTAxLTI0ICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vzc10g
UGF0dGVybiBzaG91bGQgaG9sZCBTb3VyY2VJbWFnZSB3aGljaCBjYW4gYmUgY29udmVydGVkIHRv
IGEgTmF0aXZlSW1hZ2Ugb25seSB3aGVuIG5lZWRlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMyNDExCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS84
NDk5ODczOD4KKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICBN
YWtlIFBhdHRlcm4gaG9sZCBhIFNvdXJjZUltYWdlIGFuZCBwcm92aWRlIGdldHRlcnMgdG8gcmV0
cmlldmUgZWl0aGVyIGEKKyAgICAgICAgTmF0aXZlSW1hZ2Ugb3IgYW4gSW1hZ2VCdWZmZXIuIElu
IHRoZXNlIGdldHRlcnMgdGhlIFNvdXJjZUltYWdlIHdpbGwgCisgICAgICAgIGNvbnZlcnQgaXRz
IEltYWdlVmFyaWFudCBmcm9tIGFuIGltYWdlIHNvdXJjZSB0byB0aGUgb3RoZXIgaWYgbmVlZGVk
LgorCisgICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFzUGF0dGVybi5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDYW52YXNQYXR0ZXJuOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFz
UGF0dGVybjo6Q2FudmFzUGF0dGVybik6CisgICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFzUGF0
dGVybi5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJh
c2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6
Y3JlYXRlUGF0dGVybik6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhcy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDYW52YXM6OmJ1aWxkQXJyYXlGb3JDYW52YXNQ
YXR0ZXJuKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9QYXR0ZXJuLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlBhdHRlcm46OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpQYXR0ZXJu
OjpQYXR0ZXJuKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9QYXR0ZXJuLmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U291cmNlSW1hZ2U6OnNpemUgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L1NvdXJjZUltYWdlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGF0dGVy
bkNhaXJvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhdHRlcm46OmNyZWF0ZVBsYXRmb3JtUGF0
dGVybiBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGF0dGVybkNHLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlBhdHRlcm46OmNyZWF0ZVBsYXRmb3JtUGF0dGVybiBjb25z
dCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
SXRlbXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlNldFN0YXRlOjphcHBs
eSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
SXRlbXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpTZXRTdGF0ZTo6ZW5jb2Rl
IGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3RSZXBsYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6YXBwbHlT
ZXRTdGF0ZUl0ZW0pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc29mdHdh
cmUvRkVUaWxlU29mdHdhcmVBcHBsaWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFVGlsZVNv
ZnR3YXJlQXBwbGllcjo6YXBwbHkgY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJM
YXllckJhY2tpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cGF0dGVybkZvckRlc2NyaXB0aW9u
KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlUGF0dGVybi5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm46OmJ1aWxkUGF0dGVy
bik6CisKIDIwMjItMDEtMjMgIE1hdHQgV29vZHJvdyAgPG1hdHR3b29kcm93QGFwcGxlLmNvbT4K
IAogICAgICAgICBQb3NpdGlvbjpmaXhlZCBsYXllcnMgc2hvdWxkbid0IGFsbG9jYXRlIGEgYmFj
a2luZyBidWZmZXIgaWYgYWxsIGNoaWxkcmVuIGFyZSBvZmZzY3JlZW4uCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDUw
YTUyZDQ2ZDg3NGI2YzMyODhhZjRmM2IyNDRlZGZiZTliMTE0YmIuLjk4MDdlYjQ4ZWQwMDllNmFh
ZDAyY2YyYmRlZWY4MDVhMWRhZWY3YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMjIt
MDEtMjQgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2FpZEBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQ
VSBQcm9jZXNzXSBQYXR0ZXJuIHNob3VsZCBob2xkIFNvdXJjZUltYWdlIHdoaWNoIGNhbiBiZSBj
b252ZXJ0ZWQgdG8gYSBOYXRpdmVJbWFnZSBvbmx5IHdoZW4gbmVlZGVkCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzI0MTEKKyAgICAgICAgPHJkYXI6
Ly9wcm9ibGVtLzg0OTk4NzM4PgorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgor
CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVy
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlcjo6c2V0U3Rh
dGVXaXRoUXVhbGlmaWVkSWRlbnRpZmllcnMpOgorICAgICAgICBCdWlsZCBhbiBzdGQ6Om9wdGlv
bmFsPFNvdXJjZUltYWdlPiBmcm9tIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBvZgorICAg
ICAgICB0aGUgcGF0dGVybiByZXNvdXJjZSBpZGVudGlmaWVyLiBQYXNzIHRoaXMgU291cmNlSW1h
Z2UgdG8gaGFuZGxlSXRlbSgpLgorCiAyMDIyLTAxLTIyICBCZW4gTmhhbSAgPG5oYW1AYXBwbGUu
Y29tPgogCiAgICAgICAgIEFkZCBQdXNoU3Vic2NyaXB0aW9uSWRlbnRpZmllcgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUGF0dGVybi5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNQYXR0ZXJuLmNwcAppbmRleCA4ZjE5MzgyY2IyMDNk
MmU0MTFiY2E5NTdhNjkxYjFmYWM5OGEyY2ExLi42MGNlM2RlYTYxZTI0ZmE3YmQ0OWUyOGYxN2U3
ZTQ0OGNkYjIwODJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52
YXNQYXR0ZXJuLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNQYXR0
ZXJuLmNwcApAQCAtMzQsMTIgKzM0LDEyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVm
PENhbnZhc1BhdHRlcm4+IENhbnZhc1BhdHRlcm46OmNyZWF0ZShSZWY8TmF0aXZlSW1hZ2U+JiYg
aW1hZ2UsIGJvb2wgcmVwZWF0WCwgYm9vbCByZXBlYXRZLCBib29sIG9yaWdpbkNsZWFuKQorUmVm
PENhbnZhc1BhdHRlcm4+IENhbnZhc1BhdHRlcm46OmNyZWF0ZShTb3VyY2VJbWFnZSYmIGltYWdl
LCBib29sIHJlcGVhdFgsIGJvb2wgcmVwZWF0WSwgYm9vbCBvcmlnaW5DbGVhbikKIHsKICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBDYW52YXNQYXR0ZXJuKFdURk1vdmUoaW1hZ2UpLCByZXBlYXRY
LCByZXBlYXRZLCBvcmlnaW5DbGVhbikpOwogfQogCi1DYW52YXNQYXR0ZXJuOjpDYW52YXNQYXR0
ZXJuKFJlZjxOYXRpdmVJbWFnZT4mJiBpbWFnZSwgYm9vbCByZXBlYXRYLCBib29sIHJlcGVhdFks
IGJvb2wgb3JpZ2luQ2xlYW4pCitDYW52YXNQYXR0ZXJuOjpDYW52YXNQYXR0ZXJuKFNvdXJjZUlt
YWdlJiYgaW1hZ2UsIGJvb2wgcmVwZWF0WCwgYm9vbCByZXBlYXRZLCBib29sIG9yaWdpbkNsZWFu
KQogICAgIDogbV9wYXR0ZXJuKFBhdHRlcm46OmNyZWF0ZShXVEZNb3ZlKGltYWdlKSwgeyByZXBl
YXRYLCByZXBlYXRZIH0pKQogICAgICwgbV9vcmlnaW5DbGVhbihvcmlnaW5DbGVhbikKIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1BhdHRlcm4uaCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1BhdHRlcm4uaAppbmRleCBlNDZkMjFiYzUx
MzVkOWE3NGY0NTc1YzlkZDY1ZTljZWNkY2I4ZDJhLi44NzFlMDQ1NzdjYzUxZTU5ODA1N2JlY2Uy
YWJkNzVmNjZhYzk5YzYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9D
YW52YXNQYXR0ZXJuLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUGF0
dGVybi5oCkBAIC0zMiwxMyArMzIsMTMgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFz
cyBOYXRpdmVJbWFnZTsKIGNsYXNzIFBhdHRlcm47CitjbGFzcyBTb3VyY2VJbWFnZTsKIHN0cnVj
dCBET01NYXRyaXgyREluaXQ7CiAKIGNsYXNzIENhbnZhc1BhdHRlcm4gOiBwdWJsaWMgUmVmQ291
bnRlZDxDYW52YXNQYXR0ZXJuPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxDYW52YXNQYXR0
ZXJuPiBjcmVhdGUoUmVmPE5hdGl2ZUltYWdlPiYmLCBib29sIHJlcGVhdFgsIGJvb2wgcmVwZWF0
WSwgYm9vbCBvcmlnaW5DbGVhbik7CisgICAgc3RhdGljIFJlZjxDYW52YXNQYXR0ZXJuPiBjcmVh
dGUoU291cmNlSW1hZ2UmJiwgYm9vbCByZXBlYXRYLCBib29sIHJlcGVhdFksIGJvb2wgb3JpZ2lu
Q2xlYW4pOwogICAgIH5DYW52YXNQYXR0ZXJuKCk7CiAKICAgICBzdGF0aWMgYm9vbCBwYXJzZVJl
cGV0aXRpb25UeXBlKGNvbnN0IFN0cmluZyYsIGJvb2wmIHJlcGVhdFgsIGJvb2wmIHJlcGVhdFkp
OwpAQCAtNTEsNyArNTEsNyBAQCBwdWJsaWM6CiAgICAgRXhjZXB0aW9uT3I8dm9pZD4gc2V0VHJh
bnNmb3JtKERPTU1hdHJpeDJESW5pdCYmKTsKIAogcHJpdmF0ZToKLSAgICBDYW52YXNQYXR0ZXJu
KFJlZjxOYXRpdmVJbWFnZT4mJiwgYm9vbCByZXBlYXRYLCBib29sIHJlcGVhdFksIGJvb2wgb3Jp
Z2luQ2xlYW4pOworICAgIENhbnZhc1BhdHRlcm4oU291cmNlSW1hZ2UmJiwgYm9vbCByZXBlYXRY
LCBib29sIHJlcGVhdFksIGJvb2wgb3JpZ2luQ2xlYW4pOwogCiAgICAgUmVmPFBhdHRlcm4+IG1f
cGF0dGVybjsKICAgICBib29sIG1fb3JpZ2luQ2xlYW47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuY3BwCmlu
ZGV4IDU3N2Q1NWU3ZjA0MmE3ODQ4MjIwZTM4YWMzMmQzMDY5ODM2YTM4OWQuLmI4OWU3N2ZiNjAw
ZTBlY2E5M2YwMTkyNDM5ZTQxMDczYzk1YWQxMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuY3BwCkBA
IC0xOTUzLDcgKzE5NTMsNyBAQCBFeGNlcHRpb25PcjxSZWZQdHI8Q2FudmFzUGF0dGVybj4+IENh
bnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmNyZWF0ZVBhdHRlcm4oSAogICAgIGlmICghbmF0
aXZlSW1hZ2UpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciB9
OwogCi0gICAgcmV0dXJuIFJlZlB0cjxDYW52YXNQYXR0ZXJuPiB7IENhbnZhc1BhdHRlcm46OmNy
ZWF0ZShuYXRpdmVJbWFnZS5yZWxlYXNlTm9uTnVsbCgpLCByZXBlYXRYLCByZXBlYXRZLCBvcmln
aW5DbGVhbikgfTsKKyAgICByZXR1cm4gUmVmUHRyPENhbnZhc1BhdHRlcm4+IHsgQ2FudmFzUGF0
dGVybjo6Y3JlYXRlKHsgbmF0aXZlSW1hZ2UucmVsZWFzZU5vbk51bGwoKSB9LCByZXBlYXRYLCBy
ZXBlYXRZLCBvcmlnaW5DbGVhbikgfTsKIH0KIAogRXhjZXB0aW9uT3I8UmVmUHRyPENhbnZhc1Bh
dHRlcm4+PiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpjcmVhdGVQYXR0ZXJuKENhbnZh
c0Jhc2UmIGNhbnZhcywgYm9vbCByZXBlYXRYLCBib29sIHJlcGVhdFkpCkBAIC0xOTY5LDcgKzE5
NjksNyBAQCBFeGNlcHRpb25PcjxSZWZQdHI8Q2FudmFzUGF0dGVybj4+IENhbnZhc1JlbmRlcmlu
Z0NvbnRleHQyREJhc2U6OmNyZWF0ZVBhdHRlcm4oQwogICAgIGlmICghbmF0aXZlSW1hZ2UpCiAg
ICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciB9OwogCi0gICAgcmV0
dXJuIFJlZlB0cjxDYW52YXNQYXR0ZXJuPiB7IENhbnZhc1BhdHRlcm46OmNyZWF0ZShuYXRpdmVJ
bWFnZS5yZWxlYXNlTm9uTnVsbCgpLCByZXBlYXRYLCByZXBlYXRZLCBjYW52YXMub3JpZ2luQ2xl
YW4oKSkgfTsKKyAgICByZXR1cm4gUmVmUHRyPENhbnZhc1BhdHRlcm4+IHsgQ2FudmFzUGF0dGVy
bjo6Y3JlYXRlKHsgbmF0aXZlSW1hZ2UucmVsZWFzZU5vbk51bGwoKSB9LCByZXBlYXRYLCByZXBl
YXRZLCBjYW52YXMub3JpZ2luQ2xlYW4oKSkgfTsKIH0KICAgICAKICNpZiBFTkFCTEUoVklERU8p
CkBAIC0xOTg0LDcgKzE5ODQsNyBAQCBFeGNlcHRpb25PcjxSZWZQdHI8Q2FudmFzUGF0dGVybj4+
IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmNyZWF0ZVBhdHRlcm4oSAogCiAjaWYgVVNF
KENHKQogICAgIGlmIChhdXRvIG5hdGl2ZUltYWdlID0gdmlkZW9FbGVtZW50Lm5hdGl2ZUltYWdl
Rm9yQ3VycmVudFRpbWUoKSkKLSAgICAgICAgcmV0dXJuIFJlZlB0cjxDYW52YXNQYXR0ZXJuPiB7
IENhbnZhc1BhdHRlcm46OmNyZWF0ZShuYXRpdmVJbWFnZS5yZWxlYXNlTm9uTnVsbCgpLCByZXBl
YXRYLCByZXBlYXRZLCBvcmlnaW5DbGVhbikgfTsKKyAgICAgICAgcmV0dXJuIFJlZlB0cjxDYW52
YXNQYXR0ZXJuPiB7IENhbnZhc1BhdHRlcm46OmNyZWF0ZSh7IG5hdGl2ZUltYWdlLnJlbGVhc2VO
b25OdWxsKCkgfSwgcmVwZWF0WCwgcmVwZWF0WSwgb3JpZ2luQ2xlYW4pIH07CiAjZW5kaWYKIAog
ICAgIGF1dG8gcmVuZGVyaW5nTW9kZSA9IGRyYXdpbmdDb250ZXh0KCkgPyBkcmF3aW5nQ29udGV4
dCgpLT5yZW5kZXJpbmdNb2RlKCkgOiBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkOwpAQCAt
MTk5NCw3ICsxOTk0LDcgQEAgRXhjZXB0aW9uT3I8UmVmUHRyPENhbnZhc1BhdHRlcm4+PiBDYW52
YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpjcmVhdGVQYXR0ZXJuKEgKIAogICAgIHZpZGVvRWxl
bWVudC5wYWludEN1cnJlbnRGcmFtZUluQ29udGV4dChpbWFnZUJ1ZmZlci0+Y29udGV4dCgpLCBG
bG9hdFJlY3QoRmxvYXRQb2ludCgpLCBzaXplKHZpZGVvRWxlbWVudCkpKTsKICAgICAKLSAgICBy
ZXR1cm4gUmVmUHRyPENhbnZhc1BhdHRlcm4+IHsgQ2FudmFzUGF0dGVybjo6Y3JlYXRlKEltYWdl
QnVmZmVyOjpzaW5rSW50b05hdGl2ZUltYWdlKFdURk1vdmUoaW1hZ2VCdWZmZXIpKS5yZWxlYXNl
Tm9uTnVsbCgpLCByZXBlYXRYLCByZXBlYXRZLCBvcmlnaW5DbGVhbikgfTsKKyAgICByZXR1cm4g
UmVmUHRyPENhbnZhc1BhdHRlcm4+IHsgQ2FudmFzUGF0dGVybjo6Y3JlYXRlKHsgaW1hZ2VCdWZm
ZXIucmVsZWFzZU5vbk51bGwoKSB9LCByZXBlYXRYLCByZXBlYXRZLCBvcmlnaW5DbGVhbikgfTsK
IH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yQ2FudmFzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXMu
Y3BwCmluZGV4IGU4NDdmZTY4MTEyNzMyNTA2YjFkMDg0NmY2MzNkYWM0Yjk2OWQxNjUuLjAzMTlj
YzM3ZGYyNWYyYzY2Zjk2YzI1OTYxMjExNWM4OTM4M2M3N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXMuY3BwCkBAIC0xMzM2LDEwICsxMzM2LDcgQEAgUmVm
PEpTT046OkFycmF5T2Y8SlNPTjo6VmFsdWU+PiBJbnNwZWN0b3JDYW52YXM6OmJ1aWxkQXJyYXlG
b3JDYW52YXNHcmFkaWVudChjb24KIAogUmVmPEpTT046OkFycmF5T2Y8SlNPTjo6VmFsdWU+PiBJ
bnNwZWN0b3JDYW52YXM6OmJ1aWxkQXJyYXlGb3JDYW52YXNQYXR0ZXJuKGNvbnN0IENhbnZhc1Bh
dHRlcm4mIGNhbnZhc1BhdHRlcm4pCiB7Ci0gICAgYXV0byYgdGlsZUltYWdlID0gY2FudmFzUGF0
dGVybi5wYXR0ZXJuKCkudGlsZUltYWdlKCk7Ci0gICAgRmxvYXRSZWN0IHJlY3QgPSB7IHsgfSwg
dGlsZUltYWdlLnNpemUoKSB9OwotICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6
Y3JlYXRlKHRpbGVJbWFnZS5zaXplKCksIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEs
IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdSQTgpOwotICAg
IGltYWdlQnVmZmVyLT5jb250ZXh0KCkuZHJhd05hdGl2ZUltYWdlKHRpbGVJbWFnZSwgdGlsZUlt
YWdlLnNpemUoKSwgcmVjdCwgcmVjdCk7CisgICAgYXV0byBpbWFnZUJ1ZmZlciA9IGNhbnZhc1Bh
dHRlcm4ucGF0dGVybigpLnRpbGVJbWFnZUJ1ZmZlcigpOwogCiAgICAgU3RyaW5nIHJlcGVhdDsK
ICAgICBib29sIHJlcGVhdFggPSBjYW52YXNQYXR0ZXJuLnBhdHRlcm4oKS5yZXBlYXRYKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXR0ZXJuLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BhdHRlcm4uY3BwCmluZGV4IDYzNTMy
Mzc2OWY4MDMzZGUzMjhlOGQ0NGU1Nzk3NWExZDNjZDYwNjUuLmRhNGMwZjE1Y2ExNDAxMTFiYmFl
MTJkMjU4OWEzZDg0ZGJhNjAwNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL1BhdHRlcm4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL1BhdHRlcm4uY3BwCkBAIC0zMSwxMiArMzEsMTIgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi1SZWY8UGF0dGVybj4gUGF0dGVybjo6Y3JlYXRlKFJlZjxOYXRpdmVJbWFnZT4mJiB0aWxl
SW1hZ2UsIGNvbnN0IFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCitSZWY8UGF0dGVybj4gUGF0dGVy
bjo6Y3JlYXRlKFNvdXJjZUltYWdlJiYgdGlsZUltYWdlLCBjb25zdCBQYXJhbWV0ZXJzJiBwYXJh
bWV0ZXJzKQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFBhdHRlcm4oV1RGTW92ZSh0aWxl
SW1hZ2UpLCBwYXJhbWV0ZXJzKSk7CiB9CiAKLVBhdHRlcm46OlBhdHRlcm4oUmVmPE5hdGl2ZUlt
YWdlPiYmIGltYWdlLCBjb25zdCBQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQorUGF0dGVybjo6UGF0
dGVybihTb3VyY2VJbWFnZSYmIGltYWdlLCBjb25zdCBQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQog
ICAgIDogbV90aWxlSW1hZ2UoV1RGTW92ZShpbWFnZSkpCiAgICAgLCBtX3BhcmFtZXRlcnMocGFy
YW1ldGVycykKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L1BhdHRlcm4uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BhdHRlcm4uaApp
bmRleCA3MjE0ZTgyNTA3MWI1NDQ3ZTdiY2JmMjAzMDNkOTJmNjJjMjUyN2FmLi41YTIzN2EyZTYw
YTUxN2RmYzMxOWEyNzQ5MjViYjUxYjJlOTIzZTExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXR0ZXJuLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvUGF0dGVybi5oCkBAIC0yOCw3ICsyOCw3IEBACiAjcHJhZ21hIG9uY2UKIAog
I2luY2x1ZGUgIkFmZmluZVRyYW5zZm9ybS5oIgotI2luY2x1ZGUgIkltYWdlLmgiCisjaW5jbHVk
ZSAiU291cmNlSW1hZ2UuaCIKIAogI2luY2x1ZGUgPHd0Zi9SZWYuaD4KICNpbmNsdWRlIDx3dGYv
UmVmQ291bnRlZC5oPgpAQCAtNDUsNyArNDUsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNs
YXNzIEFmZmluZVRyYW5zZm9ybTsKIGNsYXNzIEdyYXBoaWNzQ29udGV4dDsKLWNsYXNzIEltYWdl
OwogCiBjbGFzcyBQYXR0ZXJuIGZpbmFsIDogcHVibGljIFJlZkNvdW50ZWQ8UGF0dGVybj4gewog
cHVibGljOgpAQCAtNjMsMTAgKzYyLDEyIEBAIHB1YmxpYzoKICAgICAgICAgYm9vbCByZXBlYXRZ
OwogICAgIH07CiAKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPFBhdHRlcm4+IGNyZWF0
ZShSZWY8TmF0aXZlSW1hZ2U+JiYgdGlsZUltYWdlLCBjb25zdCBQYXJhbWV0ZXJzJiA9IHsgfSk7
CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxQYXR0ZXJuPiBjcmVhdGUoU291cmNlSW1h
Z2UmJiB0aWxlSW1hZ2UsIGNvbnN0IFBhcmFtZXRlcnMmID0geyB9KTsKICAgICBXRUJDT1JFX0VY
UE9SVCB+UGF0dGVybigpOwogCi0gICAgTmF0aXZlSW1hZ2UmIHRpbGVJbWFnZSgpIGNvbnN0IHsg
cmV0dXJuIG1fdGlsZUltYWdlLmdldCgpOyB9CisgICAgY29uc3QgU291cmNlSW1hZ2UmIHRpbGVJ
bWFnZSgpIGNvbnN0IHsgcmV0dXJuIG1fdGlsZUltYWdlOyB9CisgICAgTmF0aXZlSW1hZ2UqIHRp
bGVOYXRpdmVJbWFnZSgpIGNvbnN0IHsgcmV0dXJuIG1fdGlsZUltYWdlLm5hdGl2ZUltYWdlKCk7
IH0KKyAgICBJbWFnZUJ1ZmZlciogdGlsZUltYWdlQnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV90
aWxlSW1hZ2UuaW1hZ2VCdWZmZXIoKTsgfQogICAgIGNvbnN0IFBhcmFtZXRlcnMmIHBhcmFtZXRl
cnMoKSBjb25zdCB7IHJldHVybiBtX3BhcmFtZXRlcnM7IH0KIAogICAgIC8vIFBhdHRlcm4gc3Bh
Y2UgaXMgYW4gYWJzdHJhY3Qgc3BhY2UgdGhhdCBtYXBzIHRvIHRoZSBkZWZhdWx0IHVzZXIgc3Bh
Y2UgYnkgdGhlIHRyYW5zZm9ybWF0aW9uICd1c2VyU3BhY2VUcmFuc2Zvcm0nCkBAIC03OCw5ICs3
OSw5IEBAIHB1YmxpYzoKICAgICBib29sIHJlcGVhdFkoKSBjb25zdCB7IHJldHVybiBtX3BhcmFt
ZXRlcnMucmVwZWF0WTsgfQogCiBwcml2YXRlOgotICAgIFBhdHRlcm4oUmVmPE5hdGl2ZUltYWdl
PiYmLCBjb25zdCBQYXJhbWV0ZXJzJik7CisgICAgUGF0dGVybihTb3VyY2VJbWFnZSYmLCBjb25z
dCBQYXJhbWV0ZXJzJik7CiAKLSAgICBSZWY8TmF0aXZlSW1hZ2U+IG1fdGlsZUltYWdlOworICAg
IG11dGFibGUgU291cmNlSW1hZ2UgbV90aWxlSW1hZ2U7CiAgICAgUGFyYW1ldGVycyBtX3BhcmFt
ZXRlcnM7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Tb3VyY2VJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Tb3Vy
Y2VJbWFnZS5jcHAKaW5kZXggOWNjM2IyYzg2NDEyMmRhMTdlY2MwOTAwZTk2Zjg3N2Y0NTY2YmQ1
Yy4uNmVmMzY2MzdkNjMzMmYzNTQyZWU4YzBjMWYxODIyZjkxZWNhMTFmMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlSW1hZ2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NvdXJjZUltYWdlLmNwcApAQCAtOTYsNCAr
OTYsMjAgQEAgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIFNvdXJjZUltYWdlOjppbWFnZUlk
ZW50aWZpZXIoKSBjb25zdAogICAgICk7CiB9CiAKK0ludFNpemUgU291cmNlSW1hZ2U6OnNpemUo
KSBjb25zdAoreworICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKG1faW1hZ2VWYXJpYW50LAorICAg
ICAgICBbJl0gKGNvbnN0IFJlZjxOYXRpdmVJbWFnZT4mIG5hdGl2ZUltYWdlKSB7CisgICAgICAg
ICAgICByZXR1cm4gbmF0aXZlSW1hZ2UtPnNpemUoKTsKKyAgICAgICAgfSwKKyAgICAgICAgWyZd
IChjb25zdCBSZWY8SW1hZ2VCdWZmZXI+JiBpbWFnZUJ1ZmZlcikgeworICAgICAgICAgICAgcmV0
dXJuIGltYWdlQnVmZmVyLT5iYWNrZW5kU2l6ZSgpOworICAgICAgICB9LAorICAgICAgICBbJl0g
KFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikgeworICAgICAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisgICAgICAgICAgICByZXR1cm4gSW50U2l6ZSgpOworICAgICAgICB9CisgICAg
KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL1NvdXJjZUltYWdlLmgKaW5kZXggMjBkM2Q4MGQ0MzYxNTg0ZDhmNGY0ZWNj
ZTgzMGM1NDlhOWNjODI5MC4uMDQzY2M1NWVkNDRlYWM4MWYwZTk0YjljMjI1YzU3M2YxODA1NzQ3
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlSW1h
Z2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Tb3VyY2VJbWFnZS5o
CkBAIC00OCw2ICs0OCw3IEBAIHB1YmxpYzoKICAgICBJbWFnZUJ1ZmZlciogaW1hZ2VCdWZmZXIo
KTsKIAogICAgIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBpbWFnZUlkZW50aWZpZXIoKSBj
b25zdDsKKyAgICBJbnRTaXplIHNpemUoKSBjb25zdDsKIAogICAgIHRlbXBsYXRlPGNsYXNzIEVu
Y29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKICAgICB0ZW1wbGF0ZTxjbGFzcyBE
ZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxTb3VyY2VJbWFnZT4gZGVjb2RlKERlY29kZXIm
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1Bh
dHRlcm5DYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Q
YXR0ZXJuQ2Fpcm8uY3BwCmluZGV4IDY4ZGFiYWY5OGFjYTlkMWNmYjcxZTE2NTIyYjlkZWIyNTgw
N2ZmMWYuLmEzZmNkNjhmZjhiN2NkOTZkNDRlMmY1N2E5NGEzOWU5MzcxYWMxOWEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BhdHRlcm5DYWlyby5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGF0dGVybkNh
aXJvLmNwcApAQCAtMzUsNyArMzUsMTEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjYWlyb19w
YXR0ZXJuX3QqIFBhdHRlcm46OmNyZWF0ZVBsYXRmb3JtUGF0dGVybihjb25zdCBBZmZpbmVUcmFu
c2Zvcm0mKSBjb25zdAogewotICAgIGF1dG8gcGxhdGZvcm1JbWFnZSA9IHRpbGVJbWFnZSgpLnBs
YXRmb3JtSW1hZ2UoKTsKKyAgICBhdXRvIG5hdGl2ZUltYWdlID0gdGlsZU5hdGl2ZUltYWdlKCk7
CisgICAgaWYgKCFuYXRpdmVJbWFnZSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBh
dXRvIHBsYXRmb3JtSW1hZ2UgPSBuYXRpdmVJbWFnZS0+cGxhdGZvcm1JbWFnZSgpOwogICAgIGlm
ICghcGxhdGZvcm1JbWFnZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BhdHRlcm5DRy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QYXR0ZXJuQ0cuY3BwCmluZGV4IDA1YTM5
MTY1NDBiYjc2ZGEzZjBhYmFhMzM5NGZjOGRkMDg4YzhkYTkuLmY2NWE3NzYwYzY1OTkxYjI3MWYy
ZDNmMmJjMjUyODE2MTVkMTc0ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NnL1BhdHRlcm5DRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvUGF0dGVybkNHLmNwcApAQCAtNTUsMTYgKzU1LDIwIEBAIHN0YXRpYyB2b2lk
IHBhdHRlcm5SZWxlYXNlQ2FsbGJhY2sodm9pZCogaW5mbykKIAogUmV0YWluUHRyPENHUGF0dGVy
blJlZj4gUGF0dGVybjo6Y3JlYXRlUGxhdGZvcm1QYXR0ZXJuKGNvbnN0IEFmZmluZVRyYW5zZm9y
bSYgdXNlclNwYWNlVHJhbnNmb3JtKSBjb25zdAogewotICAgIEZsb2F0UmVjdCB0aWxlUmVjdCA9
IHsgeyB9LCB0aWxlSW1hZ2UoKS5zaXplKCkgfTsKLQotICAgIEFmZmluZVRyYW5zZm9ybSBwYXR0
ZXJuVHJhbnNmb3JtID0gdXNlclNwYWNlVHJhbnNmb3JtICogcGF0dGVyblNwYWNlVHJhbnNmb3Jt
KCk7Ci0gICAgcGF0dGVyblRyYW5zZm9ybS5zY2FsZU5vblVuaWZvcm0oMSwgLTEpOwotICAgIHBh
dHRlcm5UcmFuc2Zvcm0udHJhbnNsYXRlKDAsIC10aWxlUmVjdC5oZWlnaHQoKSk7CisgICAgYXV0
byBuYXRpdmVJbWFnZSA9IHRpbGVOYXRpdmVJbWFnZSgpOworICAgIGlmICghbmF0aXZlSW1hZ2Up
CisgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgUGxhdGZvcm1JbWFnZVB0ciBwbGF0Zm9y
bUltYWdlID0gdGlsZUltYWdlKCkucGxhdGZvcm1JbWFnZSgpOworICAgIGF1dG8gcGxhdGZvcm1J
bWFnZSA9IG5hdGl2ZUltYWdlLT5wbGF0Zm9ybUltYWdlKCk7CiAgICAgaWYgKCFwbGF0Zm9ybUlt
YWdlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAorICAgIEZsb2F0UmVjdCB0aWxlUmVjdCA9
IHsgeyB9LCBuYXRpdmVJbWFnZS0+c2l6ZSgpIH07CisKKyAgICBhdXRvIHBhdHRlcm5UcmFuc2Zv
cm0gPSB1c2VyU3BhY2VUcmFuc2Zvcm0gKiBwYXR0ZXJuU3BhY2VUcmFuc2Zvcm0oKTsKKyAgICBw
YXR0ZXJuVHJhbnNmb3JtLnNjYWxlTm9uVW5pZm9ybSgxLCAtMSk7CisgICAgcGF0dGVyblRyYW5z
Zm9ybS50cmFuc2xhdGUoMCwgLXRpbGVSZWN0LmhlaWdodCgpKTsKKwogICAgIC8vIElmIHdlJ3Jl
IHJlcGVhdGluZyBpbiBib3RoIGRpcmVjdGlvbnMsIHdlIGNhbiB1c2UgaW1hZ2UtYmFja2VkIHBh
dHRlcm5zCiAgICAgLy8gaW5zdGVhZCBvZiBjdXN0b20gcGF0dGVybnMsIGFuZCBhdm9pZCB0aWxp
bmctZWRnZSBwaXhlbCBjcmFja3MuCiAgICAgaWYgKHJlcGVhdFgoKSAmJiByZXBlYXRZKCkpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3RJdGVtcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9k
aXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHAKaW5kZXggMzFhYzhiNGFkN2RiZjcyZGEz
NjRhMDU1Nzc2ZjZiMjk3OWE0NjlkNy4uMGRiZDQ5ZTUyZTM5Mzg1NGY2MjBlM2I3MDEzZGMwZDFj
NGRlYzE3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlz
cGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcApAQCAtMTYwLDEy
ICsxNjAsMTIgQEAgU2V0U3RhdGU6OlNldFN0YXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRl
Q2hhbmdlJiBzdGF0ZUNoYW5nZSwgY29uc3QgUGF0dGVybkQKIHsKIH0KIAotdm9pZCBTZXRTdGF0
ZTo6YXBwbHkoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBOYXRpdmVJbWFnZSogc3Ryb2tlUGF0
dGVybkltYWdlLCBOYXRpdmVJbWFnZSogZmlsbFBhdHRlcm5JbWFnZSkKK3ZvaWQgU2V0U3RhdGU6
OmFwcGx5KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgc3RkOjpvcHRpb25hbDxTb3VyY2VJbWFn
ZT4mJiBzdHJva2VQYXR0ZXJuSW1hZ2UsIHN0ZDo6b3B0aW9uYWw8U291cmNlSW1hZ2U+JiYgZmls
bFBhdHRlcm5JbWFnZSkKIHsKICAgICBpZiAobV9zdGF0ZUNoYW5nZS5tX2NoYW5nZUZsYWdzLmNv
bnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdHJva2VQYXR0ZXJuQ2hhbmdlKSAmJiBzdHJv
a2VQYXR0ZXJuSW1hZ2UpCi0gICAgICAgIG1fc3RhdGVDaGFuZ2UubV9zdGF0ZS5zdHJva2VQYXR0
ZXJuID0gUGF0dGVybjo6Y3JlYXRlKCpzdHJva2VQYXR0ZXJuSW1hZ2UsIG1fc3Ryb2tlUGF0dGVy
bi5wYXJhbWV0ZXJzKTsKKyAgICAgICAgbV9zdGF0ZUNoYW5nZS5tX3N0YXRlLnN0cm9rZVBhdHRl
cm4gPSBQYXR0ZXJuOjpjcmVhdGUoV1RGTW92ZSgqc3Ryb2tlUGF0dGVybkltYWdlKSwgbV9zdHJv
a2VQYXR0ZXJuLnBhcmFtZXRlcnMpOwogICAgIGlmIChtX3N0YXRlQ2hhbmdlLm1fY2hhbmdlRmxh
Z3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkZpbGxQYXR0ZXJuQ2hhbmdlKSAmJiBm
aWxsUGF0dGVybkltYWdlKQotICAgICAgICBtX3N0YXRlQ2hhbmdlLm1fc3RhdGUuZmlsbFBhdHRl
cm4gPSBQYXR0ZXJuOjpjcmVhdGUoKmZpbGxQYXR0ZXJuSW1hZ2UsIG1fZmlsbFBhdHRlcm4ucGFy
YW1ldGVycyk7CisgICAgICAgIG1fc3RhdGVDaGFuZ2UubV9zdGF0ZS5maWxsUGF0dGVybiA9IFBh
dHRlcm46OmNyZWF0ZShXVEZNb3ZlKCpmaWxsUGF0dGVybkltYWdlKSwgbV9maWxsUGF0dGVybi5w
YXJhbWV0ZXJzKTsKICAgICBtX3N0YXRlQ2hhbmdlLmFwcGx5KGNvbnRleHQpOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3RJdGVtcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaAppbmRleCBlZjBjMTg3N2QxOTM4YmRjMDYxMDU0Yjk0
MmZhNjI4MGJjNDdmMjAzLi5lYTJlNzU2Mjc0NTcwYjdjYjdiMTQ1MGU3ODk3NGY3NGIzNmI3NThk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3RJdGVtcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmgKQEAgLTI1Nyw3ICsyNTcsNyBAQCBw
dWJsaWM6CiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYp
IGNvbnN0OwogICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFs
PFNldFN0YXRlPiBkZWNvZGUoRGVjb2RlciYpOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBh
cHBseShHcmFwaGljc0NvbnRleHQmLCBOYXRpdmVJbWFnZSogc3Ryb2tlUGF0dGVybkltYWdlLCBO
YXRpdmVJbWFnZSogZmlsbFBhdHRlcm5JbWFnZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBh
cHBseShHcmFwaGljc0NvbnRleHQmLCBzdGQ6Om9wdGlvbmFsPFNvdXJjZUltYWdlPiYmIHN0cm9r
ZVBhdHRlcm5JbWFnZSwgc3RkOjpvcHRpb25hbDxTb3VyY2VJbWFnZT4mJiBmaWxsUGF0dGVybklt
YWdlKTsKIAogcHJpdmF0ZToKICAgICBzdHJ1Y3QgUGF0dGVybkRhdGEgewpAQCAtMjg3LDcgKzI4
Nyw3IEBAIHZvaWQgU2V0U3RhdGU6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogCiAg
ICAgaWYgKGNoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdHJva2VQ
YXR0ZXJuQ2hhbmdlKSkgewogICAgICAgICBBU1NFUlQoc3RhdGUuc3Ryb2tlUGF0dGVybik7Ci0g
ICAgICAgIGVuY29kZXIgPDwgc3RhdGUuc3Ryb2tlUGF0dGVybi0+dGlsZUltYWdlKCkucmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyKCk7CisgICAgICAgIGVuY29kZXIgPDwgc3RhdGUuc3Ryb2tl
UGF0dGVybi0+dGlsZUltYWdlKCk7CiAgICAgICAgIGVuY29kZXIgPDwgc3RhdGUuc3Ryb2tlUGF0
dGVybi0+cGFyYW1ldGVycygpOwogICAgIH0KIApAQCAtMjk4LDcgKzI5OCw3IEBAIHZvaWQgU2V0
U3RhdGU6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogCiAgICAgaWYgKGNoYW5nZUZs
YWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpGaWxsUGF0dGVybkNoYW5nZSkpIHsK
ICAgICAgICAgQVNTRVJUKHN0YXRlLmZpbGxQYXR0ZXJuKTsKLSAgICAgICAgZW5jb2RlciA8PCBz
dGF0ZS5maWxsUGF0dGVybi0+dGlsZUltYWdlKCkucmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
KCk7CisgICAgICAgIGVuY29kZXIgPDwgc3RhdGUuZmlsbFBhdHRlcm4tPnRpbGVJbWFnZSgpOwog
ICAgICAgICBlbmNvZGVyIDw8IHN0YXRlLmZpbGxQYXR0ZXJuLT5wYXJhbWV0ZXJzKCk7CiAgICAg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5
bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5jcHAKaW5kZXggMjE4NjUw
YWY1OGE0YTdiY2YyYzE0MTBmZjBlZjAwNTA2ODFiNmVlZC4uYWM2ZWE5NWZhN2IzOTIwMzlmZTQ3
Mzc1MGJiZDQzNzdiNjhlY2UzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxh
eWVyLmNwcApAQCAtODUsMzIgKzg1LDM1IEBAIGlubGluZSBzdGF0aWMgc3RkOjpvcHRpb25hbDxS
ZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+IGFwcGx5U2V0U3RhdGVJdGVtKEdyYXBoCiB7CiAg
ICAgYXV0byYgc2V0U3RhdGVJdGVtID0gaXRlbS5nZXQ8U2V0U3RhdGU+KCk7CiAKLSAgICBSZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgc3Ryb2tlUGF0dGVyblJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllcjsKLSAgICBOYXRpdmVJbWFnZSogc3Ryb2tlUGF0dGVybkltYWdlID0gbnVsbHB0cjsK
LSAgICBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgZmlsbFBhdHRlcm5SZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXI7Ci0gICAgTmF0aXZlSW1hZ2UqIGZpbGxQYXR0ZXJuSW1hZ2UgPSBudWxs
cHRyOwotCi0gICAgaWYgKChzdHJva2VQYXR0ZXJuUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
ID0gc2V0U3RhdGVJdGVtLnN0cm9rZVBhdHRlcm5JbWFnZUlkZW50aWZpZXIoKSkpIHsKLSAgICAg
ICAgc3Ryb2tlUGF0dGVybkltYWdlID0gcmVzb3VyY2VIZWFwLmdldE5hdGl2ZUltYWdlKHN0cm9r
ZVBhdHRlcm5SZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwotICAgICAgICBpZiAoIXN0cm9r
ZVBhdHRlcm5JbWFnZSkKLSAgICAgICAgICAgIHJldHVybiBzdHJva2VQYXR0ZXJuUmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyOwotICAgIH0KKyAgICBhdXRvIGNhY2hlZFNvdXJjZUltYWdlID0g
WyZdKGF1dG8gaW1hZ2VJZGVudGlmaWVyKSAtPiBzdGQ6Om9wdGlvbmFsPFNvdXJjZUltYWdlPiB7
CisgICAgICAgIGlmICghaW1hZ2VJZGVudGlmaWVyKQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKKyAgICAgICAgaWYgKGF1dG8gbmF0aXZlSW1hZ2UgPSByZXNvdXJjZUhlYXAuZ2V0
TmF0aXZlSW1hZ2UoaW1hZ2VJZGVudGlmaWVyKSkKKyAgICAgICAgICAgIHJldHVybiBTb3VyY2VJ
bWFnZSgqbmF0aXZlSW1hZ2UpOworICAgICAgICBpZiAoYXV0byBpbWFnZUJ1ZmZlciA9IHJlc291
cmNlSGVhcC5nZXRJbWFnZUJ1ZmZlcihpbWFnZUlkZW50aWZpZXIpKQorICAgICAgICAgICAgcmV0
dXJuIFNvdXJjZUltYWdlKCppbWFnZUJ1ZmZlcik7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CisgICAgfTsKIAotICAgIGlmICgoZmlsbFBhdHRlcm5SZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXIgPSBzZXRTdGF0ZUl0ZW0uZmlsbFBhdHRlcm5JbWFnZUlkZW50aWZpZXIoKSkpIHsKLSAg
ICAgICAgZmlsbFBhdHRlcm5JbWFnZSA9IHJlc291cmNlSGVhcC5nZXROYXRpdmVJbWFnZShmaWxs
UGF0dGVyblJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7Ci0gICAgICAgIGlmICghZmlsbFBh
dHRlcm5JbWFnZSkKLSAgICAgICAgICAgIHJldHVybiBmaWxsUGF0dGVyblJlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllcjsKLSAgICB9CisgICAgYXV0byBzdHJva2VQYXR0ZXJuSW1hZ2VJZGVudGlm
aWVyID0gc2V0U3RhdGVJdGVtLnN0cm9rZVBhdHRlcm5JbWFnZUlkZW50aWZpZXIoKTsKKyAgICBh
dXRvIHN0cm9rZVBhdHRlcm5JbWFnZSA9IGNhY2hlZFNvdXJjZUltYWdlKHN0cm9rZVBhdHRlcm5J
bWFnZUlkZW50aWZpZXIpOworICAgIGlmICghc3Ryb2tlUGF0dGVybkltYWdlICYmIHN0cm9rZVBh
dHRlcm5JbWFnZUlkZW50aWZpZXIpCisgICAgICAgIHJldHVybiBzdHJva2VQYXR0ZXJuSW1hZ2VJ
ZGVudGlmaWVyOworCisgICAgYXV0byBmaWxsUGF0dGVybkltYWdlSWRlbnRpZmllciA9IHNldFN0
YXRlSXRlbS5maWxsUGF0dGVybkltYWdlSWRlbnRpZmllcigpOworICAgIGF1dG8gZmlsbFBhdHRl
cm5JbWFnZSA9IGNhY2hlZFNvdXJjZUltYWdlKGZpbGxQYXR0ZXJuSW1hZ2VJZGVudGlmaWVyKTsK
KyAgICBpZiAoIWZpbGxQYXR0ZXJuSW1hZ2UgJiYgZmlsbFBhdHRlcm5JbWFnZUlkZW50aWZpZXIp
CisgICAgICAgIHJldHVybiBmaWxsUGF0dGVybkltYWdlSWRlbnRpZmllcjsKIAotICAgIHNldFN0
YXRlSXRlbS5hcHBseShjb250ZXh0LCBzdHJva2VQYXR0ZXJuSW1hZ2UsIGZpbGxQYXR0ZXJuSW1h
Z2UpOworICAgIHNldFN0YXRlSXRlbS5hcHBseShjb250ZXh0LCBXVEZNb3ZlKHN0cm9rZVBhdHRl
cm5JbWFnZSksIFdURk1vdmUoZmlsbFBhdHRlcm5JbWFnZSkpOwogCiAgICAgaWYgKCFkZWxlZ2F0
ZSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIGlmIChzdHJva2VQYXR0ZXJu
UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQotICAgICAgICBkZWxlZ2F0ZS0+cmVjb3JkUmVz
b3VyY2VVc2Uoc3Ryb2tlUGF0dGVyblJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7Ci0gICAg
aWYgKGZpbGxQYXR0ZXJuUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQotICAgICAgICBkZWxl
Z2F0ZS0+cmVjb3JkUmVzb3VyY2VVc2UoZmlsbFBhdHRlcm5SZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXIpOworICAgIGlmIChzdHJva2VQYXR0ZXJuSW1hZ2VJZGVudGlmaWVyKQorICAgICAgICBk
ZWxlZ2F0ZS0+cmVjb3JkUmVzb3VyY2VVc2Uoc3Ryb2tlUGF0dGVybkltYWdlSWRlbnRpZmllcik7
CisgICAgaWYgKGZpbGxQYXR0ZXJuSW1hZ2VJZGVudGlmaWVyKQorICAgICAgICBkZWxlZ2F0ZS0+
cmVjb3JkUmVzb3VyY2VVc2UoZmlsbFBhdHRlcm5JbWFnZUlkZW50aWZpZXIpOwogICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvc29mdHdhcmUvRkVUaWxlU29mdHdhcmVBcHBsaWVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc29mdHdhcmUvRkVUaWxlU29m
dHdhcmVBcHBsaWVyLmNwcAppbmRleCBiNzk5MWY0OTQ5MDRlOWMzZTQ1MWE0YTM0YTZmMjg5ZGNj
ZmE0MzFiLi41NTJkMTk0NmYyOGJlMDk0NmNhMDQ2ZTA2ZmQ3ZTNhOGM5ZmZmZWMwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NvZnR3YXJlL0ZF
VGlsZVNvZnR3YXJlQXBwbGllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9zb2Z0d2FyZS9GRVRpbGVTb2Z0d2FyZUFwcGxpZXIuY3BwCkBAIC01Nywx
NCArNTcsMTAgQEAgYm9vbCBGRVRpbGVTb2Z0d2FyZUFwcGxpZXI6OmFwcGx5KGNvbnN0IEZpbHRl
ciYgZmlsdGVyLCBjb25zdCBGaWx0ZXJJbWFnZVZlY3RvciYKICAgICB0aWxlSW1hZ2VDb250ZXh0
LnRyYW5zbGF0ZSgtdGlsZVJlY3QubG9jYXRpb24oKSk7CiAgICAgdGlsZUltYWdlQ29udGV4dC5k
cmF3SW1hZ2VCdWZmZXIoKmlucHV0SW1hZ2UsIGlucHV0SW1hZ2VSZWN0LmxvY2F0aW9uKCkpOwog
Ci0gICAgYXV0byBwYXR0ZXJuSW1hZ2UgPSBJbWFnZUJ1ZmZlcjo6c2lua0ludG9OYXRpdmVJbWFn
ZShXVEZNb3ZlKHRpbGVJbWFnZSkpOwotICAgIGlmICghcGF0dGVybkltYWdlKQotICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0KICAgICBBZmZpbmVUcmFuc2Zvcm0gcGF0dGVyblRyYW5zZm9ybTsKICAg
ICBwYXR0ZXJuVHJhbnNmb3JtLnRyYW5zbGF0ZSh0aWxlUmVjdC5sb2NhdGlvbigpIC0gbWF4UmVz
dWx0UmVjdC5sb2NhdGlvbigpKTsKIAotICAgIGF1dG8gcGF0dGVybiA9IFBhdHRlcm46OmNyZWF0
ZShwYXR0ZXJuSW1hZ2UucmVsZWFzZU5vbk51bGwoKSwgeyB0cnVlLCB0cnVlLCBwYXR0ZXJuVHJh
bnNmb3JtIH0pOworICAgIGF1dG8gcGF0dGVybiA9IFBhdHRlcm46OmNyZWF0ZSh7IHRpbGVJbWFn
ZS5yZWxlYXNlTm9uTnVsbCgpIH0sIHsgdHJ1ZSwgdHJ1ZSwgcGF0dGVyblRyYW5zZm9ybSB9KTsK
IAogICAgIGF1dG8mIHJlc3VsdENvbnRleHQgPSByZXN1bHRJbWFnZS0+Y29udGV4dCgpOwogICAg
IHJlc3VsdENvbnRleHQuc2V0RmlsbFBhdHRlcm4oV1RGTW92ZShwYXR0ZXJuKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCmluZGV4IDY4Nzlj
YTVlZTcwZjUxYjdmNDJiNGM1ZjU0Y2YxYjQwYzI5ZTJlYmYuLmExYzQ5ZTMxOTlmZWY2MGZkMTdl
ZmY3MWFiMjQ4MzQ4OWFkZGI5YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMYXllckJhY2tpbmcuY3BwCkBAIC0zMzM1LDEzICszMzM1LDExIEBAIHN0YXRpYyBSZWZQ
dHI8UGF0dGVybj4gcGF0dGVybkZvckRlc2NyaXB0aW9uKFBhdHRlcm5EZXNjcmlwdGlvbiBkZXNj
cmlwdGlvbiwgRmxvCiAgICAgICAgIGltYWdlQ29udGV4dC5kcmF3VGV4dChmb250LCB0ZXh0UnVu
LCB7IHRleHRHYXAsIHlPZmZzZXQgfSwgMCk7CiAgICAgfQogCi0gICAgYXV0byB0aWxlSW1hZ2Ug
PSBJbWFnZUJ1ZmZlcjo6c2lua0ludG9OYXRpdmVJbWFnZShXVEZNb3ZlKGltYWdlQnVmZmVyKSk7
Ci0KICAgICBBZmZpbmVUcmFuc2Zvcm0gcGF0dGVybk9mZnNldFRyYW5zZm9ybTsKICAgICBwYXR0
ZXJuT2Zmc2V0VHJhbnNmb3JtLnRyYW5zbGF0ZShjb250ZW50T2Zmc2V0ICsgZGVzY3JpcHRpb24u
cGhhc2UpOwogICAgIHBhdHRlcm5PZmZzZXRUcmFuc2Zvcm0uc2NhbGUoMSAvIGRlc3RDb250ZXh0
LnNjYWxlRmFjdG9yKCkpOwogCi0gICAgcmV0dXJuIFBhdHRlcm46OmNyZWF0ZSh0aWxlSW1hZ2Uu
cmVsZWFzZU5vbk51bGwoKSwgeyB0cnVlLCB0cnVlLCBwYXR0ZXJuT2Zmc2V0VHJhbnNmb3JtfSk7
CisgICAgcmV0dXJuIFBhdHRlcm46OmNyZWF0ZSh7IGltYWdlQnVmZmVyLnJlbGVhc2VOb25OdWxs
KCkgfSwgeyB0cnVlLCB0cnVlLCBwYXR0ZXJuT2Zmc2V0VHJhbnNmb3JtIH0pOwogfTsKICNlbmRp
ZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jl
c291cmNlUGF0dGVybi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R1Jlc291cmNlUGF0dGVybi5jcHAKaW5kZXggYjEyNjhiODM1NzA1NWEwYWMwNjgzNGQxMTljYTdh
NjI2YTRmZjY5Ni4uZThiNTFjZmI5Mzk0OTI2MzgxZWYzYjA0YTNlMTdhNWZkMTVjMDg2YiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVBh
dHRlcm4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVz
b3VyY2VQYXR0ZXJuLmNwcApAQCAtMTEzLDEwICsxMTMsNiBAQCBQYXR0ZXJuRGF0YSogUmVuZGVy
U1ZHUmVzb3VyY2VQYXR0ZXJuOjpidWlsZFBhdHRlcm4oUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIs
IE9wdAogCiAgICAgYXV0byB0aWxlSW1hZ2VTaXplID0gdGlsZUltYWdlLT5sb2dpY2FsU2l6ZSgp
OwogCi0gICAgYXV0byBjb3BpZWRJbWFnZSA9IEltYWdlQnVmZmVyOjpzaW5rSW50b05hdGl2ZUlt
YWdlKFdURk1vdmUodGlsZUltYWdlKSk7Ci0gICAgaWYgKCFjb3BpZWRJbWFnZSkKLSAgICAgICAg
cmV0dXJuIG51bGxwdHI7Ci0KICAgICAvLyBDb21wdXRlIHBhdHRlcm4gc3BhY2UgdHJhbnNmb3Jt
YXRpb24uCiAgICAgYXV0byBwYXR0ZXJuRGF0YSA9IG1ha2VVbmlxdWU8UGF0dGVybkRhdGE+KCk7
CiAgICAgcGF0dGVybkRhdGEtPnRyYW5zZm9ybS50cmFuc2xhdGUodGlsZUJvdW5kYXJpZXMubG9j
YXRpb24oKSk7CkBAIC0xMzQsNyArMTMwLDcgQEAgUGF0dGVybkRhdGEqIFJlbmRlclNWR1Jlc291
cmNlUGF0dGVybjo6YnVpbGRQYXR0ZXJuKFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBPcHQKICAg
ICB9CiAKICAgICAvLyBCdWlsZCBwYXR0ZXJuLgotICAgIHBhdHRlcm5EYXRhLT5wYXR0ZXJuID0g
UGF0dGVybjo6Y3JlYXRlKGNvcGllZEltYWdlLnJlbGVhc2VOb25OdWxsKCksIHsgdHJ1ZSwgdHJ1
ZSwgcGF0dGVybkRhdGEtPnRyYW5zZm9ybSB9KTsKKyAgICBwYXR0ZXJuRGF0YS0+cGF0dGVybiA9
IFBhdHRlcm46OmNyZWF0ZSh7IHRpbGVJbWFnZS5yZWxlYXNlTm9uTnVsbCgpIH0sIHsgdHJ1ZSwg
dHJ1ZSwgcGF0dGVybkRhdGEtPnRyYW5zZm9ybSB9KTsKIAogICAgIC8vIFZhcmlvdXMgY2FsbHMg
YWJvdmUgbWF5IHRyaWdnZXIgaW52YWxpZGF0aW9ucyBpbiBzb21lIGZyaW5nZSBjYXNlcyAoSW1h
Z2VCdWZmZXIgYWxsb2NhdGlvbgogICAgIC8vIGZhaWx1cmVzIGluIHRoZSBTVkcgaW1hZ2UgY2Fj
aGUgZm9yIGV4YW1wbGUpLiBUbyBhdm9pZCBoYXZpbmcgb3VyIFBhdHRlcm5EYXRhIGRlbGV0ZWQg
YnkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVE
aXNwbGF5TGlzdFJlY29yZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGlj
cy9SZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyLmNwcAppbmRleCBkOWFmNTg0MGRmNjg0M2Q5ZTYx
OWRiNjYyZWM5MGVhNDgxODU3OTZhLi5hMGE2MjJmZDQ2ZTk5ZjZlMzQzMjE3OTIwMzY0MTk4NjNi
NTdmYTk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVt
b3RlRGlzcGxheUxpc3RSZWNvcmRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L2dyYXBoaWNzL1JlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCkBAIC0xMjUsMjAgKzEyNSwz
MCBAQCB2b2lkIFJlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXI6OnNldFN0YXRlKERpc3BsYXlMaXN0
OjpTZXRTdGF0ZSYmIGl0ZW0pCiAKIHZvaWQgUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlcjo6c2V0
U3RhdGVXaXRoUXVhbGlmaWVkSWRlbnRpZmllcnMoRGlzcGxheUxpc3Q6OlNldFN0YXRlJiYgaXRl
bSwgUXVhbGlmaWVkUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHN0cm9rZVBhdHRlcm5JbWFn
ZUlkZW50aWZpZXIsIFF1YWxpZmllZFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBmaWxsUGF0
dGVybkltYWdlSWRlbnRpZmllcikKIHsKLSAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+IHN0cm9rZVBh
dHRlcm5JbWFnZTsKKyAgICBhdXRvIGNhY2hlZFNvdXJjZUltYWdlID0gWyZdKGF1dG8gaW1hZ2VJ
ZGVudGlmaWVyKSAtPiBzdGQ6Om9wdGlvbmFsPFNvdXJjZUltYWdlPiB7CisgICAgICAgIGlmICgh
aW1hZ2VJZGVudGlmaWVyKQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAg
ICAgaWYgKGF1dG8gbmF0aXZlSW1hZ2UgPSByZXNvdXJjZUNhY2hlKCkuY2FjaGVkTmF0aXZlSW1h
Z2UoaW1hZ2VJZGVudGlmaWVyKSkKKyAgICAgICAgICAgIHJldHVybiBTb3VyY2VJbWFnZSgqbmF0
aXZlSW1hZ2UpOworICAgICAgICBpZiAoYXV0byBpbWFnZUJ1ZmZlciA9IHJlc291cmNlQ2FjaGUo
KS5jYWNoZWRJbWFnZUJ1ZmZlcihpbWFnZUlkZW50aWZpZXIpKQorICAgICAgICAgICAgcmV0dXJu
IFNvdXJjZUltYWdlKCppbWFnZUJ1ZmZlcik7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CisgICAgfTsKKworICAgIGF1dG8gc3Ryb2tlUGF0dGVybkltYWdlID0gY2FjaGVkU291cmNlSW1h
Z2Uoc3Ryb2tlUGF0dGVybkltYWdlSWRlbnRpZmllcik7CisgICAgaWYgKCFzdHJva2VQYXR0ZXJu
SW1hZ2UpCisgICAgICAgIHN0cm9rZVBhdHRlcm5JbWFnZUlkZW50aWZpZXIgPSB7IH07CisKKyAg
ICBhdXRvIGZpbGxQYXR0ZXJuSW1hZ2UgPSBjYWNoZWRTb3VyY2VJbWFnZShmaWxsUGF0dGVybklt
YWdlSWRlbnRpZmllcik7CisgICAgaWYgKCFmaWxsUGF0dGVybkltYWdlKQorICAgICAgICBmaWxs
UGF0dGVybkltYWdlSWRlbnRpZmllciA9IHsgfTsKKworICAgIGhhbmRsZUl0ZW0oV1RGTW92ZShp
dGVtKSwgV1RGTW92ZShzdHJva2VQYXR0ZXJuSW1hZ2UpLCBXVEZNb3ZlKGZpbGxQYXR0ZXJuSW1h
Z2UpKTsKKyAgICAKICAgICBpZiAoc3Ryb2tlUGF0dGVybkltYWdlSWRlbnRpZmllcikKLSAgICAg
ICAgc3Ryb2tlUGF0dGVybkltYWdlID0gcmVzb3VyY2VDYWNoZSgpLmNhY2hlZE5hdGl2ZUltYWdl
KHN0cm9rZVBhdHRlcm5JbWFnZUlkZW50aWZpZXIpOwotCi0gICAgUmVmUHRyPE5hdGl2ZUltYWdl
PiBmaWxsUGF0dGVybkltYWdlOwotICAgIGlmIChmaWxsUGF0dGVybkltYWdlSWRlbnRpZmllcikK
LSAgICAgICAgZmlsbFBhdHRlcm5JbWFnZSA9IHJlc291cmNlQ2FjaGUoKS5jYWNoZWROYXRpdmVJ
bWFnZShmaWxsUGF0dGVybkltYWdlSWRlbnRpZmllcik7Ci0KLSAgICBoYW5kbGVJdGVtKFdURk1v
dmUoaXRlbSksIHN0cm9rZVBhdHRlcm5JbWFnZS5nZXQoKSwgZmlsbFBhdHRlcm5JbWFnZS5nZXQo
KSk7Ci0KLSAgICBpZiAoc3Ryb2tlUGF0dGVybkltYWdlKQogICAgICAgICByZXNvdXJjZUNhY2hl
KCkucmVjb3JkUmVzb3VyY2VVc2Uoc3Ryb2tlUGF0dGVybkltYWdlSWRlbnRpZmllcik7CiAKLSAg
ICBpZiAoZmlsbFBhdHRlcm5JbWFnZSkKKyAgICBpZiAoZmlsbFBhdHRlcm5JbWFnZUlkZW50aWZp
ZXIpCiAgICAgICAgIHJlc291cmNlQ2FjaGUoKS5yZWNvcmRSZXNvdXJjZVVzZShmaWxsUGF0dGVy
bkltYWdlSWRlbnRpZmllcik7CiB9CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxv
ZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAxYjlmODI4YjU3NWRkODE4NzU1YTFkZWQ1
MmNlMDc2NzI3MTU3ODMxLi4xZDYxYzVkZjIzMGE0ZTBmMmMwYTU2ZmE1NjM2YWJkNWEyNzFlYzUx
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjItMDEtMjQgIFNhaWQgQWJvdS1IYWxsYXdhICA8
c2FpZEBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQVSBQcm9jZXNzXSBQYXR0ZXJuIHNob3VsZCBo
b2xkIFNvdXJjZUltYWdlIHdoaWNoIGNhbiBiZSBjb252ZXJ0ZWQgdG8gYSBOYXRpdmVJbWFnZSBv
bmx5IHdoZW4gbmVlZGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMzI0MTEKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzg0OTk4NzM4PgorCisgICAg
ICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgIFVuc2tpcCBsYXlvdXQgdGVz
dHMgZm9yIGdwdSBwcm9jZXNzIGJlY2F1c2UgdGhleSBhcmUgZml4ZWQgYnkgdGhpcyBjaGFuZ2Uu
CisKKyAgICAgICAgKiBncHUtcHJvY2Vzcy9UZXN0RXhwZWN0YXRpb25zOgorCiAyMDIyLTAxLTIz
ICBNYXR0IFdvb2Ryb3cgIDxtYXR0d29vZHJvd0BhcHBsZS5jb20+CiAKICAgICAgICAgUG9zaXRp
b246Zml4ZWQgbGF5ZXJzIHNob3VsZG4ndCBhbGxvY2F0ZSBhIGJhY2tpbmcgYnVmZmVyIGlmIGFs
bCBjaGlsZHJlbiBhcmUgb2Zmc2NyZWVuLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZ3B1LXBy
b2Nlc3MvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL2dwdS1wcm9jZXNzL1Rlc3RFeHBl
Y3RhdGlvbnMKaW5kZXggY2E4ZTQ5YWUxNDJlOTY0OGNiMWU0ODhiMmM1Mjk0MjVlY2NhYWFiNy4u
NWFlOGM4YWY0YzNjZTY2ZDM1ODMwNGEzYzYyZjJjNzQ4MmRiNTUxMCAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvZ3B1LXByb2Nlc3MvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9n
cHUtcHJvY2Vzcy9UZXN0RXhwZWN0YXRpb25zCkBAIC0yNDUsOCArMjQ1LDYgQEAgaW1wb3J0ZWQv
Ymxpbmsvc3ZnL2FzLWltYWdlL3N2Zy1hcy1pbWFnZS1vYmplY3QtZml0LWNvbnRhaW4uaHRtbAog
aW1wb3J0ZWQvYmxpbmsvc3ZnL2FzLWltYWdlL3N2Zy1hcy1pbWFnZS1vYmplY3QtZml0LWNvdmVy
Lmh0bWwKIGltcG9ydGVkL2JsaW5rL3N2Zy9hcy1pbWFnZS9zdmd2aWV3LXJlZmVyZW5jZXMuaHRt
bAogaW1wb3J0ZWQvYmxpbmsvc3ZnL2N1c3RvbS9maWxsLWZhbGxiYWNrLWN1cnJlbnRjb2xvci0x
LnN2ZwotaW1wb3J0ZWQvYmxpbmsvc3ZnL2N1c3RvbS90cmFuc2Zvcm1lZC10ZXh0LXBhdHRlcm4u
aHRtbCBbIENyYXNoIF0KLWltcG9ydGVkL2JsaW5rL3N2Zy9jdXN0b20vdmlld3BvcnQtcmVzb3Vy
Y2UtaW52YWwuc3ZnIFsgQ3Jhc2ggXQogaW1wb3J0ZWQvYmxpbmsvc3ZnL3RleHQvb2JiLXBhaW50
c2VydmVyLmh0bWwKIGltcG9ydGVkL21vemlsbGEvc3ZnL2FzLWltYWdlL2JhY2tncm91bmQtcmVz
aXplLTMuaHRtbAogaW1wb3J0ZWQvbW96aWxsYS9zdmcvYXMtaW1hZ2UvYmFja2dyb3VuZC1yZXNp
emUtNC5odG1sCkBAIC0yNjEsMzkgKzI1OSwxOSBAQCBpbXBvcnRlZC9tb3ppbGxhL3N2Zy9ibGVu
ZC1vdmVybGF5LnN2ZwogaW1wb3J0ZWQvbW96aWxsYS9zdmcvYmxlbmQtc2F0dXJhdGlvbi5zdmcK
IGltcG9ydGVkL21vemlsbGEvc3ZnL2NvbmRpdGlvbnMtMDguc3ZnIFsgQ3Jhc2ggXQogaW1wb3J0
ZWQvbW96aWxsYS9zdmcvZHluYW1pYy1wYXR0ZXJuLTAxLnN2ZyBbIENyYXNoIF0KLWltcG9ydGVk
L21vemlsbGEvc3ZnL2R5bmFtaWMtcGF0dGVybi0wMi5zdmcgWyBDcmFzaCBdCi1pbXBvcnRlZC9t
b3ppbGxhL3N2Zy9keW5hbWljLXBhdHRlcm4tY29udGVudHMtMDEuc3ZnIFsgQ3Jhc2ggXQotaW1w
b3J0ZWQvbW96aWxsYS9zdmcvZHluYW1pYy1wYXR0ZXJuLWNvbnRlbnRzLTAyLnN2ZyBbIENyYXNo
IF0KIGltcG9ydGVkL21vemlsbGEvc3ZnL2ZpbHRlcnMvZmVDb21wb3NpdGUtMi5zdmcKIGltcG9y
dGVkL21vemlsbGEvc3ZnL2ZpbHRlcnMvZmVGbG9vZC0xLnN2ZwogaW1wb3J0ZWQvbW96aWxsYS9z
dmcvZmlsdGVycy9mZUZsb29kLTIuc3ZnCiBpbXBvcnRlZC9tb3ppbGxhL3N2Zy9maWx0ZXJzL2Zl
SW1hZ2UtMS5zdmcKIGltcG9ydGVkL21vemlsbGEvc3ZnL2xpbmVhckdyYWRpZW50LWJhc2ljLTAz
LnN2ZwogaW1wb3J0ZWQvbW96aWxsYS9zdmcvbWFzay10eXBlLTAxLnN2ZwotaW1wb3J0ZWQvbW96
aWxsYS9zdmcvb2JqZWN0Qm91bmRpbmdCb3gtYW5kLXBhdHRlcm4tMDFhLnN2ZyBbIENyYXNoIF0K
LWltcG9ydGVkL21vemlsbGEvc3ZnL29iamVjdEJvdW5kaW5nQm94LWFuZC1wYXR0ZXJuLTAxYi5z
dmcgWyBDcmFzaCBdCi1pbXBvcnRlZC9tb3ppbGxhL3N2Zy9vYmplY3RCb3VuZGluZ0JveC1hbmQt
cGF0dGVybi0wMWMuc3ZnIFsgQ3Jhc2ggXQotaW1wb3J0ZWQvbW96aWxsYS9zdmcvb2JqZWN0Qm91
bmRpbmdCb3gtYW5kLXBhdHRlcm4tMDIuc3ZnIFsgQ3Jhc2ggXQotaW1wb3J0ZWQvbW96aWxsYS9z
dmcvb2JqZWN0Qm91bmRpbmdCb3gtYW5kLXBhdHRlcm4tMDMuc3ZnIFsgQ3Jhc2ggXQogaW1wb3J0
ZWQvbW96aWxsYS9zdmcvb3BhY2l0eS1hbmQtZ3JhZGllbnQtMDIuc3ZnCiBpbXBvcnRlZC9tb3pp
bGxhL3N2Zy9wYWludC1vcmRlci0wMS5zdmcKIGltcG9ydGVkL21vemlsbGEvc3ZnL3BhdGgtMDIu
c3ZnCi1pbXBvcnRlZC9tb3ppbGxhL3N2Zy9wYXR0ZXJuLWJhc2ljLTAxLnN2ZyBbIENyYXNoIF0K
LWltcG9ydGVkL21vemlsbGEvc3ZnL3BhdHRlcm4tbGl2ZS0wMWEuc3ZnIFsgQ3Jhc2ggXQotaW1w
b3J0ZWQvbW96aWxsYS9zdmcvcGF0dGVybi1saXZlLTAxYi5zdmcgWyBDcmFzaCBdCi1pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy9wYXR0ZXJuLXNjYWxlLTAxYS5zdmcgWyBDcmFzaCBdCi1pbXBvcnRlZC9t
b3ppbGxhL3N2Zy9wYXR0ZXJuLXNjYWxlLTAxYi5zdmcgWyBDcmFzaCBdCi1pbXBvcnRlZC9tb3pp
bGxhL3N2Zy9wYXR0ZXJuLXNjYWxlLTAxYy5zdmcgWyBDcmFzaCBdCi1pbXBvcnRlZC9tb3ppbGxh
L3N2Zy9wYXR0ZXJuLXRyYW5zZm9ybS1wcmVzZW5jZS0wMS5zdmcgWyBDcmFzaCBdCiBpbXBvcnRl
ZC9tb3ppbGxhL3N2Zy9wYXR0ZXJuLXRyYW5zZm9ybWVkLTAxLnN2ZwogaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC1ncmFkaWVudC0wMS5zdmcKIGltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQtc2Nh
bGUtMDIuc3ZnCi1pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L21hc2stY29udGVudC0yLnN2ZyBb
IENyYXNoIF0KIGltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvc2ltcGxlLWZpbGwtZ3JhZGllbnQu
c3ZnCi1pbXBvcnRlZC9tb3ppbGxhL3N2Zy91c2VyU3BhY2VPblVzZS1hbmQtcGF0dGVybi0wMS5z
dmcgWyBDcmFzaCBdCi1pbXBvcnRlZC9tb3ppbGxhL3N2Zy92aWV3Qm94LWFuZC1wYXR0ZXJuLTAx
LnN2ZyBbIENyYXNoIF0KLWltcG9ydGVkL21vemlsbGEvc3ZnL3ZpZXdCb3gtYW5kLXBhdHRlcm4t
MDIuc3ZnIFsgQ3Jhc2ggXQotaW1wb3J0ZWQvbW96aWxsYS9zdmcvdmlld0JveC1hbmQtcGF0dGVy
bi0wMy5zdmcgWyBDcmFzaCBdCiBpbXBvcnRlZC93M2MvaTE4bi9iaWRpL2JpZGktcGxhaW50ZXh0
LTAxMS5odG1sIFsgUGFzcyBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbXBh
dC93ZWJraXQtYmFja2dyb3VuZC1vcmlnaW4tdGV4dC5odG1sCiBpbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL2NvbXBhdC93ZWJraXQtbGluZWFyLWdyYWRpZW50LWxpbmUtYm90dG9tLmh0
bWwKQEAgLTkxMCwyNCArODg4LDcgQEAgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9t
ZWRpYWNhcHR1cmUtcmVjb3JkL01lZGlhUmVjb3JkZXItcGVlcmNvbm5lY3Rpb24KIGltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvbWltZXNuaWZmL21pbWUtdHlwZXMvY2hhcnNldC1wYXJh
bWV0ZXIud2luZG93Lmh0bWwKIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc2VsZWN0
aW9uL3NlbGVjdGlvbi1zZWxlY3QtYWxsLW1vdmUtaW5wdXQtY3Jhc2guaHRtbAogaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXIvZmV0
Y2gtcmVxdWVzdC1yZWRpcmVjdC5odHRwcy5odG1sIFsgUGFzcyBdCi1pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3N2Zy9hbmltYXRpb25zL2FuaW1hdGVUcmFuc2Zvcm0tcGF0dGVybi10
cmFuc2Zvcm0uaHRtbCBbIENyYXNoIF0KLWltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
c3ZnL2FuaW1hdGlvbnMvc3ZnZW51bS1hbmltYXRpb24tMS5odG1sIFsgQ3Jhc2ggXQogaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdmcvZXh0ZW5zaWJpbGl0eS9mb3JlaWduT2JqZWN0
L21hc2tlZC5odG1sCi1pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N2Zy9pbXBvcnQv
Y29vcmRzLXVuaXRzLTAxLWItbWFudWFsLnN2ZyBbIENyYXNoIF0KLWltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvc3ZnL2ltcG9ydC9saW5raW5nLWEtMTAtZi1tYW51YWwuc3ZnIFsgQ3Jh
c2ggXQotaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdmcvaW1wb3J0L21hc2tpbmct
cGF0aC0wNy1iLW1hbnVhbC5zdmcgWyBDcmFzaCBdCi1pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3N2Zy9pbXBvcnQvcHNlcnZlcnMtZ3JhZC0wMy1iLW1hbnVhbC5zdmcgWyBDcmFzaCBd
Ci1pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N2Zy9pbXBvcnQvcHNlcnZlcnMtZ3Jh
ZC0wNi1iLW1hbnVhbC5zdmcgWyBDcmFzaCBdCi1pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3N2Zy9pbXBvcnQvcHNlcnZlcnMtcGF0dGVybi0wMS1iLW1hbnVhbC5zdmcgWyBDcmFzaCBd
Ci1pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N2Zy9pbXBvcnQvcHNlcnZlcnMtcGF0
dGVybi0wMi1mLW1hbnVhbC5zdmcgWyBDcmFzaCBdCi1pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3N2Zy9pbXBvcnQvcHNlcnZlcnMtcGF0dGVybi0wNC1mLW1hbnVhbC5zdmcgWyBDcmFz
aCBdCi1pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N2Zy9pbXBvcnQvcHNlcnZlcnMt
cGF0dGVybi0wNS1mLW1hbnVhbC5zdmcgWyBDcmFzaCBdCi1pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3N2Zy9pbXBvcnQvcHNlcnZlcnMtcGF0dGVybi0wOC1mLW1hbnVhbC5zdmcgWyBD
cmFzaCBdCi1pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N2Zy9pbXBvcnQvcHNlcnZl
cnMtcGF0dGVybi0wOS1mLW1hbnVhbC5zdmcgWyBDcmFzaCBdCi1pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3N2Zy9saW5raW5nL3JlZnRlc3RzL2hyZWYtcGF0dGVybi1lbGVtZW50Lmh0
bWwgWyBDcmFzaCBdCi1pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N2Zy9wYWludGlu
Zy9jdXJyZW50Q29sb3Itb3ZlcnJpZGUtcHNlcnZlci1zdHJva2Uuc3ZnIFsgQ3Jhc2ggXQotaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdmcvcHNlcnZlcnMvcmVmdGVzdHMvcGF0dGVy
bi1pbmhlcml0YW5jZS1ub3QtaW4tcmVuZGVydHJlZS0wMi50ZW50YXRpdmUuc3ZnIFsgQ3Jhc2gg
XQotaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdmcvcmVuZGVyL3JlZnRlc3RzL2Zp
bHRlci1lZmZlY3RzLW9uLXBhdHRlcm4uaHRtbCBbIENyYXNoIF0KIGltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvd2ViLWFuaW1hdGlvbnMvdGltaW5nLW1vZGVsL2FuaW1hdGlvbnMvdXBk
YXRlLXBsYXliYWNrLXJhdGUtemVyby5odG1sIFsgUGFzcyBdCiBpbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3dlYmF1ZGlvL3RoZS1hdWRpby1hcGkvdGhlLWJpcXVhZGZpbHRlcm5vZGUt
aW50ZXJmYWNlL25vLWRlemlwcGVyaW5nLmh0bWwKIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMveGhyL3Jlc3BvbnNlLW1ldGhvZC5odG0gWyBQYXNzIF0KQEAgLTk1NCwyOCArOTE1LDEx
IEBAIHN2Zy9iYXRpay9wYWludHMvcGF0dGVyblByZXNlcnZlQXNwZWN0UmF0aW9BLnN2ZyBbIENy
YXNoIF0KIHN2Zy9iYXRpay9wYWludHMvcGF0dGVyblJlZ2lvbkEuc3ZnIFsgQ3Jhc2ggXQogc3Zn
L2JhdGlrL3BhaW50cy9wYXR0ZXJuUmVnaW9ucy1wb3NpdGlvbmVkLW9iamVjdHMuc3ZnIFsgQ3Jh
c2ggXQogc3ZnL2JhdGlrL3BhaW50cy9wYXR0ZXJuUmVnaW9ucy5zdmcgWyBDcmFzaCBdCi1zdmcv
YmF0aWsvdGV4dC90ZXh0RWZmZWN0Mi5zdmcgWyBDcmFzaCBdCiBzdmcvY2xpcC1wYXRoL2NsaXAt
cGF0aC1saW5lLXVzZS1iZWZvcmUtZGVmaW5lZC5zdmcgWyBQYXNzIF0KIHN2Zy9jbGlwLXBhdGgv
d2Via2l0LWNsaXAtcGF0aC1hZnRlci5zdmcKIHN2Zy9jbGlwLXBhdGgvd2Via2l0LWNsaXAtcGF0
aC1iZWZvcmUuc3ZnCi1zdmcvY3VzdG9tL2hpZHBpLW1hc2tpbmctY2xpcHBpbmcuc3ZnIFsgQ3Jh
c2ggXQotc3ZnL2N1c3RvbS9ocmVmLXN2Zy1uYW1lc3BhY2Utc3RhdGljLnN2ZyBbIENyYXNoIF0K
LXN2Zy9jdXN0b20vanMtbGF0ZS1wYXR0ZXJuLWNyZWF0aW9uLnN2ZyBbIENyYXNoIF0KLXN2Zy9j
dXN0b20vanMtdXBkYXRlLXBhdHRlcm4uc3ZnIFsgQ3Jhc2ggXQotc3ZnL2N1c3RvbS9sYXJnZS1p
bWFnZS1wYXR0ZXJuLWNyYXNoLmh0bWwgWyBDcmFzaCBdCi1zdmcvY3VzdG9tL2xvY2FsLXVybC1y
ZWZlcmVuY2UtcGF0dGVybi5odG1sIFsgQ3Jhc2ggXQotc3ZnL2N1c3RvbS9uZXctaW1hZ2UtaXMt
aHRtbC1lbGVtZW50LnN2ZyBbIENyYXNoIF0KIHN2Zy9jdXN0b20vc3VicGF0aHMtbW92ZXRvLW9u
bHktcmVuZGVyaW5nLnN2ZyBbIFBhc3MgXQogc3ZnL2N1c3RvbS9zdmctZm9udHMtc2tpcC1pbmsu
aHRtbAotc3ZnL2RvbS92aWV3cG9ydC1jb250YWluZXItY3Jhc2guc3ZnIFsgQ3Jhc2ggXQotc3Zn
L2R5bmFtaWMtdXBkYXRlcy9TVkdQYXR0ZXJuRWxlbWVudC1kb20taGVpZ2h0LWF0dHIuaHRtbCBb
IENyYXNoIF0KLXN2Zy9keW5hbWljLXVwZGF0ZXMvU1ZHUGF0dGVybkVsZW1lbnQtZG9tLXBhdHRl
cm5UcmFuc2Zvcm0tYXR0ci5odG1sIFsgQ3Jhc2ggXQotc3ZnL2R5bmFtaWMtdXBkYXRlcy9TVkdQ
YXR0ZXJuRWxlbWVudC1kb20tcGF0dGVyblVuaXRzLWF0dHIuaHRtbCBbIENyYXNoIF0KLXN2Zy9k
eW5hbWljLXVwZGF0ZXMvU1ZHUGF0dGVybkVsZW1lbnQtZG9tLXdpZHRoLWF0dHIuaHRtbCBbIENy
YXNoIF0KLXN2Zy9keW5hbWljLXVwZGF0ZXMvU1ZHUGF0dGVybkVsZW1lbnQtZG9tLXktYXR0ci5o
dG1sIFsgQ3Jhc2ggXQotc3ZnL2R5bmFtaWMtdXBkYXRlcy9TVkdQYXR0ZXJuRWxlbWVudC1zdmdk
b20tcGF0dGVybkNvbnRlbnRVbml0cy1wcm9wLmh0bWwgWyBDcmFzaCBdCi1zdmcvZHluYW1pYy11
cGRhdGVzL1NWR1BhdHRlcm5FbGVtZW50LXN2Z2RvbS13aWR0aC1wcm9wLmh0bWwgWyBDcmFzaCBd
Ci1zdmcvZHluYW1pYy11cGRhdGVzL1NWR1BhdHRlcm5FbGVtZW50LXN2Z2RvbS15LXByb3AuaHRt
bCBbIENyYXNoIF0KIHN2Zy9ncmFkaWVudHMvZ3JhZGllbnQtZmxpcHBlZC1zdGFydC1lbmQtcG9p
bnRzLnN2Zwogc3ZnL2dyYWRpZW50cy9zcHJlYWRNZXRob2Quc3ZnCiBzdmcvZ3JhZGllbnRzL3Nw
cmVhZE1ldGhvZEFscGhhLnN2ZwpAQCAtOTg5LDExICs5MzMsNiBAQCBzdmcvZ3JhZGllbnRzL3Nw
cmVhZE1ldGhvZFJldmVyc2VkLnN2Zwogc3ZnL2dyYWRpZW50cy9zdG9wQWxwaGEuc3ZnCiBzdmcv
dHJhbnNmb3Jtcy90cmFuc2Zvcm1lZC10ZXh0LWZpbGwtZ3JhZGllbnQuaHRtbAogc3ZnL3RyYW5z
Zm9ybXMvdHJhbnNmb3JtZWQtdGV4dC1maWxsLXBhdHRlcm4uaHRtbAotc3ZnL1czQy1TVkctMS4x
LVNFL3N0cnVjdC1kb20tMTEtZi5zdmcgWyBDcmFzaCBdCi1zdmcvVzNDLVNWRy0xLjEvY29vcmRz
LXVuaXRzLTAxLWIuc3ZnIFsgQ3Jhc2ggXQotc3ZnL1czQy1TVkctMS4xL3BzZXJ2ZXJzLWdyYWQt
MDQtYi5zdmcgWyBDcmFzaCBdCi1zdmcvVzNDLVNWRy0xLjEvcHNlcnZlcnMtZ3JhZC0wNy1iLnN2
ZyBbIENyYXNoIF0KLXN2Zy9XM0MtU1ZHLTEuMS9yZW5kZXItZWxlbXMtMDEtdC5zdmcgWyBDcmFz
aCBdCiBzeXN0ZW0tcHJldmlldy9iYWRnZS5odG1sCiB3ZWJhbmltYXRpb25zL29wYWNpdHktYW5p
bWF0aW9uLmh0bWwKIHdlYmdsLzEuMC4zL2NvbmZvcm1hbmNlL2NvbnRleHQvcHJlbXVsdGlwbHlh
bHBoYS10ZXN0Lmh0bWwK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>449904</attachid>
            <date>2022-01-25 01:55:24 -0800</date>
            <delta_ts>2022-01-25 20:41:33 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-232411-20220125015523.patch</filename>
            <type>text/plain</type>
            <size>50573</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg4NDI5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTdmZDk3MzFiZTZmYjVl
ZWJiYWZhNDY5ZDAyNjE1YWU0NGNmZTRkOC4uZWQ3Yjg1MjNiYTQ2NWJiY2FlNTc3YWEzOWQwZGI3
MmE5Mzg3NDdmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc2IEBACisyMDIyLTAxLTI1ICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vzc10g
UGF0dGVybiBzaG91bGQgaG9sZCBTb3VyY2VJbWFnZSB3aGljaCBjYW4gYmUgY29udmVydGVkIHRv
IGEgTmF0aXZlSW1hZ2Ugb25seSB3aGVuIG5lZWRlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMyNDExCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS84
NDk5ODczOD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBNYWtlIFBhdHRlcm4gaG9sZCBhIFNvdXJjZUltYWdlIGFuZCBhZGQgZ2V0dGVycyB0byByZXRy
aWV2ZSBhIE5hdGl2ZUltYWdlCisgICAgICAgIGFuZCBhbiBJbWFnZUJ1ZmZlci4gSW4gdGhlc2Ug
Z2V0dGVycyB0aGUgU291cmNlSW1hZ2Ugd2lsbCBlaXRoZXIgcmV0dXJuCisgICAgICAgIHRoZSBj
dXJyZW50IGltYWdlIHNvdXJjZSBvciBnZXQgb25lIGZyb20gdGhlIG90aGVyIGlmIG5lZWRlZC4K
KworICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1BhdHRlcm4uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q2FudmFzUGF0dGVybjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1Bh
dHRlcm46OkNhbnZhc1BhdHRlcm4pOgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1BhdHRl
cm4uaDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmNy
ZWF0ZVBhdHRlcm4pOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDYW52YXMuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ2FudmFzOjpidWlsZEFycmF5Rm9yQ2FudmFzUGF0
dGVybik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvUGF0dGVybi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpQYXR0ZXJuOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UGF0dGVybjo6
UGF0dGVybik6CisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9QYXR0ZXJuLmg6CisgICAg
ICAgIChXZWJDb3JlOjpQYXR0ZXJuOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
UGF0dGVybjo6ZGVjb2RlKToKKyAgICAgICAgQWRkIGVuY29kaW5nIGFuZCBkZWNvZGluZyBtZWhv
ZHMgZm9yIFBhdHRlcm4gd2hpY2ggd2lsbCBiZSBjYWxsZWQgZnJvbSAKKyAgICAgICAgU2V0U3Rh
dGU6OmVuY29kZSgpIGFuZCBTZXRTdGF0ZTo6ZGVjb2RlKCkuCisKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9Tb3VyY2VJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VJbWFn
ZTo6bmF0aXZlSW1hZ2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlSW1hZ2U6Omlt
YWdlQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUltYWdlOjpzaXplIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUltYWdlOjpuYXRpdmVJbWFnZSk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VJbWFnZTo6aW1hZ2VCdWZmZXIpOiBEZWxldGVk
LgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1NvdXJjZUltYWdlLmg6CisgICAgICAgIE1h
a2UgU291cmNlSW1hZ2Uga2VlcCB0aGUgaW1hZ2Ugc291cmNlIGl0IHdhcyBjcmVhdGVkIHdpdGgu
IEdldCBhIHRlbXBvcmFyeQorICAgICAgICBpbWFnZSBzb3VyY2UgaWYgaXQgaXMgZGlmZmVyZW50
IGZyb20gd2hhdCBpcyBzdG9yZWQgaW4gbV9pbWFnZVZhcmlhbnQuCisKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jYWlyby9QYXR0ZXJuQ2Fpcm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UGF0dGVybjo6Y3JlYXRlUGxhdGZvcm1QYXR0ZXJuIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jZy9QYXR0ZXJuQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGF0dGVybjo6
Y3JlYXRlUGxhdGZvcm1QYXR0ZXJuIGNvbnN0KToKKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpTZXRTdGF0ZTo6U2V0U3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6RGlz
cGxheUxpc3Q6OlNldFN0YXRlOjphcHBseSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
ZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3Bs
YXlMaXN0OjpTZXRTdGF0ZTo6c3RhdGVDaGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxh
eUxpc3Q6OlNldFN0YXRlOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxh
eUxpc3Q6OlNldFN0YXRlOjpkZWNvZGUpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6
OlNldFN0YXRlOjpzdHJva2VQYXR0ZXJuUGFyYW1ldGVycyBjb25zdCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6U2V0U3RhdGU6OmZpbGxQYXR0ZXJuUGFyYW1ldGVy
cyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6U2V0U3Rh
dGU6OnN0cm9rZVBhdHRlcm5JbWFnZUlkZW50aWZpZXIgY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlNldFN0YXRlOjpmaWxsUGF0dGVybkltYWdlSWRlbnRp
ZmllciBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIFNpbXBsaWZ5IFNldFN0YXRlIGJ5IGRlbGV0
aW5nIHRoZSBQYXR0ZXJuRGF0YSBtZW1iZXJzLiBSZXBsYWNlIHRoZXNlIG1lbWJlcnMKKyAgICAg
ICAgYnkgdGhlIHN0cm9rZVBhdHRlcm4gYW5kIGZpbGxQYXR0ZXJuIHNpbmNlIHRoZXNlIHBhdHRl
cm5zIGNhbiBiZSBlbmNvZGVkCisgICAgICAgIGFuZCBkZWNvZGVkLiAKKworICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjphcHBseVNldFN0YXRlSXRlbSk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVzb3VyY2VIZWFw
Lmg6CisgICAgICAgIEFkZCB0aGUgaGVscGVyIExvY2FsUmVzb3VyY2VIZWFwOjpnZXRTb3VyY2VJ
bWFnZSgpIHRvIGJlIHVzZWQgYnkgCisgICAgICAgIGFwcGx5U2V0U3RhdGVJdGVtKCkuCisKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NvZnR3YXJlL0ZFVGlsZVNvZnR3YXJl
QXBwbGllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRVRpbGVTb2Z0d2FyZUFwcGxpZXI6OmFw
cGx5IGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OnBhdHRlcm5Gb3JEZXNjcmlwdGlvbik6CisgICAgICAgICogcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuOjpidWlsZFBhdHRlcm4pOgorCiAyMDIyLTAxLTIz
ICBNYXR0IFdvb2Ryb3cgIDxtYXR0d29vZHJvd0BhcHBsZS5jb20+CiAKICAgICAgICAgUG9zaXRp
b246Zml4ZWQgbGF5ZXJzIHNob3VsZG4ndCBhbGxvY2F0ZSBhIGJhY2tpbmcgYnVmZmVyIGlmIGFs
bCBjaGlsZHJlbiBhcmUgb2Zmc2NyZWVuLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA1MGE1MmQ0NmQ4NzRiNmMzMjg4
YWY0ZjNiMjQ0ZWRmYmU5YjExNGJiLi41ZmM1ODlmMjc2ZWRmNDM0NjY0ZWZhNWRiYjY4MmQ5NWZl
MzI2ZGQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDIyLTAxLTI1ICBTYWlkIEFib3Ut
SGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vzc10gUGF0dGVy
biBzaG91bGQgaG9sZCBTb3VyY2VJbWFnZSB3aGljaCBjYW4gYmUgY29udmVydGVkIHRvIGEgTmF0
aXZlSW1hZ2Ugb25seSB3aGVuIG5lZWRlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjMyNDExCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS84NDk5ODcz
OD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQg
dGhlIGhlbHBlcnMgUXVhbGlmaWVkUmVzb3VyY2VIZWFwOjpnZXRTb3VyY2VJbWFnZSgpIGFuZCAK
KyAgICAgICAgUmVtb3RlUmVzb3VyY2VDYWNoZTo6Y2FjaGVkU291cmNlSW1hZ2UoKSB3aGljaCB3
aWxsIGJlIHVzZWQgYnkKKyAgICAgICAgUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlcjo6c2V0U3Rh
dGUoKSB0byByZXBsYWNlIHRoZSAKKyAgICAgICAgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
IG9mIHRoZSBwYXR0ZXJuJ3MgdGlsZUltYWdlIGJ5IGFuIGFjdHVhbAorICAgICAgICBTb3VyY2VJ
bWFnZS4KKworICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUXVhbGlmaWVkUmVzb3VyY2VI
ZWFwLmg6CisgICAgICAgIChXZWJLaXQ6OlF1YWxpZmllZFJlc291cmNlSGVhcDo6Z2V0U291cmNl
SW1hZ2UgY29uc3QpOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlRGlzcGxh
eUxpc3RSZWNvcmRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZURpc3BsYXlMaXN0UmVj
b3JkZXI6OnNldFN0YXRlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlRGlzcGxheUxpc3RSZWNv
cmRlcjo6ZHJhd0ZpbHRlcmVkSW1hZ2VCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVE
aXNwbGF5TGlzdFJlY29yZGVyOjpzZXRTdGF0ZVdpdGhRdWFsaWZpZWRJZGVudGlmaWVycyk6IERl
bGV0ZWQuCisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hl
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVzb3VyY2VDYWNoZTo6Y2FjaGVkU291cmNl
SW1hZ2UgY29uc3QpOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVzb3Vy
Y2VDYWNoZS5oOgorCiAyMDIyLTAxLTIyICBCZW4gTmhhbSAgPG5oYW1AYXBwbGUuY29tPgogCiAg
ICAgICAgIEFkZCBQdXNoU3Vic2NyaXB0aW9uSWRlbnRpZmllcgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUGF0dGVybi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9DYW52YXNQYXR0ZXJuLmNwcAppbmRleCA4ZjE5MzgyY2IyMDNkMmU0MTFiY2E5
NTdhNjkxYjFmYWM5OGEyY2ExLi42MGNlM2RlYTYxZTI0ZmE3YmQ0OWUyOGYxN2U3ZTQ0OGNkYjIw
ODJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNQYXR0ZXJu
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNQYXR0ZXJuLmNwcApA
QCAtMzQsMTIgKzM0LDEyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVmPENhbnZhc1Bh
dHRlcm4+IENhbnZhc1BhdHRlcm46OmNyZWF0ZShSZWY8TmF0aXZlSW1hZ2U+JiYgaW1hZ2UsIGJv
b2wgcmVwZWF0WCwgYm9vbCByZXBlYXRZLCBib29sIG9yaWdpbkNsZWFuKQorUmVmPENhbnZhc1Bh
dHRlcm4+IENhbnZhc1BhdHRlcm46OmNyZWF0ZShTb3VyY2VJbWFnZSYmIGltYWdlLCBib29sIHJl
cGVhdFgsIGJvb2wgcmVwZWF0WSwgYm9vbCBvcmlnaW5DbGVhbikKIHsKICAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBDYW52YXNQYXR0ZXJuKFdURk1vdmUoaW1hZ2UpLCByZXBlYXRYLCByZXBlYXRZ
LCBvcmlnaW5DbGVhbikpOwogfQogCi1DYW52YXNQYXR0ZXJuOjpDYW52YXNQYXR0ZXJuKFJlZjxO
YXRpdmVJbWFnZT4mJiBpbWFnZSwgYm9vbCByZXBlYXRYLCBib29sIHJlcGVhdFksIGJvb2wgb3Jp
Z2luQ2xlYW4pCitDYW52YXNQYXR0ZXJuOjpDYW52YXNQYXR0ZXJuKFNvdXJjZUltYWdlJiYgaW1h
Z2UsIGJvb2wgcmVwZWF0WCwgYm9vbCByZXBlYXRZLCBib29sIG9yaWdpbkNsZWFuKQogICAgIDog
bV9wYXR0ZXJuKFBhdHRlcm46OmNyZWF0ZShXVEZNb3ZlKGltYWdlKSwgeyByZXBlYXRYLCByZXBl
YXRZIH0pKQogICAgICwgbV9vcmlnaW5DbGVhbihvcmlnaW5DbGVhbikKIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1BhdHRlcm4uaCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL0NhbnZhc1BhdHRlcm4uaAppbmRleCBlNDZkMjFiYzUxMzVkOWE3NGY0
NTc1YzlkZDY1ZTljZWNkY2I4ZDJhLi44NzFlMDQ1NzdjYzUxZTU5ODA1N2JlY2UyYWJkNzVmNjZh
Yzk5YzYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNQYXR0
ZXJuLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUGF0dGVybi5oCkBA
IC0zMiwxMyArMzIsMTMgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBOYXRpdmVJ
bWFnZTsKIGNsYXNzIFBhdHRlcm47CitjbGFzcyBTb3VyY2VJbWFnZTsKIHN0cnVjdCBET01NYXRy
aXgyREluaXQ7CiAKIGNsYXNzIENhbnZhc1BhdHRlcm4gOiBwdWJsaWMgUmVmQ291bnRlZDxDYW52
YXNQYXR0ZXJuPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxDYW52YXNQYXR0ZXJuPiBjcmVh
dGUoUmVmPE5hdGl2ZUltYWdlPiYmLCBib29sIHJlcGVhdFgsIGJvb2wgcmVwZWF0WSwgYm9vbCBv
cmlnaW5DbGVhbik7CisgICAgc3RhdGljIFJlZjxDYW52YXNQYXR0ZXJuPiBjcmVhdGUoU291cmNl
SW1hZ2UmJiwgYm9vbCByZXBlYXRYLCBib29sIHJlcGVhdFksIGJvb2wgb3JpZ2luQ2xlYW4pOwog
ICAgIH5DYW52YXNQYXR0ZXJuKCk7CiAKICAgICBzdGF0aWMgYm9vbCBwYXJzZVJlcGV0aXRpb25U
eXBlKGNvbnN0IFN0cmluZyYsIGJvb2wmIHJlcGVhdFgsIGJvb2wmIHJlcGVhdFkpOwpAQCAtNTEs
NyArNTEsNyBAQCBwdWJsaWM6CiAgICAgRXhjZXB0aW9uT3I8dm9pZD4gc2V0VHJhbnNmb3JtKERP
TU1hdHJpeDJESW5pdCYmKTsKIAogcHJpdmF0ZToKLSAgICBDYW52YXNQYXR0ZXJuKFJlZjxOYXRp
dmVJbWFnZT4mJiwgYm9vbCByZXBlYXRYLCBib29sIHJlcGVhdFksIGJvb2wgb3JpZ2luQ2xlYW4p
OworICAgIENhbnZhc1BhdHRlcm4oU291cmNlSW1hZ2UmJiwgYm9vbCByZXBlYXRYLCBib29sIHJl
cGVhdFksIGJvb2wgb3JpZ2luQ2xlYW4pOwogCiAgICAgUmVmPFBhdHRlcm4+IG1fcGF0dGVybjsK
ICAgICBib29sIG1fb3JpZ2luQ2xlYW47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuY3BwCmluZGV4IDU3N2Q1
NWU3ZjA0MmE3ODQ4MjIwZTM4YWMzMmQzMDY5ODM2YTM4OWQuLmI4OWU3N2ZiNjAwZTBlY2E5M2Yw
MTkyNDM5ZTQxMDczYzk1YWQxMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuY3BwCkBAIC0xOTUzLDcg
KzE5NTMsNyBAQCBFeGNlcHRpb25PcjxSZWZQdHI8Q2FudmFzUGF0dGVybj4+IENhbnZhc1JlbmRl
cmluZ0NvbnRleHQyREJhc2U6OmNyZWF0ZVBhdHRlcm4oSAogICAgIGlmICghbmF0aXZlSW1hZ2Up
CiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciB9OwogCi0gICAg
cmV0dXJuIFJlZlB0cjxDYW52YXNQYXR0ZXJuPiB7IENhbnZhc1BhdHRlcm46OmNyZWF0ZShuYXRp
dmVJbWFnZS5yZWxlYXNlTm9uTnVsbCgpLCByZXBlYXRYLCByZXBlYXRZLCBvcmlnaW5DbGVhbikg
fTsKKyAgICByZXR1cm4gUmVmUHRyPENhbnZhc1BhdHRlcm4+IHsgQ2FudmFzUGF0dGVybjo6Y3Jl
YXRlKHsgbmF0aXZlSW1hZ2UucmVsZWFzZU5vbk51bGwoKSB9LCByZXBlYXRYLCByZXBlYXRZLCBv
cmlnaW5DbGVhbikgfTsKIH0KIAogRXhjZXB0aW9uT3I8UmVmUHRyPENhbnZhc1BhdHRlcm4+PiBD
YW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpjcmVhdGVQYXR0ZXJuKENhbnZhc0Jhc2UmIGNh
bnZhcywgYm9vbCByZXBlYXRYLCBib29sIHJlcGVhdFkpCkBAIC0xOTY5LDcgKzE5NjksNyBAQCBF
eGNlcHRpb25PcjxSZWZQdHI8Q2FudmFzUGF0dGVybj4+IENhbnZhc1JlbmRlcmluZ0NvbnRleHQy
REJhc2U6OmNyZWF0ZVBhdHRlcm4oQwogICAgIGlmICghbmF0aXZlSW1hZ2UpCiAgICAgICAgIHJl
dHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciB9OwogCi0gICAgcmV0dXJuIFJlZlB0
cjxDYW52YXNQYXR0ZXJuPiB7IENhbnZhc1BhdHRlcm46OmNyZWF0ZShuYXRpdmVJbWFnZS5yZWxl
YXNlTm9uTnVsbCgpLCByZXBlYXRYLCByZXBlYXRZLCBjYW52YXMub3JpZ2luQ2xlYW4oKSkgfTsK
KyAgICByZXR1cm4gUmVmUHRyPENhbnZhc1BhdHRlcm4+IHsgQ2FudmFzUGF0dGVybjo6Y3JlYXRl
KHsgbmF0aXZlSW1hZ2UucmVsZWFzZU5vbk51bGwoKSB9LCByZXBlYXRYLCByZXBlYXRZLCBjYW52
YXMub3JpZ2luQ2xlYW4oKSkgfTsKIH0KICAgICAKICNpZiBFTkFCTEUoVklERU8pCkBAIC0xOTg0
LDcgKzE5ODQsNyBAQCBFeGNlcHRpb25PcjxSZWZQdHI8Q2FudmFzUGF0dGVybj4+IENhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyREJhc2U6OmNyZWF0ZVBhdHRlcm4oSAogCiAjaWYgVVNFKENHKQogICAg
IGlmIChhdXRvIG5hdGl2ZUltYWdlID0gdmlkZW9FbGVtZW50Lm5hdGl2ZUltYWdlRm9yQ3VycmVu
dFRpbWUoKSkKLSAgICAgICAgcmV0dXJuIFJlZlB0cjxDYW52YXNQYXR0ZXJuPiB7IENhbnZhc1Bh
dHRlcm46OmNyZWF0ZShuYXRpdmVJbWFnZS5yZWxlYXNlTm9uTnVsbCgpLCByZXBlYXRYLCByZXBl
YXRZLCBvcmlnaW5DbGVhbikgfTsKKyAgICAgICAgcmV0dXJuIFJlZlB0cjxDYW52YXNQYXR0ZXJu
PiB7IENhbnZhc1BhdHRlcm46OmNyZWF0ZSh7IG5hdGl2ZUltYWdlLnJlbGVhc2VOb25OdWxsKCkg
fSwgcmVwZWF0WCwgcmVwZWF0WSwgb3JpZ2luQ2xlYW4pIH07CiAjZW5kaWYKIAogICAgIGF1dG8g
cmVuZGVyaW5nTW9kZSA9IGRyYXdpbmdDb250ZXh0KCkgPyBkcmF3aW5nQ29udGV4dCgpLT5yZW5k
ZXJpbmdNb2RlKCkgOiBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkOwpAQCAtMTk5NCw3ICsx
OTk0LDcgQEAgRXhjZXB0aW9uT3I8UmVmUHRyPENhbnZhc1BhdHRlcm4+PiBDYW52YXNSZW5kZXJp
bmdDb250ZXh0MkRCYXNlOjpjcmVhdGVQYXR0ZXJuKEgKIAogICAgIHZpZGVvRWxlbWVudC5wYWlu
dEN1cnJlbnRGcmFtZUluQ29udGV4dChpbWFnZUJ1ZmZlci0+Y29udGV4dCgpLCBGbG9hdFJlY3Qo
RmxvYXRQb2ludCgpLCBzaXplKHZpZGVvRWxlbWVudCkpKTsKICAgICAKLSAgICByZXR1cm4gUmVm
UHRyPENhbnZhc1BhdHRlcm4+IHsgQ2FudmFzUGF0dGVybjo6Y3JlYXRlKEltYWdlQnVmZmVyOjpz
aW5rSW50b05hdGl2ZUltYWdlKFdURk1vdmUoaW1hZ2VCdWZmZXIpKS5yZWxlYXNlTm9uTnVsbCgp
LCByZXBlYXRYLCByZXBlYXRZLCBvcmlnaW5DbGVhbikgfTsKKyAgICByZXR1cm4gUmVmUHRyPENh
bnZhc1BhdHRlcm4+IHsgQ2FudmFzUGF0dGVybjo6Y3JlYXRlKHsgaW1hZ2VCdWZmZXIucmVsZWFz
ZU5vbk51bGwoKSB9LCByZXBlYXRYLCByZXBlYXRZLCBvcmlnaW5DbGVhbikgfTsKIH0KIAogI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFz
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXMuY3BwCmluZGV4
IGU4NDdmZTY4MTEyNzMyNTA2YjFkMDg0NmY2MzNkYWM0Yjk2OWQxNjUuLjAzMTljYzM3ZGYyNWYy
YzY2Zjk2YzI1OTYxMjExNWM4OTM4M2M3N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JDYW52YXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JDYW52YXMuY3BwCkBAIC0xMzM2LDEwICsxMzM2LDcgQEAgUmVmPEpTT046OkFy
cmF5T2Y8SlNPTjo6VmFsdWU+PiBJbnNwZWN0b3JDYW52YXM6OmJ1aWxkQXJyYXlGb3JDYW52YXNH
cmFkaWVudChjb24KIAogUmVmPEpTT046OkFycmF5T2Y8SlNPTjo6VmFsdWU+PiBJbnNwZWN0b3JD
YW52YXM6OmJ1aWxkQXJyYXlGb3JDYW52YXNQYXR0ZXJuKGNvbnN0IENhbnZhc1BhdHRlcm4mIGNh
bnZhc1BhdHRlcm4pCiB7Ci0gICAgYXV0byYgdGlsZUltYWdlID0gY2FudmFzUGF0dGVybi5wYXR0
ZXJuKCkudGlsZUltYWdlKCk7Ci0gICAgRmxvYXRSZWN0IHJlY3QgPSB7IHsgfSwgdGlsZUltYWdl
LnNpemUoKSB9OwotICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHRp
bGVJbWFnZS5zaXplKCksIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEsIERlc3RpbmF0
aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdSQTgpOwotICAgIGltYWdlQnVm
ZmVyLT5jb250ZXh0KCkuZHJhd05hdGl2ZUltYWdlKHRpbGVJbWFnZSwgdGlsZUltYWdlLnNpemUo
KSwgcmVjdCwgcmVjdCk7CisgICAgYXV0byBpbWFnZUJ1ZmZlciA9IGNhbnZhc1BhdHRlcm4ucGF0
dGVybigpLnRpbGVJbWFnZUJ1ZmZlcigpOwogCiAgICAgU3RyaW5nIHJlcGVhdDsKICAgICBib29s
IHJlcGVhdFggPSBjYW52YXNQYXR0ZXJuLnBhdHRlcm4oKS5yZXBlYXRYKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXR0ZXJuLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BhdHRlcm4uY3BwCmluZGV4IDYzNTMyMzc2OWY4MDMz
ZGUzMjhlOGQ0NGU1Nzk3NWExZDNjZDYwNjUuLmM0OTExZTgwZjBiZTUyNjRjZDZlNTljN2U4ZDYz
M2NmYTRiMjI3MmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L1BhdHRlcm4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BhdHRl
cm4uY3BwCkBAIC0zMSwxMyArMzEsMTMgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZWY8
UGF0dGVybj4gUGF0dGVybjo6Y3JlYXRlKFJlZjxOYXRpdmVJbWFnZT4mJiB0aWxlSW1hZ2UsIGNv
bnN0IFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCitSZWY8UGF0dGVybj4gUGF0dGVybjo6Y3JlYXRl
KFNvdXJjZUltYWdlJiYgdGlsZUltYWdlLCBjb25zdCBQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQog
ewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFBhdHRlcm4oV1RGTW92ZSh0aWxlSW1hZ2UpLCBw
YXJhbWV0ZXJzKSk7CiB9CiAKLVBhdHRlcm46OlBhdHRlcm4oUmVmPE5hdGl2ZUltYWdlPiYmIGlt
YWdlLCBjb25zdCBQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQotICAgIDogbV90aWxlSW1hZ2UoV1RG
TW92ZShpbWFnZSkpCitQYXR0ZXJuOjpQYXR0ZXJuKFNvdXJjZUltYWdlJiYgdGlsZUltYWdlLCBj
b25zdCBQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQorICAgIDogbV90aWxlSW1hZ2UoV1RGTW92ZSh0
aWxlSW1hZ2UpKQogICAgICwgbV9wYXJhbWV0ZXJzKHBhcmFtZXRlcnMpCiB7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXR0ZXJuLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXR0ZXJuLmgKaW5kZXggNzIxNGU4MjUwNzFiNTQ0
N2U3YmNiZjIwMzAzZDkyZjYyYzI1MjdhZi4uMTJkYmUwNmQ3ZTA2MWI0MzYwYWVlYmExMWQ4Njc2
ZGI2ZDE3NTBhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
UGF0dGVybi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BhdHRlcm4u
aApAQCAtMjgsNyArMjgsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJBZmZpbmVUcmFu
c2Zvcm0uaCIKLSNpbmNsdWRlICJJbWFnZS5oIgorI2luY2x1ZGUgIlNvdXJjZUltYWdlLmgiCiAK
ICNpbmNsdWRlIDx3dGYvUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KQEAgLTQ1
LDcgKzQ1LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBBZmZpbmVUcmFuc2Zvcm07
CiBjbGFzcyBHcmFwaGljc0NvbnRleHQ7Ci1jbGFzcyBJbWFnZTsKIAogY2xhc3MgUGF0dGVybiBm
aW5hbCA6IHB1YmxpYyBSZWZDb3VudGVkPFBhdHRlcm4+IHsKIHB1YmxpYzoKQEAgLTYzLDI0ICs2
MiwzMSBAQCBwdWJsaWM6CiAgICAgICAgIGJvb2wgcmVwZWF0WTsKICAgICB9OwogCi0gICAgV0VC
Q09SRV9FWFBPUlQgc3RhdGljIFJlZjxQYXR0ZXJuPiBjcmVhdGUoUmVmPE5hdGl2ZUltYWdlPiYm
IHRpbGVJbWFnZSwgY29uc3QgUGFyYW1ldGVycyYgPSB7IH0pOworICAgIFdFQkNPUkVfRVhQT1JU
IHN0YXRpYyBSZWY8UGF0dGVybj4gY3JlYXRlKFNvdXJjZUltYWdlJiYgdGlsZUltYWdlLCBjb25z
dCBQYXJhbWV0ZXJzJiA9IHsgfSk7CiAgICAgV0VCQ09SRV9FWFBPUlQgflBhdHRlcm4oKTsKIAot
ICAgIE5hdGl2ZUltYWdlJiB0aWxlSW1hZ2UoKSBjb25zdCB7IHJldHVybiBtX3RpbGVJbWFnZS5n
ZXQoKTsgfQorICAgIGNvbnN0IFNvdXJjZUltYWdlJiB0aWxlSW1hZ2UoKSBjb25zdCB7IHJldHVy
biBtX3RpbGVJbWFnZTsgfQorICAgIFJlZlB0cjxOYXRpdmVJbWFnZT4gdGlsZU5hdGl2ZUltYWdl
KCkgY29uc3QgeyByZXR1cm4gbV90aWxlSW1hZ2UubmF0aXZlSW1hZ2UoKTsgfQorICAgIFJlZlB0
cjxJbWFnZUJ1ZmZlcj4gdGlsZUltYWdlQnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV90aWxlSW1h
Z2UuaW1hZ2VCdWZmZXIoKTsgfQogICAgIGNvbnN0IFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMoKSBj
b25zdCB7IHJldHVybiBtX3BhcmFtZXRlcnM7IH0KIAogICAgIC8vIFBhdHRlcm4gc3BhY2UgaXMg
YW4gYWJzdHJhY3Qgc3BhY2UgdGhhdCBtYXBzIHRvIHRoZSBkZWZhdWx0IHVzZXIgc3BhY2UgYnkg
dGhlIHRyYW5zZm9ybWF0aW9uICd1c2VyU3BhY2VUcmFuc2Zvcm0nCiAgICAgUGxhdGZvcm1QYXR0
ZXJuUHRyIGNyZWF0ZVBsYXRmb3JtUGF0dGVybihjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHVzZXJT
cGFjZVRyYW5zZm9ybSkgY29uc3Q7CiAKKyAgICB2b2lkIHNldFRpbGVJbWFnZShTb3VyY2VJbWFn
ZSYmIHRpbGVJbWFnZSkgeyBtX3RpbGVJbWFnZSA9IFdURk1vdmUodGlsZUltYWdlKTsgfQogICAg
IHZvaWQgc2V0UGF0dGVyblNwYWNlVHJhbnNmb3JtKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYpOwor
CiAgICAgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuU3BhY2VUcmFuc2Zvcm0oKSBjb25z
dCB7IHJldHVybiBtX3BhcmFtZXRlcnMucGF0dGVyblNwYWNlVHJhbnNmb3JtOyB9OwogICAgIGJv
b2wgcmVwZWF0WCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFyYW1ldGVycy5yZXBlYXRYOyB9CiAgICAg
Ym9vbCByZXBlYXRZKCkgY29uc3QgeyByZXR1cm4gbV9wYXJhbWV0ZXJzLnJlcGVhdFk7IH0KIAor
ICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsK
KyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxSZWY8UGF0
dGVybj4+IGRlY29kZShEZWNvZGVyJik7CisKIHByaXZhdGU6Ci0gICAgUGF0dGVybihSZWY8TmF0
aXZlSW1hZ2U+JiYsIGNvbnN0IFBhcmFtZXRlcnMmKTsKKyAgICBQYXR0ZXJuKFNvdXJjZUltYWdl
JiYsIGNvbnN0IFBhcmFtZXRlcnMmKTsKIAotICAgIFJlZjxOYXRpdmVJbWFnZT4gbV90aWxlSW1h
Z2U7CisgICAgU291cmNlSW1hZ2UgbV90aWxlSW1hZ2U7CiAgICAgUGFyYW1ldGVycyBtX3BhcmFt
ZXRlcnM7CiB9OwogCkBAIC0xMTMsNCArMTE5LDI3IEBAIHN0ZDo6b3B0aW9uYWw8UGF0dGVybjo6
UGFyYW1ldGVycz4gUGF0dGVybjo6UGFyYW1ldGVyczo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIp
CiAgICAgcmV0dXJuIHt7ICpyZXBlYXRYLCAqcmVwZWF0WSwgKnBhdHRlcm5TcGFjZVRyYW5zZm9y
bSB9fTsKIH0KIAordGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KK3ZvaWQgUGF0dGVybjo6ZW5jb2Rl
KEVuY29kZXImIGVuY29kZXIpIGNvbnN0Cit7CisgICAgZW5jb2RlciA8PCBtX3RpbGVJbWFnZTsK
KyAgICBlbmNvZGVyIDw8IG1fcGFyYW1ldGVyczsKK30KKwordGVtcGxhdGU8Y2xhc3MgRGVjb2Rl
cj4KK3N0ZDo6b3B0aW9uYWw8UmVmPFBhdHRlcm4+PiBQYXR0ZXJuOjpkZWNvZGUoRGVjb2RlciYg
ZGVjb2RlcikKK3sKKyAgICBzdGQ6Om9wdGlvbmFsPFNvdXJjZUltYWdlPiB0aWxlSW1hZ2U7Cisg
ICAgZGVjb2RlciA+PiB0aWxlSW1hZ2U7CisgICAgaWYgKCF0aWxlSW1hZ2UpCisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBzdGQ6Om9wdGlvbmFsPFBhcmFtZXRlcnM+IHBhcmFt
ZXRlcnM7CisgICAgZGVjb2RlciA+PiBwYXJhbWV0ZXJzOworICAgIGlmICghcGFyYW1ldGVycykK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIHJldHVybiBQYXR0ZXJuOjpjcmVh
dGUoV1RGTW92ZSgqdGlsZUltYWdlKSwgKnBhcmFtZXRlcnMpOworfQorCiB9IC8vbmFtZXNwYWNl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Tb3VyY2VJbWFn
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Tb3VyY2VJbWFnZS5jcHAK
aW5kZXggOWNjM2IyYzg2NDEyMmRhMTdlY2MwOTAwZTk2Zjg3N2Y0NTY2YmQ1Yy4uNzRiZDhlZTBk
NzI3MjNlYjFmY2VkMDljMGY3ZTU0M2Y4NDk5NTA5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL1NvdXJjZUltYWdlLmNwcApAQCAtNDIsNyArNDIsNyBAQCBOYXRp
dmVJbWFnZSogU291cmNlSW1hZ2U6Om5hdGl2ZUltYWdlSWZFeGlzdHMoKSBjb25zdAogICAgIHJl
dHVybiBudWxscHRyOwogfQogCi1OYXRpdmVJbWFnZSogU291cmNlSW1hZ2U6Om5hdGl2ZUltYWdl
KCkKK1JlZlB0cjxOYXRpdmVJbWFnZT4gU291cmNlSW1hZ2U6Om5hdGl2ZUltYWdlKCkgY29uc3QK
IHsKICAgICBpZiAoIXN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPEltYWdlQnVmZmVyPj4obV9p
bWFnZVZhcmlhbnQpKQogICAgICAgICByZXR1cm4gbmF0aXZlSW1hZ2VJZkV4aXN0cygpOwpAQCAt
NTIsOCArNTIsNyBAQCBOYXRpdmVJbWFnZSogU291cmNlSW1hZ2U6Om5hdGl2ZUltYWdlKCkKICAg
ICBpZiAoIW5hdGl2ZUltYWdlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIG1faW1h
Z2VWYXJpYW50ID0gbmF0aXZlSW1hZ2UucmVsZWFzZU5vbk51bGwoKTsKLSAgICByZXR1cm4gbmF0
aXZlSW1hZ2VJZkV4aXN0cygpOworICAgIHJldHVybiBuYXRpdmVJbWFnZTsKIH0KIAogSW1hZ2VC
dWZmZXIqIFNvdXJjZUltYWdlOjppbWFnZUJ1ZmZlcklmRXhpc3RzKCkgY29uc3QKQEAgLTYzLDcg
KzYyLDcgQEAgSW1hZ2VCdWZmZXIqIFNvdXJjZUltYWdlOjppbWFnZUJ1ZmZlcklmRXhpc3RzKCkg
Y29uc3QKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotSW1hZ2VCdWZmZXIqIFNvdXJjZUltYWdl
OjppbWFnZUJ1ZmZlcigpCitSZWZQdHI8SW1hZ2VCdWZmZXI+IFNvdXJjZUltYWdlOjppbWFnZUJ1
ZmZlcigpIGNvbnN0CiB7CiAgICAgaWYgKCFzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxOYXRp
dmVJbWFnZT4+KG1faW1hZ2VWYXJpYW50KSkKICAgICAgICAgcmV0dXJuIGltYWdlQnVmZmVySWZF
eGlzdHMoKTsKQEAgLTc3LDggKzc2LDcgQEAgSW1hZ2VCdWZmZXIqIFNvdXJjZUltYWdlOjppbWFn
ZUJ1ZmZlcigpCiAKICAgICBpbWFnZUJ1ZmZlci0+Y29udGV4dCgpLmRyYXdOYXRpdmVJbWFnZShu
YXRpdmVJbWFnZSwgcmVjdC5zaXplKCksIHJlY3QsIHJlY3QpOwogCi0gICAgbV9pbWFnZVZhcmlh
bnQgPSBpbWFnZUJ1ZmZlci5yZWxlYXNlTm9uTnVsbCgpOwotICAgIHJldHVybiBpbWFnZUJ1ZmZl
cklmRXhpc3RzKCk7CisgICAgcmV0dXJuIGltYWdlQnVmZmVyOwogfQogCiBSZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXIgU291cmNlSW1hZ2U6OmltYWdlSWRlbnRpZmllcigpIGNvbnN0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Tb3VyY2VJbWFnZS5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlSW1hZ2UuaAppbmRleCAyMGQz
ZDgwZDQzNjE1ODRkOGY0ZjRlY2NlODMwYzU0OWE5Y2M4MjkwLi5kODA2ZjU1YjU1YTlhYmFhYzU1
NDE3ZDJlNjEzNjY5YWVmYmRkMzI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9Tb3VyY2VJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL1NvdXJjZUltYWdlLmgKQEAgLTQyLDEwICs0MiwxMCBAQCBwdWJsaWM6CiAgICAgU291
cmNlSW1hZ2UoSW1hZ2VWYXJpYW50JiYpOwogCiAgICAgTmF0aXZlSW1hZ2UqIG5hdGl2ZUltYWdl
SWZFeGlzdHMoKSBjb25zdDsKLSAgICBOYXRpdmVJbWFnZSogbmF0aXZlSW1hZ2UoKTsKKyAgICBS
ZWZQdHI8TmF0aXZlSW1hZ2U+IG5hdGl2ZUltYWdlKCkgY29uc3Q7CiAKICAgICBJbWFnZUJ1ZmZl
ciogaW1hZ2VCdWZmZXJJZkV4aXN0cygpIGNvbnN0OwotICAgIEltYWdlQnVmZmVyKiBpbWFnZUJ1
ZmZlcigpOworICAgIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gaW1hZ2VCdWZmZXIoKSBjb25zdDsKIAog
ICAgIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBpbWFnZUlkZW50aWZpZXIoKSBjb25zdDsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGF0
dGVybkNhaXJvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1Bh
dHRlcm5DYWlyby5jcHAKaW5kZXggNjhkYWJhZjk4YWNhOWQxY2ZiNzFlMTY1MjJiOWRlYjI1ODA3
ZmYxZi4uYTNmY2Q2OGZmOGI3Y2Q5NmQ0NGUyZjU3YTk0YTM5ZTkzNzFhYzE5YSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGF0dGVybkNhaXJvLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QYXR0ZXJuQ2Fp
cm8uY3BwCkBAIC0zNSw3ICszNSwxMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNhaXJvX3Bh
dHRlcm5fdCogUGF0dGVybjo6Y3JlYXRlUGxhdGZvcm1QYXR0ZXJuKGNvbnN0IEFmZmluZVRyYW5z
Zm9ybSYpIGNvbnN0CiB7Ci0gICAgYXV0byBwbGF0Zm9ybUltYWdlID0gdGlsZUltYWdlKCkucGxh
dGZvcm1JbWFnZSgpOworICAgIGF1dG8gbmF0aXZlSW1hZ2UgPSB0aWxlTmF0aXZlSW1hZ2UoKTsK
KyAgICBpZiAoIW5hdGl2ZUltYWdlKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIGF1
dG8gcGxhdGZvcm1JbWFnZSA9IG5hdGl2ZUltYWdlLT5wbGF0Zm9ybUltYWdlKCk7CiAgICAgaWYg
KCFwbGF0Zm9ybUltYWdlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGF0dGVybkNHLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BhdHRlcm5DRy5jcHAKaW5kZXggMDVhMzkx
NjU0MGJiNzZkYTNmMGFiYWEzMzk0ZmM4ZGQwODhjOGRhOS4uZjY1YTc3NjBjNjU5OTFiMjcxZjJk
M2YyYmMyNTI4MTYxNWQxNzRkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvUGF0dGVybkNHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9QYXR0ZXJuQ0cuY3BwCkBAIC01NSwxNiArNTUsMjAgQEAgc3RhdGljIHZvaWQg
cGF0dGVyblJlbGVhc2VDYWxsYmFjayh2b2lkKiBpbmZvKQogCiBSZXRhaW5QdHI8Q0dQYXR0ZXJu
UmVmPiBQYXR0ZXJuOjpjcmVhdGVQbGF0Zm9ybVBhdHRlcm4oY29uc3QgQWZmaW5lVHJhbnNmb3Jt
JiB1c2VyU3BhY2VUcmFuc2Zvcm0pIGNvbnN0CiB7Ci0gICAgRmxvYXRSZWN0IHRpbGVSZWN0ID0g
eyB7IH0sIHRpbGVJbWFnZSgpLnNpemUoKSB9OwotCi0gICAgQWZmaW5lVHJhbnNmb3JtIHBhdHRl
cm5UcmFuc2Zvcm0gPSB1c2VyU3BhY2VUcmFuc2Zvcm0gKiBwYXR0ZXJuU3BhY2VUcmFuc2Zvcm0o
KTsKLSAgICBwYXR0ZXJuVHJhbnNmb3JtLnNjYWxlTm9uVW5pZm9ybSgxLCAtMSk7Ci0gICAgcGF0
dGVyblRyYW5zZm9ybS50cmFuc2xhdGUoMCwgLXRpbGVSZWN0LmhlaWdodCgpKTsKKyAgICBhdXRv
IG5hdGl2ZUltYWdlID0gdGlsZU5hdGl2ZUltYWdlKCk7CisgICAgaWYgKCFuYXRpdmVJbWFnZSkK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBQbGF0Zm9ybUltYWdlUHRyIHBsYXRmb3Jt
SW1hZ2UgPSB0aWxlSW1hZ2UoKS5wbGF0Zm9ybUltYWdlKCk7CisgICAgYXV0byBwbGF0Zm9ybUlt
YWdlID0gbmF0aXZlSW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKTsKICAgICBpZiAoIXBsYXRmb3JtSW1h
Z2UpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCisgICAgRmxvYXRSZWN0IHRpbGVSZWN0ID0g
eyB7IH0sIG5hdGl2ZUltYWdlLT5zaXplKCkgfTsKKworICAgIGF1dG8gcGF0dGVyblRyYW5zZm9y
bSA9IHVzZXJTcGFjZVRyYW5zZm9ybSAqIHBhdHRlcm5TcGFjZVRyYW5zZm9ybSgpOworICAgIHBh
dHRlcm5UcmFuc2Zvcm0uc2NhbGVOb25Vbmlmb3JtKDEsIC0xKTsKKyAgICBwYXR0ZXJuVHJhbnNm
b3JtLnRyYW5zbGF0ZSgwLCAtdGlsZVJlY3QuaGVpZ2h0KCkpOworCiAgICAgLy8gSWYgd2UncmUg
cmVwZWF0aW5nIGluIGJvdGggZGlyZWN0aW9ucywgd2UgY2FuIHVzZSBpbWFnZS1iYWNrZWQgcGF0
dGVybnMKICAgICAvLyBpbnN0ZWFkIG9mIGN1c3RvbSBwYXR0ZXJucywgYW5kIGF2b2lkIHRpbGlu
Zy1lZGdlIHBpeGVsIGNyYWNrcy4KICAgICBpZiAocmVwZWF0WCgpICYmIHJlcGVhdFkoKSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdEl0ZW1zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rp
c3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcAppbmRleCAzMWFjOGI0YWQ3ZGJmNzJkYTM2
NGEwNTU3NzZmNmIyOTc5YTQ2OWQ3Li5hMzc1ZGMyNjI1OGM3YTRlYmY0ZTBmMTU3MDBjOWE0MGNj
YjNhNmRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNw
bGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwCkBAIC0xNTMsMTkg
KzE1MywxMyBAQCBTZXRTdGF0ZTo6U2V0U3RhdGUoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUm
IHN0YXRlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3RhdAogewogfQogCi1TZXRTdGF0ZTo6U2V0
U3RhdGUoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGVDaGFuZ2UmIHN0YXRlQ2hhbmdlLCBjb25z
dCBQYXR0ZXJuRGF0YSYgc3Ryb2tlUGF0dGVybiwgY29uc3QgUGF0dGVybkRhdGEmIGZpbGxQYXR0
ZXJuKQorU2V0U3RhdGU6OlNldFN0YXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlQ2hhbmdl
JiBzdGF0ZUNoYW5nZSkKICAgICA6IG1fc3RhdGVDaGFuZ2Uoc3RhdGVDaGFuZ2UpCi0gICAgLCBt
X3N0cm9rZVBhdHRlcm4oc3Ryb2tlUGF0dGVybikKLSAgICAsIG1fZmlsbFBhdHRlcm4oZmlsbFBh
dHRlcm4pCiB7CiB9CiAKLXZvaWQgU2V0U3RhdGU6OmFwcGx5KEdyYXBoaWNzQ29udGV4dCYgY29u
dGV4dCwgTmF0aXZlSW1hZ2UqIHN0cm9rZVBhdHRlcm5JbWFnZSwgTmF0aXZlSW1hZ2UqIGZpbGxQ
YXR0ZXJuSW1hZ2UpCit2b2lkIFNldFN0YXRlOjphcHBseShHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQpCiB7Ci0gICAgaWYgKG1fc3RhdGVDaGFuZ2UubV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFw
aGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlUGF0dGVybkNoYW5nZSkgJiYgc3Ryb2tlUGF0dGVybklt
YWdlKQotICAgICAgICBtX3N0YXRlQ2hhbmdlLm1fc3RhdGUuc3Ryb2tlUGF0dGVybiA9IFBhdHRl
cm46OmNyZWF0ZSgqc3Ryb2tlUGF0dGVybkltYWdlLCBtX3N0cm9rZVBhdHRlcm4ucGFyYW1ldGVy
cyk7Ci0gICAgaWYgKG1fc3RhdGVDaGFuZ2UubV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGlj
c0NvbnRleHRTdGF0ZTo6RmlsbFBhdHRlcm5DaGFuZ2UpICYmIGZpbGxQYXR0ZXJuSW1hZ2UpCi0g
ICAgICAgIG1fc3RhdGVDaGFuZ2UubV9zdGF0ZS5maWxsUGF0dGVybiA9IFBhdHRlcm46OmNyZWF0
ZSgqZmlsbFBhdHRlcm5JbWFnZSwgbV9maWxsUGF0dGVybi5wYXJhbWV0ZXJzKTsKICAgICBtX3N0
YXRlQ2hhbmdlLmFwcGx5KGNvbnRleHQpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRl
bXMuaAppbmRleCBlZjBjMTg3N2QxOTM4YmRjMDYxMDU0Yjk0MmZhNjI4MGJjNDdmMjAzLi5lZjQ4
MDc4ZDZmYWM1ZmY2NWQxMWYzMDQ5NjAzNjU1MTQxMjg3NzY4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdEl0ZW1zLmgKQEAgLTI0OSwyNyArMjQ5LDE3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JF
X0VYUE9SVCBTZXRTdGF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYsIEdyYXBoaWNzQ29u
dGV4dFN0YXRlOjpTdGF0ZUNoYW5nZUZsYWdzKTsKIAogICAgIGNvbnN0IEdyYXBoaWNzQ29udGV4
dFN0YXRlQ2hhbmdlJiBzdGF0ZUNoYW5nZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGVDaGFuZ2U7
IH0KLSAgICBjb25zdCBQYXR0ZXJuOjpQYXJhbWV0ZXJzJiBzdHJva2VQYXR0ZXJuUGFyYW1ldGVy
cygpIGNvbnN0IHsgcmV0dXJuIG1fc3Ryb2tlUGF0dGVybi5wYXJhbWV0ZXJzOyB9Ci0gICAgY29u
c3QgUGF0dGVybjo6UGFyYW1ldGVycyYgZmlsbFBhdHRlcm5QYXJhbWV0ZXJzKCkgY29uc3QgeyBy
ZXR1cm4gbV9maWxsUGF0dGVybi5wYXJhbWV0ZXJzOyB9Ci0gICAgUmVuZGVyaW5nUmVzb3VyY2VJ
ZGVudGlmaWVyIHN0cm9rZVBhdHRlcm5JbWFnZUlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBt
X3N0cm9rZVBhdHRlcm4udGlsZUltYWdlSWRlbnRpZmllcjsgfQotICAgIFJlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllciBmaWxsUGF0dGVybkltYWdlSWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJu
IG1fZmlsbFBhdHRlcm4udGlsZUltYWdlSWRlbnRpZmllcjsgfQorICAgIEdyYXBoaWNzQ29udGV4
dFN0YXRlQ2hhbmdlJiBzdGF0ZUNoYW5nZSgpIHsgcmV0dXJuIG1fc3RhdGVDaGFuZ2U7IH0KIAog
ICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsK
ICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxTZXRTdGF0
ZT4gZGVjb2RlKERlY29kZXImKTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwbHkoR3Jh
cGhpY3NDb250ZXh0JiwgTmF0aXZlSW1hZ2UqIHN0cm9rZVBhdHRlcm5JbWFnZSwgTmF0aXZlSW1h
Z2UqIGZpbGxQYXR0ZXJuSW1hZ2UpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwbHkoR3Jh
cGhpY3NDb250ZXh0Jik7CiAKIHByaXZhdGU6Ci0gICAgc3RydWN0IFBhdHRlcm5EYXRhIHsKLSAg
ICAgICAgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHRpbGVJbWFnZUlkZW50aWZpZXI7Ci0g
ICAgICAgIFBhdHRlcm46OlBhcmFtZXRlcnMgcGFyYW1ldGVyczsKLSAgICB9OwotCi0gICAgV0VC
Q09SRV9FWFBPUlQgU2V0U3RhdGUoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGVDaGFuZ2UmLCBj
b25zdCBQYXR0ZXJuRGF0YSYgc3Ryb2tlUGF0dGVybiwgY29uc3QgUGF0dGVybkRhdGEmIGZpbGxQ
YXR0ZXJuKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBTZXRTdGF0ZShjb25zdCBHcmFwaGljc0NvbnRl
eHRTdGF0ZUNoYW5nZSYpOwogCiAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVDaGFuZ2UgbV9zdGF0
ZUNoYW5nZTsKLSAgICBQYXR0ZXJuRGF0YSBtX3N0cm9rZVBhdHRlcm47Ci0gICAgUGF0dGVybkRh
dGEgbV9maWxsUGF0dGVybjsKIH07CiAKIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+CkBAIC0yODcs
OCArMjc3LDcgQEAgdm9pZCBTZXRTdGF0ZTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0
CiAKICAgICBpZiAoY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0
cm9rZVBhdHRlcm5DaGFuZ2UpKSB7CiAgICAgICAgIEFTU0VSVChzdGF0ZS5zdHJva2VQYXR0ZXJu
KTsKLSAgICAgICAgZW5jb2RlciA8PCBzdGF0ZS5zdHJva2VQYXR0ZXJuLT50aWxlSW1hZ2UoKS5y
ZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIoKTsKLSAgICAgICAgZW5jb2RlciA8PCBzdGF0ZS5z
dHJva2VQYXR0ZXJuLT5wYXJhbWV0ZXJzKCk7CisgICAgICAgIGVuY29kZXIgPDwgKnN0YXRlLnN0
cm9rZVBhdHRlcm47CiAgICAgfQogCiAgICAgaWYgKGNoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBo
aWNzQ29udGV4dFN0YXRlOjpGaWxsR3JhZGllbnRDaGFuZ2UpKSB7CkBAIC0yOTgsOCArMjg3LDcg
QEAgdm9pZCBTZXRTdGF0ZTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAKICAgICBp
ZiAoY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkZpbGxQYXR0ZXJu
Q2hhbmdlKSkgewogICAgICAgICBBU1NFUlQoc3RhdGUuZmlsbFBhdHRlcm4pOwotICAgICAgICBl
bmNvZGVyIDw8IHN0YXRlLmZpbGxQYXR0ZXJuLT50aWxlSW1hZ2UoKS5yZW5kZXJpbmdSZXNvdXJj
ZUlkZW50aWZpZXIoKTsKLSAgICAgICAgZW5jb2RlciA8PCBzdGF0ZS5maWxsUGF0dGVybi0+cGFy
YW1ldGVycygpOworICAgICAgICBlbmNvZGVyIDw8ICpzdGF0ZS5maWxsUGF0dGVybjsKICAgICB9
CiAKICAgICBpZiAoY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlNo
YWRvd0NoYW5nZSkpIHsKQEAgLTM2Myw5ICszNTEsNiBAQCBzdGQ6Om9wdGlvbmFsPFNldFN0YXRl
PiBTZXRTdGF0ZTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgR3JhcGhpY3NDb250ZXh0
U3RhdGVDaGFuZ2Ugc3RhdGVDaGFuZ2U7CiAgICAgc3RhdGVDaGFuZ2UubV9jaGFuZ2VGbGFncyA9
ICpjaGFuZ2VGbGFnczsKIAotICAgIFBhdHRlcm5EYXRhIHN0cm9rZVBhdHRlcm47Ci0gICAgUGF0
dGVybkRhdGEgZmlsbFBhdHRlcm47Ci0KICAgICBpZiAoc3RhdGVDaGFuZ2UubV9jaGFuZ2VGbGFn
cy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlR3JhZGllbnRDaGFuZ2UpKSB7
CiAgICAgICAgIGF1dG8gc3Ryb2tlR3JhZGllbnQgPSBHcmFkaWVudDo6ZGVjb2RlKGRlY29kZXIp
OwogICAgICAgICBpZiAoIXN0cm9rZUdyYWRpZW50KQpAQCAtMzc1LDE3ICszNjAsMTEgQEAgc3Rk
OjpvcHRpb25hbDxTZXRTdGF0ZT4gU2V0U3RhdGU6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQog
ICAgIH0KIAogICAgIGlmIChzdGF0ZUNoYW5nZS5tX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBo
aWNzQ29udGV4dFN0YXRlOjpTdHJva2VQYXR0ZXJuQ2hhbmdlKSkgewotICAgICAgICBzdGQ6Om9w
dGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4gcmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyOwotICAgICAgICBkZWNvZGVyID4+IHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcjsK
LSAgICAgICAgaWYgKCFyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCi0gICAgICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwotCi0gICAgICAgIHN0ZDo6b3B0aW9uYWw8UGF0dGVybjo6UGFy
YW1ldGVycz4gcGFyYW1ldGVyczsKLSAgICAgICAgZGVjb2RlciA+PiBwYXJhbWV0ZXJzOwotICAg
ICAgICBpZiAoIXBhcmFtZXRlcnMpCisgICAgICAgIGF1dG8gc3Ryb2tlUGF0dGVybiA9IFBhdHRl
cm46OmRlY29kZShkZWNvZGVyKTsKKyAgICAgICAgaWYgKCFzdHJva2VQYXR0ZXJuKQogICAgICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgICAgICBzdHJva2VQYXR0ZXJuID0geyAq
cmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCAqcGFyYW1ldGVycyB9OworICAgICAgICBzdGF0
ZUNoYW5nZS5tX3N0YXRlLnN0cm9rZVBhdHRlcm4gPSBXVEZNb3ZlKCpzdHJva2VQYXR0ZXJuKTsK
ICAgICB9CiAKICAgICBpZiAoc3RhdGVDaGFuZ2UubV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFw
aGljc0NvbnRleHRTdGF0ZTo6RmlsbEdyYWRpZW50Q2hhbmdlKSkgewpAQCAtMzk3LDE3ICszNzYs
MTEgQEAgc3RkOjpvcHRpb25hbDxTZXRTdGF0ZT4gU2V0U3RhdGU6OmRlY29kZShEZWNvZGVyJiBk
ZWNvZGVyKQogICAgIH0KIAogICAgIGlmIChzdGF0ZUNoYW5nZS5tX2NoYW5nZUZsYWdzLmNvbnRh
aW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpGaWxsUGF0dGVybkNoYW5nZSkpIHsKLSAgICAgICAg
c3RkOjpvcHRpb25hbDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+IHJlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllcjsKLSAgICAgICAgZGVjb2RlciA+PiByZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXI7Ci0gICAgICAgIGlmICghcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQotICAgICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLQotICAgICAgICBzdGQ6Om9wdGlvbmFsPFBhdHRl
cm46OlBhcmFtZXRlcnM+IHBhcmFtZXRlcnM7Ci0gICAgICAgIGRlY29kZXIgPj4gcGFyYW1ldGVy
czsKLSAgICAgICAgaWYgKCFwYXJhbWV0ZXJzKQorICAgICAgICBhdXRvIGZpbGxQYXR0ZXJuID0g
UGF0dGVybjo6ZGVjb2RlKGRlY29kZXIpOworICAgICAgICBpZiAoIWZpbGxQYXR0ZXJuKQogICAg
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgICAgICBmaWxsUGF0dGVybiA9IHsg
KnJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwgKnBhcmFtZXRlcnMgfTsKKyAgICAgICAgc3Rh
dGVDaGFuZ2UubV9zdGF0ZS5maWxsUGF0dGVybiA9IFdURk1vdmUoKmZpbGxQYXR0ZXJuKTsKICAg
ICB9CiAKICAgICBpZiAoc3RhdGVDaGFuZ2UubV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGlj
c0NvbnRleHRTdGF0ZTo6U2hhZG93Q2hhbmdlKSkgewpAQCAtNTY1LDcgKzUzOCw3IEBAIHN0ZDo6
b3B0aW9uYWw8U2V0U3RhdGU+IFNldFN0YXRlOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAg
ICAgICAgc3RhdGVDaGFuZ2UubV9zdGF0ZS5zaGFkb3dzSWdub3JlVHJhbnNmb3JtcyA9ICpzaGFk
b3dzSWdub3JlVHJhbnNmb3JtczsKICAgICB9CiAKLSAgICByZXR1cm4ge3sgc3RhdGVDaGFuZ2Us
IHN0cm9rZVBhdHRlcm4sIGZpbGxQYXR0ZXJuIH19OworICAgIHJldHVybiB7IHsgc3RhdGVDaGFu
Z2UgfSB9OwogfQogCiBjbGFzcyBTZXRMaW5lQ2FwIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdFJlcGxheWVyLmNwcAppbmRleCAyMTg2NTBhZjU4YTRhN2JjZjJjMTQxMGZmMGVmMDA1MDY4
MWI2ZWVkLi42ZjIyYjJjODcxNDIwZGYwYjY5NTYzNDNmYjAxOTkzNjM1MjhkOTM2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3RSZXBsYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuY3BwCkBAIC04MywzNCArODMsMzcgQEAg
aW5saW5lIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4g
YXBwbHlOYXRpdmVJbWFnZUl0ZW0oR3IKIAogaW5saW5lIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFJl
bmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4gYXBwbHlTZXRTdGF0ZUl0ZW0oR3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0LCBjb25zdCBSZXNvdXJjZUhlYXAmIHJlc291cmNlSGVhcCwgSXRlbUhhbmRs
ZSBpdGVtLCBSZXBsYXllcjo6RGVsZWdhdGUqIGRlbGVnYXRlKQogeworICAgIFJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllciBzdHJva2VQYXR0ZXJuSW1hZ2VJZGVudGlmaWVyOworICAgIFJlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllciBmaWxsUGF0dGVybkltYWdlSWRlbnRpZmllcjsKICAgICBh
dXRvJiBzZXRTdGF0ZUl0ZW0gPSBpdGVtLmdldDxTZXRTdGF0ZT4oKTsKIAotICAgIFJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllciBzdHJva2VQYXR0ZXJuUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyOwotICAgIE5hdGl2ZUltYWdlKiBzdHJva2VQYXR0ZXJuSW1hZ2UgPSBudWxscHRyOwotICAg
IFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBmaWxsUGF0dGVyblJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllcjsKLSAgICBOYXRpdmVJbWFnZSogZmlsbFBhdHRlcm5JbWFnZSA9IG51bGxwdHI7
Ci0KLSAgICBpZiAoKHN0cm9rZVBhdHRlcm5SZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgPSBz
ZXRTdGF0ZUl0ZW0uc3Ryb2tlUGF0dGVybkltYWdlSWRlbnRpZmllcigpKSkgewotICAgICAgICBz
dHJva2VQYXR0ZXJuSW1hZ2UgPSByZXNvdXJjZUhlYXAuZ2V0TmF0aXZlSW1hZ2Uoc3Ryb2tlUGF0
dGVyblJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CisgICAgaWYgKGF1dG8mIHN0cm9rZVBh
dHRlcm4gPSBzZXRTdGF0ZUl0ZW0uc3RhdGVDaGFuZ2UoKS5tX3N0YXRlLnN0cm9rZVBhdHRlcm4p
IHsKKyAgICAgICAgc3Ryb2tlUGF0dGVybkltYWdlSWRlbnRpZmllciA9IHN0cm9rZVBhdHRlcm4t
PnRpbGVJbWFnZSgpLmltYWdlSWRlbnRpZmllcigpOworICAgICAgICBhdXRvIHN0cm9rZVBhdHRl
cm5JbWFnZSA9IHJlc291cmNlSGVhcC5nZXRTb3VyY2VJbWFnZShzdHJva2VQYXR0ZXJuSW1hZ2VJ
ZGVudGlmaWVyKTsKICAgICAgICAgaWYgKCFzdHJva2VQYXR0ZXJuSW1hZ2UpCi0gICAgICAgICAg
ICByZXR1cm4gc3Ryb2tlUGF0dGVyblJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcjsKKyAgICAg
ICAgICAgIHJldHVybiBzdHJva2VQYXR0ZXJuSW1hZ2VJZGVudGlmaWVyOworCisgICAgICAgIHN0
cm9rZVBhdHRlcm4tPnNldFRpbGVJbWFnZShXVEZNb3ZlKCpzdHJva2VQYXR0ZXJuSW1hZ2UpKTsK
ICAgICB9CiAKLSAgICBpZiAoKGZpbGxQYXR0ZXJuUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
ID0gc2V0U3RhdGVJdGVtLmZpbGxQYXR0ZXJuSW1hZ2VJZGVudGlmaWVyKCkpKSB7Ci0gICAgICAg
IGZpbGxQYXR0ZXJuSW1hZ2UgPSByZXNvdXJjZUhlYXAuZ2V0TmF0aXZlSW1hZ2UoZmlsbFBhdHRl
cm5SZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOworICAgIGlmIChhdXRvJiBmaWxsUGF0dGVy
biA9IHNldFN0YXRlSXRlbS5zdGF0ZUNoYW5nZSgpLm1fc3RhdGUuZmlsbFBhdHRlcm4pIHsKKyAg
ICAgICAgZmlsbFBhdHRlcm5JbWFnZUlkZW50aWZpZXIgPSBmaWxsUGF0dGVybi0+dGlsZUltYWdl
KCkuaW1hZ2VJZGVudGlmaWVyKCk7CisgICAgICAgIGF1dG8gZmlsbFBhdHRlcm5JbWFnZSA9IHJl
c291cmNlSGVhcC5nZXRTb3VyY2VJbWFnZShmaWxsUGF0dGVybkltYWdlSWRlbnRpZmllcik7CiAg
ICAgICAgIGlmICghZmlsbFBhdHRlcm5JbWFnZSkKLSAgICAgICAgICAgIHJldHVybiBmaWxsUGF0
dGVyblJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcjsKKyAgICAgICAgICAgIHJldHVybiBmaWxs
UGF0dGVybkltYWdlSWRlbnRpZmllcjsKKworICAgICAgICBmaWxsUGF0dGVybi0+c2V0VGlsZUlt
YWdlKFdURk1vdmUoKmZpbGxQYXR0ZXJuSW1hZ2UpKTsKICAgICB9CiAKLSAgICBzZXRTdGF0ZUl0
ZW0uYXBwbHkoY29udGV4dCwgc3Ryb2tlUGF0dGVybkltYWdlLCBmaWxsUGF0dGVybkltYWdlKTsK
KyAgICBzZXRTdGF0ZUl0ZW0uYXBwbHkoY29udGV4dCk7CiAKICAgICBpZiAoIWRlbGVnYXRlKQog
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgaWYgKHN0cm9rZVBhdHRlcm5SZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCi0gICAgICAgIGRlbGVnYXRlLT5yZWNvcmRSZXNvdXJj
ZVVzZShzdHJva2VQYXR0ZXJuUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKLSAgICBpZiAo
ZmlsbFBhdHRlcm5SZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCi0gICAgICAgIGRlbGVnYXRl
LT5yZWNvcmRSZXNvdXJjZVVzZShmaWxsUGF0dGVyblJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
cik7CisgICAgaWYgKHN0cm9rZVBhdHRlcm5JbWFnZUlkZW50aWZpZXIpCisgICAgICAgIGRlbGVn
YXRlLT5yZWNvcmRSZXNvdXJjZVVzZShzdHJva2VQYXR0ZXJuSW1hZ2VJZGVudGlmaWVyKTsKKyAg
ICBpZiAoZmlsbFBhdHRlcm5JbWFnZUlkZW50aWZpZXIpCisgICAgICAgIGRlbGVnYXRlLT5yZWNv
cmRSZXNvdXJjZVVzZShmaWxsUGF0dGVybkltYWdlSWRlbnRpZmllcik7CiAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVzb3VyY2VIZWFwLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXNvdXJjZUhl
YXAuaAppbmRleCBhZmMxZDBlZTM5Mjg5Y2JmMmRmMjQzYzU2M2U2YWIwYjFhOTBjOTg5Li4yNmM1
M2RmMTM5ODJlNWQ2OGYzOTg3ZWUwOGQyZTVmYTExMjM3Y2YyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXNvdXJj
ZUhlYXAuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3RSZXNvdXJjZUhlYXAuaApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUg
IkltYWdlQnVmZmVyLmgiCiAjaW5jbHVkZSAiTmF0aXZlSW1hZ2UuaCIKICNpbmNsdWRlICJSZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJTb3VyY2VJbWFnZS5oIgogI2lu
Y2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KIApAQCAt
NDEsNiArNDIsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIEltYWdlQnVmZmVyKiBnZXRJbWFn
ZUJ1ZmZlcihSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpIGNvbnN0ID0gMDsKICAgICB2aXJ0
dWFsIE5hdGl2ZUltYWdlKiBnZXROYXRpdmVJbWFnZShSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXIpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHN0ZDo6b3B0aW9uYWw8U291cmNlSW1hZ2U+IGdl
dFNvdXJjZUltYWdlKFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikgY29uc3QgPSAwOwogICAg
IHZpcnR1YWwgRm9udCogZ2V0Rm9udChSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpIGNvbnN0
ID0gMDsKIH07CiAKQEAgLTcxLDYgKzczLDIwIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGdl
dDxOYXRpdmVJbWFnZT4ocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKICAgICB9CiAKKyAg
ICBzdGQ6Om9wdGlvbmFsPFNvdXJjZUltYWdlPiBnZXRTb3VyY2VJbWFnZShSZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKSBjb25zdCBmaW5hbAor
ICAgIHsKKyAgICAgICAgaWYgKCFyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCisgICAgICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgICAgIGlmIChhdXRvIG5hdGl2ZUltYWdl
ID0gZ2V0TmF0aXZlSW1hZ2UocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKSkKKyAgICAgICAg
ICAgIHJldHVybiBTb3VyY2VJbWFnZSgqbmF0aXZlSW1hZ2UpOworCisgICAgICAgIGlmIChhdXRv
IGltYWdlQnVmZmVyID0gZ2V0SW1hZ2VCdWZmZXIocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
KSkKKyAgICAgICAgICAgIHJldHVybiBTb3VyY2VJbWFnZSgqaW1hZ2VCdWZmZXIpOworCisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgfQorCiAgICAgRm9udCogZ2V0Rm9udChSZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKSBjb25z
dCBmaW5hbAogICAgIHsKICAgICAgICAgcmV0dXJuIGdldDxGb250PihyZW5kZXJpbmdSZXNvdXJj
ZUlkZW50aWZpZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9zb2Z0d2FyZS9GRVRpbGVTb2Z0d2FyZUFwcGxpZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9zb2Z0d2FyZS9GRVRpbGVTb2Z0d2FyZUFw
cGxpZXIuY3BwCmluZGV4IGI3OTkxZjQ5NDkwNGU5YzNlNDUxYTRhMzRhNmYyODlkY2NmYTQzMWIu
LjU1MmQxOTQ2ZjI4YmUwOTQ2Y2EwNDZlMDZmZDdlM2E4YzlmZmZlYzAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc29mdHdhcmUvRkVUaWxlU29m
dHdhcmVBcHBsaWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL3NvZnR3YXJlL0ZFVGlsZVNvZnR3YXJlQXBwbGllci5jcHAKQEAgLTU3LDE0ICs1Nywx
MCBAQCBib29sIEZFVGlsZVNvZnR3YXJlQXBwbGllcjo6YXBwbHkoY29uc3QgRmlsdGVyJiBmaWx0
ZXIsIGNvbnN0IEZpbHRlckltYWdlVmVjdG9yJgogICAgIHRpbGVJbWFnZUNvbnRleHQudHJhbnNs
YXRlKC10aWxlUmVjdC5sb2NhdGlvbigpKTsKICAgICB0aWxlSW1hZ2VDb250ZXh0LmRyYXdJbWFn
ZUJ1ZmZlcigqaW5wdXRJbWFnZSwgaW5wdXRJbWFnZVJlY3QubG9jYXRpb24oKSk7CiAKLSAgICBh
dXRvIHBhdHRlcm5JbWFnZSA9IEltYWdlQnVmZmVyOjpzaW5rSW50b05hdGl2ZUltYWdlKFdURk1v
dmUodGlsZUltYWdlKSk7Ci0gICAgaWYgKCFwYXR0ZXJuSW1hZ2UpCi0gICAgICAgIHJldHVybiBm
YWxzZTsKLQogICAgIEFmZmluZVRyYW5zZm9ybSBwYXR0ZXJuVHJhbnNmb3JtOwogICAgIHBhdHRl
cm5UcmFuc2Zvcm0udHJhbnNsYXRlKHRpbGVSZWN0LmxvY2F0aW9uKCkgLSBtYXhSZXN1bHRSZWN0
LmxvY2F0aW9uKCkpOwogCi0gICAgYXV0byBwYXR0ZXJuID0gUGF0dGVybjo6Y3JlYXRlKHBhdHRl
cm5JbWFnZS5yZWxlYXNlTm9uTnVsbCgpLCB7IHRydWUsIHRydWUsIHBhdHRlcm5UcmFuc2Zvcm0g
fSk7CisgICAgYXV0byBwYXR0ZXJuID0gUGF0dGVybjo6Y3JlYXRlKHsgdGlsZUltYWdlLnJlbGVh
c2VOb25OdWxsKCkgfSwgeyB0cnVlLCB0cnVlLCBwYXR0ZXJuVHJhbnNmb3JtIH0pOwogCiAgICAg
YXV0byYgcmVzdWx0Q29udGV4dCA9IHJlc3VsdEltYWdlLT5jb250ZXh0KCk7CiAgICAgcmVzdWx0
Q29udGV4dC5zZXRGaWxsUGF0dGVybihXVEZNb3ZlKHBhdHRlcm4pKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAKaW5kZXggNjg3OWNhNWVlNzBm
NTFiN2Y0MmI0YzVmNTRjZjFiNDBjMjllMmViZi4uYTFjNDllMzE5OWZlZjYwZmQxN2VmZjcxYWIy
NDgzNDg5YWRkYjljMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckxheWVyQmFja2luZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxh
eWVyQmFja2luZy5jcHAKQEAgLTMzMzUsMTMgKzMzMzUsMTEgQEAgc3RhdGljIFJlZlB0cjxQYXR0
ZXJuPiBwYXR0ZXJuRm9yRGVzY3JpcHRpb24oUGF0dGVybkRlc2NyaXB0aW9uIGRlc2NyaXB0aW9u
LCBGbG8KICAgICAgICAgaW1hZ2VDb250ZXh0LmRyYXdUZXh0KGZvbnQsIHRleHRSdW4sIHsgdGV4
dEdhcCwgeU9mZnNldCB9LCAwKTsKICAgICB9CiAKLSAgICBhdXRvIHRpbGVJbWFnZSA9IEltYWdl
QnVmZmVyOjpzaW5rSW50b05hdGl2ZUltYWdlKFdURk1vdmUoaW1hZ2VCdWZmZXIpKTsKLQogICAg
IEFmZmluZVRyYW5zZm9ybSBwYXR0ZXJuT2Zmc2V0VHJhbnNmb3JtOwogICAgIHBhdHRlcm5PZmZz
ZXRUcmFuc2Zvcm0udHJhbnNsYXRlKGNvbnRlbnRPZmZzZXQgKyBkZXNjcmlwdGlvbi5waGFzZSk7
CiAgICAgcGF0dGVybk9mZnNldFRyYW5zZm9ybS5zY2FsZSgxIC8gZGVzdENvbnRleHQuc2NhbGVG
YWN0b3IoKSk7CiAKLSAgICByZXR1cm4gUGF0dGVybjo6Y3JlYXRlKHRpbGVJbWFnZS5yZWxlYXNl
Tm9uTnVsbCgpLCB7IHRydWUsIHRydWUsIHBhdHRlcm5PZmZzZXRUcmFuc2Zvcm19KTsKKyAgICBy
ZXR1cm4gUGF0dGVybjo6Y3JlYXRlKHsgaW1hZ2VCdWZmZXIucmVsZWFzZU5vbk51bGwoKSB9LCB7
IHRydWUsIHRydWUsIHBhdHRlcm5PZmZzZXRUcmFuc2Zvcm0gfSk7CiB9OwogI2VuZGlmCiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VQ
YXR0ZXJuLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3Vy
Y2VQYXR0ZXJuLmNwcAppbmRleCBiMTI2OGI4MzU3MDU1YTBhYzA2ODM0ZDExOWNhN2E2MjZhNGZm
Njk2Li5lOGI1MWNmYjkzOTQ5MjYzODFlZjNiMDRhM2UxN2E1ZmQxNWMwODZiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlUGF0dGVybi5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVBh
dHRlcm4uY3BwCkBAIC0xMTMsMTAgKzExMyw2IEBAIFBhdHRlcm5EYXRhKiBSZW5kZXJTVkdSZXNv
dXJjZVBhdHRlcm46OmJ1aWxkUGF0dGVybihSZW5kZXJFbGVtZW50JiByZW5kZXJlciwgT3B0CiAK
ICAgICBhdXRvIHRpbGVJbWFnZVNpemUgPSB0aWxlSW1hZ2UtPmxvZ2ljYWxTaXplKCk7CiAKLSAg
ICBhdXRvIGNvcGllZEltYWdlID0gSW1hZ2VCdWZmZXI6OnNpbmtJbnRvTmF0aXZlSW1hZ2UoV1RG
TW92ZSh0aWxlSW1hZ2UpKTsKLSAgICBpZiAoIWNvcGllZEltYWdlKQotICAgICAgICByZXR1cm4g
bnVsbHB0cjsKLQogICAgIC8vIENvbXB1dGUgcGF0dGVybiBzcGFjZSB0cmFuc2Zvcm1hdGlvbi4K
ICAgICBhdXRvIHBhdHRlcm5EYXRhID0gbWFrZVVuaXF1ZTxQYXR0ZXJuRGF0YT4oKTsKICAgICBw
YXR0ZXJuRGF0YS0+dHJhbnNmb3JtLnRyYW5zbGF0ZSh0aWxlQm91bmRhcmllcy5sb2NhdGlvbigp
KTsKQEAgLTEzNCw3ICsxMzAsNyBAQCBQYXR0ZXJuRGF0YSogUmVuZGVyU1ZHUmVzb3VyY2VQYXR0
ZXJuOjpidWlsZFBhdHRlcm4oUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIE9wdAogICAgIH0KIAog
ICAgIC8vIEJ1aWxkIHBhdHRlcm4uCi0gICAgcGF0dGVybkRhdGEtPnBhdHRlcm4gPSBQYXR0ZXJu
OjpjcmVhdGUoY29waWVkSW1hZ2UucmVsZWFzZU5vbk51bGwoKSwgeyB0cnVlLCB0cnVlLCBwYXR0
ZXJuRGF0YS0+dHJhbnNmb3JtIH0pOworICAgIHBhdHRlcm5EYXRhLT5wYXR0ZXJuID0gUGF0dGVy
bjo6Y3JlYXRlKHsgdGlsZUltYWdlLnJlbGVhc2VOb25OdWxsKCkgfSwgeyB0cnVlLCB0cnVlLCBw
YXR0ZXJuRGF0YS0+dHJhbnNmb3JtIH0pOwogCiAgICAgLy8gVmFyaW91cyBjYWxscyBhYm92ZSBt
YXkgdHJpZ2dlciBpbnZhbGlkYXRpb25zIGluIHNvbWUgZnJpbmdlIGNhc2VzIChJbWFnZUJ1ZmZl
ciBhbGxvY2F0aW9uCiAgICAgLy8gZmFpbHVyZXMgaW4gdGhlIFNWRyBpbWFnZSBjYWNoZSBmb3Ig
ZXhhbXBsZSkuIFRvIGF2b2lkIGhhdmluZyBvdXIgUGF0dGVybkRhdGEgZGVsZXRlZCBieQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1F1YWxpZmllZFJlc291
cmNlSGVhcC5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1F1YWxpZmllZFJl
c291cmNlSGVhcC5oCmluZGV4IDliZDc2ODM5YzI5MDc0NDIyMmIzMWM3ZTQyYzg5YmI5MTI4ZDRj
ZjcuLjI1ZjM2ODM4MWRhNTNmMzJmMDJhYWU2YTZkMTg4M2M4NzA2NjkwOTIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9RdWFsaWZpZWRSZXNvdXJjZUhlYXAu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUXVhbGlmaWVkUmVzb3Vy
Y2VIZWFwLmgKQEAgLTY5LDYgKzY5LDExIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGdldDxX
ZWJDb3JlOjpOYXRpdmVJbWFnZT4oeyByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIG1fd2Vi
UHJvY2Vzc0lkZW50aWZpZXIgfSk7CiAgICAgfQogCisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3Jl
OjpTb3VyY2VJbWFnZT4gZ2V0U291cmNlSW1hZ2UoV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJ
ZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikgY29uc3QgZmluYWwKKyAgICB7
CisgICAgICAgIHJldHVybiBnZXRTb3VyY2VJbWFnZSh7IHJlbmRlcmluZ1Jlc291cmNlSWRlbnRp
ZmllciwgbV93ZWJQcm9jZXNzSWRlbnRpZmllciB9KTsKKyAgICB9CisKICAgICBXZWJDb3JlOjpG
b250KiBnZXRGb250KFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJp
bmdSZXNvdXJjZUlkZW50aWZpZXIpIGNvbnN0IGZpbmFsCiAgICAgewogICAgICAgICByZXR1cm4g
Z2V0PFdlYkNvcmU6OkZvbnQ+KHsgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBtX3dlYlBy
b2Nlc3NJZGVudGlmaWVyIH0pOwpAQCAtODMsNiArODgsMjAgQEAgcHVibGljOgogICAgIHsKICAg
ICAgICAgcmV0dXJuIGdldDxXZWJDb3JlOjpOYXRpdmVJbWFnZT4ocmVuZGVyaW5nUmVzb3VyY2VJ
ZGVudGlmaWVyKTsKICAgICB9CisgICAgCisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTb3Vy
Y2VJbWFnZT4gZ2V0U291cmNlSW1hZ2UoUXVhbGlmaWVkUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikgY29uc3QKKyAgICB7CisgICAgICAgIGlm
ICghcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKKworICAgICAgICBpZiAoYXV0byBuYXRpdmVJbWFnZSA9IGdldE5hdGl2ZUltYWdl
KHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikpCisgICAgICAgICAgICByZXR1cm4gV2ViQ29y
ZTo6U291cmNlSW1hZ2UoKm5hdGl2ZUltYWdlKTsKKworICAgICAgICBpZiAoYXV0byBpbWFnZUJ1
ZmZlciA9IGdldEltYWdlQnVmZmVyKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikpCisgICAg
ICAgICAgICByZXR1cm4gV2ViQ29yZTo6U291cmNlSW1hZ2UoKmltYWdlQnVmZmVyKTsKKworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIH0KIAogICAgIFdlYkNvcmU6OkZvbnQqIGdl
dEZvbnQoUXVhbGlmaWVkUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllcikgY29uc3QKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlci5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlci5jcHAK
aW5kZXggZDlhZjU4NDBkZjY4NDNkOWU2MTlkYjY2MmVjOTBlYTQ4MTg1Nzk2YS4uYWQ1NjdiZjhh
MDJlMTRlNGEwYjkzNTZmMGFmYmI1Y2UyMjQzZTFiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVEaXNwbGF5TGlzdFJlY29y
ZGVyLmNwcApAQCAtMTE2LDI5ICsxMTYsMzcgQEAgdm9pZCBSZW1vdGVEaXNwbGF5TGlzdFJlY29y
ZGVyOjpzZXRTdHJva2VUaGlja25lc3MoZmxvYXQgdGhpY2tuZXNzKQogCiB2b2lkIFJlbW90ZURp
c3BsYXlMaXN0UmVjb3JkZXI6OnNldFN0YXRlKERpc3BsYXlMaXN0OjpTZXRTdGF0ZSYmIGl0ZW0p
CiB7Ci0gICAgLy8gSW1tZWRpYXRlbHkgdHVybiB0aGUgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyICh3aGljaCBpcyBlcnJvci1wcm9uZSkgdG8gYSBRdWFsaWZpZWRSZW5kZXJpbmdSZXNvdXJj
ZUlkZW50aWZpZXIsCi0gICAgLy8gYW5kIHVzZSBhIGhlbHBlciBmdW5jdGlvbiB0byBtYWtlIHN1
cmUgdGhhdCBkb24ndCBhY2NpZGVudGFsbHkgdXNlIHRoZSBSZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXIgKGJlY2F1c2UgdGhlIGhlbHBlciBmdW5jdGlvbiBjYW4ndCBzZWUgaXQpLgotICAgIGF1
dG8gc3Ryb2tlUGF0dGVybkltYWdlSWRlbnRpZmllciA9IGl0ZW0uc3Ryb2tlUGF0dGVybkltYWdl
SWRlbnRpZmllcigpOwotICAgIGF1dG8gZmlsbFBhdHRlcm5JbWFnZUlkZW50aWZpZXIgPSBpdGVt
LmZpbGxQYXR0ZXJuSW1hZ2VJZGVudGlmaWVyKCk7Ci0gICAgc2V0U3RhdGVXaXRoUXVhbGlmaWVk
SWRlbnRpZmllcnMoV1RGTW92ZShpdGVtKSwgeyBzdHJva2VQYXR0ZXJuSW1hZ2VJZGVudGlmaWVy
LCBtX3dlYlByb2Nlc3NJZGVudGlmaWVyIH0sIHsgZmlsbFBhdHRlcm5JbWFnZUlkZW50aWZpZXIs
IG1fd2ViUHJvY2Vzc0lkZW50aWZpZXIgfSk7Ci19Ci0KLXZvaWQgUmVtb3RlRGlzcGxheUxpc3RS
ZWNvcmRlcjo6c2V0U3RhdGVXaXRoUXVhbGlmaWVkSWRlbnRpZmllcnMoRGlzcGxheUxpc3Q6OlNl
dFN0YXRlJiYgaXRlbSwgUXVhbGlmaWVkUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHN0cm9r
ZVBhdHRlcm5JbWFnZUlkZW50aWZpZXIsIFF1YWxpZmllZFJlbmRlcmluZ1Jlc291cmNlSWRlbnRp
ZmllciBmaWxsUGF0dGVybkltYWdlSWRlbnRpZmllcikKLXsKLSAgICBSZWZQdHI8TmF0aXZlSW1h
Z2U+IHN0cm9rZVBhdHRlcm5JbWFnZTsKLSAgICBpZiAoc3Ryb2tlUGF0dGVybkltYWdlSWRlbnRp
ZmllcikKLSAgICAgICAgc3Ryb2tlUGF0dGVybkltYWdlID0gcmVzb3VyY2VDYWNoZSgpLmNhY2hl
ZE5hdGl2ZUltYWdlKHN0cm9rZVBhdHRlcm5JbWFnZUlkZW50aWZpZXIpOworICAgIFF1YWxpZmll
ZFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBzdHJva2VQYXR0ZXJuSW1hZ2VJZGVudGlmaWVy
OworICAgIFF1YWxpZmllZFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBmaWxsUGF0dGVybklt
YWdlSWRlbnRpZmllcjsKKyAgICAKKyAgICBpZiAoYXV0byYgc3Ryb2tlUGF0dGVybiA9IGl0ZW0u
c3RhdGVDaGFuZ2UoKS5tX3N0YXRlLnN0cm9rZVBhdHRlcm4pIHsKKyAgICAgICAgc3Ryb2tlUGF0
dGVybkltYWdlSWRlbnRpZmllciA9IHsgc3Ryb2tlUGF0dGVybi0+dGlsZUltYWdlKCkuaW1hZ2VJ
ZGVudGlmaWVyKCksIG1fd2ViUHJvY2Vzc0lkZW50aWZpZXIgfTsKKyAgICAgICAgYXV0byBzdHJv
a2VQYXR0ZXJuSW1hZ2UgPSByZXNvdXJjZUNhY2hlKCkuY2FjaGVkU291cmNlSW1hZ2Uoc3Ryb2tl
UGF0dGVybkltYWdlSWRlbnRpZmllcik7CisgICAgICAgIGlmICghc3Ryb2tlUGF0dGVybkltYWdl
KSB7CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgc3Ryb2tlUGF0dGVybi0+c2V0VGlsZUlt
YWdlKFdURk1vdmUoKnN0cm9rZVBhdHRlcm5JbWFnZSkpOworICAgIH0KIAotICAgIFJlZlB0cjxO
YXRpdmVJbWFnZT4gZmlsbFBhdHRlcm5JbWFnZTsKLSAgICBpZiAoZmlsbFBhdHRlcm5JbWFnZUlk
ZW50aWZpZXIpCi0gICAgICAgIGZpbGxQYXR0ZXJuSW1hZ2UgPSByZXNvdXJjZUNhY2hlKCkuY2Fj
aGVkTmF0aXZlSW1hZ2UoZmlsbFBhdHRlcm5JbWFnZUlkZW50aWZpZXIpOworICAgIGlmIChhdXRv
JiBmaWxsUGF0dGVybiA9IGl0ZW0uc3RhdGVDaGFuZ2UoKS5tX3N0YXRlLmZpbGxQYXR0ZXJuKSB7
CisgICAgICAgIGZpbGxQYXR0ZXJuSW1hZ2VJZGVudGlmaWVyID0geyBmaWxsUGF0dGVybi0+dGls
ZUltYWdlKCkuaW1hZ2VJZGVudGlmaWVyKCksIG1fd2ViUHJvY2Vzc0lkZW50aWZpZXIgfTsKKyAg
ICAgICAgYXV0byBmaWxsUGF0dGVybkltYWdlID0gcmVzb3VyY2VDYWNoZSgpLmNhY2hlZFNvdXJj
ZUltYWdlKGZpbGxQYXR0ZXJuSW1hZ2VJZGVudGlmaWVyKTsKKyAgICAgICAgaWYgKCFmaWxsUGF0
dGVybkltYWdlKSB7CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgZmlsbFBhdHRlcm4tPnNl
dFRpbGVJbWFnZShXVEZNb3ZlKCpmaWxsUGF0dGVybkltYWdlKSk7CisgICAgfQogCi0gICAgaGFu
ZGxlSXRlbShXVEZNb3ZlKGl0ZW0pLCBzdHJva2VQYXR0ZXJuSW1hZ2UuZ2V0KCksIGZpbGxQYXR0
ZXJuSW1hZ2UuZ2V0KCkpOworICAgIGhhbmRsZUl0ZW0oV1RGTW92ZShpdGVtKSk7CiAKLSAgICBp
ZiAoc3Ryb2tlUGF0dGVybkltYWdlKQorICAgIGlmIChzdHJva2VQYXR0ZXJuSW1hZ2VJZGVudGlm
aWVyKQogICAgICAgICByZXNvdXJjZUNhY2hlKCkucmVjb3JkUmVzb3VyY2VVc2Uoc3Ryb2tlUGF0
dGVybkltYWdlSWRlbnRpZmllcik7CiAKLSAgICBpZiAoZmlsbFBhdHRlcm5JbWFnZSkKKyAgICBp
ZiAoZmlsbFBhdHRlcm5JbWFnZUlkZW50aWZpZXIpCiAgICAgICAgIHJlc291cmNlQ2FjaGUoKS5y
ZWNvcmRSZXNvdXJjZVVzZShmaWxsUGF0dGVybkltYWdlSWRlbnRpZmllcik7CiB9CiAKQEAgLTIz
OSwyMSArMjQ3LDEzIEBAIHZvaWQgUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlcjo6ZHJhd0ZpbHRl
cmVkSW1hZ2VCdWZmZXIoc3RkOjpvcHRpb25hbDxSZW5kZXJpbmdSCiAgICAgZm9yIChhdXRvJiBl
ZmZlY3QgOiBmaWx0ZXItPmVmZmVjdHNPZlR5cGUoRmlsdGVyRWZmZWN0OjpUeXBlOjpGRUltYWdl
KSkgewogICAgICAgICBhdXRvJiBmZUltYWdlID0gZG93bmNhc3Q8RkVJbWFnZT4oZWZmZWN0Lmdl
dCgpKTsKIAotICAgICAgICBhdXRvIGltYWdlSWRlbnRpZmllciA9IGZlSW1hZ2Uuc291cmNlSW1h
Z2UoKS5pbWFnZUlkZW50aWZpZXIoKTsKLSAgICAgICAgaWYgKCFpbWFnZUlkZW50aWZpZXIpIHsK
KyAgICAgICAgYXV0byBzb3VyY2VJbWFnZSA9IHJlc291cmNlQ2FjaGUoKS5jYWNoZWRTb3VyY2VJ
bWFnZSh7IGZlSW1hZ2Uuc291cmNlSW1hZ2UoKS5pbWFnZUlkZW50aWZpZXIoKSwgbV93ZWJQcm9j
ZXNzSWRlbnRpZmllciB9KTsKKyAgICAgICAgaWYgKCFzb3VyY2VJbWFnZSkgewogICAgICAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0K
IAotICAgICAgICBpZiAoYXV0byBuYXRpdmVJbWFnZSA9IHJlc291cmNlQ2FjaGUoKS5jYWNoZWRO
YXRpdmVJbWFnZSh7IGltYWdlSWRlbnRpZmllciwgbV93ZWJQcm9jZXNzSWRlbnRpZmllciB9KSkg
ewotICAgICAgICAgICAgZmVJbWFnZS5zZXRJbWFnZVNvdXJjZSh7ICpuYXRpdmVJbWFnZSB9KTsK
LSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKGF1dG8gaW1h
Z2VCdWZmZXIgPSByZXNvdXJjZUNhY2hlKCkuY2FjaGVkSW1hZ2VCdWZmZXIoeyBpbWFnZUlkZW50
aWZpZXIsIG1fd2ViUHJvY2Vzc0lkZW50aWZpZXIgfSkpIHsKLSAgICAgICAgICAgIGZlSW1hZ2Uu
c2V0SW1hZ2VTb3VyY2UoeyAqaW1hZ2VCdWZmZXIgfSk7Ci0gICAgICAgICAgICBjb250aW51ZTsK
LSAgICAgICAgfQorICAgICAgICBmZUltYWdlLnNldEltYWdlU291cmNlKFdURk1vdmUoKnNvdXJj
ZUltYWdlKSk7CiAgICAgfQogCiAgICAgRmlsdGVyUmVzdWx0cyByZXN1bHRzOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGUu
Y3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2Fj
aGUuY3BwCmluZGV4IGFmOWU0Mjg2OWMyYTg3YTIxY2MxNWRjODlhNzNkNTkzZGNhMDcyMzQuLjk0
ZWQ2OTQxZTU0MDEzNWFhOGNlNjI4MGYyZTlmNDE2YmQ0Njg2MjcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZS5j
cHAKQEAgLTcxLDYgKzcxLDExIEBAIE5hdGl2ZUltYWdlKiBSZW1vdGVSZXNvdXJjZUNhY2hlOjpj
YWNoZWROYXRpdmVJbWFnZShRdWFsaWZpZWRSZW5kZXJpbmdSZXNvdXJjZUlkCiAgICAgcmV0dXJu
IG1fcmVzb3VyY2VIZWFwLmdldE5hdGl2ZUltYWdlKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
cik7CiB9CiAKK3N0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U291cmNlSW1hZ2U+IFJlbW90ZVJlc291
cmNlQ2FjaGU6OmNhY2hlZFNvdXJjZUltYWdlKFF1YWxpZmllZFJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpIGNvbnN0Cit7CisgICAgcmV0dXJu
IG1fcmVzb3VyY2VIZWFwLmdldFNvdXJjZUltYWdlKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
cik7Cit9CisKIHZvaWQgUmVtb3RlUmVzb3VyY2VDYWNoZTo6Y2FjaGVGb250KFJlZjxGb250PiYm
IGZvbnQsIFF1YWxpZmllZFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXIpCiB7CiAgICAgQVNTRVJUKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
ci5vYmplY3QoKSA9PSBmb250LT5yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIoKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VD
YWNoZS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlc291cmNl
Q2FjaGUuaAppbmRleCBhODE0MWMyYWQ0MzQwY2RhNWJlZWRiYTdlMDY0ZjA3ZTI1M2I0M2MwLi5h
MDc4ODQ3YzhhMTJlNGI0MzYyMTI5M2E0YjRmNDFiNjUxYWE4ZTljIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlLmgK
QEAgLTQ5LDYgKzQ5LDcgQEAgcHVibGljOgogICAgIFdlYkNvcmU6OkltYWdlQnVmZmVyKiBjYWNo
ZWRJbWFnZUJ1ZmZlcihRdWFsaWZpZWRSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpIGNvbnN0
OwogICAgIHZvaWQgY2FjaGVOYXRpdmVJbWFnZShSZWY8V2ViQ29yZTo6TmF0aXZlSW1hZ2U+JiYs
IFF1YWxpZmllZFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CiAgICAgV2ViQ29yZTo6TmF0
aXZlSW1hZ2UqIGNhY2hlZE5hdGl2ZUltYWdlKFF1YWxpZmllZFJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllcikgY29uc3Q7CisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTb3VyY2VJbWFnZT4g
Y2FjaGVkU291cmNlSW1hZ2UoUXVhbGlmaWVkUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKSBj
b25zdDsKICAgICB2b2lkIGNhY2hlRm9udChSZWY8V2ViQ29yZTo6Rm9udD4mJiwgUXVhbGlmaWVk
UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKICAgICBXZWJDb3JlOjpGb250KiBjYWNoZWRG
b250KFF1YWxpZmllZFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikgY29uc3Q7CiAgICAgdm9p
ZCBkZWxldGVBbGxGb250cygpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDFiOWY4MjhiNTc1ZGQ4MTg3NTVhMWRlZDUyY2Uw
NzY3MjcxNTc4MzEuLjMyNjVmYmIwMWYxN2M5MTVmNjE0ZmIyNGI1MGIxYzEyMjhiZjAyZjkgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxNSBAQAorMjAyMi0wMS0yNSAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWlk
QGFwcGxlLmNvbT4KKworICAgICAgICBbR1BVIFByb2Nlc3NdIFBhdHRlcm4gc2hvdWxkIGhvbGQg
U291cmNlSW1hZ2Ugd2hpY2ggY2FuIGJlIGNvbnZlcnRlZCB0byBhIE5hdGl2ZUltYWdlIG9ubHkg
d2hlbiBuZWVkZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIzMjQxMQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vODQ5OTg3Mzg+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVW5za2lwIGxheW91dCB0ZXN0
cyBmb3IgZ3B1IHByb2Nlc3MgYmVjYXVzZSB0aGV5IGFyZSBmaXhlZCBieSB0aGlzIGNoYW5nZS4K
KworICAgICAgICAqIGdwdS1wcm9jZXNzL1Rlc3RFeHBlY3RhdGlvbnM6CisKIDIwMjItMDEtMjMg
IE1hdHQgV29vZHJvdyAgPG1hdHR3b29kcm93QGFwcGxlLmNvbT4KIAogICAgICAgICBQb3NpdGlv
bjpmaXhlZCBsYXllcnMgc2hvdWxkbid0IGFsbG9jYXRlIGEgYmFja2luZyBidWZmZXIgaWYgYWxs
IGNoaWxkcmVuIGFyZSBvZmZzY3JlZW4uCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9ncHUtcHJv
Y2Vzcy9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvZ3B1LXByb2Nlc3MvVGVzdEV4cGVj
dGF0aW9ucwppbmRleCBjYThlNDlhZTE0MmU5NjQ4Y2IxZTQ4OGIyYzUyOTQyNWVjY2FhYWI3Li41
YWU4YzhhZjRjM2NlNjZkMzU4MzA0YTNjNjJmMmM3NDgyZGI1NTEwIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9ncHUtcHJvY2Vzcy9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL2dw
dS1wcm9jZXNzL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTI0NSw4ICsyNDUsNiBAQCBpbXBvcnRlZC9i
bGluay9zdmcvYXMtaW1hZ2Uvc3ZnLWFzLWltYWdlLW9iamVjdC1maXQtY29udGFpbi5odG1sCiBp
bXBvcnRlZC9ibGluay9zdmcvYXMtaW1hZ2Uvc3ZnLWFzLWltYWdlLW9iamVjdC1maXQtY292ZXIu
aHRtbAogaW1wb3J0ZWQvYmxpbmsvc3ZnL2FzLWltYWdlL3N2Z3ZpZXctcmVmZXJlbmNlcy5odG1s
CiBpbXBvcnRlZC9ibGluay9zdmcvY3VzdG9tL2ZpbGwtZmFsbGJhY2stY3VycmVudGNvbG9yLTEu
c3ZnCi1pbXBvcnRlZC9ibGluay9zdmcvY3VzdG9tL3RyYW5zZm9ybWVkLXRleHQtcGF0dGVybi5o
dG1sIFsgQ3Jhc2ggXQotaW1wb3J0ZWQvYmxpbmsvc3ZnL2N1c3RvbS92aWV3cG9ydC1yZXNvdXJj
ZS1pbnZhbC5zdmcgWyBDcmFzaCBdCiBpbXBvcnRlZC9ibGluay9zdmcvdGV4dC9vYmItcGFpbnRz
ZXJ2ZXIuaHRtbAogaW1wb3J0ZWQvbW96aWxsYS9zdmcvYXMtaW1hZ2UvYmFja2dyb3VuZC1yZXNp
emUtMy5odG1sCiBpbXBvcnRlZC9tb3ppbGxhL3N2Zy9hcy1pbWFnZS9iYWNrZ3JvdW5kLXJlc2l6
ZS00Lmh0bWwKQEAgLTI2MSwzOSArMjU5LDE5IEBAIGltcG9ydGVkL21vemlsbGEvc3ZnL2JsZW5k
LW92ZXJsYXkuc3ZnCiBpbXBvcnRlZC9tb3ppbGxhL3N2Zy9ibGVuZC1zYXR1cmF0aW9uLnN2Zwog
aW1wb3J0ZWQvbW96aWxsYS9zdmcvY29uZGl0aW9ucy0wOC5zdmcgWyBDcmFzaCBdCiBpbXBvcnRl
ZC9tb3ppbGxhL3N2Zy9keW5hbWljLXBhdHRlcm4tMDEuc3ZnIFsgQ3Jhc2ggXQotaW1wb3J0ZWQv
bW96aWxsYS9zdmcvZHluYW1pYy1wYXR0ZXJuLTAyLnN2ZyBbIENyYXNoIF0KLWltcG9ydGVkL21v
emlsbGEvc3ZnL2R5bmFtaWMtcGF0dGVybi1jb250ZW50cy0wMS5zdmcgWyBDcmFzaCBdCi1pbXBv
cnRlZC9tb3ppbGxhL3N2Zy9keW5hbWljLXBhdHRlcm4tY29udGVudHMtMDIuc3ZnIFsgQ3Jhc2gg
XQogaW1wb3J0ZWQvbW96aWxsYS9zdmcvZmlsdGVycy9mZUNvbXBvc2l0ZS0yLnN2ZwogaW1wb3J0
ZWQvbW96aWxsYS9zdmcvZmlsdGVycy9mZUZsb29kLTEuc3ZnCiBpbXBvcnRlZC9tb3ppbGxhL3N2
Zy9maWx0ZXJzL2ZlRmxvb2QtMi5zdmcKIGltcG9ydGVkL21vemlsbGEvc3ZnL2ZpbHRlcnMvZmVJ
bWFnZS0xLnN2ZwogaW1wb3J0ZWQvbW96aWxsYS9zdmcvbGluZWFyR3JhZGllbnQtYmFzaWMtMDMu
c3ZnCiBpbXBvcnRlZC9tb3ppbGxhL3N2Zy9tYXNrLXR5cGUtMDEuc3ZnCi1pbXBvcnRlZC9tb3pp
bGxhL3N2Zy9vYmplY3RCb3VuZGluZ0JveC1hbmQtcGF0dGVybi0wMWEuc3ZnIFsgQ3Jhc2ggXQot
aW1wb3J0ZWQvbW96aWxsYS9zdmcvb2JqZWN0Qm91bmRpbmdCb3gtYW5kLXBhdHRlcm4tMDFiLnN2
ZyBbIENyYXNoIF0KLWltcG9ydGVkL21vemlsbGEvc3ZnL29iamVjdEJvdW5kaW5nQm94LWFuZC1w
YXR0ZXJuLTAxYy5zdmcgWyBDcmFzaCBdCi1pbXBvcnRlZC9tb3ppbGxhL3N2Zy9vYmplY3RCb3Vu
ZGluZ0JveC1hbmQtcGF0dGVybi0wMi5zdmcgWyBDcmFzaCBdCi1pbXBvcnRlZC9tb3ppbGxhL3N2
Zy9vYmplY3RCb3VuZGluZ0JveC1hbmQtcGF0dGVybi0wMy5zdmcgWyBDcmFzaCBdCiBpbXBvcnRl
ZC9tb3ppbGxhL3N2Zy9vcGFjaXR5LWFuZC1ncmFkaWVudC0wMi5zdmcKIGltcG9ydGVkL21vemls
bGEvc3ZnL3BhaW50LW9yZGVyLTAxLnN2ZwogaW1wb3J0ZWQvbW96aWxsYS9zdmcvcGF0aC0wMi5z
dmcKLWltcG9ydGVkL21vemlsbGEvc3ZnL3BhdHRlcm4tYmFzaWMtMDEuc3ZnIFsgQ3Jhc2ggXQot
aW1wb3J0ZWQvbW96aWxsYS9zdmcvcGF0dGVybi1saXZlLTAxYS5zdmcgWyBDcmFzaCBdCi1pbXBv
cnRlZC9tb3ppbGxhL3N2Zy9wYXR0ZXJuLWxpdmUtMDFiLnN2ZyBbIENyYXNoIF0KLWltcG9ydGVk
L21vemlsbGEvc3ZnL3BhdHRlcm4tc2NhbGUtMDFhLnN2ZyBbIENyYXNoIF0KLWltcG9ydGVkL21v
emlsbGEvc3ZnL3BhdHRlcm4tc2NhbGUtMDFiLnN2ZyBbIENyYXNoIF0KLWltcG9ydGVkL21vemls
bGEvc3ZnL3BhdHRlcm4tc2NhbGUtMDFjLnN2ZyBbIENyYXNoIF0KLWltcG9ydGVkL21vemlsbGEv
c3ZnL3BhdHRlcm4tdHJhbnNmb3JtLXByZXNlbmNlLTAxLnN2ZyBbIENyYXNoIF0KIGltcG9ydGVk
L21vemlsbGEvc3ZnL3BhdHRlcm4tdHJhbnNmb3JtZWQtMDEuc3ZnCiBpbXBvcnRlZC9tb3ppbGxh
L3N2Zy90ZXh0LWdyYWRpZW50LTAxLnN2ZwogaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC1zY2Fs
ZS0wMi5zdmcKLWltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvbWFzay1jb250ZW50LTIuc3ZnIFsg
Q3Jhc2ggXQogaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC9zaW1wbGUtZmlsbC1ncmFkaWVudC5z
dmcKLWltcG9ydGVkL21vemlsbGEvc3ZnL3VzZXJTcGFjZU9uVXNlLWFuZC1wYXR0ZXJuLTAxLnN2
ZyBbIENyYXNoIF0KLWltcG9ydGVkL21vemlsbGEvc3ZnL3ZpZXdCb3gtYW5kLXBhdHRlcm4tMDEu
c3ZnIFsgQ3Jhc2ggXQotaW1wb3J0ZWQvbW96aWxsYS9zdmcvdmlld0JveC1hbmQtcGF0dGVybi0w
Mi5zdmcgWyBDcmFzaCBdCi1pbXBvcnRlZC9tb3ppbGxhL3N2Zy92aWV3Qm94LWFuZC1wYXR0ZXJu
LTAzLnN2ZyBbIENyYXNoIF0KIGltcG9ydGVkL3czYy9pMThuL2JpZGkvYmlkaS1wbGFpbnRleHQt
MDExLmh0bWwgWyBQYXNzIF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29tcGF0
L3dlYmtpdC1iYWNrZ3JvdW5kLW9yaWdpbi10ZXh0Lmh0bWwKIGltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvY29tcGF0L3dlYmtpdC1saW5lYXItZ3JhZGllbnQtbGluZS1ib3R0b20uaHRt
bApAQCAtOTEwLDI0ICs4ODgsNyBAQCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL21l
ZGlhY2FwdHVyZS1yZWNvcmQvTWVkaWFSZWNvcmRlci1wZWVyY29ubmVjdGlvbgogaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9taW1lc25pZmYvbWltZS10eXBlcy9jaGFyc2V0LXBhcmFt
ZXRlci53aW5kb3cuaHRtbAogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zZWxlY3Rp
b24vc2VsZWN0aW9uLXNlbGVjdC1hbGwtbW92ZS1pbnB1dC1jcmFzaC5odG1sCiBpbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci9mZXRj
aC1yZXF1ZXN0LXJlZGlyZWN0Lmh0dHBzLmh0bWwgWyBQYXNzIF0KLWltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvc3ZnL2FuaW1hdGlvbnMvYW5pbWF0ZVRyYW5zZm9ybS1wYXR0ZXJuLXRy
YW5zZm9ybS5odG1sIFsgQ3Jhc2ggXQotaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9z
dmcvYW5pbWF0aW9ucy9zdmdlbnVtLWFuaW1hdGlvbi0xLmh0bWwgWyBDcmFzaCBdCiBpbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N2Zy9leHRlbnNpYmlsaXR5L2ZvcmVpZ25PYmplY3Qv
bWFza2VkLmh0bWwKLWltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3ZnL2ltcG9ydC9j
b29yZHMtdW5pdHMtMDEtYi1tYW51YWwuc3ZnIFsgQ3Jhc2ggXQotaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9zdmcvaW1wb3J0L2xpbmtpbmctYS0xMC1mLW1hbnVhbC5zdmcgWyBDcmFz
aCBdCi1pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N2Zy9pbXBvcnQvbWFza2luZy1w
YXRoLTA3LWItbWFudWFsLnN2ZyBbIENyYXNoIF0KLWltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvc3ZnL2ltcG9ydC9wc2VydmVycy1ncmFkLTAzLWItbWFudWFsLnN2ZyBbIENyYXNoIF0K
LWltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3ZnL2ltcG9ydC9wc2VydmVycy1ncmFk
LTA2LWItbWFudWFsLnN2ZyBbIENyYXNoIF0KLWltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvc3ZnL2ltcG9ydC9wc2VydmVycy1wYXR0ZXJuLTAxLWItbWFudWFsLnN2ZyBbIENyYXNoIF0K
LWltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3ZnL2ltcG9ydC9wc2VydmVycy1wYXR0
ZXJuLTAyLWYtbWFudWFsLnN2ZyBbIENyYXNoIF0KLWltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvc3ZnL2ltcG9ydC9wc2VydmVycy1wYXR0ZXJuLTA0LWYtbWFudWFsLnN2ZyBbIENyYXNo
IF0KLWltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3ZnL2ltcG9ydC9wc2VydmVycy1w
YXR0ZXJuLTA1LWYtbWFudWFsLnN2ZyBbIENyYXNoIF0KLWltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvc3ZnL2ltcG9ydC9wc2VydmVycy1wYXR0ZXJuLTA4LWYtbWFudWFsLnN2ZyBbIENy
YXNoIF0KLWltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3ZnL2ltcG9ydC9wc2VydmVy
cy1wYXR0ZXJuLTA5LWYtbWFudWFsLnN2ZyBbIENyYXNoIF0KLWltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvc3ZnL2xpbmtpbmcvcmVmdGVzdHMvaHJlZi1wYXR0ZXJuLWVsZW1lbnQuaHRt
bCBbIENyYXNoIF0KLWltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3ZnL3BhaW50aW5n
L2N1cnJlbnRDb2xvci1vdmVycmlkZS1wc2VydmVyLXN0cm9rZS5zdmcgWyBDcmFzaCBdCi1pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N2Zy9wc2VydmVycy9yZWZ0ZXN0cy9wYXR0ZXJu
LWluaGVyaXRhbmNlLW5vdC1pbi1yZW5kZXJ0cmVlLTAyLnRlbnRhdGl2ZS5zdmcgWyBDcmFzaCBd
Ci1pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N2Zy9yZW5kZXIvcmVmdGVzdHMvZmls
dGVyLWVmZmVjdHMtb24tcGF0dGVybi5odG1sIFsgQ3Jhc2ggXQogaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy93ZWItYW5pbWF0aW9ucy90aW1pbmctbW9kZWwvYW5pbWF0aW9ucy91cGRh
dGUtcGxheWJhY2stcmF0ZS16ZXJvLmh0bWwgWyBQYXNzIF0KIGltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvd2ViYXVkaW8vdGhlLWF1ZGlvLWFwaS90aGUtYmlxdWFkZmlsdGVybm9kZS1p
bnRlcmZhY2Uvbm8tZGV6aXBwZXJpbmcuaHRtbAogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy94aHIvcmVzcG9uc2UtbWV0aG9kLmh0bSBbIFBhc3MgXQpAQCAtOTU0LDI4ICs5MTUsMTEg
QEAgc3ZnL2JhdGlrL3BhaW50cy9wYXR0ZXJuUHJlc2VydmVBc3BlY3RSYXRpb0Euc3ZnIFsgQ3Jh
c2ggXQogc3ZnL2JhdGlrL3BhaW50cy9wYXR0ZXJuUmVnaW9uQS5zdmcgWyBDcmFzaCBdCiBzdmcv
YmF0aWsvcGFpbnRzL3BhdHRlcm5SZWdpb25zLXBvc2l0aW9uZWQtb2JqZWN0cy5zdmcgWyBDcmFz
aCBdCiBzdmcvYmF0aWsvcGFpbnRzL3BhdHRlcm5SZWdpb25zLnN2ZyBbIENyYXNoIF0KLXN2Zy9i
YXRpay90ZXh0L3RleHRFZmZlY3QyLnN2ZyBbIENyYXNoIF0KIHN2Zy9jbGlwLXBhdGgvY2xpcC1w
YXRoLWxpbmUtdXNlLWJlZm9yZS1kZWZpbmVkLnN2ZyBbIFBhc3MgXQogc3ZnL2NsaXAtcGF0aC93
ZWJraXQtY2xpcC1wYXRoLWFmdGVyLnN2Zwogc3ZnL2NsaXAtcGF0aC93ZWJraXQtY2xpcC1wYXRo
LWJlZm9yZS5zdmcKLXN2Zy9jdXN0b20vaGlkcGktbWFza2luZy1jbGlwcGluZy5zdmcgWyBDcmFz
aCBdCi1zdmcvY3VzdG9tL2hyZWYtc3ZnLW5hbWVzcGFjZS1zdGF0aWMuc3ZnIFsgQ3Jhc2ggXQot
c3ZnL2N1c3RvbS9qcy1sYXRlLXBhdHRlcm4tY3JlYXRpb24uc3ZnIFsgQ3Jhc2ggXQotc3ZnL2N1
c3RvbS9qcy11cGRhdGUtcGF0dGVybi5zdmcgWyBDcmFzaCBdCi1zdmcvY3VzdG9tL2xhcmdlLWlt
YWdlLXBhdHRlcm4tY3Jhc2guaHRtbCBbIENyYXNoIF0KLXN2Zy9jdXN0b20vbG9jYWwtdXJsLXJl
ZmVyZW5jZS1wYXR0ZXJuLmh0bWwgWyBDcmFzaCBdCi1zdmcvY3VzdG9tL25ldy1pbWFnZS1pcy1o
dG1sLWVsZW1lbnQuc3ZnIFsgQ3Jhc2ggXQogc3ZnL2N1c3RvbS9zdWJwYXRocy1tb3ZldG8tb25s
eS1yZW5kZXJpbmcuc3ZnIFsgUGFzcyBdCiBzdmcvY3VzdG9tL3N2Zy1mb250cy1za2lwLWluay5o
dG1sCi1zdmcvZG9tL3ZpZXdwb3J0LWNvbnRhaW5lci1jcmFzaC5zdmcgWyBDcmFzaCBdCi1zdmcv
ZHluYW1pYy11cGRhdGVzL1NWR1BhdHRlcm5FbGVtZW50LWRvbS1oZWlnaHQtYXR0ci5odG1sIFsg
Q3Jhc2ggXQotc3ZnL2R5bmFtaWMtdXBkYXRlcy9TVkdQYXR0ZXJuRWxlbWVudC1kb20tcGF0dGVy
blRyYW5zZm9ybS1hdHRyLmh0bWwgWyBDcmFzaCBdCi1zdmcvZHluYW1pYy11cGRhdGVzL1NWR1Bh
dHRlcm5FbGVtZW50LWRvbS1wYXR0ZXJuVW5pdHMtYXR0ci5odG1sIFsgQ3Jhc2ggXQotc3ZnL2R5
bmFtaWMtdXBkYXRlcy9TVkdQYXR0ZXJuRWxlbWVudC1kb20td2lkdGgtYXR0ci5odG1sIFsgQ3Jh
c2ggXQotc3ZnL2R5bmFtaWMtdXBkYXRlcy9TVkdQYXR0ZXJuRWxlbWVudC1kb20teS1hdHRyLmh0
bWwgWyBDcmFzaCBdCi1zdmcvZHluYW1pYy11cGRhdGVzL1NWR1BhdHRlcm5FbGVtZW50LXN2Z2Rv
bS1wYXR0ZXJuQ29udGVudFVuaXRzLXByb3AuaHRtbCBbIENyYXNoIF0KLXN2Zy9keW5hbWljLXVw
ZGF0ZXMvU1ZHUGF0dGVybkVsZW1lbnQtc3ZnZG9tLXdpZHRoLXByb3AuaHRtbCBbIENyYXNoIF0K
LXN2Zy9keW5hbWljLXVwZGF0ZXMvU1ZHUGF0dGVybkVsZW1lbnQtc3ZnZG9tLXktcHJvcC5odG1s
IFsgQ3Jhc2ggXQogc3ZnL2dyYWRpZW50cy9ncmFkaWVudC1mbGlwcGVkLXN0YXJ0LWVuZC1wb2lu
dHMuc3ZnCiBzdmcvZ3JhZGllbnRzL3NwcmVhZE1ldGhvZC5zdmcKIHN2Zy9ncmFkaWVudHMvc3By
ZWFkTWV0aG9kQWxwaGEuc3ZnCkBAIC05ODksMTEgKzkzMyw2IEBAIHN2Zy9ncmFkaWVudHMvc3By
ZWFkTWV0aG9kUmV2ZXJzZWQuc3ZnCiBzdmcvZ3JhZGllbnRzL3N0b3BBbHBoYS5zdmcKIHN2Zy90
cmFuc2Zvcm1zL3RyYW5zZm9ybWVkLXRleHQtZmlsbC1ncmFkaWVudC5odG1sCiBzdmcvdHJhbnNm
b3Jtcy90cmFuc2Zvcm1lZC10ZXh0LWZpbGwtcGF0dGVybi5odG1sCi1zdmcvVzNDLVNWRy0xLjEt
U0Uvc3RydWN0LWRvbS0xMS1mLnN2ZyBbIENyYXNoIF0KLXN2Zy9XM0MtU1ZHLTEuMS9jb29yZHMt
dW5pdHMtMDEtYi5zdmcgWyBDcmFzaCBdCi1zdmcvVzNDLVNWRy0xLjEvcHNlcnZlcnMtZ3JhZC0w
NC1iLnN2ZyBbIENyYXNoIF0KLXN2Zy9XM0MtU1ZHLTEuMS9wc2VydmVycy1ncmFkLTA3LWIuc3Zn
IFsgQ3Jhc2ggXQotc3ZnL1czQy1TVkctMS4xL3JlbmRlci1lbGVtcy0wMS10LnN2ZyBbIENyYXNo
IF0KIHN5c3RlbS1wcmV2aWV3L2JhZGdlLmh0bWwKIHdlYmFuaW1hdGlvbnMvb3BhY2l0eS1hbmlt
YXRpb24uaHRtbAogd2ViZ2wvMS4wLjMvY29uZm9ybWFuY2UvY29udGV4dC9wcmVtdWx0aXBseWFs
cGhhLXRlc3QuaHRtbAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>449994</attachid>
            <date>2022-01-25 20:41:37 -0800</date>
            <delta_ts>2022-01-27 11:39:36 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-232411-20220125204136.patch</filename>
            <type>text/plain</type>
            <size>52437</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg4NTQ0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2U1MDRmM2FkYmQ2ZDY5
OTllMzAxNWFlMWIxZTRkNzFlYmQ1MmNhOC4uNTI4Mzg2MTBmZTdjNmZhNGMzNDVlZGU3MjNiNzdi
N2JiNDIxNDAyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg0IEBACisyMDIyLTAxLTI1ICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vzc10g
UGF0dGVybiBzaG91bGQgaG9sZCBTb3VyY2VJbWFnZSB3aGljaCBjYW4gYmUgY29udmVydGVkIHRv
IGEgTmF0aXZlSW1hZ2Ugb25seSB3aGVuIG5lZWRlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMyNDExCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS84
NDk5ODczOD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBNYWtlIFBhdHRlcm4gaG9sZCBhIFNvdXJjZUltYWdlIGFuZCBhZGQgZ2V0dGVycyB0byByZXRy
aWV2ZSBhIE5hdGl2ZUltYWdlCisgICAgICAgIGFuZCBhbiBJbWFnZUJ1ZmZlci4gSW4gdGhlc2Ug
Z2V0dGVycyB0aGUgU291cmNlSW1hZ2Ugd2lsbCBlaXRoZXIgcmV0dXJuCisgICAgICAgIHRoZSBj
dXJyZW50IGltYWdlIHNvdXJjZSBvciBnZXQgb25lIGZyb20gdGhlIG90aGVyIGlmIG5lZWRlZC4K
KworICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1BhdHRlcm4uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q2FudmFzUGF0dGVybjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1Bh
dHRlcm46OkNhbnZhc1BhdHRlcm4pOgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1BhdHRl
cm4uaDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmNy
ZWF0ZVBhdHRlcm4pOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDYW52YXMuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ2FudmFzOjpidWlsZEFycmF5Rm9yQ2FudmFzUGF0
dGVybik6CisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFnZS5oOgorICAg
ICAgICBNYWtlIE5hdGl2ZUltYWdlIGEgdGhyZWFkLXNhZmUgUmVmQ291bnRlZCBhbmQgbWFrZSBp
dHMgZGVzdHJ1Y3Rpb24gaGFwcGVuCisgICAgICAgIG9uIHRoZSBtYWluIHRocmVhZC4gVGhpcyBp
cyBzaW1pbGFyIHRvIHdoYXQgd2UgZG8gZm9yIEltYWdlQnVmZmVyLiBBbmQKKyAgICAgICAgdGhl
IHJlYXNvbiBmb3IgdGhpcyBpcyB0aGUgbWVzc2FnZSBoYW5kbGVyIGluIHRoZSBHUFVQcm9jZXNz
IG1heSBjcmVhdGUgCisgICAgICAgIE5hdGl2ZUltYWdlcyBvbiB0aGUgbWFpbiB0aHJlYWQgYXMg
dGhlIFNvdXJjZUltYWdlcyBmb3IgdGhlIFBhdHRlcm5zIG9mCisgICAgICAgIHRoZSBTZXRTdGF0
ZSBpdGVtLiBUaGVzZSBOYXRpdmVJbWFnZXMgd2lsbCBiZSBkZWxldGVkIGluIHRoZSByZXBsYXlp
bmcKKyAgICAgICAgdGhyZWFkIGFmdGVyIGFwcGx5aW5nIHRoZSBTZXRTdGF0ZSBpdGVtLgorCisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvUGF0dGVybi5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpQYXR0ZXJuOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UGF0dGVybjo6UGF0dGVybik6
CisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9QYXR0ZXJuLmg6CisgICAgICAgIChXZWJD
b3JlOjpQYXR0ZXJuOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UGF0dGVybjo6
ZGVjb2RlKToKKyAgICAgICAgQWRkIGVuY29kaW5nIGFuZCBkZWNvZGluZyBtZWhvZHMgZm9yIFBh
dHRlcm4gd2hpY2ggd2lsbCBiZSBjYWxsZWQgZnJvbSAKKyAgICAgICAgU2V0U3RhdGU6OmVuY29k
ZSgpIGFuZCBTZXRTdGF0ZTo6ZGVjb2RlKCkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9Tb3VyY2VJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VJbWFnZTo6bmF0aXZl
SW1hZ2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlSW1hZ2U6OmltYWdlQnVmZmVy
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUltYWdlOjpzaXplIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNvdXJjZUltYWdlOjpuYXRpdmVJbWFnZSk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpTb3VyY2VJbWFnZTo6aW1hZ2VCdWZmZXIpOiBEZWxldGVkLgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL1NvdXJjZUltYWdlLmg6CisgICAgICAgIE1ha2UgU291cmNl
SW1hZ2Uga2VlcCB0aGUgaW1hZ2Ugc291cmNlIGl0IHdhcyBjcmVhdGVkIHdpdGguIEdldCBhIHRl
bXBvcmFyeQorICAgICAgICBpbWFnZSBzb3VyY2UgaWYgaXQgaXMgZGlmZmVyZW50IGZyb20gd2hh
dCBpcyBzdG9yZWQgaW4gbV9pbWFnZVZhcmlhbnQuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jYWlyby9QYXR0ZXJuQ2Fpcm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGF0dGVybjo6
Y3JlYXRlUGxhdGZvcm1QYXR0ZXJuIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jZy9QYXR0ZXJuQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGF0dGVybjo6Y3JlYXRlUGxh
dGZvcm1QYXR0ZXJuIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5
bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlz
dDo6U2V0U3RhdGU6OlNldFN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpT
ZXRTdGF0ZTo6YXBwbHkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0
cy9EaXNwbGF5TGlzdEl0ZW1zLmg6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6U2V0
U3RhdGU6OnN0YXRlQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpTZXRT
dGF0ZTo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpTZXRT
dGF0ZTo6ZGVjb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpTZXRTdGF0ZTo6
c3Ryb2tlUGF0dGVyblBhcmFtZXRlcnMgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6RGlzcGxheUxpc3Q6OlNldFN0YXRlOjpmaWxsUGF0dGVyblBhcmFtZXRlcnMgY29uc3QpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlNldFN0YXRlOjpzdHJva2VQ
YXR0ZXJuSW1hZ2VJZGVudGlmaWVyIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpTZXRTdGF0ZTo6ZmlsbFBhdHRlcm5JbWFnZUlkZW50aWZpZXIgY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICBTaW1wbGlmeSBTZXRTdGF0ZSBieSBkZWxldGluZyB0aGUgUGF0
dGVybkRhdGEgbWVtYmVycy4gUmVwbGFjZSB0aGVzZSBtZW1iZXJzCisgICAgICAgIGJ5IHRoZSBz
dHJva2VQYXR0ZXJuIGFuZCBmaWxsUGF0dGVybiBzaW5jZSB0aGVzZSBwYXR0ZXJucyBjYW4gYmUg
ZW5jb2RlZAorICAgICAgICBhbmQgZGVjb2RlZC4gCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6YXBwbHlTZXRTdGF0ZUl0ZW0pOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlc291cmNlSGVhcC5oOgorICAgICAg
ICBBZGQgdGhlIGhlbHBlciBMb2NhbFJlc291cmNlSGVhcDo6Z2V0U291cmNlSW1hZ2UoKSB0byBi
ZSB1c2VkIGJ5IAorICAgICAgICBhcHBseVNldFN0YXRlSXRlbSgpLgorCisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9zb2Z0d2FyZS9GRVRpbGVTb2Z0d2FyZUFwcGxpZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RkVUaWxlU29mdHdhcmVBcHBsaWVyOjphcHBseSBjb25zdCk6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpwYXR0ZXJuRm9yRGVzY3JpcHRpb24pOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNW
R1Jlc291cmNlUGF0dGVybjo6YnVpbGRQYXR0ZXJuKToKKwogMjAyMi0wMS0yNSAgWmlyYW4gU3Vu
ICA8enN1bkBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtjc3MtZ3JpZF0gRml4IGdyaWQgc2hvcnRo
YW5kIGV4cGFuc2lvbiBvZiBpbml0aWFsIHZhbHVlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA4YzMwOGJjMjNjZWVj
YmNhMGExMzhlZDBlNTE3NjNiNWMxN2U2OWJkLi43OTNkY2RiYTcxMzdiNGFiZDBmOTNlYTQ4YjM0
YjljZjc1MDdlMGUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDIyLTAxLTI1ICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vzc10g
UGF0dGVybiBzaG91bGQgaG9sZCBTb3VyY2VJbWFnZSB3aGljaCBjYW4gYmUgY29udmVydGVkIHRv
IGEgTmF0aXZlSW1hZ2Ugb25seSB3aGVuIG5lZWRlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMyNDExCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS84
NDk5ODczOD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBBZGQgdGhlIGhlbHBlcnMgUXVhbGlmaWVkUmVzb3VyY2VIZWFwOjpnZXRTb3VyY2VJbWFnZSgp
IGFuZCAKKyAgICAgICAgUmVtb3RlUmVzb3VyY2VDYWNoZTo6Y2FjaGVkU291cmNlSW1hZ2UoKSB3
aGljaCB3aWxsIGJlIHVzZWQgYnkKKyAgICAgICAgUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlcjo6
c2V0U3RhdGUoKSB0byByZXBsYWNlIHRoZSAKKyAgICAgICAgUmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyIG9mIHRoZSBwYXR0ZXJuJ3MgdGlsZUltYWdlIGJ5IGFuIGFjdHVhbAorICAgICAgICBT
b3VyY2VJbWFnZS4KKworICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUXVhbGlmaWVkUmVz
b3VyY2VIZWFwLmg6CisgICAgICAgIChXZWJLaXQ6OlF1YWxpZmllZFJlc291cmNlSGVhcDo6Z2V0
U291cmNlSW1hZ2UgY29uc3QpOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3Rl
RGlzcGxheUxpc3RSZWNvcmRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZURpc3BsYXlM
aXN0UmVjb3JkZXI6OnNldFN0YXRlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlRGlzcGxheUxp
c3RSZWNvcmRlcjo6ZHJhd0ZpbHRlcmVkSW1hZ2VCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyOjpzZXRTdGF0ZVdpdGhRdWFsaWZpZWRJZGVudGlmaWVy
cyk6IERlbGV0ZWQuCisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZXNvdXJj
ZUNhY2hlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVzb3VyY2VDYWNoZTo6Y2FjaGVk
U291cmNlSW1hZ2UgY29uc3QpOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3Rl
UmVzb3VyY2VDYWNoZS5oOgorCiAyMDIyLTAxLTI0ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhm
aWVsZEBhcHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTihyMjgyMzIwKTogW0NvY29hXSBV
c2VyLWluc3RhbGxlZCBmb250cyBkb24ndCB3b3JrIGluIHRoZSBHUFUgUHJvY2VzcyAoaW4gV0tX
ZWJWaWV3KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUGF0
dGVybi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNQYXR0ZXJuLmNwcApp
bmRleCA4ZjE5MzgyY2IyMDNkMmU0MTFiY2E5NTdhNjkxYjFmYWM5OGEyY2ExLi42MGNlM2RlYTYx
ZTI0ZmE3YmQ0OWUyOGYxN2U3ZTQ0OGNkYjIwODJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9DYW52YXNQYXR0ZXJuLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9DYW52YXNQYXR0ZXJuLmNwcApAQCAtMzQsMTIgKzM0LDEyIEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotUmVmPENhbnZhc1BhdHRlcm4+IENhbnZhc1BhdHRlcm46OmNyZWF0ZShS
ZWY8TmF0aXZlSW1hZ2U+JiYgaW1hZ2UsIGJvb2wgcmVwZWF0WCwgYm9vbCByZXBlYXRZLCBib29s
IG9yaWdpbkNsZWFuKQorUmVmPENhbnZhc1BhdHRlcm4+IENhbnZhc1BhdHRlcm46OmNyZWF0ZShT
b3VyY2VJbWFnZSYmIGltYWdlLCBib29sIHJlcGVhdFgsIGJvb2wgcmVwZWF0WSwgYm9vbCBvcmln
aW5DbGVhbikKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDYW52YXNQYXR0ZXJuKFdURk1v
dmUoaW1hZ2UpLCByZXBlYXRYLCByZXBlYXRZLCBvcmlnaW5DbGVhbikpOwogfQogCi1DYW52YXNQ
YXR0ZXJuOjpDYW52YXNQYXR0ZXJuKFJlZjxOYXRpdmVJbWFnZT4mJiBpbWFnZSwgYm9vbCByZXBl
YXRYLCBib29sIHJlcGVhdFksIGJvb2wgb3JpZ2luQ2xlYW4pCitDYW52YXNQYXR0ZXJuOjpDYW52
YXNQYXR0ZXJuKFNvdXJjZUltYWdlJiYgaW1hZ2UsIGJvb2wgcmVwZWF0WCwgYm9vbCByZXBlYXRZ
LCBib29sIG9yaWdpbkNsZWFuKQogICAgIDogbV9wYXR0ZXJuKFBhdHRlcm46OmNyZWF0ZShXVEZN
b3ZlKGltYWdlKSwgeyByZXBlYXRYLCByZXBlYXRZIH0pKQogICAgICwgbV9vcmlnaW5DbGVhbihv
cmlnaW5DbGVhbikKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0Nh
bnZhc1BhdHRlcm4uaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1BhdHRlcm4u
aAppbmRleCBlNDZkMjFiYzUxMzVkOWE3NGY0NTc1YzlkZDY1ZTljZWNkY2I4ZDJhLi44NzFlMDQ1
NzdjYzUxZTU5ODA1N2JlY2UyYWJkNzVmNjZhYzk5YzYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9DYW52YXNQYXR0ZXJuLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvQ2FudmFzUGF0dGVybi5oCkBAIC0zMiwxMyArMzIsMTMgQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi1jbGFzcyBOYXRpdmVJbWFnZTsKIGNsYXNzIFBhdHRlcm47CitjbGFzcyBT
b3VyY2VJbWFnZTsKIHN0cnVjdCBET01NYXRyaXgyREluaXQ7CiAKIGNsYXNzIENhbnZhc1BhdHRl
cm4gOiBwdWJsaWMgUmVmQ291bnRlZDxDYW52YXNQYXR0ZXJuPiB7CiBwdWJsaWM6Ci0gICAgc3Rh
dGljIFJlZjxDYW52YXNQYXR0ZXJuPiBjcmVhdGUoUmVmPE5hdGl2ZUltYWdlPiYmLCBib29sIHJl
cGVhdFgsIGJvb2wgcmVwZWF0WSwgYm9vbCBvcmlnaW5DbGVhbik7CisgICAgc3RhdGljIFJlZjxD
YW52YXNQYXR0ZXJuPiBjcmVhdGUoU291cmNlSW1hZ2UmJiwgYm9vbCByZXBlYXRYLCBib29sIHJl
cGVhdFksIGJvb2wgb3JpZ2luQ2xlYW4pOwogICAgIH5DYW52YXNQYXR0ZXJuKCk7CiAKICAgICBz
dGF0aWMgYm9vbCBwYXJzZVJlcGV0aXRpb25UeXBlKGNvbnN0IFN0cmluZyYsIGJvb2wmIHJlcGVh
dFgsIGJvb2wmIHJlcGVhdFkpOwpAQCAtNTEsNyArNTEsNyBAQCBwdWJsaWM6CiAgICAgRXhjZXB0
aW9uT3I8dm9pZD4gc2V0VHJhbnNmb3JtKERPTU1hdHJpeDJESW5pdCYmKTsKIAogcHJpdmF0ZToK
LSAgICBDYW52YXNQYXR0ZXJuKFJlZjxOYXRpdmVJbWFnZT4mJiwgYm9vbCByZXBlYXRYLCBib29s
IHJlcGVhdFksIGJvb2wgb3JpZ2luQ2xlYW4pOworICAgIENhbnZhc1BhdHRlcm4oU291cmNlSW1h
Z2UmJiwgYm9vbCByZXBlYXRYLCBib29sIHJlcGVhdFksIGJvb2wgb3JpZ2luQ2xlYW4pOwogCiAg
ICAgUmVmPFBhdHRlcm4+IG1fcGF0dGVybjsKICAgICBib29sIG1fb3JpZ2luQ2xlYW47CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0
MkRCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0Nv
bnRleHQyREJhc2UuY3BwCmluZGV4IDU3N2Q1NWU3ZjA0MmE3ODQ4MjIwZTM4YWMzMmQzMDY5ODM2
YTM4OWQuLmI4OWU3N2ZiNjAwZTBlY2E5M2YwMTkyNDM5ZTQxMDczYzk1YWQxMzggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJh
c2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0Nv
bnRleHQyREJhc2UuY3BwCkBAIC0xOTUzLDcgKzE5NTMsNyBAQCBFeGNlcHRpb25PcjxSZWZQdHI8
Q2FudmFzUGF0dGVybj4+IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmNyZWF0ZVBhdHRl
cm4oSAogICAgIGlmICghbmF0aXZlSW1hZ2UpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJ
bnZhbGlkU3RhdGVFcnJvciB9OwogCi0gICAgcmV0dXJuIFJlZlB0cjxDYW52YXNQYXR0ZXJuPiB7
IENhbnZhc1BhdHRlcm46OmNyZWF0ZShuYXRpdmVJbWFnZS5yZWxlYXNlTm9uTnVsbCgpLCByZXBl
YXRYLCByZXBlYXRZLCBvcmlnaW5DbGVhbikgfTsKKyAgICByZXR1cm4gUmVmUHRyPENhbnZhc1Bh
dHRlcm4+IHsgQ2FudmFzUGF0dGVybjo6Y3JlYXRlKHsgbmF0aXZlSW1hZ2UucmVsZWFzZU5vbk51
bGwoKSB9LCByZXBlYXRYLCByZXBlYXRZLCBvcmlnaW5DbGVhbikgfTsKIH0KIAogRXhjZXB0aW9u
T3I8UmVmUHRyPENhbnZhc1BhdHRlcm4+PiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpj
cmVhdGVQYXR0ZXJuKENhbnZhc0Jhc2UmIGNhbnZhcywgYm9vbCByZXBlYXRYLCBib29sIHJlcGVh
dFkpCkBAIC0xOTY5LDcgKzE5NjksNyBAQCBFeGNlcHRpb25PcjxSZWZQdHI8Q2FudmFzUGF0dGVy
bj4+IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmNyZWF0ZVBhdHRlcm4oQwogICAgIGlm
ICghbmF0aXZlSW1hZ2UpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVF
cnJvciB9OwogCi0gICAgcmV0dXJuIFJlZlB0cjxDYW52YXNQYXR0ZXJuPiB7IENhbnZhc1BhdHRl
cm46OmNyZWF0ZShuYXRpdmVJbWFnZS5yZWxlYXNlTm9uTnVsbCgpLCByZXBlYXRYLCByZXBlYXRZ
LCBjYW52YXMub3JpZ2luQ2xlYW4oKSkgfTsKKyAgICByZXR1cm4gUmVmUHRyPENhbnZhc1BhdHRl
cm4+IHsgQ2FudmFzUGF0dGVybjo6Y3JlYXRlKHsgbmF0aXZlSW1hZ2UucmVsZWFzZU5vbk51bGwo
KSB9LCByZXBlYXRYLCByZXBlYXRZLCBjYW52YXMub3JpZ2luQ2xlYW4oKSkgfTsKIH0KICAgICAK
ICNpZiBFTkFCTEUoVklERU8pCkBAIC0xOTg0LDcgKzE5ODQsNyBAQCBFeGNlcHRpb25PcjxSZWZQ
dHI8Q2FudmFzUGF0dGVybj4+IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmNyZWF0ZVBh
dHRlcm4oSAogCiAjaWYgVVNFKENHKQogICAgIGlmIChhdXRvIG5hdGl2ZUltYWdlID0gdmlkZW9F
bGVtZW50Lm5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKSkKLSAgICAgICAgcmV0dXJuIFJlZlB0
cjxDYW52YXNQYXR0ZXJuPiB7IENhbnZhc1BhdHRlcm46OmNyZWF0ZShuYXRpdmVJbWFnZS5yZWxl
YXNlTm9uTnVsbCgpLCByZXBlYXRYLCByZXBlYXRZLCBvcmlnaW5DbGVhbikgfTsKKyAgICAgICAg
cmV0dXJuIFJlZlB0cjxDYW52YXNQYXR0ZXJuPiB7IENhbnZhc1BhdHRlcm46OmNyZWF0ZSh7IG5h
dGl2ZUltYWdlLnJlbGVhc2VOb25OdWxsKCkgfSwgcmVwZWF0WCwgcmVwZWF0WSwgb3JpZ2luQ2xl
YW4pIH07CiAjZW5kaWYKIAogICAgIGF1dG8gcmVuZGVyaW5nTW9kZSA9IGRyYXdpbmdDb250ZXh0
KCkgPyBkcmF3aW5nQ29udGV4dCgpLT5yZW5kZXJpbmdNb2RlKCkgOiBSZW5kZXJpbmdNb2RlOjpV
bmFjY2VsZXJhdGVkOwpAQCAtMTk5NCw3ICsxOTk0LDcgQEAgRXhjZXB0aW9uT3I8UmVmUHRyPENh
bnZhc1BhdHRlcm4+PiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpjcmVhdGVQYXR0ZXJu
KEgKIAogICAgIHZpZGVvRWxlbWVudC5wYWludEN1cnJlbnRGcmFtZUluQ29udGV4dChpbWFnZUJ1
ZmZlci0+Y29udGV4dCgpLCBGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBzaXplKHZpZGVvRWxlbWVu
dCkpKTsKICAgICAKLSAgICByZXR1cm4gUmVmUHRyPENhbnZhc1BhdHRlcm4+IHsgQ2FudmFzUGF0
dGVybjo6Y3JlYXRlKEltYWdlQnVmZmVyOjpzaW5rSW50b05hdGl2ZUltYWdlKFdURk1vdmUoaW1h
Z2VCdWZmZXIpKS5yZWxlYXNlTm9uTnVsbCgpLCByZXBlYXRYLCByZXBlYXRZLCBvcmlnaW5DbGVh
bikgfTsKKyAgICByZXR1cm4gUmVmUHRyPENhbnZhc1BhdHRlcm4+IHsgQ2FudmFzUGF0dGVybjo6
Y3JlYXRlKHsgaW1hZ2VCdWZmZXIucmVsZWFzZU5vbk51bGwoKSB9LCByZXBlYXRYLCByZXBlYXRZ
LCBvcmlnaW5DbGVhbikgfTsKIH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JDYW52YXMuY3BwCmluZGV4IDNkMzE4MTUwYmM5OGM2MjY5OTNmY2MxYjZiZmRh
OThhMzAyYzM1NDIuLjI5ODJjYmUwODhmZTMzZTRlN2JlMWQyYWM0MmI0ZjUzNTIzOGE0MzkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXMuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXMuY3BwCkBAIC0xMzM2
LDEwICsxMzM2LDcgQEAgUmVmPEpTT046OkFycmF5T2Y8SlNPTjo6VmFsdWU+PiBJbnNwZWN0b3JD
YW52YXM6OmJ1aWxkQXJyYXlGb3JDYW52YXNHcmFkaWVudChjb24KIAogUmVmPEpTT046OkFycmF5
T2Y8SlNPTjo6VmFsdWU+PiBJbnNwZWN0b3JDYW52YXM6OmJ1aWxkQXJyYXlGb3JDYW52YXNQYXR0
ZXJuKGNvbnN0IENhbnZhc1BhdHRlcm4mIGNhbnZhc1BhdHRlcm4pCiB7Ci0gICAgYXV0byYgdGls
ZUltYWdlID0gY2FudmFzUGF0dGVybi5wYXR0ZXJuKCkudGlsZUltYWdlKCk7Ci0gICAgRmxvYXRS
ZWN0IHJlY3QgPSB7IHsgfSwgdGlsZUltYWdlLnNpemUoKSB9OwotICAgIGF1dG8gaW1hZ2VCdWZm
ZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHRpbGVJbWFnZS5zaXplKCksIFJlbmRlcmluZ01vZGU6
OlVuYWNjZWxlcmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZv
cm1hdDo6QkdSQTgpOwotICAgIGltYWdlQnVmZmVyLT5jb250ZXh0KCkuZHJhd05hdGl2ZUltYWdl
KHRpbGVJbWFnZSwgdGlsZUltYWdlLnNpemUoKSwgcmVjdCwgcmVjdCk7CisgICAgYXV0byBpbWFn
ZUJ1ZmZlciA9IGNhbnZhc1BhdHRlcm4ucGF0dGVybigpLnRpbGVJbWFnZUJ1ZmZlcigpOwogCiAg
ICAgU3RyaW5nIHJlcGVhdDsKICAgICBib29sIHJlcGVhdFggPSBjYW52YXNQYXR0ZXJuLnBhdHRl
cm4oKS5yZXBlYXRYKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9OYXRpdmVJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmF0
aXZlSW1hZ2UuaAppbmRleCA3OTJiZGE2OTUwM2RhYTE3N2RlYjRjZGFhYzY0Mjc1MTkyZmViZjM0
Li5iZjE4OTc2OTI4ZWE5NzJjN2IzYTZkYjg0ZjYyZjcyMjQ5Y2ZmZjYxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFnZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hdGl2ZUltYWdlLmgKQEAgLTM4LDcgKzM4LDcg
QEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBOYXRpdmVJbWFnZSA6IHB1YmxpYyBS
ZWZDb3VudGVkPE5hdGl2ZUltYWdlPiwgcHVibGljIENhbk1ha2VXZWFrUHRyPE5hdGl2ZUltYWdl
PiB7CitjbGFzcyBOYXRpdmVJbWFnZSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxOYXRp
dmVJbWFnZSwgV1RGOjpEZXN0cnVjdGlvblRocmVhZDo6TWFpbj4sIHB1YmxpYyBDYW5NYWtlV2Vh
a1B0cjxOYXRpdmVJbWFnZT4gewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGlj
OgogICAgIGNsYXNzIE9ic2VydmVyIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL1BhdHRlcm4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvUGF0dGVybi5jcHAKaW5kZXggNjM1MzIzNzY5ZjgwMzNkZTMyOGU4ZDQ0ZTU3OTc1YTFkM2Nk
NjA2NS4uYzQ5MTFlODBmMGJlNTI2NGNkNmU1OWM3ZThkNjMzY2ZhNGIyMjcyZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0dGVybi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0dGVybi5jcHAKQEAgLTMxLDEzICszMSwx
MyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlZjxQYXR0ZXJuPiBQYXR0ZXJuOjpjcmVh
dGUoUmVmPE5hdGl2ZUltYWdlPiYmIHRpbGVJbWFnZSwgY29uc3QgUGFyYW1ldGVycyYgcGFyYW1l
dGVycykKK1JlZjxQYXR0ZXJuPiBQYXR0ZXJuOjpjcmVhdGUoU291cmNlSW1hZ2UmJiB0aWxlSW1h
Z2UsIGNvbnN0IFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgUGF0dGVybihXVEZNb3ZlKHRpbGVJbWFnZSksIHBhcmFtZXRlcnMpKTsKIH0KIAotUGF0
dGVybjo6UGF0dGVybihSZWY8TmF0aXZlSW1hZ2U+JiYgaW1hZ2UsIGNvbnN0IFBhcmFtZXRlcnMm
IHBhcmFtZXRlcnMpCi0gICAgOiBtX3RpbGVJbWFnZShXVEZNb3ZlKGltYWdlKSkKK1BhdHRlcm46
OlBhdHRlcm4oU291cmNlSW1hZ2UmJiB0aWxlSW1hZ2UsIGNvbnN0IFBhcmFtZXRlcnMmIHBhcmFt
ZXRlcnMpCisgICAgOiBtX3RpbGVJbWFnZShXVEZNb3ZlKHRpbGVJbWFnZSkpCiAgICAgLCBtX3Bh
cmFtZXRlcnMocGFyYW1ldGVycykKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL1BhdHRlcm4uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL1BhdHRlcm4uaAppbmRleCA3MjE0ZTgyNTA3MWI1NDQ3ZTdiY2JmMjAzMDNkOTJmNjJjMjUy
N2FmLi4xMmRiZTA2ZDdlMDYxYjQzNjBhZWViYTExZDg2NzZkYjZkMTc1MGE5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXR0ZXJuLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0dGVybi5oCkBAIC0yOCw3ICsyOCw3IEBACiAj
cHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkFmZmluZVRyYW5zZm9ybS5oIgotI2luY2x1ZGUgIklt
YWdlLmgiCisjaW5jbHVkZSAiU291cmNlSW1hZ2UuaCIKIAogI2luY2x1ZGUgPHd0Zi9SZWYuaD4K
ICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgpAQCAtNDUsNyArNDUsNiBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIGNsYXNzIEFmZmluZVRyYW5zZm9ybTsKIGNsYXNzIEdyYXBoaWNzQ29udGV4
dDsKLWNsYXNzIEltYWdlOwogCiBjbGFzcyBQYXR0ZXJuIGZpbmFsIDogcHVibGljIFJlZkNvdW50
ZWQ8UGF0dGVybj4gewogcHVibGljOgpAQCAtNjMsMjQgKzYyLDMxIEBAIHB1YmxpYzoKICAgICAg
ICAgYm9vbCByZXBlYXRZOwogICAgIH07CiAKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVm
PFBhdHRlcm4+IGNyZWF0ZShSZWY8TmF0aXZlSW1hZ2U+JiYgdGlsZUltYWdlLCBjb25zdCBQYXJh
bWV0ZXJzJiA9IHsgfSk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxQYXR0ZXJuPiBj
cmVhdGUoU291cmNlSW1hZ2UmJiB0aWxlSW1hZ2UsIGNvbnN0IFBhcmFtZXRlcnMmID0geyB9KTsK
ICAgICBXRUJDT1JFX0VYUE9SVCB+UGF0dGVybigpOwogCi0gICAgTmF0aXZlSW1hZ2UmIHRpbGVJ
bWFnZSgpIGNvbnN0IHsgcmV0dXJuIG1fdGlsZUltYWdlLmdldCgpOyB9CisgICAgY29uc3QgU291
cmNlSW1hZ2UmIHRpbGVJbWFnZSgpIGNvbnN0IHsgcmV0dXJuIG1fdGlsZUltYWdlOyB9CisgICAg
UmVmUHRyPE5hdGl2ZUltYWdlPiB0aWxlTmF0aXZlSW1hZ2UoKSBjb25zdCB7IHJldHVybiBtX3Rp
bGVJbWFnZS5uYXRpdmVJbWFnZSgpOyB9CisgICAgUmVmUHRyPEltYWdlQnVmZmVyPiB0aWxlSW1h
Z2VCdWZmZXIoKSBjb25zdCB7IHJldHVybiBtX3RpbGVJbWFnZS5pbWFnZUJ1ZmZlcigpOyB9CiAg
ICAgY29uc3QgUGFyYW1ldGVycyYgcGFyYW1ldGVycygpIGNvbnN0IHsgcmV0dXJuIG1fcGFyYW1l
dGVyczsgfQogCiAgICAgLy8gUGF0dGVybiBzcGFjZSBpcyBhbiBhYnN0cmFjdCBzcGFjZSB0aGF0
IG1hcHMgdG8gdGhlIGRlZmF1bHQgdXNlciBzcGFjZSBieSB0aGUgdHJhbnNmb3JtYXRpb24gJ3Vz
ZXJTcGFjZVRyYW5zZm9ybScKICAgICBQbGF0Zm9ybVBhdHRlcm5QdHIgY3JlYXRlUGxhdGZvcm1Q
YXR0ZXJuKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdXNlclNwYWNlVHJhbnNmb3JtKSBjb25zdDsK
IAorICAgIHZvaWQgc2V0VGlsZUltYWdlKFNvdXJjZUltYWdlJiYgdGlsZUltYWdlKSB7IG1fdGls
ZUltYWdlID0gV1RGTW92ZSh0aWxlSW1hZ2UpOyB9CiAgICAgdm9pZCBzZXRQYXR0ZXJuU3BhY2VU
cmFuc2Zvcm0oY29uc3QgQWZmaW5lVHJhbnNmb3JtJik7CisKICAgICBjb25zdCBBZmZpbmVUcmFu
c2Zvcm0mIHBhdHRlcm5TcGFjZVRyYW5zZm9ybSgpIGNvbnN0IHsgcmV0dXJuIG1fcGFyYW1ldGVy
cy5wYXR0ZXJuU3BhY2VUcmFuc2Zvcm07IH07CiAgICAgYm9vbCByZXBlYXRYKCkgY29uc3QgeyBy
ZXR1cm4gbV9wYXJhbWV0ZXJzLnJlcGVhdFg7IH0KICAgICBib29sIHJlcGVhdFkoKSBjb25zdCB7
IHJldHVybiBtX3BhcmFtZXRlcnMucmVwZWF0WTsgfQogCisgICAgdGVtcGxhdGU8Y2xhc3MgRW5j
b2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OworICAgIHRlbXBsYXRlPGNsYXNzIERl
Y29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFJlZjxQYXR0ZXJuPj4gZGVjb2RlKERlY29kZXIm
KTsKKwogcHJpdmF0ZToKLSAgICBQYXR0ZXJuKFJlZjxOYXRpdmVJbWFnZT4mJiwgY29uc3QgUGFy
YW1ldGVycyYpOworICAgIFBhdHRlcm4oU291cmNlSW1hZ2UmJiwgY29uc3QgUGFyYW1ldGVycyYp
OwogCi0gICAgUmVmPE5hdGl2ZUltYWdlPiBtX3RpbGVJbWFnZTsKKyAgICBTb3VyY2VJbWFnZSBt
X3RpbGVJbWFnZTsKICAgICBQYXJhbWV0ZXJzIG1fcGFyYW1ldGVyczsKIH07CiAKQEAgLTExMyw0
ICsxMTksMjcgQEAgc3RkOjpvcHRpb25hbDxQYXR0ZXJuOjpQYXJhbWV0ZXJzPiBQYXR0ZXJuOjpQ
YXJhbWV0ZXJzOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICByZXR1cm4ge3sgKnJlcGVh
dFgsICpyZXBlYXRZLCAqcGF0dGVyblNwYWNlVHJhbnNmb3JtIH19OwogfQogCit0ZW1wbGF0ZTxj
bGFzcyBFbmNvZGVyPgordm9pZCBQYXR0ZXJuOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29u
c3QKK3sKKyAgICBlbmNvZGVyIDw8IG1fdGlsZUltYWdlOworICAgIGVuY29kZXIgPDwgbV9wYXJh
bWV0ZXJzOworfQorCit0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgorc3RkOjpvcHRpb25hbDxSZWY8
UGF0dGVybj4+IFBhdHRlcm46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIHN0ZDo6
b3B0aW9uYWw8U291cmNlSW1hZ2U+IHRpbGVJbWFnZTsKKyAgICBkZWNvZGVyID4+IHRpbGVJbWFn
ZTsKKyAgICBpZiAoIXRpbGVJbWFnZSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKwor
ICAgIHN0ZDo6b3B0aW9uYWw8UGFyYW1ldGVycz4gcGFyYW1ldGVyczsKKyAgICBkZWNvZGVyID4+
IHBhcmFtZXRlcnM7CisgICAgaWYgKCFwYXJhbWV0ZXJzKQorICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OworCisgICAgcmV0dXJuIFBhdHRlcm46OmNyZWF0ZShXVEZNb3ZlKCp0aWxlSW1hZ2Up
LCAqcGFyYW1ldGVycyk7Cit9CisKIH0gLy9uYW1lc3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NvdXJjZUltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL1NvdXJjZUltYWdlLmNwcAppbmRleCA5Y2MzYjJjODY0MTIyZGEx
N2VjYzA5MDBlOTZmODc3ZjQ1NjZiZDVjLi5lOWM1YTFjMjhlOTBhMzhiNTRmMmVlZmIxY2M3YTNi
YTg1YjZjYTBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9T
b3VyY2VJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU291
cmNlSW1hZ2UuY3BwCkBAIC00Miw3ICs0Miw3IEBAIE5hdGl2ZUltYWdlKiBTb3VyY2VJbWFnZTo6
bmF0aXZlSW1hZ2VJZkV4aXN0cygpIGNvbnN0CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLU5h
dGl2ZUltYWdlKiBTb3VyY2VJbWFnZTo6bmF0aXZlSW1hZ2UoKQorUmVmUHRyPE5hdGl2ZUltYWdl
PiBTb3VyY2VJbWFnZTo6bmF0aXZlSW1hZ2UoKSBjb25zdAogewogICAgIGlmICghc3RkOjpob2xk
c19hbHRlcm5hdGl2ZTxSZWY8SW1hZ2VCdWZmZXI+PihtX2ltYWdlVmFyaWFudCkpCiAgICAgICAg
IHJldHVybiBuYXRpdmVJbWFnZUlmRXhpc3RzKCk7CkBAIC01Miw4ICs1Miw3IEBAIE5hdGl2ZUlt
YWdlKiBTb3VyY2VJbWFnZTo6bmF0aXZlSW1hZ2UoKQogICAgIGlmICghbmF0aXZlSW1hZ2UpCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgbV9pbWFnZVZhcmlhbnQgPSBuYXRpdmVJbWFn
ZS5yZWxlYXNlTm9uTnVsbCgpOwotICAgIHJldHVybiBuYXRpdmVJbWFnZUlmRXhpc3RzKCk7Cisg
ICAgcmV0dXJuIG5hdGl2ZUltYWdlOwogfQogCiBJbWFnZUJ1ZmZlciogU291cmNlSW1hZ2U6Omlt
YWdlQnVmZmVySWZFeGlzdHMoKSBjb25zdApAQCAtNjMsNyArNjIsNyBAQCBJbWFnZUJ1ZmZlciog
U291cmNlSW1hZ2U6OmltYWdlQnVmZmVySWZFeGlzdHMoKSBjb25zdAogICAgIHJldHVybiBudWxs
cHRyOwogfQogCi1JbWFnZUJ1ZmZlciogU291cmNlSW1hZ2U6OmltYWdlQnVmZmVyKCkKK1JlZlB0
cjxJbWFnZUJ1ZmZlcj4gU291cmNlSW1hZ2U6OmltYWdlQnVmZmVyKCkgY29uc3QKIHsKICAgICBp
ZiAoIXN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPE5hdGl2ZUltYWdlPj4obV9pbWFnZVZhcmlh
bnQpKQogICAgICAgICByZXR1cm4gaW1hZ2VCdWZmZXJJZkV4aXN0cygpOwpAQCAtNzcsOCArNzYs
NyBAQCBJbWFnZUJ1ZmZlciogU291cmNlSW1hZ2U6OmltYWdlQnVmZmVyKCkKIAogICAgIGltYWdl
QnVmZmVyLT5jb250ZXh0KCkuZHJhd05hdGl2ZUltYWdlKG5hdGl2ZUltYWdlLCByZWN0LnNpemUo
KSwgcmVjdCwgcmVjdCk7CiAKLSAgICBtX2ltYWdlVmFyaWFudCA9IGltYWdlQnVmZmVyLnJlbGVh
c2VOb25OdWxsKCk7Ci0gICAgcmV0dXJuIGltYWdlQnVmZmVySWZFeGlzdHMoKTsKKyAgICByZXR1
cm4gaW1hZ2VCdWZmZXI7CiB9CiAKIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBTb3VyY2VJ
bWFnZTo6aW1hZ2VJZGVudGlmaWVyKCkgY29uc3QKQEAgLTk2LDQgKzk0LDIwIEBAIFJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllciBTb3VyY2VJbWFnZTo6aW1hZ2VJZGVudGlmaWVyKCkgY29uc3QK
ICAgICApOwogfQogCitJbnRTaXplIFNvdXJjZUltYWdlOjpzaXplKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gV1RGOjpzd2l0Y2hPbihtX2ltYWdlVmFyaWFudCwKKyAgICAgICAgWyZdIChjb25zdCBS
ZWY8TmF0aXZlSW1hZ2U+JiBuYXRpdmVJbWFnZSkgeworICAgICAgICAgICAgcmV0dXJuIG5hdGl2
ZUltYWdlLT5zaXplKCk7CisgICAgICAgIH0sCisgICAgICAgIFsmXSAoY29uc3QgUmVmPEltYWdl
QnVmZmVyPiYgaW1hZ2VCdWZmZXIpIHsKKyAgICAgICAgICAgIHJldHVybiBpbWFnZUJ1ZmZlci0+
YmFja2VuZFNpemUoKTsKKyAgICAgICAgfSwKKyAgICAgICAgWyZdIChSZW5kZXJpbmdSZXNvdXJj
ZUlkZW50aWZpZXIpIHsKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAg
ICAgICAgcmV0dXJuIEludFNpemUoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgKTsKK30KKwog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvU291cmNlSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL1NvdXJjZUltYWdlLmgKaW5kZXggMjBkM2Q4MGQ0MzYxNTg0ZDhmNGY0ZWNjZTgzMGM1NDlh
OWNjODI5MC4uZjljMzRhYmRiOWI3YTY4Njk1ZDE3YWY4NDA0YTU5MmQ1NjRjZTgzMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlSW1hZ2UuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Tb3VyY2VJbWFnZS5oCkBAIC00Miwx
MiArNDIsMTMgQEAgcHVibGljOgogICAgIFNvdXJjZUltYWdlKEltYWdlVmFyaWFudCYmKTsKIAog
ICAgIE5hdGl2ZUltYWdlKiBuYXRpdmVJbWFnZUlmRXhpc3RzKCkgY29uc3Q7Ci0gICAgTmF0aXZl
SW1hZ2UqIG5hdGl2ZUltYWdlKCk7CisgICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBuYXRpdmVJbWFn
ZSgpIGNvbnN0OwogCiAgICAgSW1hZ2VCdWZmZXIqIGltYWdlQnVmZmVySWZFeGlzdHMoKSBjb25z
dDsKLSAgICBJbWFnZUJ1ZmZlciogaW1hZ2VCdWZmZXIoKTsKKyAgICBSZWZQdHI8SW1hZ2VCdWZm
ZXI+IGltYWdlQnVmZmVyKCkgY29uc3Q7CiAKICAgICBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXIgaW1hZ2VJZGVudGlmaWVyKCkgY29uc3Q7CisgICAgSW50U2l6ZSBzaXplKCkgY29uc3Q7CiAK
ICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7
CiAgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8U291cmNl
SW1hZ2U+IGRlY29kZShEZWNvZGVyJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYWlyby9QYXR0ZXJuQ2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGF0dGVybkNhaXJvLmNwcAppbmRleCA2OGRhYmFmOThhY2E5
ZDFjZmI3MWUxNjUyMmI5ZGViMjU4MDdmZjFmLi5hM2ZjZDY4ZmY4YjdjZDk2ZDQ0ZTJmNTdhOTRh
MzllOTM3MWFjMTlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9QYXR0ZXJuQ2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhaXJvL1BhdHRlcm5DYWlyby5jcHAKQEAgLTM1LDcgKzM1LDExIEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogY2Fpcm9fcGF0dGVybl90KiBQYXR0ZXJuOjpjcmVhdGVQbGF0Zm9ybVBh
dHRlcm4oY29uc3QgQWZmaW5lVHJhbnNmb3JtJikgY29uc3QKIHsKLSAgICBhdXRvIHBsYXRmb3Jt
SW1hZ2UgPSB0aWxlSW1hZ2UoKS5wbGF0Zm9ybUltYWdlKCk7CisgICAgYXV0byBuYXRpdmVJbWFn
ZSA9IHRpbGVOYXRpdmVJbWFnZSgpOworICAgIGlmICghbmF0aXZlSW1hZ2UpCisgICAgICAgIHJl
dHVybiBudWxscHRyOworCisgICAgYXV0byBwbGF0Zm9ybUltYWdlID0gbmF0aXZlSW1hZ2UtPnBs
YXRmb3JtSW1hZ2UoKTsKICAgICBpZiAoIXBsYXRmb3JtSW1hZ2UpCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
Zy9QYXR0ZXJuQ0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGF0
dGVybkNHLmNwcAppbmRleCAwNWEzOTE2NTQwYmI3NmRhM2YwYWJhYTMzOTRmYzhkZDA4OGM4ZGE5
Li5mNjVhNzc2MGM2NTk5MWIyNzFmMmQzZjJiYzI1MjgxNjE1ZDE3NGQwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QYXR0ZXJuQ0cuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BhdHRlcm5DRy5jcHAKQEAgLTU1LDE2
ICs1NSwyMCBAQCBzdGF0aWMgdm9pZCBwYXR0ZXJuUmVsZWFzZUNhbGxiYWNrKHZvaWQqIGluZm8p
CiAKIFJldGFpblB0cjxDR1BhdHRlcm5SZWY+IFBhdHRlcm46OmNyZWF0ZVBsYXRmb3JtUGF0dGVy
bihjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHVzZXJTcGFjZVRyYW5zZm9ybSkgY29uc3QKIHsKLSAg
ICBGbG9hdFJlY3QgdGlsZVJlY3QgPSB7IHsgfSwgdGlsZUltYWdlKCkuc2l6ZSgpIH07Ci0KLSAg
ICBBZmZpbmVUcmFuc2Zvcm0gcGF0dGVyblRyYW5zZm9ybSA9IHVzZXJTcGFjZVRyYW5zZm9ybSAq
IHBhdHRlcm5TcGFjZVRyYW5zZm9ybSgpOwotICAgIHBhdHRlcm5UcmFuc2Zvcm0uc2NhbGVOb25V
bmlmb3JtKDEsIC0xKTsKLSAgICBwYXR0ZXJuVHJhbnNmb3JtLnRyYW5zbGF0ZSgwLCAtdGlsZVJl
Y3QuaGVpZ2h0KCkpOworICAgIGF1dG8gbmF0aXZlSW1hZ2UgPSB0aWxlTmF0aXZlSW1hZ2UoKTsK
KyAgICBpZiAoIW5hdGl2ZUltYWdlKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIFBs
YXRmb3JtSW1hZ2VQdHIgcGxhdGZvcm1JbWFnZSA9IHRpbGVJbWFnZSgpLnBsYXRmb3JtSW1hZ2Uo
KTsKKyAgICBhdXRvIHBsYXRmb3JtSW1hZ2UgPSBuYXRpdmVJbWFnZS0+cGxhdGZvcm1JbWFnZSgp
OwogICAgIGlmICghcGxhdGZvcm1JbWFnZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKKyAg
ICBGbG9hdFJlY3QgdGlsZVJlY3QgPSB7IHsgfSwgbmF0aXZlSW1hZ2UtPnNpemUoKSB9OworCisg
ICAgYXV0byBwYXR0ZXJuVHJhbnNmb3JtID0gdXNlclNwYWNlVHJhbnNmb3JtICogcGF0dGVyblNw
YWNlVHJhbnNmb3JtKCk7CisgICAgcGF0dGVyblRyYW5zZm9ybS5zY2FsZU5vblVuaWZvcm0oMSwg
LTEpOworICAgIHBhdHRlcm5UcmFuc2Zvcm0udHJhbnNsYXRlKDAsIC10aWxlUmVjdC5oZWlnaHQo
KSk7CisKICAgICAvLyBJZiB3ZSdyZSByZXBlYXRpbmcgaW4gYm90aCBkaXJlY3Rpb25zLCB3ZSBj
YW4gdXNlIGltYWdlLWJhY2tlZCBwYXR0ZXJucwogICAgIC8vIGluc3RlYWQgb2YgY3VzdG9tIHBh
dHRlcm5zLCBhbmQgYXZvaWQgdGlsaW5nLWVkZ2UgcGl4ZWwgY3JhY2tzLgogICAgIGlmIChyZXBl
YXRYKCkgJiYgcmVwZWF0WSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwCmlu
ZGV4IDMxYWM4YjRhZDdkYmY3MmRhMzY0YTA1NTc3NmY2YjI5NzlhNDY5ZDcuLmEzNzVkYzI2MjU4
YzdhNGViZjRlMGYxNTcwMGM5YTQwY2NiM2E2ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxp
c3RJdGVtcy5jcHAKQEAgLTE1MywxOSArMTUzLDEzIEBAIFNldFN0YXRlOjpTZXRTdGF0ZShjb25z
dCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdGF0
CiB7CiB9CiAKLVNldFN0YXRlOjpTZXRTdGF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZUNo
YW5nZSYgc3RhdGVDaGFuZ2UsIGNvbnN0IFBhdHRlcm5EYXRhJiBzdHJva2VQYXR0ZXJuLCBjb25z
dCBQYXR0ZXJuRGF0YSYgZmlsbFBhdHRlcm4pCitTZXRTdGF0ZTo6U2V0U3RhdGUoY29uc3QgR3Jh
cGhpY3NDb250ZXh0U3RhdGVDaGFuZ2UmIHN0YXRlQ2hhbmdlKQogICAgIDogbV9zdGF0ZUNoYW5n
ZShzdGF0ZUNoYW5nZSkKLSAgICAsIG1fc3Ryb2tlUGF0dGVybihzdHJva2VQYXR0ZXJuKQotICAg
ICwgbV9maWxsUGF0dGVybihmaWxsUGF0dGVybikKIHsKIH0KIAotdm9pZCBTZXRTdGF0ZTo6YXBw
bHkoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBOYXRpdmVJbWFnZSogc3Ryb2tlUGF0dGVybklt
YWdlLCBOYXRpdmVJbWFnZSogZmlsbFBhdHRlcm5JbWFnZSkKK3ZvaWQgU2V0U3RhdGU6OmFwcGx5
KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKIHsKLSAgICBpZiAobV9zdGF0ZUNoYW5nZS5tX2No
YW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdHJva2VQYXR0ZXJuQ2hh
bmdlKSAmJiBzdHJva2VQYXR0ZXJuSW1hZ2UpCi0gICAgICAgIG1fc3RhdGVDaGFuZ2UubV9zdGF0
ZS5zdHJva2VQYXR0ZXJuID0gUGF0dGVybjo6Y3JlYXRlKCpzdHJva2VQYXR0ZXJuSW1hZ2UsIG1f
c3Ryb2tlUGF0dGVybi5wYXJhbWV0ZXJzKTsKLSAgICBpZiAobV9zdGF0ZUNoYW5nZS5tX2NoYW5n
ZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpGaWxsUGF0dGVybkNoYW5nZSkg
JiYgZmlsbFBhdHRlcm5JbWFnZSkKLSAgICAgICAgbV9zdGF0ZUNoYW5nZS5tX3N0YXRlLmZpbGxQ
YXR0ZXJuID0gUGF0dGVybjo6Y3JlYXRlKCpmaWxsUGF0dGVybkltYWdlLCBtX2ZpbGxQYXR0ZXJu
LnBhcmFtZXRlcnMpOwogICAgIG1fc3RhdGVDaGFuZ2UuYXBwbHkoY29udGV4dCk7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdEl0ZW1zLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNw
bGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oCmluZGV4IGVmMGMxODc3ZDE5MzhiZGMwNjEwNTRi
OTQyZmE2MjgwYmM0N2YyMDMuLmVmNDgwNzhkNmZhYzVmZjY1ZDExZjMwNDk2MDM2NTUxNDEyODc3
NjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaApAQCAtMjQ5LDI3ICsyNDksMTcg
QEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIFNldFN0YXRlKGNvbnN0IEdyYXBoaWNzQ29u
dGV4dFN0YXRlJiwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0YXRlQ2hhbmdlRmxhZ3MpOwogCiAg
ICAgY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGVDaGFuZ2UmIHN0YXRlQ2hhbmdlKCkgY29uc3Qg
eyByZXR1cm4gbV9zdGF0ZUNoYW5nZTsgfQotICAgIGNvbnN0IFBhdHRlcm46OlBhcmFtZXRlcnMm
IHN0cm9rZVBhdHRlcm5QYXJhbWV0ZXJzKCkgY29uc3QgeyByZXR1cm4gbV9zdHJva2VQYXR0ZXJu
LnBhcmFtZXRlcnM7IH0KLSAgICBjb25zdCBQYXR0ZXJuOjpQYXJhbWV0ZXJzJiBmaWxsUGF0dGVy
blBhcmFtZXRlcnMoKSBjb25zdCB7IHJldHVybiBtX2ZpbGxQYXR0ZXJuLnBhcmFtZXRlcnM7IH0K
LSAgICBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgc3Ryb2tlUGF0dGVybkltYWdlSWRlbnRp
ZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fc3Ryb2tlUGF0dGVybi50aWxlSW1hZ2VJZGVudGlmaWVy
OyB9Ci0gICAgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIGZpbGxQYXR0ZXJuSW1hZ2VJZGVu
dGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9maWxsUGF0dGVybi50aWxlSW1hZ2VJZGVudGlmaWVy
OyB9CisgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVDaGFuZ2UmIHN0YXRlQ2hhbmdlKCkgeyByZXR1
cm4gbV9zdGF0ZUNoYW5nZTsgfQogCiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBl
bmNvZGUoRW5jb2RlciYpIGNvbnN0OwogICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRp
YyBzdGQ6Om9wdGlvbmFsPFNldFN0YXRlPiBkZWNvZGUoRGVjb2RlciYpOwogCi0gICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBhcHBseShHcmFwaGljc0NvbnRleHQmLCBOYXRpdmVJbWFnZSogc3Ryb2tl
UGF0dGVybkltYWdlLCBOYXRpdmVJbWFnZSogZmlsbFBhdHRlcm5JbWFnZSk7CisgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBhcHBseShHcmFwaGljc0NvbnRleHQmKTsKIAogcHJpdmF0ZToKLSAgICBz
dHJ1Y3QgUGF0dGVybkRhdGEgewotICAgICAgICBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIg
dGlsZUltYWdlSWRlbnRpZmllcjsKLSAgICAgICAgUGF0dGVybjo6UGFyYW1ldGVycyBwYXJhbWV0
ZXJzOwotICAgIH07Ci0KLSAgICBXRUJDT1JFX0VYUE9SVCBTZXRTdGF0ZShjb25zdCBHcmFwaGlj
c0NvbnRleHRTdGF0ZUNoYW5nZSYsIGNvbnN0IFBhdHRlcm5EYXRhJiBzdHJva2VQYXR0ZXJuLCBj
b25zdCBQYXR0ZXJuRGF0YSYgZmlsbFBhdHRlcm4pOworICAgIFdFQkNPUkVfRVhQT1JUIFNldFN0
YXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlQ2hhbmdlJik7CiAKICAgICBHcmFwaGljc0Nv
bnRleHRTdGF0ZUNoYW5nZSBtX3N0YXRlQ2hhbmdlOwotICAgIFBhdHRlcm5EYXRhIG1fc3Ryb2tl
UGF0dGVybjsKLSAgICBQYXR0ZXJuRGF0YSBtX2ZpbGxQYXR0ZXJuOwogfTsKIAogdGVtcGxhdGU8
Y2xhc3MgRW5jb2Rlcj4KQEAgLTI4Nyw4ICsyNzcsNyBAQCB2b2lkIFNldFN0YXRlOjplbmNvZGUo
RW5jb2RlciYgZW5jb2RlcikgY29uc3QKIAogICAgIGlmIChjaGFuZ2VGbGFncy5jb250YWlucyhH
cmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlUGF0dGVybkNoYW5nZSkpIHsKICAgICAgICAgQVNT
RVJUKHN0YXRlLnN0cm9rZVBhdHRlcm4pOwotICAgICAgICBlbmNvZGVyIDw8IHN0YXRlLnN0cm9r
ZVBhdHRlcm4tPnRpbGVJbWFnZSgpLnJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcigpOwotICAg
ICAgICBlbmNvZGVyIDw8IHN0YXRlLnN0cm9rZVBhdHRlcm4tPnBhcmFtZXRlcnMoKTsKKyAgICAg
ICAgZW5jb2RlciA8PCAqc3RhdGUuc3Ryb2tlUGF0dGVybjsKICAgICB9CiAKICAgICBpZiAoY2hh
bmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkZpbGxHcmFkaWVudENoYW5n
ZSkpIHsKQEAgLTI5OCw4ICsyODcsNyBAQCB2b2lkIFNldFN0YXRlOjplbmNvZGUoRW5jb2RlciYg
ZW5jb2RlcikgY29uc3QKIAogICAgIGlmIChjaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0Nv
bnRleHRTdGF0ZTo6RmlsbFBhdHRlcm5DaGFuZ2UpKSB7CiAgICAgICAgIEFTU0VSVChzdGF0ZS5m
aWxsUGF0dGVybik7Ci0gICAgICAgIGVuY29kZXIgPDwgc3RhdGUuZmlsbFBhdHRlcm4tPnRpbGVJ
bWFnZSgpLnJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcigpOwotICAgICAgICBlbmNvZGVyIDw8
IHN0YXRlLmZpbGxQYXR0ZXJuLT5wYXJhbWV0ZXJzKCk7CisgICAgICAgIGVuY29kZXIgPDwgKnN0
YXRlLmZpbGxQYXR0ZXJuOwogICAgIH0KIAogICAgIGlmIChjaGFuZ2VGbGFncy5jb250YWlucyhH
cmFwaGljc0NvbnRleHRTdGF0ZTo6U2hhZG93Q2hhbmdlKSkgewpAQCAtMzYzLDkgKzM1MSw2IEBA
IHN0ZDo6b3B0aW9uYWw8U2V0U3RhdGU+IFNldFN0YXRlOjpkZWNvZGUoRGVjb2RlciYgZGVjb2Rl
cikKICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZUNoYW5nZSBzdGF0ZUNoYW5nZTsKICAgICBzdGF0
ZUNoYW5nZS5tX2NoYW5nZUZsYWdzID0gKmNoYW5nZUZsYWdzOwogCi0gICAgUGF0dGVybkRhdGEg
c3Ryb2tlUGF0dGVybjsKLSAgICBQYXR0ZXJuRGF0YSBmaWxsUGF0dGVybjsKLQogICAgIGlmIChz
dGF0ZUNoYW5nZS5tX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpT
dHJva2VHcmFkaWVudENoYW5nZSkpIHsKICAgICAgICAgYXV0byBzdHJva2VHcmFkaWVudCA9IEdy
YWRpZW50OjpkZWNvZGUoZGVjb2Rlcik7CiAgICAgICAgIGlmICghc3Ryb2tlR3JhZGllbnQpCkBA
IC0zNzUsMTcgKzM2MCwxMSBAQCBzdGQ6Om9wdGlvbmFsPFNldFN0YXRlPiBTZXRTdGF0ZTo6ZGVj
b2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgfQogCiAgICAgaWYgKHN0YXRlQ2hhbmdlLm1fY2hh
bmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZVBhdHRlcm5DaGFu
Z2UpKSB7Ci0gICAgICAgIHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
PiByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI7Ci0gICAgICAgIGRlY29kZXIgPj4gcmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyOwotICAgICAgICBpZiAoIXJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllcikKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0KLSAgICAgICAgc3Rk
OjpvcHRpb25hbDxQYXR0ZXJuOjpQYXJhbWV0ZXJzPiBwYXJhbWV0ZXJzOwotICAgICAgICBkZWNv
ZGVyID4+IHBhcmFtZXRlcnM7Ci0gICAgICAgIGlmICghcGFyYW1ldGVycykKKyAgICAgICAgYXV0
byBzdHJva2VQYXR0ZXJuID0gUGF0dGVybjo6ZGVjb2RlKGRlY29kZXIpOworICAgICAgICBpZiAo
IXN0cm9rZVBhdHRlcm4pCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAg
ICAgIHN0cm9rZVBhdHRlcm4gPSB7ICpyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsICpwYXJh
bWV0ZXJzIH07CisgICAgICAgIHN0YXRlQ2hhbmdlLm1fc3RhdGUuc3Ryb2tlUGF0dGVybiA9IFdU
Rk1vdmUoKnN0cm9rZVBhdHRlcm4pOwogICAgIH0KIAogICAgIGlmIChzdGF0ZUNoYW5nZS5tX2No
YW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpGaWxsR3JhZGllbnRDaGFu
Z2UpKSB7CkBAIC0zOTcsMTcgKzM3NiwxMSBAQCBzdGQ6Om9wdGlvbmFsPFNldFN0YXRlPiBTZXRT
dGF0ZTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgfQogCiAgICAgaWYgKHN0YXRlQ2hh
bmdlLm1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkZpbGxQYXR0
ZXJuQ2hhbmdlKSkgewotICAgICAgICBzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllcj4gcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyOwotICAgICAgICBkZWNvZGVyID4+
IHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcjsKLSAgICAgICAgaWYgKCFyZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXIpCi0gICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotCi0gICAg
ICAgIHN0ZDo6b3B0aW9uYWw8UGF0dGVybjo6UGFyYW1ldGVycz4gcGFyYW1ldGVyczsKLSAgICAg
ICAgZGVjb2RlciA+PiBwYXJhbWV0ZXJzOwotICAgICAgICBpZiAoIXBhcmFtZXRlcnMpCisgICAg
ICAgIGF1dG8gZmlsbFBhdHRlcm4gPSBQYXR0ZXJuOjpkZWNvZGUoZGVjb2Rlcik7CisgICAgICAg
IGlmICghZmlsbFBhdHRlcm4pCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0g
ICAgICAgIGZpbGxQYXR0ZXJuID0geyAqcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCAqcGFy
YW1ldGVycyB9OworICAgICAgICBzdGF0ZUNoYW5nZS5tX3N0YXRlLmZpbGxQYXR0ZXJuID0gV1RG
TW92ZSgqZmlsbFBhdHRlcm4pOwogICAgIH0KIAogICAgIGlmIChzdGF0ZUNoYW5nZS5tX2NoYW5n
ZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTaGFkb3dDaGFuZ2UpKSB7CkBA
IC01NjUsNyArNTM4LDcgQEAgc3RkOjpvcHRpb25hbDxTZXRTdGF0ZT4gU2V0U3RhdGU6OmRlY29k
ZShEZWNvZGVyJiBkZWNvZGVyKQogICAgICAgICBzdGF0ZUNoYW5nZS5tX3N0YXRlLnNoYWRvd3NJ
Z25vcmVUcmFuc2Zvcm1zID0gKnNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zOwogICAgIH0KIAotICAg
IHJldHVybiB7eyBzdGF0ZUNoYW5nZSwgc3Ryb2tlUGF0dGVybiwgZmlsbFBhdHRlcm4gfX07Cisg
ICAgcmV0dXJuIHsgeyBzdGF0ZUNoYW5nZSB9IH07CiB9CiAKIGNsYXNzIFNldExpbmVDYXAgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3Rz
L0Rpc3BsYXlMaXN0UmVwbGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuY3BwCmluZGV4IDIxODY1MGFmNThh
NGE3YmNmMmMxNDEwZmYwZWYwMDUwNjgxYjZlZWQuLjZmMjJiMmM4NzE0MjBkZjBiNjk1NjM0M2Zi
MDE5OTM2MzUyOGQ5MzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5j
cHAKQEAgLTgzLDM0ICs4MywzNyBAQCBpbmxpbmUgc3RhdGljIHN0ZDo6b3B0aW9uYWw8UmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyPiBhcHBseU5hdGl2ZUltYWdlSXRlbShHcgogCiBpbmxpbmUg
c3RhdGljIHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPiBhcHBseVNl
dFN0YXRlSXRlbShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IFJlc291cmNlSGVhcCYg
cmVzb3VyY2VIZWFwLCBJdGVtSGFuZGxlIGl0ZW0sIFJlcGxheWVyOjpEZWxlZ2F0ZSogZGVsZWdh
dGUpCiB7CisgICAgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHN0cm9rZVBhdHRlcm5JbWFn
ZUlkZW50aWZpZXI7CisgICAgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIGZpbGxQYXR0ZXJu
SW1hZ2VJZGVudGlmaWVyOwogICAgIGF1dG8mIHNldFN0YXRlSXRlbSA9IGl0ZW0uZ2V0PFNldFN0
YXRlPigpOwogCi0gICAgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHN0cm9rZVBhdHRlcm5S
ZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI7Ci0gICAgTmF0aXZlSW1hZ2UqIHN0cm9rZVBhdHRl
cm5JbWFnZSA9IG51bGxwdHI7Ci0gICAgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIGZpbGxQ
YXR0ZXJuUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyOwotICAgIE5hdGl2ZUltYWdlKiBmaWxs
UGF0dGVybkltYWdlID0gbnVsbHB0cjsKLQotICAgIGlmICgoc3Ryb2tlUGF0dGVyblJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllciA9IHNldFN0YXRlSXRlbS5zdHJva2VQYXR0ZXJuSW1hZ2VJZGVu
dGlmaWVyKCkpKSB7Ci0gICAgICAgIHN0cm9rZVBhdHRlcm5JbWFnZSA9IHJlc291cmNlSGVhcC5n
ZXROYXRpdmVJbWFnZShzdHJva2VQYXR0ZXJuUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsK
KyAgICBpZiAoYXV0byYgc3Ryb2tlUGF0dGVybiA9IHNldFN0YXRlSXRlbS5zdGF0ZUNoYW5nZSgp
Lm1fc3RhdGUuc3Ryb2tlUGF0dGVybikgeworICAgICAgICBzdHJva2VQYXR0ZXJuSW1hZ2VJZGVu
dGlmaWVyID0gc3Ryb2tlUGF0dGVybi0+dGlsZUltYWdlKCkuaW1hZ2VJZGVudGlmaWVyKCk7Cisg
ICAgICAgIGF1dG8gc3Ryb2tlUGF0dGVybkltYWdlID0gcmVzb3VyY2VIZWFwLmdldFNvdXJjZUlt
YWdlKHN0cm9rZVBhdHRlcm5JbWFnZUlkZW50aWZpZXIpOwogICAgICAgICBpZiAoIXN0cm9rZVBh
dHRlcm5JbWFnZSkKLSAgICAgICAgICAgIHJldHVybiBzdHJva2VQYXR0ZXJuUmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyOworICAgICAgICAgICAgcmV0dXJuIHN0cm9rZVBhdHRlcm5JbWFnZUlk
ZW50aWZpZXI7CisKKyAgICAgICAgc3Ryb2tlUGF0dGVybi0+c2V0VGlsZUltYWdlKFdURk1vdmUo
KnN0cm9rZVBhdHRlcm5JbWFnZSkpOwogICAgIH0KIAotICAgIGlmICgoZmlsbFBhdHRlcm5SZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgPSBzZXRTdGF0ZUl0ZW0uZmlsbFBhdHRlcm5JbWFnZUlk
ZW50aWZpZXIoKSkpIHsKLSAgICAgICAgZmlsbFBhdHRlcm5JbWFnZSA9IHJlc291cmNlSGVhcC5n
ZXROYXRpdmVJbWFnZShmaWxsUGF0dGVyblJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7Cisg
ICAgaWYgKGF1dG8mIGZpbGxQYXR0ZXJuID0gc2V0U3RhdGVJdGVtLnN0YXRlQ2hhbmdlKCkubV9z
dGF0ZS5maWxsUGF0dGVybikgeworICAgICAgICBmaWxsUGF0dGVybkltYWdlSWRlbnRpZmllciA9
IGZpbGxQYXR0ZXJuLT50aWxlSW1hZ2UoKS5pbWFnZUlkZW50aWZpZXIoKTsKKyAgICAgICAgYXV0
byBmaWxsUGF0dGVybkltYWdlID0gcmVzb3VyY2VIZWFwLmdldFNvdXJjZUltYWdlKGZpbGxQYXR0
ZXJuSW1hZ2VJZGVudGlmaWVyKTsKICAgICAgICAgaWYgKCFmaWxsUGF0dGVybkltYWdlKQotICAg
ICAgICAgICAgcmV0dXJuIGZpbGxQYXR0ZXJuUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyOwor
ICAgICAgICAgICAgcmV0dXJuIGZpbGxQYXR0ZXJuSW1hZ2VJZGVudGlmaWVyOworCisgICAgICAg
IGZpbGxQYXR0ZXJuLT5zZXRUaWxlSW1hZ2UoV1RGTW92ZSgqZmlsbFBhdHRlcm5JbWFnZSkpOwog
ICAgIH0KIAotICAgIHNldFN0YXRlSXRlbS5hcHBseShjb250ZXh0LCBzdHJva2VQYXR0ZXJuSW1h
Z2UsIGZpbGxQYXR0ZXJuSW1hZ2UpOworICAgIHNldFN0YXRlSXRlbS5hcHBseShjb250ZXh0KTsK
IAogICAgIGlmICghZGVsZWdhdGUpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAg
ICBpZiAoc3Ryb2tlUGF0dGVyblJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikKLSAgICAgICAg
ZGVsZWdhdGUtPnJlY29yZFJlc291cmNlVXNlKHN0cm9rZVBhdHRlcm5SZW5kZXJpbmdSZXNvdXJj
ZUlkZW50aWZpZXIpOwotICAgIGlmIChmaWxsUGF0dGVyblJlbmRlcmluZ1Jlc291cmNlSWRlbnRp
ZmllcikKLSAgICAgICAgZGVsZWdhdGUtPnJlY29yZFJlc291cmNlVXNlKGZpbGxQYXR0ZXJuUmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKKyAgICBpZiAoc3Ryb2tlUGF0dGVybkltYWdlSWRl
bnRpZmllcikKKyAgICAgICAgZGVsZWdhdGUtPnJlY29yZFJlc291cmNlVXNlKHN0cm9rZVBhdHRl
cm5JbWFnZUlkZW50aWZpZXIpOworICAgIGlmIChmaWxsUGF0dGVybkltYWdlSWRlbnRpZmllcikK
KyAgICAgICAgZGVsZWdhdGUtPnJlY29yZFJlc291cmNlVXNlKGZpbGxQYXR0ZXJuSW1hZ2VJZGVu
dGlmaWVyKTsKICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXNv
dXJjZUhlYXAuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0
cy9EaXNwbGF5TGlzdFJlc291cmNlSGVhcC5oCmluZGV4IGFmYzFkMGVlMzkyODljYmYyZGYyNDNj
NTYzZTZhYjBiMWE5MGM5ODkuLjI2YzUzZGYxMzk4MmU1ZDY4ZjM5ODdlZTA4ZDJlNWZhMTEyMzdj
ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdFJlc291cmNlSGVhcC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlc291cmNlSGVhcC5oCkBAIC0y
OSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiSW1hZ2VCdWZmZXIuaCIKICNpbmNsdWRlICJOYXRpdmVJ
bWFnZS5oIgogI2luY2x1ZGUgIlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllci5oIgorI2luY2x1
ZGUgIlNvdXJjZUltYWdlLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3
dGYvUmVmQ291bnRlZC5oPgogCkBAIC00MSw2ICs0Miw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1
YWwgSW1hZ2VCdWZmZXIqIGdldEltYWdlQnVmZmVyKFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
cikgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgTmF0aXZlSW1hZ2UqIGdldE5hdGl2ZUltYWdlKFJl
bmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikgY29uc3QgPSAwOworICAgIHZpcnR1YWwgc3RkOjpv
cHRpb25hbDxTb3VyY2VJbWFnZT4gZ2V0U291cmNlSW1hZ2UoUmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBGb250KiBnZXRGb250KFJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllcikgY29uc3QgPSAwOwogfTsKIApAQCAtNzEsNiArNzMsMjAgQEAgcHVi
bGljOgogICAgICAgICByZXR1cm4gZ2V0PE5hdGl2ZUltYWdlPihyZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXIpOwogICAgIH0KIAorICAgIHN0ZDo6b3B0aW9uYWw8U291cmNlSW1hZ2U+IGdldFNv
dXJjZUltYWdlKFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXIpIGNvbnN0IGZpbmFsCisgICAgeworICAgICAgICBpZiAoIXJlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllcikKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICAg
ICAgaWYgKGF1dG8gbmF0aXZlSW1hZ2UgPSBnZXROYXRpdmVJbWFnZShyZW5kZXJpbmdSZXNvdXJj
ZUlkZW50aWZpZXIpKQorICAgICAgICAgICAgcmV0dXJuIFNvdXJjZUltYWdlKCpuYXRpdmVJbWFn
ZSk7CisKKyAgICAgICAgaWYgKGF1dG8gaW1hZ2VCdWZmZXIgPSBnZXRJbWFnZUJ1ZmZlcihyZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpKQorICAgICAgICAgICAgcmV0dXJuIFNvdXJjZUltYWdl
KCppbWFnZUJ1ZmZlcik7CisKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICB9CisK
ICAgICBGb250KiBnZXRGb250KFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXIpIGNvbnN0IGZpbmFsCiAgICAgewogICAgICAgICByZXR1cm4gZ2V0
PEZvbnQ+KHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NvZnR3YXJlL0ZFVGlsZVNvZnR3YXJl
QXBwbGllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3Nv
ZnR3YXJlL0ZFVGlsZVNvZnR3YXJlQXBwbGllci5jcHAKaW5kZXggYjc5OTFmNDk0OTA0ZTljM2U0
NTFhNGEzNGE2ZjI4OWRjY2ZhNDMxYi4uNTUyZDE5NDZmMjhiZTA5NDZjYTA0NmUwNmZkN2UzYThj
OWZmZmVjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9zb2Z0d2FyZS9GRVRpbGVTb2Z0d2FyZUFwcGxpZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc29mdHdhcmUvRkVUaWxlU29mdHdhcmVBcHBs
aWVyLmNwcApAQCAtNTcsMTQgKzU3LDEwIEBAIGJvb2wgRkVUaWxlU29mdHdhcmVBcHBsaWVyOjph
cHBseShjb25zdCBGaWx0ZXImIGZpbHRlciwgY29uc3QgRmlsdGVySW1hZ2VWZWN0b3ImCiAgICAg
dGlsZUltYWdlQ29udGV4dC50cmFuc2xhdGUoLXRpbGVSZWN0LmxvY2F0aW9uKCkpOwogICAgIHRp
bGVJbWFnZUNvbnRleHQuZHJhd0ltYWdlQnVmZmVyKCppbnB1dEltYWdlLCBpbnB1dEltYWdlUmVj
dC5sb2NhdGlvbigpKTsKIAotICAgIGF1dG8gcGF0dGVybkltYWdlID0gSW1hZ2VCdWZmZXI6OnNp
bmtJbnRvTmF0aXZlSW1hZ2UoV1RGTW92ZSh0aWxlSW1hZ2UpKTsKLSAgICBpZiAoIXBhdHRlcm5J
bWFnZSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCiAgICAgQWZmaW5lVHJhbnNmb3JtIHBhdHRl
cm5UcmFuc2Zvcm07CiAgICAgcGF0dGVyblRyYW5zZm9ybS50cmFuc2xhdGUodGlsZVJlY3QubG9j
YXRpb24oKSAtIG1heFJlc3VsdFJlY3QubG9jYXRpb24oKSk7CiAKLSAgICBhdXRvIHBhdHRlcm4g
PSBQYXR0ZXJuOjpjcmVhdGUocGF0dGVybkltYWdlLnJlbGVhc2VOb25OdWxsKCksIHsgdHJ1ZSwg
dHJ1ZSwgcGF0dGVyblRyYW5zZm9ybSB9KTsKKyAgICBhdXRvIHBhdHRlcm4gPSBQYXR0ZXJuOjpj
cmVhdGUoeyB0aWxlSW1hZ2UucmVsZWFzZU5vbk51bGwoKSB9LCB7IHRydWUsIHRydWUsIHBhdHRl
cm5UcmFuc2Zvcm0gfSk7CiAKICAgICBhdXRvJiByZXN1bHRDb250ZXh0ID0gcmVzdWx0SW1hZ2Ut
PmNvbnRleHQoKTsKICAgICByZXN1bHRDb250ZXh0LnNldEZpbGxQYXR0ZXJuKFdURk1vdmUocGF0
dGVybikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVy
QmFja2luZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5n
LmNwcAppbmRleCA2ODc5Y2E1ZWU3MGY1MWI3ZjQyYjRjNWY1NGNmMWI0MGMyOWUyZWJmLi5hMWM0
OWUzMTk5ZmVmNjBmZDE3ZWZmNzFhYjI0ODM0ODlhZGRiOWMwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcApAQCAtMzMzNSwxMyArMzMzNSwx
MSBAQCBzdGF0aWMgUmVmUHRyPFBhdHRlcm4+IHBhdHRlcm5Gb3JEZXNjcmlwdGlvbihQYXR0ZXJu
RGVzY3JpcHRpb24gZGVzY3JpcHRpb24sIEZsbwogICAgICAgICBpbWFnZUNvbnRleHQuZHJhd1Rl
eHQoZm9udCwgdGV4dFJ1biwgeyB0ZXh0R2FwLCB5T2Zmc2V0IH0sIDApOwogICAgIH0KIAotICAg
IGF1dG8gdGlsZUltYWdlID0gSW1hZ2VCdWZmZXI6OnNpbmtJbnRvTmF0aXZlSW1hZ2UoV1RGTW92
ZShpbWFnZUJ1ZmZlcikpOwotCiAgICAgQWZmaW5lVHJhbnNmb3JtIHBhdHRlcm5PZmZzZXRUcmFu
c2Zvcm07CiAgICAgcGF0dGVybk9mZnNldFRyYW5zZm9ybS50cmFuc2xhdGUoY29udGVudE9mZnNl
dCArIGRlc2NyaXB0aW9uLnBoYXNlKTsKICAgICBwYXR0ZXJuT2Zmc2V0VHJhbnNmb3JtLnNjYWxl
KDEgLyBkZXN0Q29udGV4dC5zY2FsZUZhY3RvcigpKTsKIAotICAgIHJldHVybiBQYXR0ZXJuOjpj
cmVhdGUodGlsZUltYWdlLnJlbGVhc2VOb25OdWxsKCksIHsgdHJ1ZSwgdHJ1ZSwgcGF0dGVybk9m
ZnNldFRyYW5zZm9ybX0pOworICAgIHJldHVybiBQYXR0ZXJuOjpjcmVhdGUoeyBpbWFnZUJ1ZmZl
ci5yZWxlYXNlTm9uTnVsbCgpIH0sIHsgdHJ1ZSwgdHJ1ZSwgcGF0dGVybk9mZnNldFRyYW5zZm9y
bSB9KTsKIH07CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4uY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4uY3BwCmluZGV4IGIxMjY4YjgzNTcwNTVh
MGFjMDY4MzRkMTE5Y2E3YTYyNmE0ZmY2OTYuLmU4YjUxY2ZiOTM5NDkyNjM4MWVmM2IwNGEzZTE3
YTVmZDE1YzA4NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR1Jlc291cmNlUGF0dGVybi5jcHAKQEAgLTExMywxMCArMTEzLDYgQEAgUGF0
dGVybkRhdGEqIFJlbmRlclNWR1Jlc291cmNlUGF0dGVybjo6YnVpbGRQYXR0ZXJuKFJlbmRlckVs
ZW1lbnQmIHJlbmRlcmVyLCBPcHQKIAogICAgIGF1dG8gdGlsZUltYWdlU2l6ZSA9IHRpbGVJbWFn
ZS0+bG9naWNhbFNpemUoKTsKIAotICAgIGF1dG8gY29waWVkSW1hZ2UgPSBJbWFnZUJ1ZmZlcjo6
c2lua0ludG9OYXRpdmVJbWFnZShXVEZNb3ZlKHRpbGVJbWFnZSkpOwotICAgIGlmICghY29waWVk
SW1hZ2UpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCiAgICAgLy8gQ29tcHV0ZSBwYXR0ZXJu
IHNwYWNlIHRyYW5zZm9ybWF0aW9uLgogICAgIGF1dG8gcGF0dGVybkRhdGEgPSBtYWtlVW5pcXVl
PFBhdHRlcm5EYXRhPigpOwogICAgIHBhdHRlcm5EYXRhLT50cmFuc2Zvcm0udHJhbnNsYXRlKHRp
bGVCb3VuZGFyaWVzLmxvY2F0aW9uKCkpOwpAQCAtMTM0LDcgKzEzMCw3IEBAIFBhdHRlcm5EYXRh
KiBSZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm46OmJ1aWxkUGF0dGVybihSZW5kZXJFbGVtZW50JiBy
ZW5kZXJlciwgT3B0CiAgICAgfQogCiAgICAgLy8gQnVpbGQgcGF0dGVybi4KLSAgICBwYXR0ZXJu
RGF0YS0+cGF0dGVybiA9IFBhdHRlcm46OmNyZWF0ZShjb3BpZWRJbWFnZS5yZWxlYXNlTm9uTnVs
bCgpLCB7IHRydWUsIHRydWUsIHBhdHRlcm5EYXRhLT50cmFuc2Zvcm0gfSk7CisgICAgcGF0dGVy
bkRhdGEtPnBhdHRlcm4gPSBQYXR0ZXJuOjpjcmVhdGUoeyB0aWxlSW1hZ2UucmVsZWFzZU5vbk51
bGwoKSB9LCB7IHRydWUsIHRydWUsIHBhdHRlcm5EYXRhLT50cmFuc2Zvcm0gfSk7CiAKICAgICAv
LyBWYXJpb3VzIGNhbGxzIGFib3ZlIG1heSB0cmlnZ2VyIGludmFsaWRhdGlvbnMgaW4gc29tZSBm
cmluZ2UgY2FzZXMgKEltYWdlQnVmZmVyIGFsbG9jYXRpb24KICAgICAvLyBmYWlsdXJlcyBpbiB0
aGUgU1ZHIGltYWdlIGNhY2hlIGZvciBleGFtcGxlKS4gVG8gYXZvaWQgaGF2aW5nIG91ciBQYXR0
ZXJuRGF0YSBkZWxldGVkIGJ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
Z3JhcGhpY3MvUXVhbGlmaWVkUmVzb3VyY2VIZWFwLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvZ3JhcGhpY3MvUXVhbGlmaWVkUmVzb3VyY2VIZWFwLmgKaW5kZXggOWJkNzY4MzljMjkwNzQ0
MjIyYjMxYzdlNDJjODliYjkxMjhkNGNmNy4uMjVmMzY4MzgxZGE1M2YzMmYwMmFhZTZhNmQxODgz
Yzg3MDY2OTA5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNz
L1F1YWxpZmllZFJlc291cmNlSGVhcC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9n
cmFwaGljcy9RdWFsaWZpZWRSZXNvdXJjZUhlYXAuaApAQCAtNjksNiArNjksMTEgQEAgcHVibGlj
OgogICAgICAgICByZXR1cm4gZ2V0PFdlYkNvcmU6Ok5hdGl2ZUltYWdlPih7IHJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllciwgbV93ZWJQcm9jZXNzSWRlbnRpZmllciB9KTsKICAgICB9CiAKKyAg
ICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNvdXJjZUltYWdlPiBnZXRTb3VyY2VJbWFnZShXZWJD
b3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyKSBjb25zdCBmaW5hbAorICAgIHsKKyAgICAgICAgcmV0dXJuIGdldFNvdXJjZUltYWdlKHsg
cmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBtX3dlYlByb2Nlc3NJZGVudGlmaWVyIH0pOwor
ICAgIH0KKwogICAgIFdlYkNvcmU6OkZvbnQqIGdldEZvbnQoV2ViQ29yZTo6UmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikgY29uc3QgZmluYWwK
ICAgICB7CiAgICAgICAgIHJldHVybiBnZXQ8V2ViQ29yZTo6Rm9udD4oeyByZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXIsIG1fd2ViUHJvY2Vzc0lkZW50aWZpZXIgfSk7CkBAIC04Myw2ICs4OCwy
MCBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICByZXR1cm4gZ2V0PFdlYkNvcmU6Ok5hdGl2ZUlt
YWdlPihyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwogICAgIH0KKyAgICAKKyAgICBzdGQ6
Om9wdGlvbmFsPFdlYkNvcmU6OlNvdXJjZUltYWdlPiBnZXRTb3VyY2VJbWFnZShRdWFsaWZpZWRS
ZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKSBj
b25zdAorICAgIHsKKyAgICAgICAgaWYgKCFyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCisg
ICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgICAgIGlmIChhdXRvIG5hdGl2
ZUltYWdlID0gZ2V0TmF0aXZlSW1hZ2UocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKSkKKyAg
ICAgICAgICAgIHJldHVybiBXZWJDb3JlOjpTb3VyY2VJbWFnZSgqbmF0aXZlSW1hZ2UpOworCisg
ICAgICAgIGlmIChhdXRvIGltYWdlQnVmZmVyID0gZ2V0SW1hZ2VCdWZmZXIocmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyKSkKKyAgICAgICAgICAgIHJldHVybiBXZWJDb3JlOjpTb3VyY2VJbWFn
ZSgqaW1hZ2VCdWZmZXIpOworCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgfQog
CiAgICAgV2ViQ29yZTo6Rm9udCogZ2V0Rm9udChRdWFsaWZpZWRSZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKSBjb25zdAogICAgIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVEaXNwbGF5TGlz
dFJlY29yZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVE
aXNwbGF5TGlzdFJlY29yZGVyLmNwcAppbmRleCBkOWFmNTg0MGRmNjg0M2Q5ZTYxOWRiNjYyZWM5
MGVhNDgxODU3OTZhLi5hZDU2N2JmOGEwMmUxNGU0YTBiOTM1NmYwYWZiYjVjZTIyNDNlMWI5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlRGlzcGxh
eUxpc3RSZWNvcmRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNz
L1JlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCkBAIC0xMTYsMjkgKzExNiwzNyBAQCB2b2lk
IFJlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXI6OnNldFN0cm9rZVRoaWNrbmVzcyhmbG9hdCB0aGlj
a25lc3MpCiAKIHZvaWQgUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlcjo6c2V0U3RhdGUoRGlzcGxh
eUxpc3Q6OlNldFN0YXRlJiYgaXRlbSkKIHsKLSAgICAvLyBJbW1lZGlhdGVseSB0dXJuIHRoZSBS
ZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgKHdoaWNoIGlzIGVycm9yLXByb25lKSB0byBhIFF1
YWxpZmllZFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwKLSAgICAvLyBhbmQgdXNlIGEgaGVs
cGVyIGZ1bmN0aW9uIHRvIG1ha2Ugc3VyZSB0aGF0IGRvbid0IGFjY2lkZW50YWxseSB1c2UgdGhl
IFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciAoYmVjYXVzZSB0aGUgaGVscGVyIGZ1bmN0aW9u
IGNhbid0IHNlZSBpdCkuCi0gICAgYXV0byBzdHJva2VQYXR0ZXJuSW1hZ2VJZGVudGlmaWVyID0g
aXRlbS5zdHJva2VQYXR0ZXJuSW1hZ2VJZGVudGlmaWVyKCk7Ci0gICAgYXV0byBmaWxsUGF0dGVy
bkltYWdlSWRlbnRpZmllciA9IGl0ZW0uZmlsbFBhdHRlcm5JbWFnZUlkZW50aWZpZXIoKTsKLSAg
ICBzZXRTdGF0ZVdpdGhRdWFsaWZpZWRJZGVudGlmaWVycyhXVEZNb3ZlKGl0ZW0pLCB7IHN0cm9r
ZVBhdHRlcm5JbWFnZUlkZW50aWZpZXIsIG1fd2ViUHJvY2Vzc0lkZW50aWZpZXIgfSwgeyBmaWxs
UGF0dGVybkltYWdlSWRlbnRpZmllciwgbV93ZWJQcm9jZXNzSWRlbnRpZmllciB9KTsKLX0KLQot
dm9pZCBSZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyOjpzZXRTdGF0ZVdpdGhRdWFsaWZpZWRJZGVu
dGlmaWVycyhEaXNwbGF5TGlzdDo6U2V0U3RhdGUmJiBpdGVtLCBRdWFsaWZpZWRSZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXIgc3Ryb2tlUGF0dGVybkltYWdlSWRlbnRpZmllciwgUXVhbGlmaWVk
UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIGZpbGxQYXR0ZXJuSW1hZ2VJZGVudGlmaWVyKQot
ewotICAgIFJlZlB0cjxOYXRpdmVJbWFnZT4gc3Ryb2tlUGF0dGVybkltYWdlOwotICAgIGlmIChz
dHJva2VQYXR0ZXJuSW1hZ2VJZGVudGlmaWVyKQotICAgICAgICBzdHJva2VQYXR0ZXJuSW1hZ2Ug
PSByZXNvdXJjZUNhY2hlKCkuY2FjaGVkTmF0aXZlSW1hZ2Uoc3Ryb2tlUGF0dGVybkltYWdlSWRl
bnRpZmllcik7CisgICAgUXVhbGlmaWVkUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHN0cm9r
ZVBhdHRlcm5JbWFnZUlkZW50aWZpZXI7CisgICAgUXVhbGlmaWVkUmVuZGVyaW5nUmVzb3VyY2VJ
ZGVudGlmaWVyIGZpbGxQYXR0ZXJuSW1hZ2VJZGVudGlmaWVyOworICAgIAorICAgIGlmIChhdXRv
JiBzdHJva2VQYXR0ZXJuID0gaXRlbS5zdGF0ZUNoYW5nZSgpLm1fc3RhdGUuc3Ryb2tlUGF0dGVy
bikgeworICAgICAgICBzdHJva2VQYXR0ZXJuSW1hZ2VJZGVudGlmaWVyID0geyBzdHJva2VQYXR0
ZXJuLT50aWxlSW1hZ2UoKS5pbWFnZUlkZW50aWZpZXIoKSwgbV93ZWJQcm9jZXNzSWRlbnRpZmll
ciB9OworICAgICAgICBhdXRvIHN0cm9rZVBhdHRlcm5JbWFnZSA9IHJlc291cmNlQ2FjaGUoKS5j
YWNoZWRTb3VyY2VJbWFnZShzdHJva2VQYXR0ZXJuSW1hZ2VJZGVudGlmaWVyKTsKKyAgICAgICAg
aWYgKCFzdHJva2VQYXR0ZXJuSW1hZ2UpIHsKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBz
dHJva2VQYXR0ZXJuLT5zZXRUaWxlSW1hZ2UoV1RGTW92ZSgqc3Ryb2tlUGF0dGVybkltYWdlKSk7
CisgICAgfQogCi0gICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBmaWxsUGF0dGVybkltYWdlOwotICAg
IGlmIChmaWxsUGF0dGVybkltYWdlSWRlbnRpZmllcikKLSAgICAgICAgZmlsbFBhdHRlcm5JbWFn
ZSA9IHJlc291cmNlQ2FjaGUoKS5jYWNoZWROYXRpdmVJbWFnZShmaWxsUGF0dGVybkltYWdlSWRl
bnRpZmllcik7CisgICAgaWYgKGF1dG8mIGZpbGxQYXR0ZXJuID0gaXRlbS5zdGF0ZUNoYW5nZSgp
Lm1fc3RhdGUuZmlsbFBhdHRlcm4pIHsKKyAgICAgICAgZmlsbFBhdHRlcm5JbWFnZUlkZW50aWZp
ZXIgPSB7IGZpbGxQYXR0ZXJuLT50aWxlSW1hZ2UoKS5pbWFnZUlkZW50aWZpZXIoKSwgbV93ZWJQ
cm9jZXNzSWRlbnRpZmllciB9OworICAgICAgICBhdXRvIGZpbGxQYXR0ZXJuSW1hZ2UgPSByZXNv
dXJjZUNhY2hlKCkuY2FjaGVkU291cmNlSW1hZ2UoZmlsbFBhdHRlcm5JbWFnZUlkZW50aWZpZXIp
OworICAgICAgICBpZiAoIWZpbGxQYXR0ZXJuSW1hZ2UpIHsKKyAgICAgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIAor
ICAgICAgICBmaWxsUGF0dGVybi0+c2V0VGlsZUltYWdlKFdURk1vdmUoKmZpbGxQYXR0ZXJuSW1h
Z2UpKTsKKyAgICB9CiAKLSAgICBoYW5kbGVJdGVtKFdURk1vdmUoaXRlbSksIHN0cm9rZVBhdHRl
cm5JbWFnZS5nZXQoKSwgZmlsbFBhdHRlcm5JbWFnZS5nZXQoKSk7CisgICAgaGFuZGxlSXRlbShX
VEZNb3ZlKGl0ZW0pKTsKIAotICAgIGlmIChzdHJva2VQYXR0ZXJuSW1hZ2UpCisgICAgaWYgKHN0
cm9rZVBhdHRlcm5JbWFnZUlkZW50aWZpZXIpCiAgICAgICAgIHJlc291cmNlQ2FjaGUoKS5yZWNv
cmRSZXNvdXJjZVVzZShzdHJva2VQYXR0ZXJuSW1hZ2VJZGVudGlmaWVyKTsKIAotICAgIGlmIChm
aWxsUGF0dGVybkltYWdlKQorICAgIGlmIChmaWxsUGF0dGVybkltYWdlSWRlbnRpZmllcikKICAg
ICAgICAgcmVzb3VyY2VDYWNoZSgpLnJlY29yZFJlc291cmNlVXNlKGZpbGxQYXR0ZXJuSW1hZ2VJ
ZGVudGlmaWVyKTsKIH0KIApAQCAtMjM5LDIxICsyNDcsMTMgQEAgdm9pZCBSZW1vdGVEaXNwbGF5
TGlzdFJlY29yZGVyOjpkcmF3RmlsdGVyZWRJbWFnZUJ1ZmZlcihzdGQ6Om9wdGlvbmFsPFJlbmRl
cmluZ1IKICAgICBmb3IgKGF1dG8mIGVmZmVjdCA6IGZpbHRlci0+ZWZmZWN0c09mVHlwZShGaWx0
ZXJFZmZlY3Q6OlR5cGU6OkZFSW1hZ2UpKSB7CiAgICAgICAgIGF1dG8mIGZlSW1hZ2UgPSBkb3du
Y2FzdDxGRUltYWdlPihlZmZlY3QuZ2V0KCkpOwogCi0gICAgICAgIGF1dG8gaW1hZ2VJZGVudGlm
aWVyID0gZmVJbWFnZS5zb3VyY2VJbWFnZSgpLmltYWdlSWRlbnRpZmllcigpOwotICAgICAgICBp
ZiAoIWltYWdlSWRlbnRpZmllcikgeworICAgICAgICBhdXRvIHNvdXJjZUltYWdlID0gcmVzb3Vy
Y2VDYWNoZSgpLmNhY2hlZFNvdXJjZUltYWdlKHsgZmVJbWFnZS5zb3VyY2VJbWFnZSgpLmltYWdl
SWRlbnRpZmllcigpLCBtX3dlYlByb2Nlc3NJZGVudGlmaWVyIH0pOworICAgICAgICBpZiAoIXNv
dXJjZUltYWdlKSB7CiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIGlmIChhdXRvIG5hdGl2ZUltYWdlID0g
cmVzb3VyY2VDYWNoZSgpLmNhY2hlZE5hdGl2ZUltYWdlKHsgaW1hZ2VJZGVudGlmaWVyLCBtX3dl
YlByb2Nlc3NJZGVudGlmaWVyIH0pKSB7Ci0gICAgICAgICAgICBmZUltYWdlLnNldEltYWdlU291
cmNlKHsgKm5hdGl2ZUltYWdlIH0pOwotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIH0K
LQotICAgICAgICBpZiAoYXV0byBpbWFnZUJ1ZmZlciA9IHJlc291cmNlQ2FjaGUoKS5jYWNoZWRJ
bWFnZUJ1ZmZlcih7IGltYWdlSWRlbnRpZmllciwgbV93ZWJQcm9jZXNzSWRlbnRpZmllciB9KSkg
ewotICAgICAgICAgICAgZmVJbWFnZS5zZXRJbWFnZVNvdXJjZSh7ICppbWFnZUJ1ZmZlciB9KTsK
LSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9CisgICAgICAgIGZlSW1hZ2Uuc2V0SW1h
Z2VTb3VyY2UoV1RGTW92ZSgqc291cmNlSW1hZ2UpKTsKICAgICB9CiAKICAgICBGaWx0ZXJSZXN1
bHRzIHJlc3VsdHM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhp
Y3MvUmVtb3RlUmVzb3VyY2VDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3Jh
cGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZS5jcHAKaW5kZXggYWY5ZTQyODY5YzJhODdhMjFjYzE1
ZGM4OWE3M2Q1OTNkY2EwNzIzNC4uOTRlZDY5NDFlNTQwMTM1YWE4Y2U2MjgwZjJlOWY0MTZiZDQ2
ODYyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90
ZVJlc291cmNlQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGlj
cy9SZW1vdGVSZXNvdXJjZUNhY2hlLmNwcApAQCAtNzEsNiArNzEsMTEgQEAgTmF0aXZlSW1hZ2Uq
IFJlbW90ZVJlc291cmNlQ2FjaGU6OmNhY2hlZE5hdGl2ZUltYWdlKFF1YWxpZmllZFJlbmRlcmlu
Z1Jlc291cmNlSWQKICAgICByZXR1cm4gbV9yZXNvdXJjZUhlYXAuZ2V0TmF0aXZlSW1hZ2UocmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKIH0KIAorc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpT
b3VyY2VJbWFnZT4gUmVtb3RlUmVzb3VyY2VDYWNoZTo6Y2FjaGVkU291cmNlSW1hZ2UoUXVhbGlm
aWVkUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
cikgY29uc3QKK3sKKyAgICByZXR1cm4gbV9yZXNvdXJjZUhlYXAuZ2V0U291cmNlSW1hZ2UocmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKK30KKwogdm9pZCBSZW1vdGVSZXNvdXJjZUNhY2hl
OjpjYWNoZUZvbnQoUmVmPEZvbnQ+JiYgZm9udCwgUXVhbGlmaWVkUmVuZGVyaW5nUmVzb3VyY2VJ
ZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikKIHsKICAgICBBU1NFUlQocmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLm9iamVjdCgpID09IGZvbnQtPnJlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllcigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9n
cmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
Z3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZS5oCmluZGV4IGE4MTQxYzJhZDQzNDBjZGE1YmVl
ZGJhN2UwNjRmMDdlMjUzYjQzYzAuLmEwNzg4NDdjOGExMmU0YjQzNjIxMjkzYTRiNGY0MWI2NTFh
YThlOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1v
dGVSZXNvdXJjZUNhY2hlLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNz
L1JlbW90ZVJlc291cmNlQ2FjaGUuaApAQCAtNDksNiArNDksNyBAQCBwdWJsaWM6CiAgICAgV2Vi
Q29yZTo6SW1hZ2VCdWZmZXIqIGNhY2hlZEltYWdlQnVmZmVyKFF1YWxpZmllZFJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllcikgY29uc3Q7CiAgICAgdm9pZCBjYWNoZU5hdGl2ZUltYWdlKFJlZjxX
ZWJDb3JlOjpOYXRpdmVJbWFnZT4mJiwgUXVhbGlmaWVkUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyKTsKICAgICBXZWJDb3JlOjpOYXRpdmVJbWFnZSogY2FjaGVkTmF0aXZlSW1hZ2UoUXVhbGlm
aWVkUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKSBjb25zdDsKKyAgICBzdGQ6Om9wdGlvbmFs
PFdlYkNvcmU6OlNvdXJjZUltYWdlPiBjYWNoZWRTb3VyY2VJbWFnZShRdWFsaWZpZWRSZW5kZXJp
bmdSZXNvdXJjZUlkZW50aWZpZXIpIGNvbnN0OwogICAgIHZvaWQgY2FjaGVGb250KFJlZjxXZWJD
b3JlOjpGb250PiYmLCBRdWFsaWZpZWRSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwogICAg
IFdlYkNvcmU6OkZvbnQqIGNhY2hlZEZvbnQoUXVhbGlmaWVkUmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyKSBjb25zdDsKICAgICB2b2lkIGRlbGV0ZUFsbEZvbnRzKCk7CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggOGI0MjAz
NDkzZmY2YzRmNjU5ZDk5MmFhZjM5YmU0MmM0ODliMmMyYy4uOGMwM2M1MTEzY2Y2MjYyYjMwYjBh
NzJjN2JjZWNkNGNkYThhMzU2ZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisr
KyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDIyLTAxLTI1ICBT
YWlkIEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vz
c10gUGF0dGVybiBzaG91bGQgaG9sZCBTb3VyY2VJbWFnZSB3aGljaCBjYW4gYmUgY29udmVydGVk
IHRvIGEgTmF0aXZlSW1hZ2Ugb25seSB3aGVuIG5lZWRlZAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMyNDExCisgICAgICAgIDxyZGFyOi8vcHJvYmxl
bS84NDk5ODczOD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBVbnNraXAgbGF5b3V0IHRlc3RzIGZvciBncHUgcHJvY2VzcyBiZWNhdXNlIHRoZXkgYXJl
IGZpeGVkIGJ5IHRoaXMgY2hhbmdlLgorCisgICAgICAgICogZ3B1LXByb2Nlc3MvVGVzdEV4cGVj
dGF0aW9uczoKKwogMjAyMi0wMS0yNSAgWmlyYW4gU3VuICA8enN1bkBpZ2FsaWEuY29tPgogCiAg
ICAgICAgIFtjc3MtZ3JpZF0gRml4IGdyaWQgc2hvcnRoYW5kIGV4cGFuc2lvbiBvZiBpbml0aWFs
IHZhbHVlcwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZ3B1LXByb2Nlc3MvVGVzdEV4cGVjdGF0
aW9ucyBiL0xheW91dFRlc3RzL2dwdS1wcm9jZXNzL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggY2E4
ZTQ5YWUxNDJlOTY0OGNiMWU0ODhiMmM1Mjk0MjVlY2NhYWFiNy4uNWFlOGM4YWY0YzNjZTY2ZDM1
ODMwNGEzYzYyZjJjNzQ4MmRiNTUxMCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZ3B1LXByb2Nl
c3MvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9ncHUtcHJvY2Vzcy9UZXN0RXhw
ZWN0YXRpb25zCkBAIC0yNDUsOCArMjQ1LDYgQEAgaW1wb3J0ZWQvYmxpbmsvc3ZnL2FzLWltYWdl
L3N2Zy1hcy1pbWFnZS1vYmplY3QtZml0LWNvbnRhaW4uaHRtbAogaW1wb3J0ZWQvYmxpbmsvc3Zn
L2FzLWltYWdlL3N2Zy1hcy1pbWFnZS1vYmplY3QtZml0LWNvdmVyLmh0bWwKIGltcG9ydGVkL2Js
aW5rL3N2Zy9hcy1pbWFnZS9zdmd2aWV3LXJlZmVyZW5jZXMuaHRtbAogaW1wb3J0ZWQvYmxpbmsv
c3ZnL2N1c3RvbS9maWxsLWZhbGxiYWNrLWN1cnJlbnRjb2xvci0xLnN2ZwotaW1wb3J0ZWQvYmxp
bmsvc3ZnL2N1c3RvbS90cmFuc2Zvcm1lZC10ZXh0LXBhdHRlcm4uaHRtbCBbIENyYXNoIF0KLWlt
cG9ydGVkL2JsaW5rL3N2Zy9jdXN0b20vdmlld3BvcnQtcmVzb3VyY2UtaW52YWwuc3ZnIFsgQ3Jh
c2ggXQogaW1wb3J0ZWQvYmxpbmsvc3ZnL3RleHQvb2JiLXBhaW50c2VydmVyLmh0bWwKIGltcG9y
dGVkL21vemlsbGEvc3ZnL2FzLWltYWdlL2JhY2tncm91bmQtcmVzaXplLTMuaHRtbAogaW1wb3J0
ZWQvbW96aWxsYS9zdmcvYXMtaW1hZ2UvYmFja2dyb3VuZC1yZXNpemUtNC5odG1sCkBAIC0yNjEs
MzkgKzI1OSwxOSBAQCBpbXBvcnRlZC9tb3ppbGxhL3N2Zy9ibGVuZC1vdmVybGF5LnN2ZwogaW1w
b3J0ZWQvbW96aWxsYS9zdmcvYmxlbmQtc2F0dXJhdGlvbi5zdmcKIGltcG9ydGVkL21vemlsbGEv
c3ZnL2NvbmRpdGlvbnMtMDguc3ZnIFsgQ3Jhc2ggXQogaW1wb3J0ZWQvbW96aWxsYS9zdmcvZHlu
YW1pYy1wYXR0ZXJuLTAxLnN2ZyBbIENyYXNoIF0KLWltcG9ydGVkL21vemlsbGEvc3ZnL2R5bmFt
aWMtcGF0dGVybi0wMi5zdmcgWyBDcmFzaCBdCi1pbXBvcnRlZC9tb3ppbGxhL3N2Zy9keW5hbWlj
LXBhdHRlcm4tY29udGVudHMtMDEuc3ZnIFsgQ3Jhc2ggXQotaW1wb3J0ZWQvbW96aWxsYS9zdmcv
ZHluYW1pYy1wYXR0ZXJuLWNvbnRlbnRzLTAyLnN2ZyBbIENyYXNoIF0KIGltcG9ydGVkL21vemls
bGEvc3ZnL2ZpbHRlcnMvZmVDb21wb3NpdGUtMi5zdmcKIGltcG9ydGVkL21vemlsbGEvc3ZnL2Zp
bHRlcnMvZmVGbG9vZC0xLnN2ZwogaW1wb3J0ZWQvbW96aWxsYS9zdmcvZmlsdGVycy9mZUZsb29k
LTIuc3ZnCiBpbXBvcnRlZC9tb3ppbGxhL3N2Zy9maWx0ZXJzL2ZlSW1hZ2UtMS5zdmcKIGltcG9y
dGVkL21vemlsbGEvc3ZnL2xpbmVhckdyYWRpZW50LWJhc2ljLTAzLnN2ZwogaW1wb3J0ZWQvbW96
aWxsYS9zdmcvbWFzay10eXBlLTAxLnN2ZwotaW1wb3J0ZWQvbW96aWxsYS9zdmcvb2JqZWN0Qm91
bmRpbmdCb3gtYW5kLXBhdHRlcm4tMDFhLnN2ZyBbIENyYXNoIF0KLWltcG9ydGVkL21vemlsbGEv
c3ZnL29iamVjdEJvdW5kaW5nQm94LWFuZC1wYXR0ZXJuLTAxYi5zdmcgWyBDcmFzaCBdCi1pbXBv
cnRlZC9tb3ppbGxhL3N2Zy9vYmplY3RCb3VuZGluZ0JveC1hbmQtcGF0dGVybi0wMWMuc3ZnIFsg
Q3Jhc2ggXQotaW1wb3J0ZWQvbW96aWxsYS9zdmcvb2JqZWN0Qm91bmRpbmdCb3gtYW5kLXBhdHRl
cm4tMDIuc3ZnIFsgQ3Jhc2ggXQotaW1wb3J0ZWQvbW96aWxsYS9zdmcvb2JqZWN0Qm91bmRpbmdC
b3gtYW5kLXBhdHRlcm4tMDMuc3ZnIFsgQ3Jhc2ggXQogaW1wb3J0ZWQvbW96aWxsYS9zdmcvb3Bh
Y2l0eS1hbmQtZ3JhZGllbnQtMDIuc3ZnCiBpbXBvcnRlZC9tb3ppbGxhL3N2Zy9wYWludC1vcmRl
ci0wMS5zdmcKIGltcG9ydGVkL21vemlsbGEvc3ZnL3BhdGgtMDIuc3ZnCi1pbXBvcnRlZC9tb3pp
bGxhL3N2Zy9wYXR0ZXJuLWJhc2ljLTAxLnN2ZyBbIENyYXNoIF0KLWltcG9ydGVkL21vemlsbGEv
c3ZnL3BhdHRlcm4tbGl2ZS0wMWEuc3ZnIFsgQ3Jhc2ggXQotaW1wb3J0ZWQvbW96aWxsYS9zdmcv
cGF0dGVybi1saXZlLTAxYi5zdmcgWyBDcmFzaCBdCi1pbXBvcnRlZC9tb3ppbGxhL3N2Zy9wYXR0
ZXJuLXNjYWxlLTAxYS5zdmcgWyBDcmFzaCBdCi1pbXBvcnRlZC9tb3ppbGxhL3N2Zy9wYXR0ZXJu
LXNjYWxlLTAxYi5zdmcgWyBDcmFzaCBdCi1pbXBvcnRlZC9tb3ppbGxhL3N2Zy9wYXR0ZXJuLXNj
YWxlLTAxYy5zdmcgWyBDcmFzaCBdCi1pbXBvcnRlZC9tb3ppbGxhL3N2Zy9wYXR0ZXJuLXRyYW5z
Zm9ybS1wcmVzZW5jZS0wMS5zdmcgWyBDcmFzaCBdCiBpbXBvcnRlZC9tb3ppbGxhL3N2Zy9wYXR0
ZXJuLXRyYW5zZm9ybWVkLTAxLnN2ZwogaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC1ncmFkaWVu
dC0wMS5zdmcKIGltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQtc2NhbGUtMDIuc3ZnCi1pbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0L21hc2stY29udGVudC0yLnN2ZyBbIENyYXNoIF0KIGltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvc2ltcGxlLWZpbGwtZ3JhZGllbnQuc3ZnCi1pbXBvcnRlZC9tb3pp
bGxhL3N2Zy91c2VyU3BhY2VPblVzZS1hbmQtcGF0dGVybi0wMS5zdmcgWyBDcmFzaCBdCi1pbXBv
cnRlZC9tb3ppbGxhL3N2Zy92aWV3Qm94LWFuZC1wYXR0ZXJuLTAxLnN2ZyBbIENyYXNoIF0KLWlt
cG9ydGVkL21vemlsbGEvc3ZnL3ZpZXdCb3gtYW5kLXBhdHRlcm4tMDIuc3ZnIFsgQ3Jhc2ggXQot
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdmlld0JveC1hbmQtcGF0dGVybi0wMy5zdmcgWyBDcmFzaCBd
CiBpbXBvcnRlZC93M2MvaTE4bi9iaWRpL2JpZGktcGxhaW50ZXh0LTAxMS5odG1sIFsgUGFzcyBd
CiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbXBhdC93ZWJraXQtYmFja2dyb3Vu
ZC1vcmlnaW4tdGV4dC5odG1sCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbXBh
dC93ZWJraXQtbGluZWFyLWdyYWRpZW50LWxpbmUtYm90dG9tLmh0bWwKQEAgLTkxMCwyNCArODg4
LDcgQEAgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9tZWRpYWNhcHR1cmUtcmVjb3Jk
L01lZGlhUmVjb3JkZXItcGVlcmNvbm5lY3Rpb24KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvbWltZXNuaWZmL21pbWUtdHlwZXMvY2hhcnNldC1wYXJhbWV0ZXIud2luZG93Lmh0bWwK
IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc2VsZWN0aW9uL3NlbGVjdGlvbi1zZWxl
Y3QtYWxsLW1vdmUtaW5wdXQtY3Jhc2guaHRtbAogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXIvZmV0Y2gtcmVxdWVzdC1yZWRpcmVj
dC5odHRwcy5odG1sIFsgUGFzcyBdCi1pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N2
Zy9hbmltYXRpb25zL2FuaW1hdGVUcmFuc2Zvcm0tcGF0dGVybi10cmFuc2Zvcm0uaHRtbCBbIENy
YXNoIF0KLWltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3ZnL2FuaW1hdGlvbnMvc3Zn
ZW51bS1hbmltYXRpb24tMS5odG1sIFsgQ3Jhc2ggXQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9zdmcvZXh0ZW5zaWJpbGl0eS9mb3JlaWduT2JqZWN0L21hc2tlZC5odG1sCi1pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N2Zy9pbXBvcnQvY29vcmRzLXVuaXRzLTAxLWIt
bWFudWFsLnN2ZyBbIENyYXNoIF0KLWltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3Zn
L2ltcG9ydC9saW5raW5nLWEtMTAtZi1tYW51YWwuc3ZnIFsgQ3Jhc2ggXQotaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9zdmcvaW1wb3J0L21hc2tpbmctcGF0aC0wNy1iLW1hbnVhbC5z
dmcgWyBDcmFzaCBdCi1pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N2Zy9pbXBvcnQv
cHNlcnZlcnMtZ3JhZC0wMy1iLW1hbnVhbC5zdmcgWyBDcmFzaCBdCi1pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3N2Zy9pbXBvcnQvcHNlcnZlcnMtZ3JhZC0wNi1iLW1hbnVhbC5zdmcg
WyBDcmFzaCBdCi1pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N2Zy9pbXBvcnQvcHNl
cnZlcnMtcGF0dGVybi0wMS1iLW1hbnVhbC5zdmcgWyBDcmFzaCBdCi1pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3N2Zy9pbXBvcnQvcHNlcnZlcnMtcGF0dGVybi0wMi1mLW1hbnVhbC5z
dmcgWyBDcmFzaCBdCi1pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N2Zy9pbXBvcnQv
cHNlcnZlcnMtcGF0dGVybi0wNC1mLW1hbnVhbC5zdmcgWyBDcmFzaCBdCi1pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3N2Zy9pbXBvcnQvcHNlcnZlcnMtcGF0dGVybi0wNS1mLW1hbnVh
bC5zdmcgWyBDcmFzaCBdCi1pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N2Zy9pbXBv
cnQvcHNlcnZlcnMtcGF0dGVybi0wOC1mLW1hbnVhbC5zdmcgWyBDcmFzaCBdCi1pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N2Zy9pbXBvcnQvcHNlcnZlcnMtcGF0dGVybi0wOS1mLW1h
bnVhbC5zdmcgWyBDcmFzaCBdCi1pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N2Zy9s
aW5raW5nL3JlZnRlc3RzL2hyZWYtcGF0dGVybi1lbGVtZW50Lmh0bWwgWyBDcmFzaCBdCi1pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N2Zy9wYWludGluZy9jdXJyZW50Q29sb3Itb3Zl
cnJpZGUtcHNlcnZlci1zdHJva2Uuc3ZnIFsgQ3Jhc2ggXQotaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9zdmcvcHNlcnZlcnMvcmVmdGVzdHMvcGF0dGVybi1pbmhlcml0YW5jZS1ub3Qt
aW4tcmVuZGVydHJlZS0wMi50ZW50YXRpdmUuc3ZnIFsgQ3Jhc2ggXQotaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9zdmcvcmVuZGVyL3JlZnRlc3RzL2ZpbHRlci1lZmZlY3RzLW9uLXBh
dHRlcm4uaHRtbCBbIENyYXNoIF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2Vi
LWFuaW1hdGlvbnMvdGltaW5nLW1vZGVsL2FuaW1hdGlvbnMvdXBkYXRlLXBsYXliYWNrLXJhdGUt
emVyby5odG1sIFsgUGFzcyBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYmF1
ZGlvL3RoZS1hdWRpby1hcGkvdGhlLWJpcXVhZGZpbHRlcm5vZGUtaW50ZXJmYWNlL25vLWRlemlw
cGVyaW5nLmh0bWwKIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMveGhyL3Jlc3BvbnNl
LW1ldGhvZC5odG0gWyBQYXNzIF0KQEAgLTk1NCwyOCArOTE1LDExIEBAIHN2Zy9iYXRpay9wYWlu
dHMvcGF0dGVyblByZXNlcnZlQXNwZWN0UmF0aW9BLnN2ZyBbIENyYXNoIF0KIHN2Zy9iYXRpay9w
YWludHMvcGF0dGVyblJlZ2lvbkEuc3ZnIFsgQ3Jhc2ggXQogc3ZnL2JhdGlrL3BhaW50cy9wYXR0
ZXJuUmVnaW9ucy1wb3NpdGlvbmVkLW9iamVjdHMuc3ZnIFsgQ3Jhc2ggXQogc3ZnL2JhdGlrL3Bh
aW50cy9wYXR0ZXJuUmVnaW9ucy5zdmcgWyBDcmFzaCBdCi1zdmcvYmF0aWsvdGV4dC90ZXh0RWZm
ZWN0Mi5zdmcgWyBDcmFzaCBdCiBzdmcvY2xpcC1wYXRoL2NsaXAtcGF0aC1saW5lLXVzZS1iZWZv
cmUtZGVmaW5lZC5zdmcgWyBQYXNzIF0KIHN2Zy9jbGlwLXBhdGgvd2Via2l0LWNsaXAtcGF0aC1h
ZnRlci5zdmcKIHN2Zy9jbGlwLXBhdGgvd2Via2l0LWNsaXAtcGF0aC1iZWZvcmUuc3ZnCi1zdmcv
Y3VzdG9tL2hpZHBpLW1hc2tpbmctY2xpcHBpbmcuc3ZnIFsgQ3Jhc2ggXQotc3ZnL2N1c3RvbS9o
cmVmLXN2Zy1uYW1lc3BhY2Utc3RhdGljLnN2ZyBbIENyYXNoIF0KLXN2Zy9jdXN0b20vanMtbGF0
ZS1wYXR0ZXJuLWNyZWF0aW9uLnN2ZyBbIENyYXNoIF0KLXN2Zy9jdXN0b20vanMtdXBkYXRlLXBh
dHRlcm4uc3ZnIFsgQ3Jhc2ggXQotc3ZnL2N1c3RvbS9sYXJnZS1pbWFnZS1wYXR0ZXJuLWNyYXNo
Lmh0bWwgWyBDcmFzaCBdCi1zdmcvY3VzdG9tL2xvY2FsLXVybC1yZWZlcmVuY2UtcGF0dGVybi5o
dG1sIFsgQ3Jhc2ggXQotc3ZnL2N1c3RvbS9uZXctaW1hZ2UtaXMtaHRtbC1lbGVtZW50LnN2ZyBb
IENyYXNoIF0KIHN2Zy9jdXN0b20vc3VicGF0aHMtbW92ZXRvLW9ubHktcmVuZGVyaW5nLnN2ZyBb
IFBhc3MgXQogc3ZnL2N1c3RvbS9zdmctZm9udHMtc2tpcC1pbmsuaHRtbAotc3ZnL2RvbS92aWV3
cG9ydC1jb250YWluZXItY3Jhc2guc3ZnIFsgQ3Jhc2ggXQotc3ZnL2R5bmFtaWMtdXBkYXRlcy9T
VkdQYXR0ZXJuRWxlbWVudC1kb20taGVpZ2h0LWF0dHIuaHRtbCBbIENyYXNoIF0KLXN2Zy9keW5h
bWljLXVwZGF0ZXMvU1ZHUGF0dGVybkVsZW1lbnQtZG9tLXBhdHRlcm5UcmFuc2Zvcm0tYXR0ci5o
dG1sIFsgQ3Jhc2ggXQotc3ZnL2R5bmFtaWMtdXBkYXRlcy9TVkdQYXR0ZXJuRWxlbWVudC1kb20t
cGF0dGVyblVuaXRzLWF0dHIuaHRtbCBbIENyYXNoIF0KLXN2Zy9keW5hbWljLXVwZGF0ZXMvU1ZH
UGF0dGVybkVsZW1lbnQtZG9tLXdpZHRoLWF0dHIuaHRtbCBbIENyYXNoIF0KLXN2Zy9keW5hbWlj
LXVwZGF0ZXMvU1ZHUGF0dGVybkVsZW1lbnQtZG9tLXktYXR0ci5odG1sIFsgQ3Jhc2ggXQotc3Zn
L2R5bmFtaWMtdXBkYXRlcy9TVkdQYXR0ZXJuRWxlbWVudC1zdmdkb20tcGF0dGVybkNvbnRlbnRV
bml0cy1wcm9wLmh0bWwgWyBDcmFzaCBdCi1zdmcvZHluYW1pYy11cGRhdGVzL1NWR1BhdHRlcm5F
bGVtZW50LXN2Z2RvbS13aWR0aC1wcm9wLmh0bWwgWyBDcmFzaCBdCi1zdmcvZHluYW1pYy11cGRh
dGVzL1NWR1BhdHRlcm5FbGVtZW50LXN2Z2RvbS15LXByb3AuaHRtbCBbIENyYXNoIF0KIHN2Zy9n
cmFkaWVudHMvZ3JhZGllbnQtZmxpcHBlZC1zdGFydC1lbmQtcG9pbnRzLnN2Zwogc3ZnL2dyYWRp
ZW50cy9zcHJlYWRNZXRob2Quc3ZnCiBzdmcvZ3JhZGllbnRzL3NwcmVhZE1ldGhvZEFscGhhLnN2
ZwpAQCAtOTg5LDExICs5MzMsNiBAQCBzdmcvZ3JhZGllbnRzL3NwcmVhZE1ldGhvZFJldmVyc2Vk
LnN2Zwogc3ZnL2dyYWRpZW50cy9zdG9wQWxwaGEuc3ZnCiBzdmcvdHJhbnNmb3Jtcy90cmFuc2Zv
cm1lZC10ZXh0LWZpbGwtZ3JhZGllbnQuaHRtbAogc3ZnL3RyYW5zZm9ybXMvdHJhbnNmb3JtZWQt
dGV4dC1maWxsLXBhdHRlcm4uaHRtbAotc3ZnL1czQy1TVkctMS4xLVNFL3N0cnVjdC1kb20tMTEt
Zi5zdmcgWyBDcmFzaCBdCi1zdmcvVzNDLVNWRy0xLjEvY29vcmRzLXVuaXRzLTAxLWIuc3ZnIFsg
Q3Jhc2ggXQotc3ZnL1czQy1TVkctMS4xL3BzZXJ2ZXJzLWdyYWQtMDQtYi5zdmcgWyBDcmFzaCBd
Ci1zdmcvVzNDLVNWRy0xLjEvcHNlcnZlcnMtZ3JhZC0wNy1iLnN2ZyBbIENyYXNoIF0KLXN2Zy9X
M0MtU1ZHLTEuMS9yZW5kZXItZWxlbXMtMDEtdC5zdmcgWyBDcmFzaCBdCiBzeXN0ZW0tcHJldmll
dy9iYWRnZS5odG1sCiB3ZWJhbmltYXRpb25zL29wYWNpdHktYW5pbWF0aW9uLmh0bWwKIHdlYmds
LzEuMC4zL2NvbmZvcm1hbmNlL2NvbnRleHQvcHJlbXVsdGlwbHlhbHBoYS10ZXN0Lmh0bWwK
</data>
<flag name="review"
          id="476323"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>450475</attachid>
            <date>2022-01-31 16:48:18 -0800</date>
            <delta_ts>2022-01-31 21:24:24 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-232411-20220131164817.patch</filename>
            <type>text/plain</type>
            <size>51678</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg4ODU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWFkYzJhYWMwOGJjMjkx
YWUwMGZlNzY3Y2UyZDI3OGQzZWJjODdmNy4uYTIwNzhiZjQ1OTQ4OGQwMzkwOTZhODRhNGJiNzE3
N2VjZDEzNmVhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg0IEBACisyMDIyLTAxLTMxICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vzc10g
UGF0dGVybiBzaG91bGQgaG9sZCBTb3VyY2VJbWFnZSB3aGljaCBjYW4gYmUgY29udmVydGVkIHRv
IGEgTmF0aXZlSW1hZ2Ugb25seSB3aGVuIG5lZWRlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMyNDExCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS84
NDk5ODczOD4KKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICBN
YWtlIFBhdHRlcm4gaG9sZCBhIFNvdXJjZUltYWdlIGFuZCBhZGQgZ2V0dGVycyB0byByZXRyaWV2
ZSBhIE5hdGl2ZUltYWdlCisgICAgICAgIGFuZCBhbiBJbWFnZUJ1ZmZlci4gSW4gdGhlc2UgZ2V0
dGVycyB0aGUgU291cmNlSW1hZ2Ugd2lsbCBlaXRoZXIgcmV0dXJuCisgICAgICAgIHRoZSBjdXJy
ZW50IGltYWdlIHNvdXJjZSBvciBnZXQgb25lIGZyb20gdGhlIG90aGVyIGlmIG5lZWRlZC4KKwor
ICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1BhdHRlcm4uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q2FudmFzUGF0dGVybjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1BhdHRl
cm46OkNhbnZhc1BhdHRlcm4pOgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1BhdHRlcm4u
aDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmNyZWF0
ZVBhdHRlcm4pOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDYW52YXMuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ2FudmFzOjpidWlsZEFycmF5Rm9yQ2FudmFzUGF0dGVy
bik6CisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFnZS5oOgorICAgICAg
ICBNYWtlIE5hdGl2ZUltYWdlIGEgdGhyZWFkLXNhZmUgUmVmQ291bnRlZCBhbmQgbWFrZSBpdHMg
ZGVzdHJ1Y3Rpb24gaGFwcGVuCisgICAgICAgIG9uIHRoZSBtYWluIHRocmVhZC4gVGhpcyBpcyBz
aW1pbGFyIHRvIHdoYXQgd2UgZG8gZm9yIEltYWdlQnVmZmVyLiBBbmQKKyAgICAgICAgdGhlIHJl
YXNvbiBmb3IgdGhpcyBpcyB0aGUgbWVzc2FnZSBoYW5kbGVyIGluIHRoZSBHUFVQcm9jZXNzIG1h
eSBjcmVhdGUgCisgICAgICAgIE5hdGl2ZUltYWdlcyBvbiB0aGUgbWFpbiB0aHJlYWQgYXMgdGhl
IFNvdXJjZUltYWdlcyBmb3IgdGhlIFBhdHRlcm5zIG9mCisgICAgICAgIHRoZSBTZXRTdGF0ZSBp
dGVtLiBUaGVzZSBOYXRpdmVJbWFnZXMgd2lsbCBiZSBkZWxldGVkIGluIHRoZSByZXBsYXlpbmcK
KyAgICAgICAgdGhyZWFkIGFmdGVyIGFwcGx5aW5nIHRoZSBTZXRTdGF0ZSBpdGVtLgorCisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvUGF0dGVybi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQ
YXR0ZXJuOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UGF0dGVybjo6UGF0dGVybik6CisK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9QYXR0ZXJuLmg6CisgICAgICAgIChXZWJDb3Jl
OjpQYXR0ZXJuOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UGF0dGVybjo6ZGVj
b2RlKToKKyAgICAgICAgQWRkIGVuY29kaW5nIGFuZCBkZWNvZGluZyBtZWhvZHMgZm9yIFBhdHRl
cm4gd2hpY2ggd2lsbCBiZSBjYWxsZWQgZnJvbSAKKyAgICAgICAgU2V0U3RhdGU6OmVuY29kZSgp
IGFuZCBTZXRTdGF0ZTo6ZGVjb2RlKCkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9T
b3VyY2VJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VJbWFnZTo6bmF0aXZlSW1h
Z2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlSW1hZ2U6OmltYWdlQnVmZmVyIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUltYWdlOjpzaXplIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlNvdXJjZUltYWdlOjpuYXRpdmVJbWFnZSk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpTb3VyY2VJbWFnZTo6aW1hZ2VCdWZmZXIpOiBEZWxldGVkLgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL1NvdXJjZUltYWdlLmg6CisgICAgICAgIE1ha2UgU291cmNlSW1h
Z2Uga2VlcCB0aGUgaW1hZ2Ugc291cmNlIGl0IHdhcyBjcmVhdGVkIHdpdGguIEdldCBhIHRlbXBv
cmFyeQorICAgICAgICBpbWFnZSBzb3VyY2UgaWYgaXQgaXMgZGlmZmVyZW50IGZyb20gd2hhdCBp
cyBzdG9yZWQgaW4gbV9pbWFnZVZhcmlhbnQuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9QYXR0ZXJuQ2Fpcm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGF0dGVybjo6Y3Jl
YXRlUGxhdGZvcm1QYXR0ZXJuIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
Zy9QYXR0ZXJuQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGF0dGVybjo6Y3JlYXRlUGxhdGZv
cm1QYXR0ZXJuIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3RJdGVtcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6
U2V0U3RhdGU6OlNldFN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpTZXRT
dGF0ZTo6YXBwbHkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdEl0ZW1zLmg6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6U2V0U3Rh
dGU6OnN0YXRlQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpTZXRTdGF0
ZTo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpTZXRTdGF0
ZTo6ZGVjb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpTZXRTdGF0ZTo6c3Ry
b2tlUGF0dGVyblBhcmFtZXRlcnMgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
RGlzcGxheUxpc3Q6OlNldFN0YXRlOjpmaWxsUGF0dGVyblBhcmFtZXRlcnMgY29uc3QpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlNldFN0YXRlOjpzdHJva2VQYXR0
ZXJuSW1hZ2VJZGVudGlmaWVyIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpTZXRTdGF0ZTo6ZmlsbFBhdHRlcm5JbWFnZUlkZW50aWZpZXIgY29uc3QpOiBE
ZWxldGVkLgorICAgICAgICBTaW1wbGlmeSBTZXRTdGF0ZSBieSBkZWxldGluZyB0aGUgUGF0dGVy
bkRhdGEgbWVtYmVycy4gUmVwbGFjZSB0aGVzZSBtZW1iZXJzCisgICAgICAgIGJ5IHRoZSBzdHJv
a2VQYXR0ZXJuIGFuZCBmaWxsUGF0dGVybiBzaW5jZSB0aGVzZSBwYXR0ZXJucyBjYW4gYmUgZW5j
b2RlZAorICAgICAgICBhbmQgZGVjb2RlZC4gCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6YXBwbHlTZXRTdGF0ZUl0ZW0pOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlc291cmNlSGVhcC5oOgorICAgICAgICBB
ZGQgdGhlIGhlbHBlciBMb2NhbFJlc291cmNlSGVhcDo6Z2V0U291cmNlSW1hZ2UoKSB0byBiZSB1
c2VkIGJ5IAorICAgICAgICBhcHBseVNldFN0YXRlSXRlbSgpLgorCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9zb2Z0d2FyZS9GRVRpbGVTb2Z0d2FyZUFwcGxpZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RkVUaWxlU29mdHdhcmVBcHBsaWVyOjphcHBseSBjb25zdCk6Cisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpwYXR0ZXJuRm9yRGVzY3JpcHRpb24pOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jl
c291cmNlUGF0dGVybjo6YnVpbGRQYXR0ZXJuKToKKwogMjAyMi0wMS0zMSAgUnlvc3VrZSBOaXdh
ICA8cm5pd2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBEZWxldGUgcnVudGltZSBmbGFnIGZvciBz
dWJyZXNvdXJjZSBpbnRlZ3JpdHkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggOWJlNGJmYjVmNzk3NTIzMzZmOTQ5ZTE5
OWI5ODdmNmZiMzdjYzkzYS4uMDBlZTFkMDgzNjMxNzk1ZDJlZTc1YzYwMmE0ZjNlZTJkNGY2NGFk
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNyBAQAorMjAyMi0wMS0zMSAgU2FpZCBBYm91LUhhbGxh
d2EgIDxzYWlkQGFwcGxlLmNvbT4KKworICAgICAgICBbR1BVIFByb2Nlc3NdIFBhdHRlcm4gc2hv
dWxkIGhvbGQgU291cmNlSW1hZ2Ugd2hpY2ggY2FuIGJlIGNvbnZlcnRlZCB0byBhIE5hdGl2ZUlt
YWdlIG9ubHkgd2hlbiBuZWVkZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIzMjQxMQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vODQ5OTg3Mzg+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgQWRkIHRoZSBoZWxw
ZXJzIFF1YWxpZmllZFJlc291cmNlSGVhcDo6Z2V0U291cmNlSW1hZ2UoKSBhbmQgCisgICAgICAg
IFJlbW90ZVJlc291cmNlQ2FjaGU6OmNhY2hlZFNvdXJjZUltYWdlKCkgd2hpY2ggd2lsbCBiZSB1
c2VkIGJ5CisgICAgICAgIFJlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXI6OnNldFN0YXRlKCkgdG8g
cmVwbGFjZSB0aGUgCisgICAgICAgIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBvZiB0aGUg
cGF0dGVybidzIHRpbGVJbWFnZSBieSBhbiBhY3R1YWwKKyAgICAgICAgU291cmNlSW1hZ2UuCisK
KyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1F1YWxpZmllZFJlc291cmNlSGVhcC5oOgor
ICAgICAgICAoV2ViS2l0OjpRdWFsaWZpZWRSZXNvdXJjZUhlYXA6OmdldFNvdXJjZUltYWdlIGNv
bnN0KToKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZURpc3BsYXlMaXN0UmVj
b3JkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyOjpz
ZXRTdGF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXI6OmRy
YXdGaWx0ZXJlZEltYWdlQnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlRGlzcGxheUxp
c3RSZWNvcmRlcjo6c2V0U3RhdGVXaXRoUXVhbGlmaWVkSWRlbnRpZmllcnMpOiBEZWxldGVkLgor
ICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlc291cmNlQ2FjaGU6OmNhY2hlZFNvdXJjZUltYWdlIGNv
bnN0KToKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGUu
aDoKKwogMjAyMi0wMS0zMSAgTWVnYW4gR2FyZG5lciAgPG1lZ2FuX2dhcmRuZXJAYXBwbGUuY29t
PgogCiAgICAgICAgIENvbGxhcHNlZCByYW5nZXMgcmV0dXJuIHplcm8gcmVjdHMgaW4gRG9jdW1l
bnRDb250ZXh0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNQ
YXR0ZXJuLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1BhdHRlcm4uY3Bw
CmluZGV4IDhmMTkzODJjYjIwM2QyZTQxMWJjYTk1N2E2OTFiMWZhYzk4YTJjYTEuLjYwY2UzZGVh
NjFlMjRmYTdiZDQ5ZTI4ZjE3ZTdlNDQ4Y2RiMjA4MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL0NhbnZhc1BhdHRlcm4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL0NhbnZhc1BhdHRlcm4uY3BwCkBAIC0zNCwxMiArMzQsMTIgQEAKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi1SZWY8Q2FudmFzUGF0dGVybj4gQ2FudmFzUGF0dGVybjo6Y3JlYXRl
KFJlZjxOYXRpdmVJbWFnZT4mJiBpbWFnZSwgYm9vbCByZXBlYXRYLCBib29sIHJlcGVhdFksIGJv
b2wgb3JpZ2luQ2xlYW4pCitSZWY8Q2FudmFzUGF0dGVybj4gQ2FudmFzUGF0dGVybjo6Y3JlYXRl
KFNvdXJjZUltYWdlJiYgaW1hZ2UsIGJvb2wgcmVwZWF0WCwgYm9vbCByZXBlYXRZLCBib29sIG9y
aWdpbkNsZWFuKQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENhbnZhc1BhdHRlcm4oV1RG
TW92ZShpbWFnZSksIHJlcGVhdFgsIHJlcGVhdFksIG9yaWdpbkNsZWFuKSk7CiB9CiAKLUNhbnZh
c1BhdHRlcm46OkNhbnZhc1BhdHRlcm4oUmVmPE5hdGl2ZUltYWdlPiYmIGltYWdlLCBib29sIHJl
cGVhdFgsIGJvb2wgcmVwZWF0WSwgYm9vbCBvcmlnaW5DbGVhbikKK0NhbnZhc1BhdHRlcm46OkNh
bnZhc1BhdHRlcm4oU291cmNlSW1hZ2UmJiBpbWFnZSwgYm9vbCByZXBlYXRYLCBib29sIHJlcGVh
dFksIGJvb2wgb3JpZ2luQ2xlYW4pCiAgICAgOiBtX3BhdHRlcm4oUGF0dGVybjo6Y3JlYXRlKFdU
Rk1vdmUoaW1hZ2UpLCB7IHJlcGVhdFgsIHJlcGVhdFkgfSkpCiAgICAgLCBtX29yaWdpbkNsZWFu
KG9yaWdpbkNsZWFuKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
Q2FudmFzUGF0dGVybi5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUGF0dGVy
bi5oCmluZGV4IGU0NmQyMWJjNTEzNWQ5YTc0ZjQ1NzVjOWRkNjVlOWNlY2RjYjhkMmEuLjg3MWUw
NDU3N2NjNTFlNTk4MDU3YmVjZTJhYmQ3NWY2NmFjOTljNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1BhdHRlcm4uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9DYW52YXNQYXR0ZXJuLmgKQEAgLTMyLDEzICszMiwxMyBAQAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLWNsYXNzIE5hdGl2ZUltYWdlOwogY2xhc3MgUGF0dGVybjsKK2NsYXNz
IFNvdXJjZUltYWdlOwogc3RydWN0IERPTU1hdHJpeDJESW5pdDsKIAogY2xhc3MgQ2FudmFzUGF0
dGVybiA6IHB1YmxpYyBSZWZDb3VudGVkPENhbnZhc1BhdHRlcm4+IHsKIHB1YmxpYzoKLSAgICBz
dGF0aWMgUmVmPENhbnZhc1BhdHRlcm4+IGNyZWF0ZShSZWY8TmF0aXZlSW1hZ2U+JiYsIGJvb2wg
cmVwZWF0WCwgYm9vbCByZXBlYXRZLCBib29sIG9yaWdpbkNsZWFuKTsKKyAgICBzdGF0aWMgUmVm
PENhbnZhc1BhdHRlcm4+IGNyZWF0ZShTb3VyY2VJbWFnZSYmLCBib29sIHJlcGVhdFgsIGJvb2wg
cmVwZWF0WSwgYm9vbCBvcmlnaW5DbGVhbik7CiAgICAgfkNhbnZhc1BhdHRlcm4oKTsKIAogICAg
IHN0YXRpYyBib29sIHBhcnNlUmVwZXRpdGlvblR5cGUoY29uc3QgU3RyaW5nJiwgYm9vbCYgcmVw
ZWF0WCwgYm9vbCYgcmVwZWF0WSk7CkBAIC01MSw3ICs1MSw3IEBAIHB1YmxpYzoKICAgICBFeGNl
cHRpb25Pcjx2b2lkPiBzZXRUcmFuc2Zvcm0oRE9NTWF0cml4MkRJbml0JiYpOwogCiBwcml2YXRl
OgotICAgIENhbnZhc1BhdHRlcm4oUmVmPE5hdGl2ZUltYWdlPiYmLCBib29sIHJlcGVhdFgsIGJv
b2wgcmVwZWF0WSwgYm9vbCBvcmlnaW5DbGVhbik7CisgICAgQ2FudmFzUGF0dGVybihTb3VyY2VJ
bWFnZSYmLCBib29sIHJlcGVhdFgsIGJvb2wgcmVwZWF0WSwgYm9vbCBvcmlnaW5DbGVhbik7CiAK
ICAgICBSZWY8UGF0dGVybj4gbV9wYXR0ZXJuOwogICAgIGJvb2wgbV9vcmlnaW5DbGVhbjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRl
eHQyREJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5n
Q29udGV4dDJEQmFzZS5jcHAKaW5kZXggNTc3ZDU1ZTdmMDQyYTc4NDgyMjBlMzhhYzMyZDMwNjk4
MzZhMzg5ZC4uYjg5ZTc3ZmI2MDBlMGVjYTkzZjAxOTI0MzllNDEwNzNjOTVhZDEzOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJE
QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5n
Q29udGV4dDJEQmFzZS5jcHAKQEAgLTE5NTMsNyArMTk1Myw3IEBAIEV4Y2VwdGlvbk9yPFJlZlB0
cjxDYW52YXNQYXR0ZXJuPj4gQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6Y3JlYXRlUGF0
dGVybihICiAgICAgaWYgKCFuYXRpdmVJbWFnZSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7
IEludmFsaWRTdGF0ZUVycm9yIH07CiAKLSAgICByZXR1cm4gUmVmUHRyPENhbnZhc1BhdHRlcm4+
IHsgQ2FudmFzUGF0dGVybjo6Y3JlYXRlKG5hdGl2ZUltYWdlLnJlbGVhc2VOb25OdWxsKCksIHJl
cGVhdFgsIHJlcGVhdFksIG9yaWdpbkNsZWFuKSB9OworICAgIHJldHVybiBSZWZQdHI8Q2FudmFz
UGF0dGVybj4geyBDYW52YXNQYXR0ZXJuOjpjcmVhdGUoeyBuYXRpdmVJbWFnZS5yZWxlYXNlTm9u
TnVsbCgpIH0sIHJlcGVhdFgsIHJlcGVhdFksIG9yaWdpbkNsZWFuKSB9OwogfQogCiBFeGNlcHRp
b25PcjxSZWZQdHI8Q2FudmFzUGF0dGVybj4+IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6
OmNyZWF0ZVBhdHRlcm4oQ2FudmFzQmFzZSYgY2FudmFzLCBib29sIHJlcGVhdFgsIGJvb2wgcmVw
ZWF0WSkKQEAgLTE5NjksNyArMTk2OSw3IEBAIEV4Y2VwdGlvbk9yPFJlZlB0cjxDYW52YXNQYXR0
ZXJuPj4gQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6Y3JlYXRlUGF0dGVybihDCiAgICAg
aWYgKCFuYXRpdmVJbWFnZSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0
ZUVycm9yIH07CiAKLSAgICByZXR1cm4gUmVmUHRyPENhbnZhc1BhdHRlcm4+IHsgQ2FudmFzUGF0
dGVybjo6Y3JlYXRlKG5hdGl2ZUltYWdlLnJlbGVhc2VOb25OdWxsKCksIHJlcGVhdFgsIHJlcGVh
dFksIGNhbnZhcy5vcmlnaW5DbGVhbigpKSB9OworICAgIHJldHVybiBSZWZQdHI8Q2FudmFzUGF0
dGVybj4geyBDYW52YXNQYXR0ZXJuOjpjcmVhdGUoeyBuYXRpdmVJbWFnZS5yZWxlYXNlTm9uTnVs
bCgpIH0sIHJlcGVhdFgsIHJlcGVhdFksIGNhbnZhcy5vcmlnaW5DbGVhbigpKSB9OwogfQogICAg
IAogI2lmIEVOQUJMRShWSURFTykKQEAgLTE5ODQsNyArMTk4NCw3IEBAIEV4Y2VwdGlvbk9yPFJl
ZlB0cjxDYW52YXNQYXR0ZXJuPj4gQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6Y3JlYXRl
UGF0dGVybihICiAKICNpZiBVU0UoQ0cpCiAgICAgaWYgKGF1dG8gbmF0aXZlSW1hZ2UgPSB2aWRl
b0VsZW1lbnQubmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgpKQotICAgICAgICByZXR1cm4gUmVm
UHRyPENhbnZhc1BhdHRlcm4+IHsgQ2FudmFzUGF0dGVybjo6Y3JlYXRlKG5hdGl2ZUltYWdlLnJl
bGVhc2VOb25OdWxsKCksIHJlcGVhdFgsIHJlcGVhdFksIG9yaWdpbkNsZWFuKSB9OworICAgICAg
ICByZXR1cm4gUmVmUHRyPENhbnZhc1BhdHRlcm4+IHsgQ2FudmFzUGF0dGVybjo6Y3JlYXRlKHsg
bmF0aXZlSW1hZ2UucmVsZWFzZU5vbk51bGwoKSB9LCByZXBlYXRYLCByZXBlYXRZLCBvcmlnaW5D
bGVhbikgfTsKICNlbmRpZgogCiAgICAgYXV0byByZW5kZXJpbmdNb2RlID0gZHJhd2luZ0NvbnRl
eHQoKSA/IGRyYXdpbmdDb250ZXh0KCktPnJlbmRlcmluZ01vZGUoKSA6IFJlbmRlcmluZ01vZGU6
OlVuYWNjZWxlcmF0ZWQ7CkBAIC0xOTk0LDcgKzE5OTQsNyBAQCBFeGNlcHRpb25PcjxSZWZQdHI8
Q2FudmFzUGF0dGVybj4+IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmNyZWF0ZVBhdHRl
cm4oSAogCiAgICAgdmlkZW9FbGVtZW50LnBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0KGltYWdl
QnVmZmVyLT5jb250ZXh0KCksIEZsb2F0UmVjdChGbG9hdFBvaW50KCksIHNpemUodmlkZW9FbGVt
ZW50KSkpOwogICAgIAotICAgIHJldHVybiBSZWZQdHI8Q2FudmFzUGF0dGVybj4geyBDYW52YXNQ
YXR0ZXJuOjpjcmVhdGUoSW1hZ2VCdWZmZXI6OnNpbmtJbnRvTmF0aXZlSW1hZ2UoV1RGTW92ZShp
bWFnZUJ1ZmZlcikpLnJlbGVhc2VOb25OdWxsKCksIHJlcGVhdFgsIHJlcGVhdFksIG9yaWdpbkNs
ZWFuKSB9OworICAgIHJldHVybiBSZWZQdHI8Q2FudmFzUGF0dGVybj4geyBDYW52YXNQYXR0ZXJu
OjpjcmVhdGUoeyBpbWFnZUJ1ZmZlci5yZWxlYXNlTm9uTnVsbCgpIH0sIHJlcGVhdFgsIHJlcGVh
dFksIG9yaWdpbkNsZWFuKSB9OwogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXMuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckNhbnZhcy5jcHAKaW5kZXggM2QzMTgxNTBiYzk4YzYyNjk5M2ZjYzFiNmJm
ZGE5OGEzMDJjMzU0Mi4uMjk4MmNiZTA4OGZlMzNlNGU3YmUxZDJhYzQyYjRmNTM1MjM4YTQzOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhcy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhcy5jcHAKQEAgLTEz
MzYsMTAgKzEzMzYsNyBAQCBSZWY8SlNPTjo6QXJyYXlPZjxKU09OOjpWYWx1ZT4+IEluc3BlY3Rv
ckNhbnZhczo6YnVpbGRBcnJheUZvckNhbnZhc0dyYWRpZW50KGNvbgogCiBSZWY8SlNPTjo6QXJy
YXlPZjxKU09OOjpWYWx1ZT4+IEluc3BlY3RvckNhbnZhczo6YnVpbGRBcnJheUZvckNhbnZhc1Bh
dHRlcm4oY29uc3QgQ2FudmFzUGF0dGVybiYgY2FudmFzUGF0dGVybikKIHsKLSAgICBhdXRvJiB0
aWxlSW1hZ2UgPSBjYW52YXNQYXR0ZXJuLnBhdHRlcm4oKS50aWxlSW1hZ2UoKTsKLSAgICBGbG9h
dFJlY3QgcmVjdCA9IHsgeyB9LCB0aWxlSW1hZ2Uuc2l6ZSgpIH07Ci0gICAgYXV0byBpbWFnZUJ1
ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUodGlsZUltYWdlLnNpemUoKSwgUmVuZGVyaW5nTW9k
ZTo6VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVs
Rm9ybWF0OjpCR1JBOCk7Ci0gICAgaW1hZ2VCdWZmZXItPmNvbnRleHQoKS5kcmF3TmF0aXZlSW1h
Z2UodGlsZUltYWdlLCB0aWxlSW1hZ2Uuc2l6ZSgpLCByZWN0LCByZWN0KTsKKyAgICBhdXRvIGlt
YWdlQnVmZmVyID0gY2FudmFzUGF0dGVybi5wYXR0ZXJuKCkudGlsZUltYWdlQnVmZmVyKCk7CiAK
ICAgICBTdHJpbmcgcmVwZWF0OwogICAgIGJvb2wgcmVwZWF0WCA9IGNhbnZhc1BhdHRlcm4ucGF0
dGVybigpLnJlcGVhdFgoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL05hdGl2ZUltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9O
YXRpdmVJbWFnZS5oCmluZGV4IDc5MmJkYTY5NTAzZGFhMTc3ZGViNGNkYWFjNjQyNzUxOTJmZWJm
MzQuLmJmMTg5NzY5MjhlYTk3MmM3YjNhNmRiODRmNjJmNzIyNDljZmZmNjEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hdGl2ZUltYWdlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2UuaApAQCAtMzgsNyArMzgs
NyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIE5hdGl2ZUltYWdlIDogcHVibGlj
IFJlZkNvdW50ZWQ8TmF0aXZlSW1hZ2U+LCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8TmF0aXZlSW1h
Z2U+IHsKK2NsYXNzIE5hdGl2ZUltYWdlIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPE5h
dGl2ZUltYWdlLCBXVEY6OkRlc3RydWN0aW9uVGhyZWFkOjpNYWluPiwgcHVibGljIENhbk1ha2VX
ZWFrUHRyPE5hdGl2ZUltYWdlPiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJs
aWM6CiAgICAgY2xhc3MgT2JzZXJ2ZXIgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvUGF0dGVybi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9QYXR0ZXJuLmNwcAppbmRleCA2MzUzMjM3NjlmODAzM2RlMzI4ZThkNDRlNTc5NzVhMWQz
Y2Q2MDY1Li5jNDkxMWU4MGYwYmU1MjY0Y2Q2ZTU5YzdlOGQ2MzNjZmE0YjIyNzJmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXR0ZXJuLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXR0ZXJuLmNwcApAQCAtMzEsMTMgKzMx
LDEzIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVmPFBhdHRlcm4+IFBhdHRlcm46OmNy
ZWF0ZShSZWY8TmF0aXZlSW1hZ2U+JiYgdGlsZUltYWdlLCBjb25zdCBQYXJhbWV0ZXJzJiBwYXJh
bWV0ZXJzKQorUmVmPFBhdHRlcm4+IFBhdHRlcm46OmNyZWF0ZShTb3VyY2VJbWFnZSYmIHRpbGVJ
bWFnZSwgY29uc3QgUGFyYW1ldGVycyYgcGFyYW1ldGVycykKIHsKICAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBQYXR0ZXJuKFdURk1vdmUodGlsZUltYWdlKSwgcGFyYW1ldGVycykpOwogfQogCi1Q
YXR0ZXJuOjpQYXR0ZXJuKFJlZjxOYXRpdmVJbWFnZT4mJiBpbWFnZSwgY29uc3QgUGFyYW1ldGVy
cyYgcGFyYW1ldGVycykKLSAgICA6IG1fdGlsZUltYWdlKFdURk1vdmUoaW1hZ2UpKQorUGF0dGVy
bjo6UGF0dGVybihTb3VyY2VJbWFnZSYmIHRpbGVJbWFnZSwgY29uc3QgUGFyYW1ldGVycyYgcGFy
YW1ldGVycykKKyAgICA6IG1fdGlsZUltYWdlKFdURk1vdmUodGlsZUltYWdlKSkKICAgICAsIG1f
cGFyYW1ldGVycyhwYXJhbWV0ZXJzKQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvUGF0dGVybi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvUGF0dGVybi5oCmluZGV4IDcyMTRlODI1MDcxYjU0NDdlN2JjYmYyMDMwM2Q5MmY2MmMy
NTI3YWYuLjEyZGJlMDZkN2UwNjFiNDM2MGFlZWJhMTFkODY3NmRiNmQxNzUwYTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BhdHRlcm4uaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXR0ZXJuLmgKQEAgLTI4LDcgKzI4LDcgQEAK
ICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQWZmaW5lVHJhbnNmb3JtLmgiCi0jaW5jbHVkZSAi
SW1hZ2UuaCIKKyNpbmNsdWRlICJTb3VyY2VJbWFnZS5oIgogCiAjaW5jbHVkZSA8d3RmL1JlZi5o
PgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CkBAIC00NSw3ICs0NSw2IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogY2xhc3MgQWZmaW5lVHJhbnNmb3JtOwogY2xhc3MgR3JhcGhpY3NDb250
ZXh0OwotY2xhc3MgSW1hZ2U7CiAKIGNsYXNzIFBhdHRlcm4gZmluYWwgOiBwdWJsaWMgUmVmQ291
bnRlZDxQYXR0ZXJuPiB7CiBwdWJsaWM6CkBAIC02MywyNCArNjIsMzEgQEAgcHVibGljOgogICAg
ICAgICBib29sIHJlcGVhdFk7CiAgICAgfTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBS
ZWY8UGF0dGVybj4gY3JlYXRlKFJlZjxOYXRpdmVJbWFnZT4mJiB0aWxlSW1hZ2UsIGNvbnN0IFBh
cmFtZXRlcnMmID0geyB9KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPFBhdHRlcm4+
IGNyZWF0ZShTb3VyY2VJbWFnZSYmIHRpbGVJbWFnZSwgY29uc3QgUGFyYW1ldGVycyYgPSB7IH0p
OwogICAgIFdFQkNPUkVfRVhQT1JUIH5QYXR0ZXJuKCk7CiAKLSAgICBOYXRpdmVJbWFnZSYgdGls
ZUltYWdlKCkgY29uc3QgeyByZXR1cm4gbV90aWxlSW1hZ2UuZ2V0KCk7IH0KKyAgICBjb25zdCBT
b3VyY2VJbWFnZSYgdGlsZUltYWdlKCkgY29uc3QgeyByZXR1cm4gbV90aWxlSW1hZ2U7IH0KKyAg
ICBSZWZQdHI8TmF0aXZlSW1hZ2U+IHRpbGVOYXRpdmVJbWFnZSgpIGNvbnN0IHsgcmV0dXJuIG1f
dGlsZUltYWdlLm5hdGl2ZUltYWdlKCk7IH0KKyAgICBSZWZQdHI8SW1hZ2VCdWZmZXI+IHRpbGVJ
bWFnZUJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fdGlsZUltYWdlLmltYWdlQnVmZmVyKCk7IH0K
ICAgICBjb25zdCBQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKCkgY29uc3QgeyByZXR1cm4gbV9wYXJh
bWV0ZXJzOyB9CiAKICAgICAvLyBQYXR0ZXJuIHNwYWNlIGlzIGFuIGFic3RyYWN0IHNwYWNlIHRo
YXQgbWFwcyB0byB0aGUgZGVmYXVsdCB1c2VyIHNwYWNlIGJ5IHRoZSB0cmFuc2Zvcm1hdGlvbiAn
dXNlclNwYWNlVHJhbnNmb3JtJwogICAgIFBsYXRmb3JtUGF0dGVyblB0ciBjcmVhdGVQbGF0Zm9y
bVBhdHRlcm4oY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB1c2VyU3BhY2VUcmFuc2Zvcm0pIGNvbnN0
OwogCisgICAgdm9pZCBzZXRUaWxlSW1hZ2UoU291cmNlSW1hZ2UmJiB0aWxlSW1hZ2UpIHsgbV90
aWxlSW1hZ2UgPSBXVEZNb3ZlKHRpbGVJbWFnZSk7IH0KICAgICB2b2lkIHNldFBhdHRlcm5TcGFj
ZVRyYW5zZm9ybShjb25zdCBBZmZpbmVUcmFuc2Zvcm0mKTsKKwogICAgIGNvbnN0IEFmZmluZVRy
YW5zZm9ybSYgcGF0dGVyblNwYWNlVHJhbnNmb3JtKCkgY29uc3QgeyByZXR1cm4gbV9wYXJhbWV0
ZXJzLnBhdHRlcm5TcGFjZVRyYW5zZm9ybTsgfTsKICAgICBib29sIHJlcGVhdFgoKSBjb25zdCB7
IHJldHVybiBtX3BhcmFtZXRlcnMucmVwZWF0WDsgfQogICAgIGJvb2wgcmVwZWF0WSgpIGNvbnN0
IHsgcmV0dXJuIG1fcGFyYW1ldGVycy5yZXBlYXRZOyB9CiAKKyAgICB0ZW1wbGF0ZTxjbGFzcyBF
bmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CisgICAgdGVtcGxhdGU8Y2xhc3Mg
RGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8UmVmPFBhdHRlcm4+PiBkZWNvZGUoRGVjb2Rl
ciYpOworCiBwcml2YXRlOgotICAgIFBhdHRlcm4oUmVmPE5hdGl2ZUltYWdlPiYmLCBjb25zdCBQ
YXJhbWV0ZXJzJik7CisgICAgUGF0dGVybihTb3VyY2VJbWFnZSYmLCBjb25zdCBQYXJhbWV0ZXJz
Jik7CiAKLSAgICBSZWY8TmF0aXZlSW1hZ2U+IG1fdGlsZUltYWdlOworICAgIFNvdXJjZUltYWdl
IG1fdGlsZUltYWdlOwogICAgIFBhcmFtZXRlcnMgbV9wYXJhbWV0ZXJzOwogfTsKIApAQCAtMTEz
LDQgKzExOSwyNyBAQCBzdGQ6Om9wdGlvbmFsPFBhdHRlcm46OlBhcmFtZXRlcnM+IFBhdHRlcm46
OlBhcmFtZXRlcnM6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgIHJldHVybiB7eyAqcmVw
ZWF0WCwgKnJlcGVhdFksICpwYXR0ZXJuU3BhY2VUcmFuc2Zvcm0gfX07CiB9CiAKK3RlbXBsYXRl
PGNsYXNzIEVuY29kZXI+Cit2b2lkIFBhdHRlcm46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBj
b25zdAoreworICAgIGVuY29kZXIgPDwgbV90aWxlSW1hZ2U7CisgICAgZW5jb2RlciA8PCBtX3Bh
cmFtZXRlcnM7Cit9CisKK3RlbXBsYXRlPGNsYXNzIERlY29kZXI+CitzdGQ6Om9wdGlvbmFsPFJl
ZjxQYXR0ZXJuPj4gUGF0dGVybjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit7CisgICAgc3Rk
OjpvcHRpb25hbDxTb3VyY2VJbWFnZT4gdGlsZUltYWdlOworICAgIGRlY29kZXIgPj4gdGlsZUlt
YWdlOworICAgIGlmICghdGlsZUltYWdlKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owor
CisgICAgc3RkOjpvcHRpb25hbDxQYXJhbWV0ZXJzPiBwYXJhbWV0ZXJzOworICAgIGRlY29kZXIg
Pj4gcGFyYW1ldGVyczsKKyAgICBpZiAoIXBhcmFtZXRlcnMpCisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CisKKyAgICByZXR1cm4gUGF0dGVybjo6Y3JlYXRlKFdURk1vdmUoKnRpbGVJbWFn
ZSksICpwYXJhbWV0ZXJzKTsKK30KKwogfSAvL25hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlSW1hZ2UuY3BwCmluZGV4IDljYzNiMmM4NjQxMjJk
YTE3ZWNjMDkwMGU5NmY4NzdmNDU2NmJkNWMuLmFhN2QxZDFiM2FkM2I3N2UyMTc2MDgzNjNhNmVj
YzI5ZjQ4NGZhNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L1NvdXJjZUltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9T
b3VyY2VJbWFnZS5jcHAKQEAgLTQyLDcgKzQyLDcgQEAgTmF0aXZlSW1hZ2UqIFNvdXJjZUltYWdl
OjpuYXRpdmVJbWFnZUlmRXhpc3RzKCkgY29uc3QKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAot
TmF0aXZlSW1hZ2UqIFNvdXJjZUltYWdlOjpuYXRpdmVJbWFnZSgpCitSZWZQdHI8TmF0aXZlSW1h
Z2U+IFNvdXJjZUltYWdlOjpuYXRpdmVJbWFnZSgpIGNvbnN0CiB7CiAgICAgaWYgKCFzdGQ6Omhv
bGRzX2FsdGVybmF0aXZlPFJlZjxJbWFnZUJ1ZmZlcj4+KG1faW1hZ2VWYXJpYW50KSkKICAgICAg
ICAgcmV0dXJuIG5hdGl2ZUltYWdlSWZFeGlzdHMoKTsKQEAgLTUyLDggKzUyLDcgQEAgTmF0aXZl
SW1hZ2UqIFNvdXJjZUltYWdlOjpuYXRpdmVJbWFnZSgpCiAgICAgaWYgKCFuYXRpdmVJbWFnZSkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBtX2ltYWdlVmFyaWFudCA9IG5hdGl2ZUlt
YWdlLnJlbGVhc2VOb25OdWxsKCk7Ci0gICAgcmV0dXJuIG5hdGl2ZUltYWdlSWZFeGlzdHMoKTsK
KyAgICByZXR1cm4gbmF0aXZlSW1hZ2U7CiB9CiAKIEltYWdlQnVmZmVyKiBTb3VyY2VJbWFnZTo6
aW1hZ2VCdWZmZXJJZkV4aXN0cygpIGNvbnN0CkBAIC02Myw3ICs2Miw3IEBAIEltYWdlQnVmZmVy
KiBTb3VyY2VJbWFnZTo6aW1hZ2VCdWZmZXJJZkV4aXN0cygpIGNvbnN0CiAgICAgcmV0dXJuIG51
bGxwdHI7CiB9CiAKLUltYWdlQnVmZmVyKiBTb3VyY2VJbWFnZTo6aW1hZ2VCdWZmZXIoKQorUmVm
UHRyPEltYWdlQnVmZmVyPiBTb3VyY2VJbWFnZTo6aW1hZ2VCdWZmZXIoKSBjb25zdAogewogICAg
IGlmICghc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8TmF0aXZlSW1hZ2U+PihtX2ltYWdlVmFy
aWFudCkpCiAgICAgICAgIHJldHVybiBpbWFnZUJ1ZmZlcklmRXhpc3RzKCk7CkBAIC03Nyw4ICs3
Niw3IEBAIEltYWdlQnVmZmVyKiBTb3VyY2VJbWFnZTo6aW1hZ2VCdWZmZXIoKQogCiAgICAgaW1h
Z2VCdWZmZXItPmNvbnRleHQoKS5kcmF3TmF0aXZlSW1hZ2UobmF0aXZlSW1hZ2UsIHJlY3Quc2l6
ZSgpLCByZWN0LCByZWN0KTsKIAotICAgIG1faW1hZ2VWYXJpYW50ID0gaW1hZ2VCdWZmZXIucmVs
ZWFzZU5vbk51bGwoKTsKLSAgICByZXR1cm4gaW1hZ2VCdWZmZXJJZkV4aXN0cygpOworICAgIHJl
dHVybiBpbWFnZUJ1ZmZlcjsKIH0KIAogUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIFNvdXJj
ZUltYWdlOjppbWFnZUlkZW50aWZpZXIoKSBjb25zdApAQCAtOTYsNCArOTQsMjAgQEAgUmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyIFNvdXJjZUltYWdlOjppbWFnZUlkZW50aWZpZXIoKSBjb25z
dAogICAgICk7CiB9CiAKK0ludFNpemUgU291cmNlSW1hZ2U6OnNpemUoKSBjb25zdAoreworICAg
IHJldHVybiBXVEY6OnN3aXRjaE9uKG1faW1hZ2VWYXJpYW50LAorICAgICAgICBbJl0gKGNvbnN0
IFJlZjxOYXRpdmVJbWFnZT4mIG5hdGl2ZUltYWdlKSB7CisgICAgICAgICAgICByZXR1cm4gbmF0
aXZlSW1hZ2UtPnNpemUoKTsKKyAgICAgICAgfSwKKyAgICAgICAgWyZdIChjb25zdCBSZWY8SW1h
Z2VCdWZmZXI+JiBpbWFnZUJ1ZmZlcikgeworICAgICAgICAgICAgcmV0dXJuIGltYWdlQnVmZmVy
LT5iYWNrZW5kU2l6ZSgpOworICAgICAgICB9LAorICAgICAgICBbJl0gKFJlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllcikgLT4gSW50U2l6ZSB7CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICAgICAgICAgIHJldHVybiB7IH07CisgICAgICAgIH0KKyAgICApOworfQorCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9Tb3VyY2VJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvU291cmNlSW1hZ2UuaAppbmRleCAyMGQzZDgwZDQzNjE1ODRkOGY0ZjRlY2NlODMwYzU0OWE5
Y2M4MjkwLi5mOWMzNGFiZGI5YjdhNjg2OTVkMTdhZjg0MDRhNTkyZDU2NGNlODMxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Tb3VyY2VJbWFnZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NvdXJjZUltYWdlLmgKQEAgLTQyLDEy
ICs0MiwxMyBAQCBwdWJsaWM6CiAgICAgU291cmNlSW1hZ2UoSW1hZ2VWYXJpYW50JiYpOwogCiAg
ICAgTmF0aXZlSW1hZ2UqIG5hdGl2ZUltYWdlSWZFeGlzdHMoKSBjb25zdDsKLSAgICBOYXRpdmVJ
bWFnZSogbmF0aXZlSW1hZ2UoKTsKKyAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+IG5hdGl2ZUltYWdl
KCkgY29uc3Q7CiAKICAgICBJbWFnZUJ1ZmZlciogaW1hZ2VCdWZmZXJJZkV4aXN0cygpIGNvbnN0
OwotICAgIEltYWdlQnVmZmVyKiBpbWFnZUJ1ZmZlcigpOworICAgIFJlZlB0cjxJbWFnZUJ1ZmZl
cj4gaW1hZ2VCdWZmZXIoKSBjb25zdDsKIAogICAgIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
ciBpbWFnZUlkZW50aWZpZXIoKSBjb25zdDsKKyAgICBJbnRTaXplIHNpemUoKSBjb25zdDsKIAog
ICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsK
ICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxTb3VyY2VJ
bWFnZT4gZGVjb2RlKERlY29kZXImKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhaXJvL1BhdHRlcm5DYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYWlyby9QYXR0ZXJuQ2Fpcm8uY3BwCmluZGV4IDY4ZGFiYWY5OGFjYTlk
MWNmYjcxZTE2NTIyYjlkZWIyNTgwN2ZmMWYuLmEzZmNkNjhmZjhiN2NkOTZkNDRlMmY1N2E5NGEz
OWU5MzcxYWMxOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL1BhdHRlcm5DYWlyby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vUGF0dGVybkNhaXJvLmNwcApAQCAtMzUsNyArMzUsMTEgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBjYWlyb19wYXR0ZXJuX3QqIFBhdHRlcm46OmNyZWF0ZVBsYXRmb3JtUGF0
dGVybihjb25zdCBBZmZpbmVUcmFuc2Zvcm0mKSBjb25zdAogewotICAgIGF1dG8gcGxhdGZvcm1J
bWFnZSA9IHRpbGVJbWFnZSgpLnBsYXRmb3JtSW1hZ2UoKTsKKyAgICBhdXRvIG5hdGl2ZUltYWdl
ID0gdGlsZU5hdGl2ZUltYWdlKCk7CisgICAgaWYgKCFuYXRpdmVJbWFnZSkKKyAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisKKyAgICBhdXRvIHBsYXRmb3JtSW1hZ2UgPSBuYXRpdmVJbWFnZS0+cGxh
dGZvcm1JbWFnZSgpOwogICAgIGlmICghcGxhdGZvcm1JbWFnZSkKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L1BhdHRlcm5DRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QYXR0
ZXJuQ0cuY3BwCmluZGV4IDA1YTM5MTY1NDBiYjc2ZGEzZjBhYmFhMzM5NGZjOGRkMDg4YzhkYTku
LmY2NWE3NzYwYzY1OTkxYjI3MWYyZDNmMmJjMjUyODE2MTVkMTc0ZDAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BhdHRlcm5DRy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGF0dGVybkNHLmNwcApAQCAtNTUsMTYg
KzU1LDIwIEBAIHN0YXRpYyB2b2lkIHBhdHRlcm5SZWxlYXNlQ2FsbGJhY2sodm9pZCogaW5mbykK
IAogUmV0YWluUHRyPENHUGF0dGVyblJlZj4gUGF0dGVybjo6Y3JlYXRlUGxhdGZvcm1QYXR0ZXJu
KGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdXNlclNwYWNlVHJhbnNmb3JtKSBjb25zdAogewotICAg
IEZsb2F0UmVjdCB0aWxlUmVjdCA9IHsgeyB9LCB0aWxlSW1hZ2UoKS5zaXplKCkgfTsKLQotICAg
IEFmZmluZVRyYW5zZm9ybSBwYXR0ZXJuVHJhbnNmb3JtID0gdXNlclNwYWNlVHJhbnNmb3JtICog
cGF0dGVyblNwYWNlVHJhbnNmb3JtKCk7Ci0gICAgcGF0dGVyblRyYW5zZm9ybS5zY2FsZU5vblVu
aWZvcm0oMSwgLTEpOwotICAgIHBhdHRlcm5UcmFuc2Zvcm0udHJhbnNsYXRlKDAsIC10aWxlUmVj
dC5oZWlnaHQoKSk7CisgICAgYXV0byBuYXRpdmVJbWFnZSA9IHRpbGVOYXRpdmVJbWFnZSgpOwor
ICAgIGlmICghbmF0aXZlSW1hZ2UpCisgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgUGxh
dGZvcm1JbWFnZVB0ciBwbGF0Zm9ybUltYWdlID0gdGlsZUltYWdlKCkucGxhdGZvcm1JbWFnZSgp
OworICAgIGF1dG8gcGxhdGZvcm1JbWFnZSA9IG5hdGl2ZUltYWdlLT5wbGF0Zm9ybUltYWdlKCk7
CiAgICAgaWYgKCFwbGF0Zm9ybUltYWdlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAorICAg
IEZsb2F0UmVjdCB0aWxlUmVjdCA9IHsgeyB9LCBuYXRpdmVJbWFnZS0+c2l6ZSgpIH07CisKKyAg
ICBhdXRvIHBhdHRlcm5UcmFuc2Zvcm0gPSB1c2VyU3BhY2VUcmFuc2Zvcm0gKiBwYXR0ZXJuU3Bh
Y2VUcmFuc2Zvcm0oKTsKKyAgICBwYXR0ZXJuVHJhbnNmb3JtLnNjYWxlTm9uVW5pZm9ybSgxLCAt
MSk7CisgICAgcGF0dGVyblRyYW5zZm9ybS50cmFuc2xhdGUoMCwgLXRpbGVSZWN0LmhlaWdodCgp
KTsKKwogICAgIC8vIElmIHdlJ3JlIHJlcGVhdGluZyBpbiBib3RoIGRpcmVjdGlvbnMsIHdlIGNh
biB1c2UgaW1hZ2UtYmFja2VkIHBhdHRlcm5zCiAgICAgLy8gaW5zdGVhZCBvZiBjdXN0b20gcGF0
dGVybnMsIGFuZCBhdm9pZCB0aWxpbmctZWRnZSBwaXhlbCBjcmFja3MuCiAgICAgaWYgKHJlcGVh
dFgoKSAmJiByZXBlYXRZKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHAKaW5k
ZXggMzFhYzhiNGFkN2RiZjcyZGEzNjRhMDU1Nzc2ZjZiMjk3OWE0NjlkNy4uYTM3NWRjMjYyNThj
N2E0ZWJmNGUwZjE1NzAwYzlhNDBjY2IzYTZkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dEl0ZW1zLmNwcApAQCAtMTUzLDE5ICsxNTMsMTMgQEAgU2V0U3RhdGU6OlNldFN0YXRlKGNvbnN0
IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0YXQK
IHsKIH0KIAotU2V0U3RhdGU6OlNldFN0YXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlQ2hh
bmdlJiBzdGF0ZUNoYW5nZSwgY29uc3QgUGF0dGVybkRhdGEmIHN0cm9rZVBhdHRlcm4sIGNvbnN0
IFBhdHRlcm5EYXRhJiBmaWxsUGF0dGVybikKK1NldFN0YXRlOjpTZXRTdGF0ZShjb25zdCBHcmFw
aGljc0NvbnRleHRTdGF0ZUNoYW5nZSYgc3RhdGVDaGFuZ2UpCiAgICAgOiBtX3N0YXRlQ2hhbmdl
KHN0YXRlQ2hhbmdlKQotICAgICwgbV9zdHJva2VQYXR0ZXJuKHN0cm9rZVBhdHRlcm4pCi0gICAg
LCBtX2ZpbGxQYXR0ZXJuKGZpbGxQYXR0ZXJuKQogewogfQogCi12b2lkIFNldFN0YXRlOjphcHBs
eShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIE5hdGl2ZUltYWdlKiBzdHJva2VQYXR0ZXJuSW1h
Z2UsIE5hdGl2ZUltYWdlKiBmaWxsUGF0dGVybkltYWdlKQordm9pZCBTZXRTdGF0ZTo6YXBwbHko
R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQogewotICAgIGlmIChtX3N0YXRlQ2hhbmdlLm1fY2hh
bmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZVBhdHRlcm5DaGFu
Z2UpICYmIHN0cm9rZVBhdHRlcm5JbWFnZSkKLSAgICAgICAgbV9zdGF0ZUNoYW5nZS5tX3N0YXRl
LnN0cm9rZVBhdHRlcm4gPSBQYXR0ZXJuOjpjcmVhdGUoKnN0cm9rZVBhdHRlcm5JbWFnZSwgbV9z
dHJva2VQYXR0ZXJuLnBhcmFtZXRlcnMpOwotICAgIGlmIChtX3N0YXRlQ2hhbmdlLm1fY2hhbmdl
RmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkZpbGxQYXR0ZXJuQ2hhbmdlKSAm
JiBmaWxsUGF0dGVybkltYWdlKQotICAgICAgICBtX3N0YXRlQ2hhbmdlLm1fc3RhdGUuZmlsbFBh
dHRlcm4gPSBQYXR0ZXJuOjpjcmVhdGUoKmZpbGxQYXR0ZXJuSW1hZ2UsIG1fZmlsbFBhdHRlcm4u
cGFyYW1ldGVycyk7CiAgICAgbV9zdGF0ZUNoYW5nZS5hcHBseShjb250ZXh0KTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0SXRlbXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmgKaW5kZXggZWYwYzE4NzdkMTkzOGJkYzA2MTA1NGI5
NDJmYTYyODBiYzQ3ZjIwMy4uZWY0ODA3OGQ2ZmFjNWZmNjVkMTFmMzA0OTYwMzY1NTE0MTI4Nzc2
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0Rpc3BsYXlMaXN0SXRlbXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oCkBAIC0yNDksMjcgKzI0OSwxNyBA
QCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgU2V0U3RhdGUoY29uc3QgR3JhcGhpY3NDb250
ZXh0U3RhdGUmLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3RhdGVDaGFuZ2VGbGFncyk7CiAKICAg
ICBjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZUNoYW5nZSYgc3RhdGVDaGFuZ2UoKSBjb25zdCB7
IHJldHVybiBtX3N0YXRlQ2hhbmdlOyB9Ci0gICAgY29uc3QgUGF0dGVybjo6UGFyYW1ldGVycyYg
c3Ryb2tlUGF0dGVyblBhcmFtZXRlcnMoKSBjb25zdCB7IHJldHVybiBtX3N0cm9rZVBhdHRlcm4u
cGFyYW1ldGVyczsgfQotICAgIGNvbnN0IFBhdHRlcm46OlBhcmFtZXRlcnMmIGZpbGxQYXR0ZXJu
UGFyYW1ldGVycygpIGNvbnN0IHsgcmV0dXJuIG1fZmlsbFBhdHRlcm4ucGFyYW1ldGVyczsgfQot
ICAgIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBzdHJva2VQYXR0ZXJuSW1hZ2VJZGVudGlm
aWVyKCkgY29uc3QgeyByZXR1cm4gbV9zdHJva2VQYXR0ZXJuLnRpbGVJbWFnZUlkZW50aWZpZXI7
IH0KLSAgICBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgZmlsbFBhdHRlcm5JbWFnZUlkZW50
aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2ZpbGxQYXR0ZXJuLnRpbGVJbWFnZUlkZW50aWZpZXI7
IH0KKyAgICBHcmFwaGljc0NvbnRleHRTdGF0ZUNoYW5nZSYgc3RhdGVDaGFuZ2UoKSB7IHJldHVy
biBtX3N0YXRlQ2hhbmdlOyB9CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVu
Y29kZShFbmNvZGVyJikgY29uc3Q7CiAgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGlj
IHN0ZDo6b3B0aW9uYWw8U2V0U3RhdGU+IGRlY29kZShEZWNvZGVyJik7CiAKLSAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIGFwcGx5KEdyYXBoaWNzQ29udGV4dCYsIE5hdGl2ZUltYWdlKiBzdHJva2VQ
YXR0ZXJuSW1hZ2UsIE5hdGl2ZUltYWdlKiBmaWxsUGF0dGVybkltYWdlKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIGFwcGx5KEdyYXBoaWNzQ29udGV4dCYpOwogCiBwcml2YXRlOgotICAgIHN0
cnVjdCBQYXR0ZXJuRGF0YSB7Ci0gICAgICAgIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciB0
aWxlSW1hZ2VJZGVudGlmaWVyOwotICAgICAgICBQYXR0ZXJuOjpQYXJhbWV0ZXJzIHBhcmFtZXRl
cnM7Ci0gICAgfTsKLQotICAgIFdFQkNPUkVfRVhQT1JUIFNldFN0YXRlKGNvbnN0IEdyYXBoaWNz
Q29udGV4dFN0YXRlQ2hhbmdlJiwgY29uc3QgUGF0dGVybkRhdGEmIHN0cm9rZVBhdHRlcm4sIGNv
bnN0IFBhdHRlcm5EYXRhJiBmaWxsUGF0dGVybik7CisgICAgV0VCQ09SRV9FWFBPUlQgU2V0U3Rh
dGUoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGVDaGFuZ2UmKTsKIAogICAgIEdyYXBoaWNzQ29u
dGV4dFN0YXRlQ2hhbmdlIG1fc3RhdGVDaGFuZ2U7Ci0gICAgUGF0dGVybkRhdGEgbV9zdHJva2VQ
YXR0ZXJuOwotICAgIFBhdHRlcm5EYXRhIG1fZmlsbFBhdHRlcm47CiB9OwogCiB0ZW1wbGF0ZTxj
bGFzcyBFbmNvZGVyPgpAQCAtMjg3LDggKzI3Nyw3IEBAIHZvaWQgU2V0U3RhdGU6OmVuY29kZShF
bmNvZGVyJiBlbmNvZGVyKSBjb25zdAogCiAgICAgaWYgKGNoYW5nZUZsYWdzLmNvbnRhaW5zKEdy
YXBoaWNzQ29udGV4dFN0YXRlOjpTdHJva2VQYXR0ZXJuQ2hhbmdlKSkgewogICAgICAgICBBU1NF
UlQoc3RhdGUuc3Ryb2tlUGF0dGVybik7Ci0gICAgICAgIGVuY29kZXIgPDwgc3RhdGUuc3Ryb2tl
UGF0dGVybi0+dGlsZUltYWdlKCkucmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKCk7Ci0gICAg
ICAgIGVuY29kZXIgPDwgc3RhdGUuc3Ryb2tlUGF0dGVybi0+cGFyYW1ldGVycygpOworICAgICAg
ICBlbmNvZGVyIDw8ICpzdGF0ZS5zdHJva2VQYXR0ZXJuOwogICAgIH0KIAogICAgIGlmIChjaGFu
Z2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6RmlsbEdyYWRpZW50Q2hhbmdl
KSkgewpAQCAtMjk4LDggKzI4Nyw3IEBAIHZvaWQgU2V0U3RhdGU6OmVuY29kZShFbmNvZGVyJiBl
bmNvZGVyKSBjb25zdAogCiAgICAgaWYgKGNoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29u
dGV4dFN0YXRlOjpGaWxsUGF0dGVybkNoYW5nZSkpIHsKICAgICAgICAgQVNTRVJUKHN0YXRlLmZp
bGxQYXR0ZXJuKTsKLSAgICAgICAgZW5jb2RlciA8PCBzdGF0ZS5maWxsUGF0dGVybi0+dGlsZUlt
YWdlKCkucmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKCk7Ci0gICAgICAgIGVuY29kZXIgPDwg
c3RhdGUuZmlsbFBhdHRlcm4tPnBhcmFtZXRlcnMoKTsKKyAgICAgICAgZW5jb2RlciA8PCAqc3Rh
dGUuZmlsbFBhdHRlcm47CiAgICAgfQogCiAgICAgaWYgKGNoYW5nZUZsYWdzLmNvbnRhaW5zKEdy
YXBoaWNzQ29udGV4dFN0YXRlOjpTaGFkb3dDaGFuZ2UpKSB7CkBAIC0zNjMsOSArMzUxLDYgQEAg
c3RkOjpvcHRpb25hbDxTZXRTdGF0ZT4gU2V0U3RhdGU6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVy
KQogICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlQ2hhbmdlIHN0YXRlQ2hhbmdlOwogICAgIHN0YXRl
Q2hhbmdlLm1fY2hhbmdlRmxhZ3MgPSAqY2hhbmdlRmxhZ3M7CiAKLSAgICBQYXR0ZXJuRGF0YSBz
dHJva2VQYXR0ZXJuOwotICAgIFBhdHRlcm5EYXRhIGZpbGxQYXR0ZXJuOwotCiAgICAgaWYgKHN0
YXRlQ2hhbmdlLm1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0
cm9rZUdyYWRpZW50Q2hhbmdlKSkgewogICAgICAgICBhdXRvIHN0cm9rZUdyYWRpZW50ID0gR3Jh
ZGllbnQ6OmRlY29kZShkZWNvZGVyKTsKICAgICAgICAgaWYgKCFzdHJva2VHcmFkaWVudCkKQEAg
LTM3NSwxNyArMzYwLDExIEBAIHN0ZDo6b3B0aW9uYWw8U2V0U3RhdGU+IFNldFN0YXRlOjpkZWNv
ZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICB9CiAKICAgICBpZiAoc3RhdGVDaGFuZ2UubV9jaGFu
Z2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlUGF0dGVybkNoYW5n
ZSkpIHsKLSAgICAgICAgc3RkOjpvcHRpb25hbDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+
IHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcjsKLSAgICAgICAgZGVjb2RlciA+PiByZW5kZXJp
bmdSZXNvdXJjZUlkZW50aWZpZXI7Ci0gICAgICAgIGlmICghcmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyKQotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLQotICAgICAgICBzdGQ6
Om9wdGlvbmFsPFBhdHRlcm46OlBhcmFtZXRlcnM+IHBhcmFtZXRlcnM7Ci0gICAgICAgIGRlY29k
ZXIgPj4gcGFyYW1ldGVyczsKLSAgICAgICAgaWYgKCFwYXJhbWV0ZXJzKQorICAgICAgICBhdXRv
IHN0cm9rZVBhdHRlcm4gPSBQYXR0ZXJuOjpkZWNvZGUoZGVjb2Rlcik7CisgICAgICAgIGlmICgh
c3Ryb2tlUGF0dGVybikKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICAg
ICAgc3Ryb2tlUGF0dGVybiA9IHsgKnJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwgKnBhcmFt
ZXRlcnMgfTsKKyAgICAgICAgc3RhdGVDaGFuZ2UubV9zdGF0ZS5zdHJva2VQYXR0ZXJuID0gV1RG
TW92ZSgqc3Ryb2tlUGF0dGVybik7CiAgICAgfQogCiAgICAgaWYgKHN0YXRlQ2hhbmdlLm1fY2hh
bmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkZpbGxHcmFkaWVudENoYW5n
ZSkpIHsKQEAgLTM5NywxNyArMzc2LDExIEBAIHN0ZDo6b3B0aW9uYWw8U2V0U3RhdGU+IFNldFN0
YXRlOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICB9CiAKICAgICBpZiAoc3RhdGVDaGFu
Z2UubV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6RmlsbFBhdHRl
cm5DaGFuZ2UpKSB7Ci0gICAgICAgIHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyPiByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI7Ci0gICAgICAgIGRlY29kZXIgPj4g
cmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyOwotICAgICAgICBpZiAoIXJlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllcikKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0KLSAgICAg
ICAgc3RkOjpvcHRpb25hbDxQYXR0ZXJuOjpQYXJhbWV0ZXJzPiBwYXJhbWV0ZXJzOwotICAgICAg
ICBkZWNvZGVyID4+IHBhcmFtZXRlcnM7Ci0gICAgICAgIGlmICghcGFyYW1ldGVycykKKyAgICAg
ICAgYXV0byBmaWxsUGF0dGVybiA9IFBhdHRlcm46OmRlY29kZShkZWNvZGVyKTsKKyAgICAgICAg
aWYgKCFmaWxsUGF0dGVybikKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAg
ICAgICAgZmlsbFBhdHRlcm4gPSB7ICpyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsICpwYXJh
bWV0ZXJzIH07CisgICAgICAgIHN0YXRlQ2hhbmdlLm1fc3RhdGUuZmlsbFBhdHRlcm4gPSBXVEZN
b3ZlKCpmaWxsUGF0dGVybik7CiAgICAgfQogCiAgICAgaWYgKHN0YXRlQ2hhbmdlLm1fY2hhbmdl
RmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlNoYWRvd0NoYW5nZSkpIHsKQEAg
LTU2NSw3ICs1MzgsNyBAQCBzdGQ6Om9wdGlvbmFsPFNldFN0YXRlPiBTZXRTdGF0ZTo6ZGVjb2Rl
KERlY29kZXImIGRlY29kZXIpCiAgICAgICAgIHN0YXRlQ2hhbmdlLm1fc3RhdGUuc2hhZG93c0ln
bm9yZVRyYW5zZm9ybXMgPSAqc2hhZG93c0lnbm9yZVRyYW5zZm9ybXM7CiAgICAgfQogCi0gICAg
cmV0dXJuIHt7IHN0YXRlQ2hhbmdlLCBzdHJva2VQYXR0ZXJuLCBmaWxsUGF0dGVybiB9fTsKKyAg
ICByZXR1cm4geyB7IHN0YXRlQ2hhbmdlIH0gfTsKIH0KIAogY2xhc3MgU2V0TGluZUNhcCB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3RSZXBsYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5jcHAKaW5kZXggMjE4NjUwYWY1OGE0
YTdiY2YyYzE0MTBmZjBlZjAwNTA2ODFiNmVlZC4uNmYyMmIyYzg3MTQyMGRmMGI2OTU2MzQzZmIw
MTk5MzYzNTI4ZDkzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmNw
cApAQCAtODMsMzQgKzgzLDM3IEBAIGlubGluZSBzdGF0aWMgc3RkOjpvcHRpb25hbDxSZW5kZXJp
bmdSZXNvdXJjZUlkZW50aWZpZXI+IGFwcGx5TmF0aXZlSW1hZ2VJdGVtKEdyCiAKIGlubGluZSBz
dGF0aWMgc3RkOjpvcHRpb25hbDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+IGFwcGx5U2V0
U3RhdGVJdGVtKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgUmVzb3VyY2VIZWFwJiBy
ZXNvdXJjZUhlYXAsIEl0ZW1IYW5kbGUgaXRlbSwgUmVwbGF5ZXI6OkRlbGVnYXRlKiBkZWxlZ2F0
ZSkKIHsKKyAgICBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgc3Ryb2tlUGF0dGVybkltYWdl
SWRlbnRpZmllcjsKKyAgICBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgZmlsbFBhdHRlcm5J
bWFnZUlkZW50aWZpZXI7CiAgICAgYXV0byYgc2V0U3RhdGVJdGVtID0gaXRlbS5nZXQ8U2V0U3Rh
dGU+KCk7CiAKLSAgICBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgc3Ryb2tlUGF0dGVyblJl
bmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcjsKLSAgICBOYXRpdmVJbWFnZSogc3Ryb2tlUGF0dGVy
bkltYWdlID0gbnVsbHB0cjsKLSAgICBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgZmlsbFBh
dHRlcm5SZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI7Ci0gICAgTmF0aXZlSW1hZ2UqIGZpbGxQ
YXR0ZXJuSW1hZ2UgPSBudWxscHRyOwotCi0gICAgaWYgKChzdHJva2VQYXR0ZXJuUmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyID0gc2V0U3RhdGVJdGVtLnN0cm9rZVBhdHRlcm5JbWFnZUlkZW50
aWZpZXIoKSkpIHsKLSAgICAgICAgc3Ryb2tlUGF0dGVybkltYWdlID0gcmVzb3VyY2VIZWFwLmdl
dE5hdGl2ZUltYWdlKHN0cm9rZVBhdHRlcm5SZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwor
ICAgIGlmIChhdXRvJiBzdHJva2VQYXR0ZXJuID0gc2V0U3RhdGVJdGVtLnN0YXRlQ2hhbmdlKCku
bV9zdGF0ZS5zdHJva2VQYXR0ZXJuKSB7CisgICAgICAgIHN0cm9rZVBhdHRlcm5JbWFnZUlkZW50
aWZpZXIgPSBzdHJva2VQYXR0ZXJuLT50aWxlSW1hZ2UoKS5pbWFnZUlkZW50aWZpZXIoKTsKKyAg
ICAgICAgYXV0byBzdHJva2VQYXR0ZXJuSW1hZ2UgPSByZXNvdXJjZUhlYXAuZ2V0U291cmNlSW1h
Z2Uoc3Ryb2tlUGF0dGVybkltYWdlSWRlbnRpZmllcik7CiAgICAgICAgIGlmICghc3Ryb2tlUGF0
dGVybkltYWdlKQotICAgICAgICAgICAgcmV0dXJuIHN0cm9rZVBhdHRlcm5SZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXI7CisgICAgICAgICAgICByZXR1cm4gc3Ryb2tlUGF0dGVybkltYWdlSWRl
bnRpZmllcjsKKworICAgICAgICBzdHJva2VQYXR0ZXJuLT5zZXRUaWxlSW1hZ2UoV1RGTW92ZSgq
c3Ryb2tlUGF0dGVybkltYWdlKSk7CiAgICAgfQogCi0gICAgaWYgKChmaWxsUGF0dGVyblJlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllciA9IHNldFN0YXRlSXRlbS5maWxsUGF0dGVybkltYWdlSWRl
bnRpZmllcigpKSkgewotICAgICAgICBmaWxsUGF0dGVybkltYWdlID0gcmVzb3VyY2VIZWFwLmdl
dE5hdGl2ZUltYWdlKGZpbGxQYXR0ZXJuUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKKyAg
ICBpZiAoYXV0byYgZmlsbFBhdHRlcm4gPSBzZXRTdGF0ZUl0ZW0uc3RhdGVDaGFuZ2UoKS5tX3N0
YXRlLmZpbGxQYXR0ZXJuKSB7CisgICAgICAgIGZpbGxQYXR0ZXJuSW1hZ2VJZGVudGlmaWVyID0g
ZmlsbFBhdHRlcm4tPnRpbGVJbWFnZSgpLmltYWdlSWRlbnRpZmllcigpOworICAgICAgICBhdXRv
IGZpbGxQYXR0ZXJuSW1hZ2UgPSByZXNvdXJjZUhlYXAuZ2V0U291cmNlSW1hZ2UoZmlsbFBhdHRl
cm5JbWFnZUlkZW50aWZpZXIpOwogICAgICAgICBpZiAoIWZpbGxQYXR0ZXJuSW1hZ2UpCi0gICAg
ICAgICAgICByZXR1cm4gZmlsbFBhdHRlcm5SZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI7Cisg
ICAgICAgICAgICByZXR1cm4gZmlsbFBhdHRlcm5JbWFnZUlkZW50aWZpZXI7CisKKyAgICAgICAg
ZmlsbFBhdHRlcm4tPnNldFRpbGVJbWFnZShXVEZNb3ZlKCpmaWxsUGF0dGVybkltYWdlKSk7CiAg
ICAgfQogCi0gICAgc2V0U3RhdGVJdGVtLmFwcGx5KGNvbnRleHQsIHN0cm9rZVBhdHRlcm5JbWFn
ZSwgZmlsbFBhdHRlcm5JbWFnZSk7CisgICAgc2V0U3RhdGVJdGVtLmFwcGx5KGNvbnRleHQpOwog
CiAgICAgaWYgKCFkZWxlZ2F0ZSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAg
IGlmIChzdHJva2VQYXR0ZXJuUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQotICAgICAgICBk
ZWxlZ2F0ZS0+cmVjb3JkUmVzb3VyY2VVc2Uoc3Ryb2tlUGF0dGVyblJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllcik7Ci0gICAgaWYgKGZpbGxQYXR0ZXJuUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyKQotICAgICAgICBkZWxlZ2F0ZS0+cmVjb3JkUmVzb3VyY2VVc2UoZmlsbFBhdHRlcm5SZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOworICAgIGlmIChzdHJva2VQYXR0ZXJuSW1hZ2VJZGVu
dGlmaWVyKQorICAgICAgICBkZWxlZ2F0ZS0+cmVjb3JkUmVzb3VyY2VVc2Uoc3Ryb2tlUGF0dGVy
bkltYWdlSWRlbnRpZmllcik7CisgICAgaWYgKGZpbGxQYXR0ZXJuSW1hZ2VJZGVudGlmaWVyKQor
ICAgICAgICBkZWxlZ2F0ZS0+cmVjb3JkUmVzb3VyY2VVc2UoZmlsbFBhdHRlcm5JbWFnZUlkZW50
aWZpZXIpOwogICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlc291
cmNlSGVhcC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3Rz
L0Rpc3BsYXlMaXN0UmVzb3VyY2VIZWFwLmgKaW5kZXggYWZjMWQwZWUzOTI4OWNiZjJkZjI0M2M1
NjNlNmFiMGIxYTkwYzk4OS4uY2ZiYjZiZWRjY2VhZDBiZGZkNjI2OTMxMTQxODk1MWYwYWZkNDY0
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0Rpc3BsYXlMaXN0UmVzb3VyY2VIZWFwLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVzb3VyY2VIZWFwLmgKQEAgLTI5
LDYgKzI5LDcgQEAKICNpbmNsdWRlICJJbWFnZUJ1ZmZlci5oIgogI2luY2x1ZGUgIk5hdGl2ZUlt
YWdlLmgiCiAjaW5jbHVkZSAiUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLmgiCisjaW5jbHVk
ZSAiU291cmNlSW1hZ2UuaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0
Zi9SZWZDb3VudGVkLmg+CiAKQEAgLTQxLDYgKzQyLDcgQEAgcHVibGljOgogCiAgICAgdmlydHVh
bCBJbWFnZUJ1ZmZlciogZ2V0SW1hZ2VCdWZmZXIoUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
KSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBOYXRpdmVJbWFnZSogZ2V0TmF0aXZlSW1hZ2UoUmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBzdGQ6Om9w
dGlvbmFsPFNvdXJjZUltYWdlPiBnZXRTb3VyY2VJbWFnZShSZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXIpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIEZvbnQqIGdldEZvbnQoUmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyKSBjb25zdCA9IDA7CiB9OwogCkBAIC03MSw2ICs3MywyMCBAQCBwdWJs
aWM6CiAgICAgICAgIHJldHVybiBnZXQ8TmF0aXZlSW1hZ2U+KHJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllcik7CiAgICAgfQogCisgICAgc3RkOjpvcHRpb25hbDxTb3VyY2VJbWFnZT4gZ2V0U291
cmNlSW1hZ2UoUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllcikgY29uc3QgZmluYWwKKyAgICB7CisgICAgICAgIGlmICghcmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaWVyKQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgICAg
ICBpZiAoYXV0byBuYXRpdmVJbWFnZSA9IGdldE5hdGl2ZUltYWdlKHJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllcikpCisgICAgICAgICAgICByZXR1cm4geyB7ICpuYXRpdmVJbWFnZSB9IH07CisK
KyAgICAgICAgaWYgKGF1dG8gaW1hZ2VCdWZmZXIgPSBnZXRJbWFnZUJ1ZmZlcihyZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXIpKQorICAgICAgICAgICAgcmV0dXJuIHsgeyAqaW1hZ2VCdWZmZXIg
fSB9OworCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgfQorCiAgICAgRm9udCog
Z2V0Rm9udChSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyKSBjb25zdCBmaW5hbAogICAgIHsKICAgICAgICAgcmV0dXJuIGdldDxGb250PihyZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9zb2Z0d2FyZS9GRVRpbGVTb2Z0d2FyZUFwcGxpZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9zb2Z0d2FyZS9GRVRp
bGVTb2Z0d2FyZUFwcGxpZXIuY3BwCmluZGV4IGI3OTkxZjQ5NDkwNGU5YzNlNDUxYTRhMzRhNmYy
ODlkY2NmYTQzMWIuLjU1MmQxOTQ2ZjI4YmUwOTQ2Y2EwNDZlMDZmZDdlM2E4YzlmZmZlYzAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc29mdHdh
cmUvRkVUaWxlU29mdHdhcmVBcHBsaWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL3NvZnR3YXJlL0ZFVGlsZVNvZnR3YXJlQXBwbGllci5jcHAKQEAg
LTU3LDE0ICs1NywxMCBAQCBib29sIEZFVGlsZVNvZnR3YXJlQXBwbGllcjo6YXBwbHkoY29uc3Qg
RmlsdGVyJiBmaWx0ZXIsIGNvbnN0IEZpbHRlckltYWdlVmVjdG9yJgogICAgIHRpbGVJbWFnZUNv
bnRleHQudHJhbnNsYXRlKC10aWxlUmVjdC5sb2NhdGlvbigpKTsKICAgICB0aWxlSW1hZ2VDb250
ZXh0LmRyYXdJbWFnZUJ1ZmZlcigqaW5wdXRJbWFnZSwgaW5wdXRJbWFnZVJlY3QubG9jYXRpb24o
KSk7CiAKLSAgICBhdXRvIHBhdHRlcm5JbWFnZSA9IEltYWdlQnVmZmVyOjpzaW5rSW50b05hdGl2
ZUltYWdlKFdURk1vdmUodGlsZUltYWdlKSk7Ci0gICAgaWYgKCFwYXR0ZXJuSW1hZ2UpCi0gICAg
ICAgIHJldHVybiBmYWxzZTsKLQogICAgIEFmZmluZVRyYW5zZm9ybSBwYXR0ZXJuVHJhbnNmb3Jt
OwogICAgIHBhdHRlcm5UcmFuc2Zvcm0udHJhbnNsYXRlKHRpbGVSZWN0LmxvY2F0aW9uKCkgLSBt
YXhSZXN1bHRSZWN0LmxvY2F0aW9uKCkpOwogCi0gICAgYXV0byBwYXR0ZXJuID0gUGF0dGVybjo6
Y3JlYXRlKHBhdHRlcm5JbWFnZS5yZWxlYXNlTm9uTnVsbCgpLCB7IHRydWUsIHRydWUsIHBhdHRl
cm5UcmFuc2Zvcm0gfSk7CisgICAgYXV0byBwYXR0ZXJuID0gUGF0dGVybjo6Y3JlYXRlKHsgdGls
ZUltYWdlLnJlbGVhc2VOb25OdWxsKCkgfSwgeyB0cnVlLCB0cnVlLCBwYXR0ZXJuVHJhbnNmb3Jt
IH0pOwogCiAgICAgYXV0byYgcmVzdWx0Q29udGV4dCA9IHJlc3VsdEltYWdlLT5jb250ZXh0KCk7
CiAgICAgcmVzdWx0Q29udGV4dC5zZXRGaWxsUGF0dGVybihXVEZNb3ZlKHBhdHRlcm4pKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAKaW5kZXgg
Y2ZiNDIwNjNkM2IzZmEyOTE3NzZmNjUxYTFhODBjOWFmOWFhZGY2Yi4uNGVmY2ZhYjU1NTdiNTUz
M2JlZTk1Yzk0MjgyNjEyYTE3NWY2NTMzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAKQEAgLTMzMzUsMTMgKzMzMzUsMTEgQEAgc3RhdGlj
IFJlZlB0cjxQYXR0ZXJuPiBwYXR0ZXJuRm9yRGVzY3JpcHRpb24oUGF0dGVybkRlc2NyaXB0aW9u
IGRlc2NyaXB0aW9uLCBGbG8KICAgICAgICAgaW1hZ2VDb250ZXh0LmRyYXdUZXh0KGZvbnQsIHRl
eHRSdW4sIHsgdGV4dEdhcCwgeU9mZnNldCB9LCAwKTsKICAgICB9CiAKLSAgICBhdXRvIHRpbGVJ
bWFnZSA9IEltYWdlQnVmZmVyOjpzaW5rSW50b05hdGl2ZUltYWdlKFdURk1vdmUoaW1hZ2VCdWZm
ZXIpKTsKLQogICAgIEFmZmluZVRyYW5zZm9ybSBwYXR0ZXJuT2Zmc2V0VHJhbnNmb3JtOwogICAg
IHBhdHRlcm5PZmZzZXRUcmFuc2Zvcm0udHJhbnNsYXRlKGNvbnRlbnRPZmZzZXQgKyBkZXNjcmlw
dGlvbi5waGFzZSk7CiAgICAgcGF0dGVybk9mZnNldFRyYW5zZm9ybS5zY2FsZSgxIC8gZGVzdENv
bnRleHQuc2NhbGVGYWN0b3IoKSk7CiAKLSAgICByZXR1cm4gUGF0dGVybjo6Y3JlYXRlKHRpbGVJ
bWFnZS5yZWxlYXNlTm9uTnVsbCgpLCB7IHRydWUsIHRydWUsIHBhdHRlcm5PZmZzZXRUcmFuc2Zv
cm19KTsKKyAgICByZXR1cm4gUGF0dGVybjo6Y3JlYXRlKHsgaW1hZ2VCdWZmZXIucmVsZWFzZU5v
bk51bGwoKSB9LCB7IHRydWUsIHRydWUsIHBhdHRlcm5PZmZzZXRUcmFuc2Zvcm0gfSk7CiB9Owog
I2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHUmVzb3VyY2VQYXR0ZXJuLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuLmNwcAppbmRleCBiMTI2OGI4MzU3MDU1YTBhYzA2ODM0ZDEx
OWNhN2E2MjZhNGZmNjk2Li5lOGI1MWNmYjkzOTQ5MjYzODFlZjNiMDRhM2UxN2E1ZmQxNWMwODZi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291
cmNlUGF0dGVybi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdSZXNvdXJjZVBhdHRlcm4uY3BwCkBAIC0xMTMsMTAgKzExMyw2IEBAIFBhdHRlcm5EYXRhKiBS
ZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm46OmJ1aWxkUGF0dGVybihSZW5kZXJFbGVtZW50JiByZW5k
ZXJlciwgT3B0CiAKICAgICBhdXRvIHRpbGVJbWFnZVNpemUgPSB0aWxlSW1hZ2UtPmxvZ2ljYWxT
aXplKCk7CiAKLSAgICBhdXRvIGNvcGllZEltYWdlID0gSW1hZ2VCdWZmZXI6OnNpbmtJbnRvTmF0
aXZlSW1hZ2UoV1RGTW92ZSh0aWxlSW1hZ2UpKTsKLSAgICBpZiAoIWNvcGllZEltYWdlKQotICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKLQogICAgIC8vIENvbXB1dGUgcGF0dGVybiBzcGFjZSB0cmFu
c2Zvcm1hdGlvbi4KICAgICBhdXRvIHBhdHRlcm5EYXRhID0gbWFrZVVuaXF1ZTxQYXR0ZXJuRGF0
YT4oKTsKICAgICBwYXR0ZXJuRGF0YS0+dHJhbnNmb3JtLnRyYW5zbGF0ZSh0aWxlQm91bmRhcmll
cy5sb2NhdGlvbigpKTsKQEAgLTEzNCw3ICsxMzAsNyBAQCBQYXR0ZXJuRGF0YSogUmVuZGVyU1ZH
UmVzb3VyY2VQYXR0ZXJuOjpidWlsZFBhdHRlcm4oUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIE9w
dAogICAgIH0KIAogICAgIC8vIEJ1aWxkIHBhdHRlcm4uCi0gICAgcGF0dGVybkRhdGEtPnBhdHRl
cm4gPSBQYXR0ZXJuOjpjcmVhdGUoY29waWVkSW1hZ2UucmVsZWFzZU5vbk51bGwoKSwgeyB0cnVl
LCB0cnVlLCBwYXR0ZXJuRGF0YS0+dHJhbnNmb3JtIH0pOworICAgIHBhdHRlcm5EYXRhLT5wYXR0
ZXJuID0gUGF0dGVybjo6Y3JlYXRlKHsgdGlsZUltYWdlLnJlbGVhc2VOb25OdWxsKCkgfSwgeyB0
cnVlLCB0cnVlLCBwYXR0ZXJuRGF0YS0+dHJhbnNmb3JtIH0pOwogCiAgICAgLy8gVmFyaW91cyBj
YWxscyBhYm92ZSBtYXkgdHJpZ2dlciBpbnZhbGlkYXRpb25zIGluIHNvbWUgZnJpbmdlIGNhc2Vz
IChJbWFnZUJ1ZmZlciBhbGxvY2F0aW9uCiAgICAgLy8gZmFpbHVyZXMgaW4gdGhlIFNWRyBpbWFn
ZSBjYWNoZSBmb3IgZXhhbXBsZSkuIFRvIGF2b2lkIGhhdmluZyBvdXIgUGF0dGVybkRhdGEgZGVs
ZXRlZCBieQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1F1
YWxpZmllZFJlc291cmNlSGVhcC5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNz
L1F1YWxpZmllZFJlc291cmNlSGVhcC5oCmluZGV4IDliZDc2ODM5YzI5MDc0NDIyMmIzMWM3ZTQy
Yzg5YmI5MTI4ZDRjZjcuLjU5ZDIyNTU3YzJmOGRkMzFjMmUzMmNmNjI3OWZjZTFiYTUxMmZlMDAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9RdWFsaWZpZWRS
ZXNvdXJjZUhlYXAuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUXVh
bGlmaWVkUmVzb3VyY2VIZWFwLmgKQEAgLTY5LDYgKzY5LDExIEBAIHB1YmxpYzoKICAgICAgICAg
cmV0dXJuIGdldDxXZWJDb3JlOjpOYXRpdmVJbWFnZT4oeyByZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXIsIG1fd2ViUHJvY2Vzc0lkZW50aWZpZXIgfSk7CiAgICAgfQogCisgICAgc3RkOjpvcHRp
b25hbDxXZWJDb3JlOjpTb3VyY2VJbWFnZT4gZ2V0U291cmNlSW1hZ2UoV2ViQ29yZTo6UmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikgY29uc3Qg
ZmluYWwKKyAgICB7CisgICAgICAgIHJldHVybiBnZXRTb3VyY2VJbWFnZSh7IHJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllciwgbV93ZWJQcm9jZXNzSWRlbnRpZmllciB9KTsKKyAgICB9CisKICAg
ICBXZWJDb3JlOjpGb250KiBnZXRGb250KFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRp
ZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpIGNvbnN0IGZpbmFsCiAgICAgewogICAg
ICAgICByZXR1cm4gZ2V0PFdlYkNvcmU6OkZvbnQ+KHsgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyLCBtX3dlYlByb2Nlc3NJZGVudGlmaWVyIH0pOwpAQCAtODMsNiArODgsMjAgQEAgcHVibGlj
OgogICAgIHsKICAgICAgICAgcmV0dXJuIGdldDxXZWJDb3JlOjpOYXRpdmVJbWFnZT4ocmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKICAgICB9CisgICAgCisgICAgc3RkOjpvcHRpb25hbDxX
ZWJDb3JlOjpTb3VyY2VJbWFnZT4gZ2V0U291cmNlSW1hZ2UoUXVhbGlmaWVkUmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikgY29uc3QKKyAgICB7
CisgICAgICAgIGlmICghcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQorICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgICAgICBpZiAoYXV0byBuYXRpdmVJbWFnZSA9IGdl
dE5hdGl2ZUltYWdlKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikpCisgICAgICAgICAgICBy
ZXR1cm4geyB7ICpuYXRpdmVJbWFnZSB9IH07CisKKyAgICAgICAgaWYgKGF1dG8gaW1hZ2VCdWZm
ZXIgPSBnZXRJbWFnZUJ1ZmZlcihyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpKQorICAgICAg
ICAgICAgcmV0dXJuIHsgeyAqaW1hZ2VCdWZmZXIgfSB9OworCisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CisgICAgfQogCiAgICAgV2ViQ29yZTo6Rm9udCogZ2V0Rm9udChRdWFsaWZpZWRS
ZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKSBj
b25zdAogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGlj
cy9SZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9ncmFwaGljcy9SZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyLmNwcAppbmRleCA5NGYwNGE0NzAz
NjQ0YzY0NTVjNmRlMTQ3YWM2YmYzMTdiMDBhYjUyLi40YTI4YmQ0NmZhMTc3MDUzZTU3YzMxMjVm
MWVlYWQxMGZjZWQ2NWU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3Jh
cGhpY3MvUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCkBAIC0xMTYs
MjQgKzExNiwyNSBAQCB2b2lkIFJlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXI6OnNldFN0cm9rZVRo
aWNrbmVzcyhmbG9hdCB0aGlja25lc3MpCiAKIHZvaWQgUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRl
cjo6c2V0U3RhdGUoRGlzcGxheUxpc3Q6OlNldFN0YXRlJiYgaXRlbSkKIHsKLSAgICAvLyBJbW1l
ZGlhdGVseSB0dXJuIHRoZSBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgKHdoaWNoIGlzIGVy
cm9yLXByb25lKSB0byBhIFF1YWxpZmllZFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwKLSAg
ICAvLyBhbmQgdXNlIGEgaGVscGVyIGZ1bmN0aW9uIHRvIG1ha2Ugc3VyZSB0aGF0IGRvbid0IGFj
Y2lkZW50YWxseSB1c2UgdGhlIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciAoYmVjYXVzZSB0
aGUgaGVscGVyIGZ1bmN0aW9uIGNhbid0IHNlZSBpdCkuCi0gICAgYXV0byBzdHJva2VQYXR0ZXJu
SW1hZ2VJZGVudGlmaWVyID0gaXRlbS5zdHJva2VQYXR0ZXJuSW1hZ2VJZGVudGlmaWVyKCk7Ci0g
ICAgYXV0byBmaWxsUGF0dGVybkltYWdlSWRlbnRpZmllciA9IGl0ZW0uZmlsbFBhdHRlcm5JbWFn
ZUlkZW50aWZpZXIoKTsKLSAgICBzZXRTdGF0ZVdpdGhRdWFsaWZpZWRJZGVudGlmaWVycyhXVEZN
b3ZlKGl0ZW0pLCB7IHN0cm9rZVBhdHRlcm5JbWFnZUlkZW50aWZpZXIsIG1fd2ViUHJvY2Vzc0lk
ZW50aWZpZXIgfSwgeyBmaWxsUGF0dGVybkltYWdlSWRlbnRpZmllciwgbV93ZWJQcm9jZXNzSWRl
bnRpZmllciB9KTsKLX0KKyAgICBhdXRvIGZpeFBhdHRlcm5UaWxlSW1hZ2UgPSBbJl0oUGF0dGVy
biogcGF0dGVybikgLT4gYm9vbCB7CisgICAgICAgIGlmICghcGF0dGVybikKKyAgICAgICAgICAg
IHJldHVybiB0cnVlOworICAgICAgICBhdXRvIHNvdXJjZUltYWdlID0gcmVzb3VyY2VDYWNoZSgp
LmNhY2hlZFNvdXJjZUltYWdlKHsgcGF0dGVybi0+dGlsZUltYWdlKCkuaW1hZ2VJZGVudGlmaWVy
KCksIG1fd2ViUHJvY2Vzc0lkZW50aWZpZXIgfSk7CisgICAgICAgIGlmICghc291cmNlSW1hZ2Up
IHsKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgICAgICB9CisgICAgICAgIHBhdHRlcm4tPnNldFRpbGVJbWFnZShXVEZNb3Zl
KCpzb3VyY2VJbWFnZSkpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9OwogCi12b2lkIFJl
bW90ZURpc3BsYXlMaXN0UmVjb3JkZXI6OnNldFN0YXRlV2l0aFF1YWxpZmllZElkZW50aWZpZXJz
KERpc3BsYXlMaXN0OjpTZXRTdGF0ZSYmIGl0ZW0sIFF1YWxpZmllZFJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllciBzdHJva2VQYXR0ZXJuSW1hZ2VJZGVudGlmaWVyLCBRdWFsaWZpZWRSZW5kZXJp
bmdSZXNvdXJjZUlkZW50aWZpZXIgZmlsbFBhdHRlcm5JbWFnZUlkZW50aWZpZXIpCi17Ci0gICAg
UmVmUHRyPE5hdGl2ZUltYWdlPiBzdHJva2VQYXR0ZXJuSW1hZ2U7Ci0gICAgaWYgKHN0cm9rZVBh
dHRlcm5JbWFnZUlkZW50aWZpZXIpCi0gICAgICAgIHN0cm9rZVBhdHRlcm5JbWFnZSA9IHJlc291
cmNlQ2FjaGUoKS5jYWNoZWROYXRpdmVJbWFnZShzdHJva2VQYXR0ZXJuSW1hZ2VJZGVudGlmaWVy
KTsKKyAgICBpZiAoIWZpeFBhdHRlcm5UaWxlSW1hZ2UoaXRlbS5zdGF0ZUNoYW5nZSgpLm1fc3Rh
dGUuc3Ryb2tlUGF0dGVybi5nZXQoKSkpCisgICAgICAgIHJldHVybjsKIAotICAgIFJlZlB0cjxO
YXRpdmVJbWFnZT4gZmlsbFBhdHRlcm5JbWFnZTsKLSAgICBpZiAoZmlsbFBhdHRlcm5JbWFnZUlk
ZW50aWZpZXIpCi0gICAgICAgIGZpbGxQYXR0ZXJuSW1hZ2UgPSByZXNvdXJjZUNhY2hlKCkuY2Fj
aGVkTmF0aXZlSW1hZ2UoZmlsbFBhdHRlcm5JbWFnZUlkZW50aWZpZXIpOworICAgIGlmICghZml4
UGF0dGVyblRpbGVJbWFnZShpdGVtLnN0YXRlQ2hhbmdlKCkubV9zdGF0ZS5maWxsUGF0dGVybi5n
ZXQoKSkpCisgICAgICAgIHJldHVybjsKIAotICAgIGhhbmRsZUl0ZW0oV1RGTW92ZShpdGVtKSwg
c3Ryb2tlUGF0dGVybkltYWdlLmdldCgpLCBmaWxsUGF0dGVybkltYWdlLmdldCgpKTsKKyAgICBo
YW5kbGVJdGVtKFdURk1vdmUoaXRlbSkpOwogfQogCiB2b2lkIFJlbW90ZURpc3BsYXlMaXN0UmVj
b3JkZXI6OnNldExpbmVDYXAoTGluZUNhcCBsaW5lQ2FwKQpAQCAtMjMyLDIxICsyMzMsMTMgQEAg
dm9pZCBSZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyOjpkcmF3RmlsdGVyZWRJbWFnZUJ1ZmZlcihz
dGQ6Om9wdGlvbmFsPFJlbmRlcmluZ1IKICAgICBmb3IgKGF1dG8mIGVmZmVjdCA6IGZpbHRlci0+
ZWZmZWN0c09mVHlwZShGaWx0ZXJFZmZlY3Q6OlR5cGU6OkZFSW1hZ2UpKSB7CiAgICAgICAgIGF1
dG8mIGZlSW1hZ2UgPSBkb3duY2FzdDxGRUltYWdlPihlZmZlY3QuZ2V0KCkpOwogCi0gICAgICAg
IGF1dG8gaW1hZ2VJZGVudGlmaWVyID0gZmVJbWFnZS5zb3VyY2VJbWFnZSgpLmltYWdlSWRlbnRp
ZmllcigpOwotICAgICAgICBpZiAoIWltYWdlSWRlbnRpZmllcikgeworICAgICAgICBhdXRvIHNv
dXJjZUltYWdlID0gcmVzb3VyY2VDYWNoZSgpLmNhY2hlZFNvdXJjZUltYWdlKHsgZmVJbWFnZS5z
b3VyY2VJbWFnZSgpLmltYWdlSWRlbnRpZmllcigpLCBtX3dlYlByb2Nlc3NJZGVudGlmaWVyIH0p
OworICAgICAgICBpZiAoIXNvdXJjZUltYWdlKSB7CiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIGlmIChh
dXRvIG5hdGl2ZUltYWdlID0gcmVzb3VyY2VDYWNoZSgpLmNhY2hlZE5hdGl2ZUltYWdlKHsgaW1h
Z2VJZGVudGlmaWVyLCBtX3dlYlByb2Nlc3NJZGVudGlmaWVyIH0pKSB7Ci0gICAgICAgICAgICBm
ZUltYWdlLnNldEltYWdlU291cmNlKHsgKm5hdGl2ZUltYWdlIH0pOwotICAgICAgICAgICAgY29u
dGludWU7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoYXV0byBpbWFnZUJ1ZmZlciA9IHJlc291
cmNlQ2FjaGUoKS5jYWNoZWRJbWFnZUJ1ZmZlcih7IGltYWdlSWRlbnRpZmllciwgbV93ZWJQcm9j
ZXNzSWRlbnRpZmllciB9KSkgewotICAgICAgICAgICAgZmVJbWFnZS5zZXRJbWFnZVNvdXJjZSh7
ICppbWFnZUJ1ZmZlciB9KTsKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9CisgICAg
ICAgIGZlSW1hZ2Uuc2V0SW1hZ2VTb3VyY2UoV1RGTW92ZSgqc291cmNlSW1hZ2UpKTsKICAgICB9
CiAKICAgICBGaWx0ZXJSZXN1bHRzIHJlc3VsdHM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZS5jcHAKaW5kZXggODhk
YmNhZjQzZTVjMzg3Y2Q5MWEyYjllMTg2Mzk4NzQzMzZkMDUwMy4uMDFmM2QxMzhlMzE4ODI1YWE2
NTM5ZDRjYWI3YTViODllOWY4ZmRiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlLmNwcApAQCAtNTgsNiArNTgs
MTEgQEAgTmF0aXZlSW1hZ2UqIFJlbW90ZVJlc291cmNlQ2FjaGU6OmNhY2hlZE5hdGl2ZUltYWdl
KFF1YWxpZmllZFJlbmRlcmluZ1Jlc291cmNlSWQKICAgICByZXR1cm4gbV9yZXNvdXJjZUhlYXAu
Z2V0TmF0aXZlSW1hZ2UocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKIH0KIAorc3RkOjpv
cHRpb25hbDxXZWJDb3JlOjpTb3VyY2VJbWFnZT4gUmVtb3RlUmVzb3VyY2VDYWNoZTo6Y2FjaGVk
U291cmNlSW1hZ2UoUXVhbGlmaWVkUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllcikgY29uc3QKK3sKKyAgICByZXR1cm4gbV9yZXNvdXJjZUhlYXAu
Z2V0U291cmNlSW1hZ2UocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKK30KKwogdm9pZCBS
ZW1vdGVSZXNvdXJjZUNhY2hlOjpjYWNoZUZvbnQoUmVmPEZvbnQ+JiYgZm9udCwgUXVhbGlmaWVk
UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikK
IHsKICAgICBBU1NFUlQocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLm9iamVjdCgpID09IGZv
bnQtPnJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlLmggYi9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZS5oCmluZGV4IGYy
ZjIzNWMyZTc1YTViZmI2ODZlODIyMDE5MDcyYmEyM2U5OTA2NmUuLjViZmQ0ZjI4ODA2NWM2NTA2
NDY4OTkwNmJlMjgyMDgwMmY0MDA4NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlLmgKKysrIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGUuaApAQCAtNDgsNiArNDgsNyBA
QCBwdWJsaWM6CiAgICAgV2ViQ29yZTo6SW1hZ2VCdWZmZXIqIGNhY2hlZEltYWdlQnVmZmVyKFF1
YWxpZmllZFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikgY29uc3Q7CiAgICAgdm9pZCBjYWNo
ZU5hdGl2ZUltYWdlKFJlZjxXZWJDb3JlOjpOYXRpdmVJbWFnZT4mJiwgUXVhbGlmaWVkUmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKICAgICBXZWJDb3JlOjpOYXRpdmVJbWFnZSogY2FjaGVk
TmF0aXZlSW1hZ2UoUXVhbGlmaWVkUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKSBjb25zdDsK
KyAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNvdXJjZUltYWdlPiBjYWNoZWRTb3VyY2VJbWFn
ZShRdWFsaWZpZWRSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpIGNvbnN0OwogICAgIHZvaWQg
Y2FjaGVGb250KFJlZjxXZWJDb3JlOjpGb250PiYmLCBRdWFsaWZpZWRSZW5kZXJpbmdSZXNvdXJj
ZUlkZW50aWZpZXIpOwogICAgIFdlYkNvcmU6OkZvbnQqIGNhY2hlZEZvbnQoUXVhbGlmaWVkUmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKSBjb25zdDsKICAgICB2b2lkIGRlbGV0ZUFsbEZvbnRz
KCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKaW5kZXggMzc5ODJiOWVjZWMyN2E0MTVhMmM5MjcwOTU3NjEyZTYxZWRhM2NiNS4uM2I1
MjczNjM3NzNjZmY1YTQ2ZmZmYmQwM2RhYTA1NjE2MDQxMDY1MiAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1
IEBACisyMDIyLTAxLTMxICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgorCisg
ICAgICAgIFtHUFUgUHJvY2Vzc10gUGF0dGVybiBzaG91bGQgaG9sZCBTb3VyY2VJbWFnZSB3aGlj
aCBjYW4gYmUgY29udmVydGVkIHRvIGEgTmF0aXZlSW1hZ2Ugb25seSB3aGVuIG5lZWRlZAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMyNDExCisgICAg
ICAgIDxyZGFyOi8vcHJvYmxlbS84NDk5ODczOD4KKworICAgICAgICBSZXZpZXdlZCBieSBEYXJp
biBBZGxlci4KKworICAgICAgICBVbnNraXAgbGF5b3V0IHRlc3RzIGZvciBncHUgcHJvY2VzcyBi
ZWNhdXNlIHRoZXkgYXJlIGZpeGVkIGJ5IHRoaXMgY2hhbmdlLgorCisgICAgICAgICogZ3B1LXBy
b2Nlc3MvVGVzdEV4cGVjdGF0aW9uczoKKwogMjAyMi0wMS0zMSAgUm9iZXJ0IEplbm5lciAgPEpl
bm5lckBhcHBsZS5jb20+CiAKICAgICAgICAgV2luZG93U2VydmVyIHJldHVybmVkIG5vdCBhbGl2
ZSB3aXRoIGNvbnRleHQ6LHVucmVzcG9uc2l2ZSB3b3JrIHByb2Nlc3NvcihzKQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZ3B1LXByb2Nlc3MvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3Rz
L2dwdS1wcm9jZXNzL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggNzA1ZWY4MGZhMjQ0N2U2Y2Q2NmMy
ZTM4OGJhYzRmZThiMDc2MzIwNy4uZjQwMGFkMTZiNjhkODJjMGU4NTg2NTY2NTA4YjJiOTlmZjE4
ZjQ0NyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZ3B1LXByb2Nlc3MvVGVzdEV4cGVjdGF0aW9u
cworKysgYi9MYXlvdXRUZXN0cy9ncHUtcHJvY2Vzcy9UZXN0RXhwZWN0YXRpb25zCkBAIC0yNDUs
OCArMjQ1LDYgQEAgaW1wb3J0ZWQvYmxpbmsvc3ZnL2FzLWltYWdlL3N2Zy1hcy1pbWFnZS1vYmpl
Y3QtZml0LWNvbnRhaW4uaHRtbAogaW1wb3J0ZWQvYmxpbmsvc3ZnL2FzLWltYWdlL3N2Zy1hcy1p
bWFnZS1vYmplY3QtZml0LWNvdmVyLmh0bWwKIGltcG9ydGVkL2JsaW5rL3N2Zy9hcy1pbWFnZS9z
dmd2aWV3LXJlZmVyZW5jZXMuaHRtbAogaW1wb3J0ZWQvYmxpbmsvc3ZnL2N1c3RvbS9maWxsLWZh
bGxiYWNrLWN1cnJlbnRjb2xvci0xLnN2ZwotaW1wb3J0ZWQvYmxpbmsvc3ZnL2N1c3RvbS90cmFu
c2Zvcm1lZC10ZXh0LXBhdHRlcm4uaHRtbCBbIENyYXNoIF0KLWltcG9ydGVkL2JsaW5rL3N2Zy9j
dXN0b20vdmlld3BvcnQtcmVzb3VyY2UtaW52YWwuc3ZnIFsgQ3Jhc2ggXQogaW1wb3J0ZWQvYmxp
bmsvc3ZnL3RleHQvb2JiLXBhaW50c2VydmVyLmh0bWwKIGltcG9ydGVkL21vemlsbGEvc3ZnL2Fz
LWltYWdlL2JhY2tncm91bmQtcmVzaXplLTMuaHRtbAogaW1wb3J0ZWQvbW96aWxsYS9zdmcvYXMt
aW1hZ2UvYmFja2dyb3VuZC1yZXNpemUtNC5odG1sCkBAIC0yNjEsMzkgKzI1OSwxOSBAQCBpbXBv
cnRlZC9tb3ppbGxhL3N2Zy9ibGVuZC1vdmVybGF5LnN2ZwogaW1wb3J0ZWQvbW96aWxsYS9zdmcv
YmxlbmQtc2F0dXJhdGlvbi5zdmcKIGltcG9ydGVkL21vemlsbGEvc3ZnL2NvbmRpdGlvbnMtMDgu
c3ZnIFsgQ3Jhc2ggXQogaW1wb3J0ZWQvbW96aWxsYS9zdmcvZHluYW1pYy1wYXR0ZXJuLTAxLnN2
ZyBbIENyYXNoIF0KLWltcG9ydGVkL21vemlsbGEvc3ZnL2R5bmFtaWMtcGF0dGVybi0wMi5zdmcg
WyBDcmFzaCBdCi1pbXBvcnRlZC9tb3ppbGxhL3N2Zy9keW5hbWljLXBhdHRlcm4tY29udGVudHMt
MDEuc3ZnIFsgQ3Jhc2ggXQotaW1wb3J0ZWQvbW96aWxsYS9zdmcvZHluYW1pYy1wYXR0ZXJuLWNv
bnRlbnRzLTAyLnN2ZyBbIENyYXNoIF0KIGltcG9ydGVkL21vemlsbGEvc3ZnL2ZpbHRlcnMvZmVD
b21wb3NpdGUtMi5zdmcKIGltcG9ydGVkL21vemlsbGEvc3ZnL2ZpbHRlcnMvZmVGbG9vZC0xLnN2
ZwogaW1wb3J0ZWQvbW96aWxsYS9zdmcvZmlsdGVycy9mZUZsb29kLTIuc3ZnCiBpbXBvcnRlZC9t
b3ppbGxhL3N2Zy9maWx0ZXJzL2ZlSW1hZ2UtMS5zdmcKIGltcG9ydGVkL21vemlsbGEvc3ZnL2xp
bmVhckdyYWRpZW50LWJhc2ljLTAzLnN2ZwogaW1wb3J0ZWQvbW96aWxsYS9zdmcvbWFzay10eXBl
LTAxLnN2ZwotaW1wb3J0ZWQvbW96aWxsYS9zdmcvb2JqZWN0Qm91bmRpbmdCb3gtYW5kLXBhdHRl
cm4tMDFhLnN2ZyBbIENyYXNoIF0KLWltcG9ydGVkL21vemlsbGEvc3ZnL29iamVjdEJvdW5kaW5n
Qm94LWFuZC1wYXR0ZXJuLTAxYi5zdmcgWyBDcmFzaCBdCi1pbXBvcnRlZC9tb3ppbGxhL3N2Zy9v
YmplY3RCb3VuZGluZ0JveC1hbmQtcGF0dGVybi0wMWMuc3ZnIFsgQ3Jhc2ggXQotaW1wb3J0ZWQv
bW96aWxsYS9zdmcvb2JqZWN0Qm91bmRpbmdCb3gtYW5kLXBhdHRlcm4tMDIuc3ZnIFsgQ3Jhc2gg
XQotaW1wb3J0ZWQvbW96aWxsYS9zdmcvb2JqZWN0Qm91bmRpbmdCb3gtYW5kLXBhdHRlcm4tMDMu
c3ZnIFsgQ3Jhc2ggXQogaW1wb3J0ZWQvbW96aWxsYS9zdmcvb3BhY2l0eS1hbmQtZ3JhZGllbnQt
MDIuc3ZnCiBpbXBvcnRlZC9tb3ppbGxhL3N2Zy9wYWludC1vcmRlci0wMS5zdmcKIGltcG9ydGVk
L21vemlsbGEvc3ZnL3BhdGgtMDIuc3ZnCi1pbXBvcnRlZC9tb3ppbGxhL3N2Zy9wYXR0ZXJuLWJh
c2ljLTAxLnN2ZyBbIENyYXNoIF0KLWltcG9ydGVkL21vemlsbGEvc3ZnL3BhdHRlcm4tbGl2ZS0w
MWEuc3ZnIFsgQ3Jhc2ggXQotaW1wb3J0ZWQvbW96aWxsYS9zdmcvcGF0dGVybi1saXZlLTAxYi5z
dmcgWyBDcmFzaCBdCi1pbXBvcnRlZC9tb3ppbGxhL3N2Zy9wYXR0ZXJuLXNjYWxlLTAxYS5zdmcg
WyBDcmFzaCBdCi1pbXBvcnRlZC9tb3ppbGxhL3N2Zy9wYXR0ZXJuLXNjYWxlLTAxYi5zdmcgWyBD
cmFzaCBdCi1pbXBvcnRlZC9tb3ppbGxhL3N2Zy9wYXR0ZXJuLXNjYWxlLTAxYy5zdmcgWyBDcmFz
aCBdCi1pbXBvcnRlZC9tb3ppbGxhL3N2Zy9wYXR0ZXJuLXRyYW5zZm9ybS1wcmVzZW5jZS0wMS5z
dmcgWyBDcmFzaCBdCiBpbXBvcnRlZC9tb3ppbGxhL3N2Zy9wYXR0ZXJuLXRyYW5zZm9ybWVkLTAx
LnN2ZwogaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC1ncmFkaWVudC0wMS5zdmcKIGltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQtc2NhbGUtMDIuc3ZnCi1pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
L21hc2stY29udGVudC0yLnN2ZyBbIENyYXNoIF0KIGltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
c2ltcGxlLWZpbGwtZ3JhZGllbnQuc3ZnCi1pbXBvcnRlZC9tb3ppbGxhL3N2Zy91c2VyU3BhY2VP
blVzZS1hbmQtcGF0dGVybi0wMS5zdmcgWyBDcmFzaCBdCi1pbXBvcnRlZC9tb3ppbGxhL3N2Zy92
aWV3Qm94LWFuZC1wYXR0ZXJuLTAxLnN2ZyBbIENyYXNoIF0KLWltcG9ydGVkL21vemlsbGEvc3Zn
L3ZpZXdCb3gtYW5kLXBhdHRlcm4tMDIuc3ZnIFsgQ3Jhc2ggXQotaW1wb3J0ZWQvbW96aWxsYS9z
dmcvdmlld0JveC1hbmQtcGF0dGVybi0wMy5zdmcgWyBDcmFzaCBdCiBpbXBvcnRlZC93M2MvaTE4
bi9iaWRpL2JpZGktcGxhaW50ZXh0LTAxMS5odG1sIFsgUGFzcyBdCiBpbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL2NvbXBhdC93ZWJraXQtYmFja2dyb3VuZC1vcmlnaW4tdGV4dC5odG1s
CiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbXBhdC93ZWJraXQtbGluZWFyLWdy
YWRpZW50LWxpbmUtYm90dG9tLmh0bWwKQEAgLTkxMCwyNCArODg4LDcgQEAgaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9tZWRpYWNhcHR1cmUtcmVjb3JkL01lZGlhUmVjb3JkZXItcGVl
cmNvbm5lY3Rpb24KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvbWltZXNuaWZmL21p
bWUtdHlwZXMvY2hhcnNldC1wYXJhbWV0ZXIud2luZG93Lmh0bWwKIGltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvc2VsZWN0aW9uL3NlbGVjdGlvbi1zZWxlY3QtYWxsLW1vdmUtaW5wdXQt
Y3Jhc2guaHRtbAogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zZXJ2aWNlLXdvcmtl
cnMvc2VydmljZS13b3JrZXIvZmV0Y2gtcmVxdWVzdC1yZWRpcmVjdC5odHRwcy5odG1sIFsgUGFz
cyBdCi1pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N2Zy9hbmltYXRpb25zL2FuaW1h
dGVUcmFuc2Zvcm0tcGF0dGVybi10cmFuc2Zvcm0uaHRtbCBbIENyYXNoIF0KLWltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvc3ZnL2FuaW1hdGlvbnMvc3ZnZW51bS1hbmltYXRpb24tMS5o
dG1sIFsgQ3Jhc2ggXQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdmcvZXh0ZW5z
aWJpbGl0eS9mb3JlaWduT2JqZWN0L21hc2tlZC5odG1sCi1pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3N2Zy9pbXBvcnQvY29vcmRzLXVuaXRzLTAxLWItbWFudWFsLnN2ZyBbIENyYXNo
IF0KLWltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3ZnL2ltcG9ydC9saW5raW5nLWEt
MTAtZi1tYW51YWwuc3ZnIFsgQ3Jhc2ggXQotaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9zdmcvaW1wb3J0L21hc2tpbmctcGF0aC0wNy1iLW1hbnVhbC5zdmcgWyBDcmFzaCBdCi1pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N2Zy9pbXBvcnQvcHNlcnZlcnMtZ3JhZC0wMy1i
LW1hbnVhbC5zdmcgWyBDcmFzaCBdCi1pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N2
Zy9pbXBvcnQvcHNlcnZlcnMtZ3JhZC0wNi1iLW1hbnVhbC5zdmcgWyBDcmFzaCBdCi1pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N2Zy9pbXBvcnQvcHNlcnZlcnMtcGF0dGVybi0wMS1i
LW1hbnVhbC5zdmcgWyBDcmFzaCBdCi1pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N2
Zy9pbXBvcnQvcHNlcnZlcnMtcGF0dGVybi0wMi1mLW1hbnVhbC5zdmcgWyBDcmFzaCBdCi1pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N2Zy9pbXBvcnQvcHNlcnZlcnMtcGF0dGVybi0w
NC1mLW1hbnVhbC5zdmcgWyBDcmFzaCBdCi1pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3N2Zy9pbXBvcnQvcHNlcnZlcnMtcGF0dGVybi0wNS1mLW1hbnVhbC5zdmcgWyBDcmFzaCBdCi1p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N2Zy9pbXBvcnQvcHNlcnZlcnMtcGF0dGVy
bi0wOC1mLW1hbnVhbC5zdmcgWyBDcmFzaCBdCi1pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3N2Zy9pbXBvcnQvcHNlcnZlcnMtcGF0dGVybi0wOS1mLW1hbnVhbC5zdmcgWyBDcmFzaCBd
Ci1pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N2Zy9saW5raW5nL3JlZnRlc3RzL2hy
ZWYtcGF0dGVybi1lbGVtZW50Lmh0bWwgWyBDcmFzaCBdCi1pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3N2Zy9wYWludGluZy9jdXJyZW50Q29sb3Itb3ZlcnJpZGUtcHNlcnZlci1zdHJv
a2Uuc3ZnIFsgQ3Jhc2ggXQotaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdmcvcHNl
cnZlcnMvcmVmdGVzdHMvcGF0dGVybi1pbmhlcml0YW5jZS1ub3QtaW4tcmVuZGVydHJlZS0wMi50
ZW50YXRpdmUuc3ZnIFsgQ3Jhc2ggXQotaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9z
dmcvcmVuZGVyL3JlZnRlc3RzL2ZpbHRlci1lZmZlY3RzLW9uLXBhdHRlcm4uaHRtbCBbIENyYXNo
IF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2ViLWFuaW1hdGlvbnMvdGltaW5n
LW1vZGVsL2FuaW1hdGlvbnMvdXBkYXRlLXBsYXliYWNrLXJhdGUtemVyby5odG1sIFsgUGFzcyBd
CiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYmF1ZGlvL3RoZS1hdWRpby1hcGkv
dGhlLWJpcXVhZGZpbHRlcm5vZGUtaW50ZXJmYWNlL25vLWRlemlwcGVyaW5nLmh0bWwKIGltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMveGhyL3Jlc3BvbnNlLW1ldGhvZC5odG0gWyBQYXNz
IF0KQEAgLTk1MiwyOCArOTEzLDExIEBAIHN2Zy9iYXRpay9wYWludHMvcGF0dGVyblByZXNlcnZl
QXNwZWN0UmF0aW9BLnN2ZyBbIENyYXNoIF0KIHN2Zy9iYXRpay9wYWludHMvcGF0dGVyblJlZ2lv
bkEuc3ZnIFsgQ3Jhc2ggXQogc3ZnL2JhdGlrL3BhaW50cy9wYXR0ZXJuUmVnaW9ucy1wb3NpdGlv
bmVkLW9iamVjdHMuc3ZnIFsgQ3Jhc2ggXQogc3ZnL2JhdGlrL3BhaW50cy9wYXR0ZXJuUmVnaW9u
cy5zdmcgWyBDcmFzaCBdCi1zdmcvYmF0aWsvdGV4dC90ZXh0RWZmZWN0Mi5zdmcgWyBDcmFzaCBd
CiBzdmcvY2xpcC1wYXRoL2NsaXAtcGF0aC1saW5lLXVzZS1iZWZvcmUtZGVmaW5lZC5zdmcgWyBQ
YXNzIF0KIHN2Zy9jbGlwLXBhdGgvd2Via2l0LWNsaXAtcGF0aC1hZnRlci5zdmcKIHN2Zy9jbGlw
LXBhdGgvd2Via2l0LWNsaXAtcGF0aC1iZWZvcmUuc3ZnCi1zdmcvY3VzdG9tL2hpZHBpLW1hc2tp
bmctY2xpcHBpbmcuc3ZnIFsgQ3Jhc2ggXQotc3ZnL2N1c3RvbS9ocmVmLXN2Zy1uYW1lc3BhY2Ut
c3RhdGljLnN2ZyBbIENyYXNoIF0KLXN2Zy9jdXN0b20vanMtbGF0ZS1wYXR0ZXJuLWNyZWF0aW9u
LnN2ZyBbIENyYXNoIF0KLXN2Zy9jdXN0b20vanMtdXBkYXRlLXBhdHRlcm4uc3ZnIFsgQ3Jhc2gg
XQotc3ZnL2N1c3RvbS9sYXJnZS1pbWFnZS1wYXR0ZXJuLWNyYXNoLmh0bWwgWyBDcmFzaCBdCi1z
dmcvY3VzdG9tL2xvY2FsLXVybC1yZWZlcmVuY2UtcGF0dGVybi5odG1sIFsgQ3Jhc2ggXQotc3Zn
L2N1c3RvbS9uZXctaW1hZ2UtaXMtaHRtbC1lbGVtZW50LnN2ZyBbIENyYXNoIF0KIHN2Zy9jdXN0
b20vc3VicGF0aHMtbW92ZXRvLW9ubHktcmVuZGVyaW5nLnN2ZyBbIFBhc3MgXQogc3ZnL2N1c3Rv
bS9zdmctZm9udHMtc2tpcC1pbmsuaHRtbAotc3ZnL2RvbS92aWV3cG9ydC1jb250YWluZXItY3Jh
c2guc3ZnIFsgQ3Jhc2ggXQotc3ZnL2R5bmFtaWMtdXBkYXRlcy9TVkdQYXR0ZXJuRWxlbWVudC1k
b20taGVpZ2h0LWF0dHIuaHRtbCBbIENyYXNoIF0KLXN2Zy9keW5hbWljLXVwZGF0ZXMvU1ZHUGF0
dGVybkVsZW1lbnQtZG9tLXBhdHRlcm5UcmFuc2Zvcm0tYXR0ci5odG1sIFsgQ3Jhc2ggXQotc3Zn
L2R5bmFtaWMtdXBkYXRlcy9TVkdQYXR0ZXJuRWxlbWVudC1kb20tcGF0dGVyblVuaXRzLWF0dHIu
aHRtbCBbIENyYXNoIF0KLXN2Zy9keW5hbWljLXVwZGF0ZXMvU1ZHUGF0dGVybkVsZW1lbnQtZG9t
LXdpZHRoLWF0dHIuaHRtbCBbIENyYXNoIF0KLXN2Zy9keW5hbWljLXVwZGF0ZXMvU1ZHUGF0dGVy
bkVsZW1lbnQtZG9tLXktYXR0ci5odG1sIFsgQ3Jhc2ggXQotc3ZnL2R5bmFtaWMtdXBkYXRlcy9T
VkdQYXR0ZXJuRWxlbWVudC1zdmdkb20tcGF0dGVybkNvbnRlbnRVbml0cy1wcm9wLmh0bWwgWyBD
cmFzaCBdCi1zdmcvZHluYW1pYy11cGRhdGVzL1NWR1BhdHRlcm5FbGVtZW50LXN2Z2RvbS13aWR0
aC1wcm9wLmh0bWwgWyBDcmFzaCBdCi1zdmcvZHluYW1pYy11cGRhdGVzL1NWR1BhdHRlcm5FbGVt
ZW50LXN2Z2RvbS15LXByb3AuaHRtbCBbIENyYXNoIF0KIHN2Zy9ncmFkaWVudHMvZ3JhZGllbnQt
ZmxpcHBlZC1zdGFydC1lbmQtcG9pbnRzLnN2Zwogc3ZnL2dyYWRpZW50cy9zcHJlYWRNZXRob2Qu
c3ZnCiBzdmcvZ3JhZGllbnRzL3NwcmVhZE1ldGhvZEFscGhhLnN2ZwpAQCAtOTg3LDExICs5MzEs
NiBAQCBzdmcvZ3JhZGllbnRzL3NwcmVhZE1ldGhvZFJldmVyc2VkLnN2Zwogc3ZnL2dyYWRpZW50
cy9zdG9wQWxwaGEuc3ZnCiBzdmcvdHJhbnNmb3Jtcy90cmFuc2Zvcm1lZC10ZXh0LWZpbGwtZ3Jh
ZGllbnQuaHRtbAogc3ZnL3RyYW5zZm9ybXMvdHJhbnNmb3JtZWQtdGV4dC1maWxsLXBhdHRlcm4u
aHRtbAotc3ZnL1czQy1TVkctMS4xLVNFL3N0cnVjdC1kb20tMTEtZi5zdmcgWyBDcmFzaCBdCi1z
dmcvVzNDLVNWRy0xLjEvY29vcmRzLXVuaXRzLTAxLWIuc3ZnIFsgQ3Jhc2ggXQotc3ZnL1czQy1T
VkctMS4xL3BzZXJ2ZXJzLWdyYWQtMDQtYi5zdmcgWyBDcmFzaCBdCi1zdmcvVzNDLVNWRy0xLjEv
cHNlcnZlcnMtZ3JhZC0wNy1iLnN2ZyBbIENyYXNoIF0KLXN2Zy9XM0MtU1ZHLTEuMS9yZW5kZXIt
ZWxlbXMtMDEtdC5zdmcgWyBDcmFzaCBdCiBzeXN0ZW0tcHJldmlldy9iYWRnZS5odG1sCiB3ZWJh
bmltYXRpb25zL29wYWNpdHktYW5pbWF0aW9uLmh0bWwKIHdlYmdsLzEuMC4zL2NvbmZvcm1hbmNl
L2NvbnRleHQvcHJlbXVsdGlwbHlhbHBoYS10ZXN0Lmh0bWwK
</data>
<flag name="commit-queue"
          id="476898"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
      

    </bug>

</bugzilla>