<?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>208621</bug_id>
          
          <creation_ts>2020-03-04 18:29:34 -0800</creation_ts>
          <short_desc>[GPU Process] Implement CanvasRenderingContext2D.putImageData()</short_desc>
          <delta_ts>2020-03-06 23:05:02 -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>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Myles C. Maxfield">mmaxfield</reporter>
          <assigned_to name="Myles C. Maxfield">mmaxfield</assigned_to>
          <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ddkilzer</cc>
    
    <cc>dino</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jonlee</cc>
    
    <cc>sabouhallawa</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1625896</commentid>
    <comment_count>0</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2020-03-04 18:29:34 -0800</bug_when>
    <thetext>[GPU Process] Implement CanvasRenderingContext2D.putImageData()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1625897</commentid>
    <comment_count>1</comment_count>
      <attachid>392525</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2020-03-04 18:30:04 -0800</bug_when>
    <thetext>Created attachment 392525
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1625903</commentid>
    <comment_count>2</comment_count>
      <attachid>392528</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2020-03-04 18:48:57 -0800</bug_when>
    <thetext>Created attachment 392528
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1625905</commentid>
    <comment_count>3</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-03-04 18:49:36 -0800</bug_when>
    <thetext>&lt;rdar://problem/60068047&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1625921</commentid>
    <comment_count>4</comment_count>
      <attachid>392531</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2020-03-04 19:43:53 -0800</bug_when>
    <thetext>Created attachment 392531
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1625963</commentid>
    <comment_count>5</comment_count>
      <attachid>392540</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2020-03-04 23:42:16 -0800</bug_when>
    <thetext>Created attachment 392540
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1626089</commentid>
    <comment_count>6</comment_count>
      <attachid>392540</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2020-03-05 08:46:46 -0800</bug_when>
    <thetext>Comment on attachment 392540
Patch

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

&gt; Source/WebCore/platform/graphics/displaylists/DisplayListImageBuffer.h:68
&gt; +        m_drawingContext.displayList().append(PutImageData::create(inputFormat, imageData, srcRect, destPoint));

The other display list items are appended via the display list recorder, which calls into Recorder::willAppendItem(). We should probably double check that it’s okay to bypass that mechanism when appending PutImageData.

&gt; Source/WebCore/platform/graphics/displaylists/DisplayListItems.cpp:1171
&gt; +    ASSERT(imageData.data());

Nit - I don’t think you need this assertion, given that we would’ve dereferenced `imageData.data()` above already when creating m_data.

&gt; Source/WebCore/platform/graphics/displaylists/DisplayListItems.h:2538
&gt; +

Nit - extra newline.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1626094</commentid>
    <comment_count>7</comment_count>
      <attachid>392540</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-03-05 08:50:37 -0800</bug_when>
    <thetext>Comment on attachment 392540
Patch

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

&gt; Source/WebCore/ChangeLog:13
&gt; +        putImageData() is implemented just as a DisplayListItem. Conceptually, it&apos;s the
&gt; +        same as a draw command. Unfortunately, it can&apos;t be implemented on top of
&gt; +        GraphicsContext, and instead has to be implemented on top of ImageBuffer, so
&gt; +        this patch also adds an optional ImageBuffer* argument to DisplayListItem::apply().
&gt; +        The data itself is transferred using shared memory.

All DisplayListItems are recorded when the drawing commands are applied to the recorder GraphicsContext. Replaying back the DisplayListItems are applied to the destination GraphicsContext. So I am not sure why ImageBuffer::putImageData has to be injected in the middle of a DisplayList. It looks a little bit hacky to make a lot of plumbing to make this happen.

&gt; Source/WebCore/ChangeLog:16
&gt; +        Implementing this as a DisplayListItem rather than its own IPC message is superior
&gt; +        because it gives us more control about when to flush the in-flight display list.

Another approach is to add a new message for putImageData like this 

PutImageData(DisplayList, AlphaPremultiplication, ...)

Upon receiving this message, RemoteImageBufferProxy will replay back the DisplayList and then put the image data. This message does not even have to return a commit message to the WebProcess.

&gt; Source/WebCore/html/canvas/CanvasRenderingContext2DBase.cpp:2106
&gt; +        DisplayList::Replayer replayer(*canvasBase().drawingContext(), m_recordingContext-&gt;displayList, canvasBase().buffer());

Why is this necessary, the in-process DisplayList::ImageBuffer does not need to record the putImageData as a DisplayList::Item. It can access the data of the backend directly.

&gt; Source/WebCore/platform/graphics/AlphaPremultiplication.h:49
&gt; +namespace WTF {
&gt; +template&lt;&gt; struct EnumTraits&lt;WebCore::AlphaPremultiplication&gt; {
&gt; +    using values = EnumValues&lt;
&gt; +        WebCore::AlphaPremultiplication,
&gt; +        WebCore::AlphaPremultiplication::Premultiplied,
&gt; +        WebCore::AlphaPremultiplication::Unpremultiplied
&gt; +    &gt;;
&gt; +};

I think we usually put this in WebCoreArgumentCoder.h.

&gt; Source/WebCore/platform/graphics/displaylists/DisplayList.h:42
&gt; +template&lt;typename BackendType&gt; class ImageBuffer;

Why this forward declaration is needed?

&gt; Source/WebCore/platform/graphics/displaylists/DisplayList.h:172
&gt; +    template&lt;typename BackendType&gt; friend class ImageBuffer;

Why is DisplayList::ImageBuffer added as a friend?

&gt; Source/WebCore/platform/graphics/displaylists/DisplayListImageBuffer.h:69
&gt; +    void putImageData(AlphaPremultiplication inputFormat, const ImageData&amp; imageData, const IntRect&amp; srcRect, const IntPoint&amp; destPoint = { }) override
&gt; +    {
&gt; +        m_drawingContext.displayList().append(PutImageData::create(inputFormat, imageData, srcRect, destPoint));
&gt; +    }

The putImageData() special handling should be in RemoteImageBuffer (which is a superclass of DisplayList::ImageBuffer) and RemoteImageBufferProxy.

&gt; Source/WebCore/platform/graphics/displaylists/DisplayListItems.cpp:1167
&gt; +    , m_imageDataSize(imageData.size())
&gt; +    , m_data(WebCore::SharedBuffer::create(imageData.data()-&gt;data(), imageData.data()-&gt;byteLength())) // This copy is actually required to preserve the semantics of putImageData().

Why don&apos;t we add encoding/decoding code for ImageData such that we do not to split the date from the dataSize?

&gt; Source/WebCore/platform/graphics/displaylists/DisplayListItems.cpp:1194
&gt; +    auto imageData = ImageData::create(m_imageDataSize, Uint8ClampedArray::create(reinterpret_cast&lt;const uint8_t*&gt;(m_data-&gt;data()), m_data-&gt;size()));

This should be handled by the decoder of ImageData.

&gt; Source/WebCore/platform/graphics/displaylists/DisplayListItems.h:2490
&gt; +    Optional&lt;FloatRect&gt; localBounds(const GraphicsContext&amp;) const override { return FloatRect(m_destPoint, m_srcRect.size()); }

I do not think this is the correct calculation for the actual destination rectangle. Please see how &quot;destRect&quot; is calculated in ImageBufferBackend::putImageData().

&gt; Source/WebKit/GPUProcess/graphics/RemoteImageBufferProxy.h:60
&gt; +            WebCore::DisplayList::Replayer replayer(BaseConcreteImageBuffer::context(), displayList, this);

Too much plumbing to have a hacky special case works. RemoteImageBufferProxy passes &quot;this&quot; to Replayer. Replayer passes the ImageBuffer to Item::apply. Only PutImageData::apply() makes use of it but it ignores the GraphicsContext. I think adding this message to RenderingBackendProxy.messages.in can solve the problem with less code change:

void PutImageData(DisplayList::DisplayList displayList, AlphaPremultiplication inputFormat, ImageData data, IntRect srcRect, IntPoint destPoint)

RemoteImageBufferProxy::putImageData() will replay back the DisplayList and then put the image data.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1626100</commentid>
    <comment_count>8</comment_count>
      <attachid>392540</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2020-03-05 08:54:53 -0800</bug_when>
    <thetext>Comment on attachment 392540
Patch

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

&gt;&gt; Source/WebCore/platform/graphics/AlphaPremultiplication.h:49
&gt;&gt; +};
&gt; 
&gt; I think we usually put this in WebCoreArgumentCoder.h.

We’re actually moving away from putting encoders/decoders in WebCoreArgumentCode if possible. In this case, we just need to declare EnumTraits, so this could just stay in WebCore.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1626231</commentid>
    <comment_count>9</comment_count>
      <attachid>392540</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2020-03-05 12:31:46 -0800</bug_when>
    <thetext>Comment on attachment 392540
Patch

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

&gt;&gt; Source/WebCore/ChangeLog:13
&gt;&gt; +        The data itself is transferred using shared memory.
&gt; 
&gt; All DisplayListItems are recorded when the drawing commands are applied to the recorder GraphicsContext. Replaying back the DisplayListItems are applied to the destination GraphicsContext. So I am not sure why ImageBuffer::putImageData has to be injected in the middle of a DisplayList. It looks a little bit hacky to make a lot of plumbing to make this happen.

The reason is to avoid unnecessary flush()es. If we added a new message, then whenever Javascript just happened to call putImageData, that would require a flush.

I&apos;m worried about Javascript like the following:

context.fillRect(...);
context.putImageData(...);
context.fillRect(...);
context.putImageData(...);
context.fillRect(...);
context.putImageData(...);
context.fillRect(...);
context.putImageData(...);

If we added a new message for PutImageData, the above code would cause 4 flushes. If we make it a display list item, there&apos;s only one flush.

This is important because the schedule we flush is an implementation detail. We want to be as simple or as sophisticated as we want when deciding when to flush. And, we want that schedule to be as resilient as possible to the original Javascript.

&gt;&gt; Source/WebCore/platform/graphics/displaylists/DisplayList.h:42
&gt;&gt; +template&lt;typename BackendType&gt; class ImageBuffer;
&gt; 
&gt; Why this forward declaration is needed?

Because of the &quot;friend&quot; line below.

&gt;&gt; Source/WebCore/platform/graphics/displaylists/DisplayList.h:172
&gt;&gt; +    template&lt;typename BackendType&gt; friend class ImageBuffer;
&gt; 
&gt; Why is DisplayList::ImageBuffer added as a friend?

So the ImageBuffer can call DisplayList::append(PutImageData::create(...)). append() is a private function.

&gt;&gt; Source/WebCore/platform/graphics/displaylists/DisplayListImageBuffer.h:68
&gt;&gt; +        m_drawingContext.displayList().append(PutImageData::create(inputFormat, imageData, srcRect, destPoint));
&gt; 
&gt; The other display list items are appended via the display list recorder, which calls into Recorder::willAppendItem(). We should probably double check that it’s okay to bypass that mechanism when appending PutImageData.

Good catch!

&gt;&gt; Source/WebCore/platform/graphics/displaylists/DisplayListImageBuffer.h:69
&gt;&gt; +    }
&gt; 
&gt; The putImageData() special handling should be in RemoteImageBuffer (which is a superclass of DisplayList::ImageBuffer) and RemoteImageBufferProxy.

Yeah, I intentionally put this in DisplayListImageBuffer so that this new &quot;PutImageData is a DisplayListItem&quot; codepath is used even for in-process canvases. However, if you think this new codepath should only be used for GPU process canvases, I&apos;m happy to try to move it.

&gt;&gt; Source/WebCore/platform/graphics/displaylists/DisplayListItems.cpp:1194
&gt;&gt; +    auto imageData = ImageData::create(m_imageDataSize, Uint8ClampedArray::create(reinterpret_cast&lt;const uint8_t*&gt;(m_data-&gt;data()), m_data-&gt;size()));
&gt; 
&gt; This should be handled by the decoder of ImageData.

I did this intentionally because of the &quot;FIXME&quot; on the above line - I&apos;m trying to set myself up to avoid a copy in a later patch. Passing the SharedBuffer into the implementation of putImageData() seems more natural than having ImageData optionally own a SharedBuffer. I&apos;ll try the latter, and see if it&apos;s workable, and if so, I&apos;ll do that.

I&apos;d like to do this in a follow-up patch, though, which removes the copy here.

&gt;&gt; Source/WebKit/GPUProcess/graphics/RemoteImageBufferProxy.h:60
&gt;&gt; +            WebCore::DisplayList::Replayer replayer(BaseConcreteImageBuffer::context(), displayList, this);
&gt; 
&gt; Too much plumbing to have a hacky special case works. RemoteImageBufferProxy passes &quot;this&quot; to Replayer. Replayer passes the ImageBuffer to Item::apply. Only PutImageData::apply() makes use of it but it ignores the GraphicsContext. I think adding this message to RenderingBackendProxy.messages.in can solve the problem with less code change:
&gt; 
&gt; void PutImageData(DisplayList::DisplayList displayList, AlphaPremultiplication inputFormat, ImageData data, IntRect srcRect, IntPoint destPoint)
&gt; 
&gt; RemoteImageBufferProxy::putImageData() will replay back the DisplayList and then put the image data.

Right - less code change, but worse performance. Performance is more important than code changes, and I don&apos;t think this patch is beyond the limit of amount of acceptable plumbing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1626452</commentid>
    <comment_count>10</comment_count>
      <attachid>392657</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2020-03-05 19:15:41 -0800</bug_when>
    <thetext>Created attachment 392657
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1626461</commentid>
    <comment_count>11</comment_count>
      <attachid>392657</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-03-05 19:32:19 -0800</bug_when>
    <thetext>Comment on attachment 392657
Patch

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

&gt; Source/WebCore/platform/graphics/displaylists/DisplayList.h:110
&gt; +    virtual void apply(GraphicsContext&amp;) const { };

No semicolon.

&gt; Source/WebCore/platform/graphics/displaylists/DisplayList.h:114
&gt; +    };

No semicolon.

&gt; Source/WebCore/platform/graphics/displaylists/DisplayListDrawingContext.cpp:40
&gt; +        auto recorder = makeUnique&lt;Recorder&gt;(displayListContext, m_displayList, GraphicsContextState(), FloatRect({ }, logicalSize), AffineTransform());
&gt; +        m_recorder = recorder.get();
&gt; +        return recorder;

This is icky. You keep a copy of the raw pointer then return the unique_ptr&lt;&gt;? You&apos;ve lost any lifetime guarantees about how long m_recorder is valid.

If the context stores the recorder, why can&apos;t you just dig it out later?

&gt; Source/WebCore/platform/graphics/displaylists/DisplayListItems.h:2497
&gt; +    AlphaPremultiplication m_inputFormat;
&gt; +    IntSize m_imageDataSize;

3 bytes of padding here.

&gt; Source/WebCore/platform/graphics/displaylists/DisplayListReplayer.h:42
&gt; +    WEBCORE_EXPORT Replayer(GraphicsContext&amp;, const DisplayList&amp;, ImageBuffer* = nullptr);

Would be a little nicer if Replayer had a delegate which could supply the ImageBuffer on demand.

&gt; Source/WebCore/platform/graphics/displaylists/DisplayListReplayer.h:50
&gt; +    ImageBuffer* m_imageBuffer;

{ nullptr }.

Vague ownership model.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1626517</commentid>
    <comment_count>12</comment_count>
      <attachid>392657</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2020-03-05 22:24:01 -0800</bug_when>
    <thetext>Comment on attachment 392657
Patch

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

&gt;&gt; Source/WebCore/platform/graphics/displaylists/DisplayListDrawingContext.cpp:40
&gt;&gt; +        return recorder;
&gt; 
&gt; This is icky. You keep a copy of the raw pointer then return the unique_ptr&lt;&gt;? You&apos;ve lost any lifetime guarantees about how long m_recorder is valid.
&gt; 
&gt; If the context stores the recorder, why can&apos;t you just dig it out later?

And have a method in GraphicsContext that only one subclass implements? Or, alternatively, have GraphicsContext return its impl, and have DisplayListDrawingContext downcast it to a Recorder?

What do you think about making GraphicsContext::impl a RefPtr instead of a UniquePtr? That way we would get the ownership guarantees?

&gt;&gt; Source/WebCore/platform/graphics/displaylists/DisplayListReplayer.h:50
&gt;&gt; +    ImageBuffer* m_imageBuffer;
&gt; 
&gt; { nullptr }.
&gt; 
&gt; Vague ownership model.

It&apos;s the same as m_displayList and m_context</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1626668</commentid>
    <comment_count>13</comment_count>
      <attachid>392540</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-03-06 08:09:49 -0800</bug_when>
    <thetext>Comment on attachment 392540
Patch

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

&gt;&gt;&gt; Source/WebCore/ChangeLog:13
&gt;&gt;&gt; +        The data itself is transferred using shared memory.
&gt;&gt; 
&gt;&gt; All DisplayListItems are recorded when the drawing commands are applied to the recorder GraphicsContext. Replaying back the DisplayListItems are applied to the destination GraphicsContext. So I am not sure why ImageBuffer::putImageData has to be injected in the middle of a DisplayList. It looks a little bit hacky to make a lot of plumbing to make this happen.
&gt; 
&gt; The reason is to avoid unnecessary flush()es. If we added a new message, then whenever Javascript just happened to call putImageData, that would require a flush.
&gt; 
&gt; I&apos;m worried about Javascript like the following:
&gt; 
&gt; context.fillRect(...);
&gt; context.putImageData(...);
&gt; context.fillRect(...);
&gt; context.putImageData(...);
&gt; context.fillRect(...);
&gt; context.putImageData(...);
&gt; context.fillRect(...);
&gt; context.putImageData(...);
&gt; 
&gt; If we added a new message for PutImageData, the above code would cause 4 flushes. If we make it a display list item, there&apos;s only one flush.
&gt; 
&gt; This is important because the schedule we flush is an implementation detail. We want to be as simple or as sophisticated as we want when deciding when to flush. And, we want that schedule to be as resilient as possible to the original Javascript.

Okay this is fine although I am not convinced what you wrote above is a real user scenario. Usually putImageData() is preceded by getImageData() or at least this is what we do in the MotionMark Images test. But if I wrote this code and I know I am going to call putImageData with the same data, I would convert the data first to an image and use drawImage() instead since drawImage() is more efficient than putImageData().

The solution is still a little bit hacky. Please find a better way plumbing the ImageBuffer into the DisplayList::Replayer. There are other instances of not implemented DisplayList::Items for which the drawing destination is not the GraphicsContext, for example the form controls. So it does not make sense to keep adding these destinations if we want to support these items.

An approach is to make RemoteImageBuffer an observer to the DisplayList::Replayer. The replayer can ask its observer whether it needs to apply the item to itself or not. RemoteImageBuffer will override the observer virtual function applyItem() and in it will check the item. If it sees it is PutImageData, it gets the data and calls putImageData. Please see https://bugs.webkit.org/show_bug.cgi?id=208597 where I made RemoteImageBuffer an observer to the recorder.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1626696</commentid>
    <comment_count>14</comment_count>
      <attachid>392657</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-03-06 09:10:55 -0800</bug_when>
    <thetext>Comment on attachment 392657
Patch

r- based on feedback</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1626700</commentid>
    <comment_count>15</comment_count>
      <attachid>392540</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-03-06 09:23:03 -0800</bug_when>
    <thetext>Comment on attachment 392540
Patch

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

&gt;&gt;&gt;&gt; Source/WebCore/ChangeLog:13
&gt;&gt;&gt;&gt; +        The data itself is transferred using shared memory.
&gt;&gt;&gt; 
&gt;&gt;&gt; All DisplayListItems are recorded when the drawing commands are applied to the recorder GraphicsContext. Replaying back the DisplayListItems are applied to the destination GraphicsContext. So I am not sure why ImageBuffer::putImageData has to be injected in the middle of a DisplayList. It looks a little bit hacky to make a lot of plumbing to make this happen.
&gt;&gt; 
&gt;&gt; The reason is to avoid unnecessary flush()es. If we added a new message, then whenever Javascript just happened to call putImageData, that would require a flush.
&gt;&gt; 
&gt;&gt; I&apos;m worried about Javascript like the following:
&gt;&gt; 
&gt;&gt; context.fillRect(...);
&gt;&gt; context.putImageData(...);
&gt;&gt; context.fillRect(...);
&gt;&gt; context.putImageData(...);
&gt;&gt; context.fillRect(...);
&gt;&gt; context.putImageData(...);
&gt;&gt; context.fillRect(...);
&gt;&gt; context.putImageData(...);
&gt;&gt; 
&gt;&gt; If we added a new message for PutImageData, the above code would cause 4 flushes. If we make it a display list item, there&apos;s only one flush.
&gt;&gt; 
&gt;&gt; This is important because the schedule we flush is an implementation detail. We want to be as simple or as sophisticated as we want when deciding when to flush. And, we want that schedule to be as resilient as possible to the original Javascript.
&gt; 
&gt; Okay this is fine although I am not convinced what you wrote above is a real user scenario. Usually putImageData() is preceded by getImageData() or at least this is what we do in the MotionMark Images test. But if I wrote this code and I know I am going to call putImageData with the same data, I would convert the data first to an image and use drawImage() instead since drawImage() is more efficient than putImageData().
&gt; 
&gt; The solution is still a little bit hacky. Please find a better way plumbing the ImageBuffer into the DisplayList::Replayer. There are other instances of not implemented DisplayList::Items for which the drawing destination is not the GraphicsContext, for example the form controls. So it does not make sense to keep adding these destinations if we want to support these items.
&gt; 
&gt; An approach is to make RemoteImageBuffer an observer to the DisplayList::Replayer. The replayer can ask its observer whether it needs to apply the item to itself or not. RemoteImageBuffer will override the observer virtual function applyItem() and in it will check the item. If it sees it is PutImageData, it gets the data and calls putImageData. Please see https://bugs.webkit.org/show_bug.cgi?id=208597 where I made RemoteImageBuffer an observer to the recorder.

Sorry I meant RemoteImageBufferProxy to be an observer of the DisplayList::Replayer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1626850</commentid>
    <comment_count>16</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2020-03-06 13:47:09 -0800</bug_when>
    <thetext>(In reply to Said Abou-Hallawa from comment #13)
&gt; Comment on attachment 392540 [details]
&gt; An approach is to make RemoteImageBuffer an observer to the
&gt; DisplayList::Replayer. The replayer can ask its observer whether it needs to
&gt; apply the item to itself or not. RemoteImageBuffer will override the
&gt; observer virtual function applyItem() and in it will check the item. If it
&gt; sees it is PutImageData, it gets the data and calls putImageData. Please see
&gt; https://bugs.webkit.org/show_bug.cgi?id=208597 where I made
&gt; RemoteImageBuffer an observer to the recorder.

Okay, I can do this. However, I would like some guidance from you or Simon about which situations would call for delegates, and which are okay to just pass a pointer around. I&apos;d like some clarity around why a delegate which can optionally override the execution of display list items is a better solution than injecting all the dependencies the replayer needs to execute all the DisplayListItems.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1626853</commentid>
    <comment_count>17</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2020-03-06 13:48:19 -0800</bug_when>
    <thetext>(In reply to Myles C. Maxfield from comment #16)
&gt; (In reply to Said Abou-Hallawa from comment #13)
&gt; &gt; Comment on attachment 392540 [details]
&gt; &gt; An approach is to make RemoteImageBuffer an observer to the
&gt; &gt; DisplayList::Replayer. The replayer can ask its observer whether it needs to
&gt; &gt; apply the item to itself or not. RemoteImageBuffer will override the
&gt; &gt; observer virtual function applyItem() and in it will check the item. If it
&gt; &gt; sees it is PutImageData, it gets the data and calls putImageData. Please see
&gt; &gt; https://bugs.webkit.org/show_bug.cgi?id=208597 where I made
&gt; &gt; RemoteImageBuffer an observer to the recorder.
&gt; 
&gt; Okay, I can do this. However, I would like some guidance from you or Simon
&gt; about which situations would call for delegates, and which are okay to just
&gt; pass a pointer around. I&apos;d like some clarity around why a delegate which can
&gt; optionally override the execution of display list items is a better solution
&gt; than injecting all the dependencies the replayer needs to execute all the
&gt; DisplayListItems.

A direct follow-up question: If the delegate is going to supply the ImageBuffer, why not have the delegate supply the GraphicsContext too? What is the distinction between the two?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1626861</commentid>
    <comment_count>18</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-03-06 14:05:21 -0800</bug_when>
    <thetext>(In reply to Myles C. Maxfield from comment #17)
&gt; (In reply to Myles C. Maxfield from comment #16)
&gt; &gt; (In reply to Said Abou-Hallawa from comment #13)
&gt; &gt; &gt; Comment on attachment 392540 [details]
&gt; &gt; &gt; An approach is to make RemoteImageBuffer an observer to the
&gt; &gt; &gt; DisplayList::Replayer. The replayer can ask its observer whether it needs to
&gt; &gt; &gt; apply the item to itself or not. RemoteImageBuffer will override the
&gt; &gt; &gt; observer virtual function applyItem() and in it will check the item. If it
&gt; &gt; &gt; sees it is PutImageData, it gets the data and calls putImageData. Please see
&gt; &gt; &gt; https://bugs.webkit.org/show_bug.cgi?id=208597 where I made
&gt; &gt; &gt; RemoteImageBuffer an observer to the recorder.
&gt; &gt; 
&gt; &gt; Okay, I can do this. However, I would like some guidance from you or Simon
&gt; &gt; about which situations would call for delegates, and which are okay to just
&gt; &gt; pass a pointer around. I&apos;d like some clarity around why a delegate which can
&gt; &gt; optionally override the execution of display list items is a better solution
&gt; &gt; than injecting all the dependencies the replayer needs to execute all the
&gt; &gt; DisplayListItems.
&gt; 
&gt; A direct follow-up question: If the delegate is going to supply the
&gt; ImageBuffer, why not have the delegate supply the GraphicsContext too? What
&gt; is the distinction between the two?

The distinction is obvious all the DisplayList items (so far) implement the functions of GraphicsContextImpl. These functions have correspondent in GraphicsContext. And you are adding a new one which does not have similar call in GraphicsContext. Its distention is the pixels of an ImageBuffer. So instead of making a very special case for your case PutImageData, my suggestion is to make it more generic:

-- If the function is GraphicsContext based function, it is going to be recorded and replayed back through GraphicsContext. And this is the common case.

-- All special cases will go through the DipslayList &quot;Observer&quot; which can be anything and not necessarily and ImageBuffer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1627020</commentid>
    <comment_count>19</comment_count>
      <attachid>392820</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2020-03-06 17:31:11 -0800</bug_when>
    <thetext>Created attachment 392820
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1627111</commentid>
    <comment_count>20</comment_count>
      <attachid>392820</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-03-06 19:34:29 -0800</bug_when>
    <thetext>Comment on attachment 392820
Patch

Clearing flags on attachment: 392820

Committed r258051: &lt;https://trac.webkit.org/changeset/258051&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1627112</commentid>
    <comment_count>21</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-03-06 19:34:31 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1627160</commentid>
    <comment_count>22</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2020-03-06 21:33:10 -0800</bug_when>
    <thetext>(In reply to WebKit Commit Bot from comment #20)
&gt; Comment on attachment 392820 [details]
&gt; Patch
&gt; 
&gt; Clearing flags on attachment: 392820
&gt; 
&gt; Committed r258051: &lt;https://trac.webkit.org/changeset/258051&gt;

Attempt to fix build failures on WinCairo/WPE/GTK:

Committed r258060: &lt;https://trac.webkit.org/changeset/258060&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1627175</commentid>
    <comment_count>23</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2020-03-06 23:05:02 -0800</bug_when>
    <thetext>Thanks, David!</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>392525</attachid>
            <date>2020-03-04 18:30:04 -0800</date>
            <delta_ts>2020-03-04 18:48:56 -0800</delta_ts>
            <desc>WIP</desc>
            <filename>bug-208621-20200304183003.patch</filename>
            <type>text/plain</type>
            <size>16403</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU3ODcxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTQwYWNhZGYyNzYzYWFh
MzBmYzJlODA2N2I3NDc5NWI2YjAyNTY2NC4uYmRmMDZiZDI0MTA5NzMxYmQ2YzA2OTg5ZTJiY2Q4
NDlmZGQ2ODY2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDIwLTAzLTA0ICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQVSBQcm9j
ZXNzXSBJbXBsZW1lbnQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELnB1dEltYWdlRGF0YSgpCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDg2MjEKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVz
dHMgKE9PUFMhKS4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0FscGhhUHJlbXVsdGlw
bGljYXRpb24uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3QuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3RJbWFnZUJ1ZmZlci5oOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6Oklt
YWdlQnVmZmVyOjpwdXRJbWFnZURhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rp
c3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3Bs
YXlMaXN0OjpJdGVtOjpzaXplSW5CeXRlcyk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlz
dDo6UHV0SW1hZ2VEYXRhOjpQdXRJbWFnZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxh
eUxpc3Q6OlB1dEltYWdlRGF0YTo6YXBwbHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlz
cGxheUxpc3Q6Om9wZXJhdG9yPDwpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmg6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlz
dDo6UHV0SW1hZ2VEYXRhOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6
OlB1dEltYWdlRGF0YTo6aW5wdXRGb3JtYXQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlz
cGxheUxpc3Q6OlB1dEltYWdlRGF0YTo6aW1hZ2VEYXRhU2l6ZSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6UHV0SW1hZ2VEYXRhOjpzcmNSZWN0IGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpQdXRJbWFnZURhdGE6OmRlc3RQb2ludCBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UHV0SW1hZ2VEYXRhOjplbmNvZGUgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlB1dEltYWdlRGF0YTo6ZGVjb2Rl
KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtOjplbmNvZGUgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW06OmRlY29kZSk6CisKIDIwMjAtMDMt
MDQgIEFudG9pbmUgUXVpbnQgIDxncmFvdXRzQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgYW4g
U1BJIHRvIGFsbG93IFVzZXJTdHlsZVNoZWV0IGluamVjdGlvbiB0byB0YXJnZXQgYSBzcGVjaWZp
YyBXS1dlYlZpZXcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggOGNjZjNmNGMzNmM3Zjc1NTFkZDNiYzFhNzM1MjEyZjhk
NGRmZWE4MS4uMDNhMWY3ODExMDc4OWJhZjIxZGE2MjFlNWY2ZjJjZjFjODhjYjhiOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxNSBAQAorMjAyMC0wMy0wNCAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4
ZmllbGRAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vzc10gSW1wbGVtZW50IENhbnZh
c1JlbmRlcmluZ0NvbnRleHQyRC5wdXRJbWFnZURhdGEoKQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA4NjIxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTaGFyZWQvV2ViUHJlZmVyZW5jZXMueWFtbDoK
KyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5k
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6d2FpdEZvckNy
ZWF0ZUltYWdlQnVmZmVyQmFja2VuZCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmQ6OndhaXRGb3JDb21taXRJbWFnZUJ1ZmZlckZsdXNoQ29udGV4dCk6CisKIDIwMjAt
MDMtMDQgIEFudG9pbmUgUXVpbnQgIDxncmFvdXRzQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQg
YW4gU1BJIHRvIGFsbG93IFVzZXJTdHlsZVNoZWV0IGluamVjdGlvbiB0byB0YXJnZXQgYSBzcGVj
aWZpYyBXS1dlYlZpZXcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0FscGhhUHJlbXVsdGlwbGljYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0FscGhhUHJlbXVsdGlwbGljYXRpb24uaAppbmRleCA2ZDFjYWVmODU0MWRlZTA2MmJm
ZTA1NDE2Y2RhMmYyYTdmNzkyNmUyLi5iMjc3ODBmNjJiMTkyZjU4MWMyNDM5MmFkMTkxN2UwYzVj
NWY3MDllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9BbHBo
YVByZW11bHRpcGxpY2F0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvQWxwaGFQcmVtdWx0aXBsaWNhdGlvbi5oCkBAIC0zNCw2ICszNCwxNyBAQCBlbnVtIGNsYXNz
IEFscGhhUHJlbXVsdGlwbGljYXRpb24gOiB1aW50OF90IHsKICAgICBVbnByZW11bHRpcGxpZWQK
IH07CiAKKwogV0VCQ09SRV9FWFBPUlQgV1RGOjpUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6
VGV4dFN0cmVhbSYsIEFscGhhUHJlbXVsdGlwbGljYXRpb24pOwogCi19IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCit9CisKK25hbWVzcGFjZSBXVEYgewordGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0
czxXZWJDb3JlOjpBbHBoYVByZW11bHRpcGxpY2F0aW9uPiB7CisgICAgdXNpbmcgdmFsdWVzID0g
RW51bVZhbHVlczwKKyAgICAgICAgV2ViQ29yZTo6QWxwaGFQcmVtdWx0aXBsaWNhdGlvbiwKKyAg
ICAgICAgV2ViQ29yZTo6QWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6UHJlbXVsdGlwbGllZCwKKyAg
ICAgICAgV2ViQ29yZTo6QWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6VW5wcmVtdWx0aXBsaWVkCisg
ICAgPjsKK307Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5oCmluZGV4IDJjNjc3ZjZiNzM2ZTc1MmU0
MWY4YjNmMjQzNDc2ZDQ1MDg0MjQzNzEuLmQ0NWZkYWE0YzAwN2U5ODI1ZTJmNzM4YjNhYzhmMzk3
MzQ3N2UzZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rp
c3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5oCkBAIC0zOSw2ICszOSw4IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogbmFtZXNwYWNlIERpc3BsYXlMaXN0IHsKIAorY2xhc3MgSW1hZ2VC
dWZmZXI7CisKIGVudW0gY2xhc3MgSXRlbVR5cGUgOiB1aW50OF90IHsKICAgICBTYXZlLAogICAg
IFJlc3RvcmUsCkBAIC04MSw2ICs4Myw3IEBAIGVudW0gY2xhc3MgSXRlbVR5cGUgOiB1aW50OF90
IHsKICAgICBGaWxsUmVjdFdpdGhSb3VuZGVkSG9sZSwKICAgICBGaWxsUGF0aCwKICAgICBGaWxs
RWxsaXBzZSwKKyAgICBQdXRJbWFnZURhdGEsCiAgICAgU3Ryb2tlUmVjdCwKICAgICBTdHJva2VQ
YXRoLAogICAgIFN0cm9rZUVsbGlwc2UsCkBAIC0xNjIsNiArMTY1LDcgQEAgY2xhc3MgRGlzcGxh
eUxpc3QgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKERpc3BsYXlMaXN0KTsgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CiAgICAgZnJpZW5kIGNsYXNzIFJlY29yZGVyOwogICAgIGZyaWVuZCBj
bGFzcyBSZXBsYXllcjsKKyAgICBmcmllbmQgY2xhc3MgSW1hZ2VCdWZmZXI7CiBwdWJsaWM6CiAg
ICAgRGlzcGxheUxpc3QoKSA9IGRlZmF1bHQ7CiAgICAgRGlzcGxheUxpc3QoRGlzcGxheUxpc3Qm
JikgPSBkZWZhdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEltYWdlQnVmZmVyLmgK
aW5kZXggYTAyODdmODVkZGI2MGQ3YmRjMDAxZmJiYWU0NzY0YWFhZTNkNGYwMC4uYTIxMzRmNGZj
NjIzNzQwNDg2MjYzZDc3YWIxNjk2OTk2OWJmM2Y5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3RJbWFnZUJ1ZmZlci5oCkBAIC02Miw2ICs2MiwxMSBAQCBwdWJsaWM6CiAgICAgICAg
IGZsdXNoRHJhd2luZ0NvbnRleHQoKTsKICAgICB9CiAKKyAgICB2b2lkIHB1dEltYWdlRGF0YShB
bHBoYVByZW11bHRpcGxpY2F0aW9uIGlucHV0Rm9ybWF0LCBjb25zdCBJbWFnZURhdGEmIGltYWdl
RGF0YSwgY29uc3QgSW50UmVjdCYgc3JjUmVjdCwgY29uc3QgSW50UG9pbnQmIGRlc3RQb2ludCA9
IHsgfSkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIG1fZHJhd2luZ0NvbnRleHQuZGlzcGxheUxp
c3QoKS5hcHBlbmQoUHV0SW1hZ2VEYXRhOjpjcmVhdGUoaW5wdXRGb3JtYXQsIGltYWdlRGF0YSwg
c3JjUmVjdCwgZGVzdFBvaW50KSk7CisgICAgfQorCiAgICAgR3JhcGhpY3NDb250ZXh0JiBjb250
ZXh0KCkgY29uc3Qgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIHJldHVybiBtX2RyYXdpbmdDb250
ZXh0LmNvbnRleHQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcAppbmRleCA5
MWFiM2JmN2Q4N2IyNDdhYjYxOGQ5ODNkYjc1NGJjMmIyMTQwZTY0Li4yZWQyYWYzNjIwNmJhZGY1
MWE3MDlmM2NjOTg3YzRmNDIyMWExMTRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRl
bXMuY3BwCkBAIC0xMzgsNiArMTM4LDggQEAgc2l6ZV90IEl0ZW06OnNpemVJbkJ5dGVzKGNvbnN0
IEl0ZW0mIGl0ZW0pCiAgICAgICAgIHJldHVybiBzaXplb2YoZG93bmNhc3Q8RmlsbFBhdGg+KGl0
ZW0pKTsKICAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsRWxsaXBzZToKICAgICAgICAgcmV0dXJuIHNp
emVvZihkb3duY2FzdDxGaWxsRWxsaXBzZT4oaXRlbSkpOworICAgIGNhc2UgSXRlbVR5cGU6OlB1
dEltYWdlRGF0YToKKyAgICAgICAgcmV0dXJuIHNpemVvZihkb3duY2FzdDxQdXRJbWFnZURhdGE+
KGl0ZW0pKTsKICAgICBjYXNlIEl0ZW1UeXBlOjpTdHJva2VSZWN0OgogICAgICAgICByZXR1cm4g
c2l6ZW9mKGRvd25jYXN0PFN0cm9rZVJlY3Q+KGl0ZW0pKTsKICAgICBjYXNlIEl0ZW1UeXBlOjpT
dHJva2VQYXRoOgpAQCAtMTE1Myw2ICsxMTU1LDMzIEBAIHN0YXRpYyBUZXh0U3RyZWFtJiBvcGVy
YXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBGaWxsRWxsaXBzZSYgaXRlbSkKICAgICByZXR1
cm4gdHM7CiB9CiAKK1B1dEltYWdlRGF0YTo6UHV0SW1hZ2VEYXRhKEFscGhhUHJlbXVsdGlwbGlj
YXRpb24gaW5wdXRGb3JtYXQsIGNvbnN0IEltYWdlRGF0YSYgaW1hZ2VEYXRhLCBjb25zdCBJbnRS
ZWN0JiBzcmNSZWN0LCBjb25zdCBJbnRQb2ludCYgZGVzdFBvaW50KQorICAgIDogRHJhd2luZ0l0
ZW0oSXRlbVR5cGU6OlB1dEltYWdlRGF0YSkKKyAgICAsIG1faW1hZ2VEYXRhU2l6ZShpbWFnZURh
dGEuc2l6ZSgpKQorICAgICwgbV9kYXRhKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGlt
YWdlRGF0YS5kYXRhKCktPmRhdGEoKSwgaW1hZ2VEYXRhLmRhdGEoKS0+Ynl0ZUxlbmd0aCgpKSkg
Ly8gVGhpcyBjb3B5IGlzIGFjdHVhbGx5IHJlcXVpcmVkIHRvIHByZXNlcnZlIHRoZSBzZW1hbnRp
Y3Mgb2YgcHV0SW1hZ2VEYXRhKCkuCisgICAgLCBtX3NyY1JlY3Qoc3JjUmVjdCkKKyAgICAsIG1f
ZGVzdFBvaW50KGRlc3RQb2ludCkKK3sKKyAgICBBU1NFUlQoaW1hZ2VEYXRhLmRhdGEoKSk7Cit9
CisKK1B1dEltYWdlRGF0YTo6flB1dEltYWdlRGF0YSgpID0gZGVmYXVsdDsKKwordm9pZCBQdXRJ
bWFnZURhdGE6OmFwcGx5KEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0Cit7CisgICAgLy8gRklYTUU6
IEltcGxlbWVudCB0aGlzCit9CisKK3N0YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRT
dHJlYW0mIHRzLCBjb25zdCBQdXRJbWFnZURhdGEmIGl0ZW0pCit7CisgICAgdHMgPDwgc3RhdGlj
X2Nhc3Q8Y29uc3QgRHJhd2luZ0l0ZW0mPihpdGVtKTsKKyAgICB0cy5kdW1wUHJvcGVydHkoImlu
cHV0Rm9ybWF0IiwgaXRlbS5pbnB1dEZvcm1hdCgpKTsKKyAgICB0cy5kdW1wUHJvcGVydHkoImlt
YWdlRGF0YVNpemUiLCBpdGVtLmltYWdlRGF0YVNpemUoKSk7CisgICAgdHMuZHVtcFByb3BlcnR5
KCJzcmNSZWN0IiwgaXRlbS5zcmNSZWN0KCkpOworICAgIHRzLmR1bXBQcm9wZXJ0eSgiZGVzdFBv
aW50IiwgaXRlbS5kZXN0UG9pbnQoKSk7CisgICAgcmV0dXJuIHRzOworfQorCiBTdHJva2VSZWN0
OjpTdHJva2VSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgZmxvYXQgbGluZVdpZHRoKQogICAg
IDogRHJhd2luZ0l0ZW0oSXRlbVR5cGU6OlN0cm9rZVJlY3QpCiAgICAgLCBtX3JlY3QocmVjdCkK
QEAgLTEzODEsNiArMTQxMCw3IEBAIHN0YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRT
dHJlYW0mIHRzLCBjb25zdCBJdGVtVHlwZSYgdHlwZSkKICAgICBjYXNlIEl0ZW1UeXBlOjpGaWxs
UmVjdFdpdGhSb3VuZGVkSG9sZTogdHMgPDwgImZpbGwtcmVjdC13aXRoLXJvdW5kZWQtaG9sZSI7
IGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxQYXRoOiB0cyA8PCAiZmlsbC1wYXRoIjsg
YnJlYWs7CiAgICAgY2FzZSBJdGVtVHlwZTo6RmlsbEVsbGlwc2U6IHRzIDw8ICJmaWxsLWVsbGlw
c2UiOyBicmVhazsKKyAgICBjYXNlIEl0ZW1UeXBlOjpQdXRJbWFnZURhdGE6IHRzIDw8ICJwdXQt
aW1hZ2UtZGF0YSI7IGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OlN0cm9rZVJlY3Q6IHRzIDw8
ICJzdHJva2UtcmVjdCI7IGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OlN0cm9rZVBhdGg6IHRz
IDw8ICJzdHJva2UtcGF0aCI7IGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OlN0cm9rZUVsbGlw
c2U6IHRzIDw8ICJzdHJva2UtZWxsaXBzZSI7IGJyZWFrOwpAQCAtMTUxNyw2ICsxNTQ3LDkgQEAg
VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgSXRlbSYgaXRlbSkK
ICAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsRWxsaXBzZToKICAgICAgICAgdHMgPDwgZG93bmNhc3Q8
RmlsbEVsbGlwc2U+KGl0ZW0pOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIEl0ZW1UeXBlOjpQ
dXRJbWFnZURhdGE6CisgICAgICAgIHRzIDw8IGRvd25jYXN0PFB1dEltYWdlRGF0YT4oaXRlbSk7
CisgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OlN0cm9rZVJlY3Q6CiAgICAgICAg
IHRzIDw8IGRvd25jYXN0PFN0cm9rZVJlY3Q+KGl0ZW0pOwogICAgICAgICBicmVhazsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdEl0ZW1zLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5
bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oCmluZGV4IDk3ZmQwYTAwYTRkNGJjNmU3NjEyNzJkOTZl
Yjc0NjY3MzAyZjgwYTYuLjVkNjQxYzZkODE4ZjQ0YTBiNGRjY2ZjYjEzNGRjZGE2M2I3NWFkYWUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0
cy9EaXNwbGF5TGlzdEl0ZW1zLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaApAQCAtMzIsNiArMzIsNyBAQAogI2lu
Y2x1ZGUgIkdseXBoQnVmZmVyLmgiCiAjaW5jbHVkZSAiSW1hZ2UuaCIKICNpbmNsdWRlICJQYXR0
ZXJuLmgiCisjaW5jbHVkZSAiU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUg
PHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1R5cGVDYXN0cy5oPgogCkBAIC00MSw2
ICs0Miw3IEBAIGNsYXNzIFRleHRTdHJlYW07CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorZW51
bSBjbGFzcyBBbHBoYVByZW11bHRpcGxpY2F0aW9uIDogdWludDhfdDsKIHN0cnVjdCBJbWFnZVBh
aW50aW5nT3B0aW9uczsKIAogbmFtZXNwYWNlIERpc3BsYXlMaXN0IHsKQEAgLTI0NTcsNiArMjQ1
OSw4NyBAQCBPcHRpb25hbDxSZWY8RmlsbEVsbGlwc2U+PiBGaWxsRWxsaXBzZTo6ZGVjb2RlKERl
Y29kZXImIGRlY29kZXIpCiAgICAgcmV0dXJuIEZpbGxFbGxpcHNlOjpjcmVhdGUoKnJlY3QpOwog
fQogCitjbGFzcyBQdXRJbWFnZURhdGEgOiBwdWJsaWMgRHJhd2luZ0l0ZW0geworcHVibGljOgor
ICAgIHN0YXRpYyBSZWY8UHV0SW1hZ2VEYXRhPiBjcmVhdGUoQWxwaGFQcmVtdWx0aXBsaWNhdGlv
biBpbnB1dEZvcm1hdCwgY29uc3QgSW1hZ2VEYXRhJiBpbWFnZURhdGEsIGNvbnN0IEludFJlY3Qm
IHNyY1JlY3QsIGNvbnN0IEludFBvaW50JiBkZXN0UG9pbnQpCisgICAgeworICAgICAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBQdXRJbWFnZURhdGEoaW5wdXRGb3JtYXQsIGltYWdlRGF0YSwgc3Jj
UmVjdCwgZGVzdFBvaW50KSk7CisgICAgfQorICAgIHN0YXRpYyBSZWY8UHV0SW1hZ2VEYXRhPiBj
cmVhdGUoQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBpbnB1dEZvcm1hdCwgY29uc3QgSW50U2l6ZSYg
aW1hZ2VEYXRhU2l6ZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBjb25zdCBJbnRSZWN0JiBz
cmNSZWN0LCBjb25zdCBJbnRQb2ludCYgZGVzdFBvaW50KQorICAgIHsKKyAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgUHV0SW1hZ2VEYXRhKGlucHV0Rm9ybWF0LCBpbWFnZURhdGFTaXplLCBX
VEZNb3ZlKGRhdGEpLCBzcmNSZWN0LCBkZXN0UG9pbnQpKTsKKyAgICB9CisKKyAgICBXRUJDT1JF
X0VYUE9SVCB2aXJ0dWFsIH5QdXRJbWFnZURhdGEoKTsKKworICAgIEFscGhhUHJlbXVsdGlwbGlj
YXRpb24gaW5wdXRGb3JtYXQoKSBjb25zdCB7IHJldHVybiBtX2lucHV0Rm9ybWF0OyB9CisgICAg
SW50U2l6ZSBpbWFnZURhdGFTaXplKCkgY29uc3QgeyByZXR1cm4gbV9pbWFnZURhdGFTaXplOyB9
CisgICAgSW50UmVjdCBzcmNSZWN0KCkgY29uc3QgeyByZXR1cm4gbV9zcmNSZWN0OyB9CisgICAg
SW50UG9pbnQgZGVzdFBvaW50KCkgY29uc3QgeyByZXR1cm4gbV9kZXN0UG9pbnQ7IH0KKworICAg
IHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKKyAg
ICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8UmVmPFB1dEltYWdlRGF0
YT4+IGRlY29kZShEZWNvZGVyJik7CisKK3ByaXZhdGU6CisgICAgV0VCQ09SRV9FWFBPUlQgUHV0
SW1hZ2VEYXRhKEFscGhhUHJlbXVsdGlwbGljYXRpb24gaW5wdXRGb3JtYXQsIGNvbnN0IEltYWdl
RGF0YSYsIGNvbnN0IEludFJlY3QmIHNyY1JlY3QsIGNvbnN0IEludFBvaW50JiBkZXN0UG9pbnQp
OworICAgIFdFQkNPUkVfRVhQT1JUIFB1dEltYWdlRGF0YShBbHBoYVByZW11bHRpcGxpY2F0aW9u
IGlucHV0Rm9ybWF0LCBjb25zdCBJbnRTaXplJiBpbWFnZURhdGFTaXplLCBSZWY8U2hhcmVkQnVm
ZmVyPiYmIGRhdGEsIGNvbnN0IEludFJlY3QmIHNyY1JlY3QsIGNvbnN0IEludFBvaW50JiBkZXN0
UG9pbnQpOworCisgICAgdm9pZCBhcHBseShHcmFwaGljc0NvbnRleHQmKSBjb25zdCBvdmVycmlk
ZTsKKworICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gbG9jYWxCb3VuZHMoY29uc3QgR3JhcGhpY3ND
b250ZXh0JikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gRmxvYXRSZWN0KG1fZGVzdFBvaW50LCBz
cmNSZWN0LnNpemUoKSk7IH0KKworICAgIEFscGhhUHJlbXVsdGlwbGljYXRpb24gbV9pbnB1dEZv
cm1hdDsKKyAgICBJbnRTaXplIG1faW1hZ2VEYXRhU2l6ZTsKKyAgICBSZWY8U2hhcmVkQnVmZmVy
PiBtX2RhdGE7CisgICAgSW50UmVjdCBtX3NyY1JlY3Q7CisgICAgSW50UG9pbnQgbV9kZXN0UG9p
bnQ7Cit9OworCit0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgordm9pZCBQdXRJbWFnZURhdGE6OmVu
Y29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAoreworICAgIFNoYXJlZEJ1ZmZlckRhdGFSZWZl
cmVuY2Ugc2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZShtX2RhdGEuY29weVJlZigpKTsKKworICAg
IGVuY29kZXIgPDwgbV9pbnB1dEZvcm1hdDsKKyAgICBlbmNvZGVyIDw8IG1faW1hZ2VEYXRhU2l6
ZTsKKyAgICBlbmNvZGVyIDw8IHNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2U7CisgICAgZW5jb2Rl
ciA8PCBtX3NyY1JlY3Q7CisgICAgZW5jb2RlciA8PCBtX2Rlc3RQb2ludDsKK30KKwordGVtcGxh
dGU8Y2xhc3MgRGVjb2Rlcj4KK09wdGlvbmFsPFJlZjxQdXRJbWFnZURhdGE+PiBQdXRJbWFnZURh
dGE6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIE9wdGlvbmFsPEFscGhhUHJlbXVs
dGlwbGljYXRpb24+IGlucHV0Rm9ybWF0OworICAgIE9wdGlvbmFsPEludFNpemU+IGltYWdlRGF0
YVNpemU7CisgICAgT3B0aW9uYWw8U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZT4gZGF0YTsKKyAg
ICBPcHRpb25hbDxJbnRSZWN0PiBzcmNSZWN0OworICAgIE9wdGlvbmFsPEludFBvaW50PiBkZXN0
UG9pbnQ7CisKKyAgICBkZWNvZGVyID4+IGlucHV0Rm9ybWF0OworICAgIGlmICghaW5wdXRGb3Jt
YXQpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBkZWNvZGVyID4+IGltYWdl
RGF0YVNpemU7CisgICAgaWYgKCFpbWFnZURhdGFTaXplKQorICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworCisgICAgZGVjb2RlciA+PiBkYXRhOworICAgIGlmICghZGF0YSB8fCAhZGF0YS0+
YnVmZmVyKCkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBkZWNvZGVyID4+
IHNyY1JlY3Q7CisgICAgaWYgKCFzcmNSZWN0KQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworCisgICAgZGVjb2RlciA+PiBkZXN0UG9pbnQ7CisgICAgaWYgKCFkZXN0UG9pbnQpCisgICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKworICAgIHJldHVybiBQdXRJbWFnZURhdGE6OmNy
ZWF0ZSgqaW5wdXRGb3JtYXQsICppbWFnZURhdGFTaXplLCBkYXRhLT5idWZmZXIoKS5yZWxlYXNl
Tm9uTnVsbCgpLCAqc3JjUmVjdCwgKmRlc3RQb2ludCk7Cit9CisKIGNsYXNzIFN0cm9rZVJlY3Qg
OiBwdWJsaWMgRHJhd2luZ0l0ZW0gewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8U3Ryb2tlUmVj
dD4gY3JlYXRlKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgZmxvYXQgbGluZVdpZHRoKQpAQCAtMjg1
Miw2ICsyOTM1LDkgQEAgdm9pZCBJdGVtOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QK
ICAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsRWxsaXBzZToKICAgICAgICAgZW5jb2RlciA8PCBkb3du
Y2FzdDxGaWxsRWxsaXBzZT4oKnRoaXMpOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIEl0ZW1U
eXBlOjpQdXRJbWFnZURhdGE6CisgICAgICAgIGVuY29kZXIgPDwgZG93bmNhc3Q8UHV0SW1hZ2VE
YXRhPigqdGhpcyk7CisgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OlN0cm9rZVJl
Y3Q6CiAgICAgICAgIGVuY29kZXIgPDwgZG93bmNhc3Q8U3Ryb2tlUmVjdD4oKnRoaXMpOwogICAg
ICAgICBicmVhazsKQEAgLTMwNTEsNiArMzEzNywxMCBAQCBPcHRpb25hbDxSZWY8SXRlbT4+IEl0
ZW06OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgICAgICBpZiAoYXV0byBpdGVtID0gRmls
bEVsbGlwc2U6OmRlY29kZShkZWNvZGVyKSkKICAgICAgICAgICAgIHJldHVybiBzdGF0aWNfcmVm
ZXJlbmNlX2Nhc3Q8SXRlbT4oV1RGTW92ZSgqaXRlbSkpOwogICAgICAgICBicmVhazsKKyAgICBj
YXNlIEl0ZW1UeXBlOjpQdXRJbWFnZURhdGE6CisgICAgICAgIGlmIChhdXRvIGl0ZW0gPSBQdXRJ
bWFnZURhdGE6OmRlY29kZShkZWNvZGVyKSkKKyAgICAgICAgICAgIHJldHVybiBzdGF0aWNfcmVm
ZXJlbmNlX2Nhc3Q8SXRlbT4oV1RGTW92ZSgqaXRlbSkpOworICAgICAgICBicmVhazsKICAgICBj
YXNlIEl0ZW1UeXBlOjpTdHJva2VSZWN0OgogICAgICAgICBpZiAoYXV0byBpdGVtID0gU3Ryb2tl
UmVjdDo6ZGVjb2RlKGRlY29kZXIpKQogICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19yZWZlcmVu
Y2VfY2FzdDxJdGVtPihXVEZNb3ZlKCppdGVtKSk7CkBAIC0zMTUwLDYgKzMyNDAsNyBAQCBTUEVD
SUFMSVpFX1RZUEVfVFJBSVRTX0RJU1BMQVlMSVNUX0lURU0oRmlsbFJvdW5kZWRSZWN0KQogU1BF
Q0lBTElaRV9UWVBFX1RSQUlUU19ESVNQTEFZTElTVF9JVEVNKEZpbGxSZWN0V2l0aFJvdW5kZWRI
b2xlKQogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19ESVNQTEFZTElTVF9JVEVNKEZpbGxQYXRoKQog
U1BFQ0lBTElaRV9UWVBFX1RSQUlUU19ESVNQTEFZTElTVF9JVEVNKEZpbGxFbGxpcHNlKQorU1BF
Q0lBTElaRV9UWVBFX1RSQUlUU19ESVNQTEFZTElTVF9JVEVNKFB1dEltYWdlRGF0YSkKIFNQRUNJ
QUxJWkVfVFlQRV9UUkFJVFNfRElTUExBWUxJU1RfSVRFTShTdHJva2VSZWN0KQogU1BFQ0lBTEla
RV9UWVBFX1RSQUlUU19ESVNQTEFZTElTVF9JVEVNKFN0cm9rZVBhdGgpCiBTUEVDSUFMSVpFX1RZ
UEVfVFJBSVRTX0RJU1BMQVlMSVNUX0lURU0oU3Ryb2tlRWxsaXBzZSkKQEAgLTMyMDksNiArMzMw
MCw3IEBAIHRlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6RGlzcGxheUxpc3Q6
Okl0ZW1UeXBlPiB7CiAgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpGaWxsUmVj
dFdpdGhSb3VuZGVkSG9sZSwKICAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkZp
bGxQYXRoLAogICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RmlsbEVsbGlwc2Us
CisgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpQdXRJbWFnZURhdGEsCiAgICAg
V2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpTdHJva2VSZWN0LAogICAgIFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6U3Ryb2tlUGF0aCwKICAgICBXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6SXRlbVR5cGU6OlN0cm9rZUVsbGlwc2UsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9XZWJQcmVmZXJlbmNlcy55YW1sIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJl
ZmVyZW5jZXMueWFtbAppbmRleCBhNzc5ZTMzZjQ0MjNkZDE4NjQwNjVmOWZhNzI2N2U5ZDA5ZDhk
MTc0Li44YmRhZGM4YjJmNTcwMmFlYmIzMzFiMjNmNTFkOTE1Zjc1N2QwM2ZjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcmVmZXJlbmNlcy55YW1sCisrKyBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1dlYlByZWZlcmVuY2VzLnlhbWwKQEAgLTE3NDcsNyArMTc0Nyw3IEBAIENh
cHR1cmVBdWRpb0luR1BVUHJvY2Vzc0VuYWJsZWQ6CiAKIFJlbmRlckNhbnZhc0luR1BVUHJvY2Vz
c0VuYWJsZWQ6CiAgIHR5cGU6IGJvb2wKLSAgZGVmYXVsdFZhbHVlOiBmYWxzZQorICBkZWZhdWx0
VmFsdWU6IHRydWUKICAgaHVtYW5SZWFkYWJsZU5hbWU6ICJSZW5kZXIgY2FudmFzIGluIEdQVSBQ
cm9jZXNzIgogICBodW1hblJlYWRhYmxlRGVzY3JpcHRpb246ICJFbmFibGUgY2FudmFzIHJlbmRl
cmluZyBpbiBHUFUgUHJvY2VzcyIKICAgY2F0ZWdvcnk6IGludGVybmFsCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tl
bmQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kLmNwcAppbmRleCAxOTU4MzE2NWFjZmY4YWM2Mjc5NWVjMTY4Y2M5MDliNmFl
ZTZjOThhLi5hNjk3MWNlYzU3MjMxYjU5NTk3NWFiYTkyZDE1YTAyNjZmOTVlMmU5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmlu
Z0JhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mv
UmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAKQEAgLTc1LDEzICs3NSwxMyBAQCB1aW50NjRfdCBS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjptZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpIGNvbnN0
CiBib29sIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OndhaXRGb3JDcmVhdGVJbWFnZUJ1ZmZlckJh
Y2tlbmQoKQogewogICAgIFJlZjxJUEM6OkNvbm5lY3Rpb24+IGNvbm5lY3Rpb24gPSBXZWJQcm9j
ZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVHUFVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24o
KTsKLSAgICByZXR1cm4gY29ubmVjdGlvbi0+d2FpdEZvckFuZERpc3BhdGNoSW1tZWRpYXRlbHk8
TWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OkNyZWF0ZUltYWdlQnVmZmVyQmFja2Vu
ZD4obV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciwgMV9zLCBJUEM6OldhaXRGb3JPcHRpb246
OkludGVycnVwdFdhaXRpbmdJZlN5bmNNZXNzYWdlQXJyaXZlcyk7CisgICAgcmV0dXJuIGNvbm5l
Y3Rpb24tPndhaXRGb3JBbmREaXNwYXRjaEltbWVkaWF0ZWx5PE1lc3NhZ2VzOjpSZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kOjpDcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmQ+KG1fcmVuZGVyaW5nQmFja2Vu
ZElkZW50aWZpZXIsIFNlY29uZHM6OmluZmluaXR5KCksIElQQzo6V2FpdEZvck9wdGlvbjo6SW50
ZXJydXB0V2FpdGluZ0lmU3luY01lc3NhZ2VBcnJpdmVzKTsKIH0KIAogYm9vbCBSZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kOjp3YWl0Rm9yQ29tbWl0SW1hZ2VCdWZmZXJGbHVzaENvbnRleHQoKQogewog
ICAgIFJlZjxJUEM6OkNvbm5lY3Rpb24+IGNvbm5lY3Rpb24gPSBXZWJQcm9jZXNzOjpzaW5nbGV0
b24oKS5lbnN1cmVHUFVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKTsKLSAgICByZXR1
cm4gY29ubmVjdGlvbi0+d2FpdEZvckFuZERpc3BhdGNoSW1tZWRpYXRlbHk8TWVzc2FnZXM6OlJl
bW90ZVJlbmRlcmluZ0JhY2tlbmQ6OkNvbW1pdEltYWdlQnVmZmVyRmx1c2hDb250ZXh0PihtX3Jl
bmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyLCAxX3MsIElQQzo6V2FpdEZvck9wdGlvbjo6SW50ZXJy
dXB0V2FpdGluZ0lmU3luY01lc3NhZ2VBcnJpdmVzKTsKKyAgICByZXR1cm4gY29ubmVjdGlvbi0+
d2FpdEZvckFuZERpc3BhdGNoSW1tZWRpYXRlbHk8TWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmQ6OkNvbW1pdEltYWdlQnVmZmVyRmx1c2hDb250ZXh0PihtX3JlbmRlcmluZ0JhY2tlbmRJ
ZGVudGlmaWVyLCBTZWNvbmRzOjppbmZpbml0eSgpLCBJUEM6OldhaXRGb3JPcHRpb246OkludGVy
cnVwdFdhaXRpbmdJZlN5bmNNZXNzYWdlQXJyaXZlcyk7CiB9CiAKIHN0ZDo6dW5pcXVlX3B0cjxJ
bWFnZUJ1ZmZlcj4gUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Y3JlYXRlSW1hZ2VCdWZmZXIoY29u
c3QgRmxvYXRTaXplJiBzaXplLCBTaG91bGRBY2NlbGVyYXRlIHNob3VsZEFjY2VsZXJhdGUsIGZs
b2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>392528</attachid>
            <date>2020-03-04 18:48:57 -0800</date>
            <delta_ts>2020-03-04 19:43:51 -0800</delta_ts>
            <desc>WIP</desc>
            <filename>bug-208621-20200304184856.patch</filename>
            <type>text/plain</type>
            <size>18231</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU3ODcxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTQwYWNhZGYyNzYzYWFh
MzBmYzJlODA2N2I3NDc5NWI2YjAyNTY2NC4uYmRmMDZiZDI0MTA5NzMxYmQ2YzA2OTg5ZTJiY2Q4
NDlmZGQ2ODY2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDIwLTAzLTA0ICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQVSBQcm9j
ZXNzXSBJbXBsZW1lbnQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELnB1dEltYWdlRGF0YSgpCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDg2MjEKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVz
dHMgKE9PUFMhKS4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0FscGhhUHJlbXVsdGlw
bGljYXRpb24uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3QuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3RJbWFnZUJ1ZmZlci5oOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6Oklt
YWdlQnVmZmVyOjpwdXRJbWFnZURhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rp
c3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3Bs
YXlMaXN0OjpJdGVtOjpzaXplSW5CeXRlcyk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlz
dDo6UHV0SW1hZ2VEYXRhOjpQdXRJbWFnZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxh
eUxpc3Q6OlB1dEltYWdlRGF0YTo6YXBwbHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlz
cGxheUxpc3Q6Om9wZXJhdG9yPDwpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmg6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlz
dDo6UHV0SW1hZ2VEYXRhOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6
OlB1dEltYWdlRGF0YTo6aW5wdXRGb3JtYXQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlz
cGxheUxpc3Q6OlB1dEltYWdlRGF0YTo6aW1hZ2VEYXRhU2l6ZSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6UHV0SW1hZ2VEYXRhOjpzcmNSZWN0IGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpQdXRJbWFnZURhdGE6OmRlc3RQb2ludCBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UHV0SW1hZ2VEYXRhOjplbmNvZGUgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlB1dEltYWdlRGF0YTo6ZGVjb2Rl
KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtOjplbmNvZGUgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW06OmRlY29kZSk6CisKIDIwMjAtMDMt
MDQgIEFudG9pbmUgUXVpbnQgIDxncmFvdXRzQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgYW4g
U1BJIHRvIGFsbG93IFVzZXJTdHlsZVNoZWV0IGluamVjdGlvbiB0byB0YXJnZXQgYSBzcGVjaWZp
YyBXS1dlYlZpZXcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggOGNjZjNmNGMzNmM3Zjc1NTFkZDNiYzFhNzM1MjEyZjhk
NGRmZWE4MS4uMDNhMWY3ODExMDc4OWJhZjIxZGE2MjFlNWY2ZjJjZjFjODhjYjhiOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxNSBAQAorMjAyMC0wMy0wNCAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4
ZmllbGRAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vzc10gSW1wbGVtZW50IENhbnZh
c1JlbmRlcmluZ0NvbnRleHQyRC5wdXRJbWFnZURhdGEoKQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA4NjIxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTaGFyZWQvV2ViUHJlZmVyZW5jZXMueWFtbDoK
KyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5k
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6d2FpdEZvckNy
ZWF0ZUltYWdlQnVmZmVyQmFja2VuZCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmQ6OndhaXRGb3JDb21taXRJbWFnZUJ1ZmZlckZsdXNoQ29udGV4dCk6CisKIDIwMjAt
MDMtMDQgIEFudG9pbmUgUXVpbnQgIDxncmFvdXRzQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQg
YW4gU1BJIHRvIGFsbG93IFVzZXJTdHlsZVNoZWV0IGluamVjdGlvbiB0byB0YXJnZXQgYSBzcGVj
aWZpYyBXS1dlYlZpZXcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0FscGhhUHJlbXVsdGlwbGljYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0FscGhhUHJlbXVsdGlwbGljYXRpb24uaAppbmRleCA2ZDFjYWVmODU0MWRlZTA2MmJm
ZTA1NDE2Y2RhMmYyYTdmNzkyNmUyLi5iMjc3ODBmNjJiMTkyZjU4MWMyNDM5MmFkMTkxN2UwYzVj
NWY3MDllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9BbHBo
YVByZW11bHRpcGxpY2F0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvQWxwaGFQcmVtdWx0aXBsaWNhdGlvbi5oCkBAIC0zNCw2ICszNCwxNyBAQCBlbnVtIGNsYXNz
IEFscGhhUHJlbXVsdGlwbGljYXRpb24gOiB1aW50OF90IHsKICAgICBVbnByZW11bHRpcGxpZWQK
IH07CiAKKwogV0VCQ09SRV9FWFBPUlQgV1RGOjpUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6
VGV4dFN0cmVhbSYsIEFscGhhUHJlbXVsdGlwbGljYXRpb24pOwogCi19IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCit9CisKK25hbWVzcGFjZSBXVEYgewordGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0
czxXZWJDb3JlOjpBbHBoYVByZW11bHRpcGxpY2F0aW9uPiB7CisgICAgdXNpbmcgdmFsdWVzID0g
RW51bVZhbHVlczwKKyAgICAgICAgV2ViQ29yZTo6QWxwaGFQcmVtdWx0aXBsaWNhdGlvbiwKKyAg
ICAgICAgV2ViQ29yZTo6QWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6UHJlbXVsdGlwbGllZCwKKyAg
ICAgICAgV2ViQ29yZTo6QWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6VW5wcmVtdWx0aXBsaWVkCisg
ICAgPjsKK307Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5oCmluZGV4IDJjNjc3ZjZiNzM2ZTc1MmU0
MWY4YjNmMjQzNDc2ZDQ1MDg0MjQzNzEuLjRlMjJhZjQ3ZGUwZDI4ZjUyNGE1OTRhYWY4MzNmYWRl
ZDZjNmJlYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rp
c3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5oCkBAIC0zOSw2ICszOSw4IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogbmFtZXNwYWNlIERpc3BsYXlMaXN0IHsKIAordGVtcGxhdGU8dHlw
ZW5hbWUgQmFja2VuZFR5cGU+IGNsYXNzIEltYWdlQnVmZmVyOworCiBlbnVtIGNsYXNzIEl0ZW1U
eXBlIDogdWludDhfdCB7CiAgICAgU2F2ZSwKICAgICBSZXN0b3JlLApAQCAtODEsNiArODMsNyBA
QCBlbnVtIGNsYXNzIEl0ZW1UeXBlIDogdWludDhfdCB7CiAgICAgRmlsbFJlY3RXaXRoUm91bmRl
ZEhvbGUsCiAgICAgRmlsbFBhdGgsCiAgICAgRmlsbEVsbGlwc2UsCisgICAgUHV0SW1hZ2VEYXRh
LAogICAgIFN0cm9rZVJlY3QsCiAgICAgU3Ryb2tlUGF0aCwKICAgICBTdHJva2VFbGxpcHNlLApA
QCAtMTYyLDYgKzE2NSw3IEBAIGNsYXNzIERpc3BsYXlMaXN0IHsKICAgICBXVEZfTUFLRV9OT05D
T1BZQUJMRShEaXNwbGF5TGlzdCk7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIGZyaWVu
ZCBjbGFzcyBSZWNvcmRlcjsKICAgICBmcmllbmQgY2xhc3MgUmVwbGF5ZXI7CisgICAgdGVtcGxh
dGU8dHlwZW5hbWUgQmFja2VuZFR5cGU+IGZyaWVuZCBjbGFzcyBJbWFnZUJ1ZmZlcjsKIHB1Ymxp
YzoKICAgICBEaXNwbGF5TGlzdCgpID0gZGVmYXVsdDsKICAgICBEaXNwbGF5TGlzdChEaXNwbGF5
TGlzdCYmKSA9IGRlZmF1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJbWFnZUJ1ZmZlci5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SW1hZ2VCdWZm
ZXIuaAppbmRleCBhMDI4N2Y4NWRkYjYwZDdiZGMwMDFmYmJhZTQ3NjRhYWFlM2Q0ZjAwLi4wNTZk
MWJmZDRkZjI4ODczYzFiY2U4Y2Q5NGQ3Y2E1NTNhMGUzNzU4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJbWFnZUJ1
ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0
cy9EaXNwbGF5TGlzdEltYWdlQnVmZmVyLmgKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2luY2x1ZGUg
IkNvbmNyZXRlSW1hZ2VCdWZmZXIuaCIKICNpbmNsdWRlICJEaXNwbGF5TGlzdERyYXdpbmdDb250
ZXh0LmgiCisjaW5jbHVkZSAiRGlzcGxheUxpc3RJdGVtcy5oIgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiBuYW1lc3BhY2UgRGlzcGxheUxpc3QgewpAQCAtNjIsNiArNjMsMTEgQEAgcHVibGljOgog
ICAgICAgICBmbHVzaERyYXdpbmdDb250ZXh0KCk7CiAgICAgfQogCisgICAgdm9pZCBwdXRJbWFn
ZURhdGEoQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBpbnB1dEZvcm1hdCwgY29uc3QgSW1hZ2VEYXRh
JiBpbWFnZURhdGEsIGNvbnN0IEludFJlY3QmIHNyY1JlY3QsIGNvbnN0IEludFBvaW50JiBkZXN0
UG9pbnQgPSB7IH0pIG92ZXJyaWRlCisgICAgeworICAgICAgICBtX2RyYXdpbmdDb250ZXh0LmRp
c3BsYXlMaXN0KCkuYXBwZW5kKFB1dEltYWdlRGF0YTo6Y3JlYXRlKGlucHV0Rm9ybWF0LCBpbWFn
ZURhdGEsIHNyY1JlY3QsIGRlc3RQb2ludCkpOworICAgIH0KKwogICAgIEdyYXBoaWNzQ29udGV4
dCYgY29udGV4dCgpIGNvbnN0IG92ZXJyaWRlCiAgICAgewogICAgICAgICByZXR1cm4gbV9kcmF3
aW5nQ29udGV4dC5jb250ZXh0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHAK
aW5kZXggOTFhYjNiZjdkODdiMjQ3YWI2MThkOTgzZGI3NTRiYzJiMjE0MGU2NC4uNmRkODY5NmQ0
NzM0YTBiMDE1ODcyNzE1NmE4MzllMGE2NmI4ODI4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdEl0ZW1zLmNwcApAQCAtMjcsNiArMjcsOCBAQAogI2luY2x1ZGUgIkRpc3BsYXlMaXN0SXRl
bXMuaCIKIAogI2luY2x1ZGUgIkZvbnRDYXNjYWRlLmgiCisjaW5jbHVkZSAiSW1hZ2VEYXRhLmgi
CisjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvVGV4dFN0cmVh
bS5oPgogCiAjaWYgVVNFKENHKQpAQCAtMTM4LDYgKzE0MCw4IEBAIHNpemVfdCBJdGVtOjpzaXpl
SW5CeXRlcyhjb25zdCBJdGVtJiBpdGVtKQogICAgICAgICByZXR1cm4gc2l6ZW9mKGRvd25jYXN0
PEZpbGxQYXRoPihpdGVtKSk7CiAgICAgY2FzZSBJdGVtVHlwZTo6RmlsbEVsbGlwc2U6CiAgICAg
ICAgIHJldHVybiBzaXplb2YoZG93bmNhc3Q8RmlsbEVsbGlwc2U+KGl0ZW0pKTsKKyAgICBjYXNl
IEl0ZW1UeXBlOjpQdXRJbWFnZURhdGE6CisgICAgICAgIHJldHVybiBzaXplb2YoZG93bmNhc3Q8
UHV0SW1hZ2VEYXRhPihpdGVtKSk7CiAgICAgY2FzZSBJdGVtVHlwZTo6U3Ryb2tlUmVjdDoKICAg
ICAgICAgcmV0dXJuIHNpemVvZihkb3duY2FzdDxTdHJva2VSZWN0PihpdGVtKSk7CiAgICAgY2Fz
ZSBJdGVtVHlwZTo6U3Ryb2tlUGF0aDoKQEAgLTExNTMsNiArMTE1NywzNCBAQCBzdGF0aWMgVGV4
dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgRmlsbEVsbGlwc2UmIGl0
ZW0pCiAgICAgcmV0dXJuIHRzOwogfQogCitQdXRJbWFnZURhdGE6OlB1dEltYWdlRGF0YShBbHBo
YVByZW11bHRpcGxpY2F0aW9uIGlucHV0Rm9ybWF0LCBjb25zdCBJbWFnZURhdGEmIGltYWdlRGF0
YSwgY29uc3QgSW50UmVjdCYgc3JjUmVjdCwgY29uc3QgSW50UG9pbnQmIGRlc3RQb2ludCkKKyAg
ICA6IERyYXdpbmdJdGVtKEl0ZW1UeXBlOjpQdXRJbWFnZURhdGEpCisgICAgLCBtX2lucHV0Rm9y
bWF0KGlucHV0Rm9ybWF0KQorICAgICwgbV9pbWFnZURhdGFTaXplKGltYWdlRGF0YS5zaXplKCkp
CisgICAgLCBtX2RhdGEoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoaW1hZ2VEYXRhLmRh
dGEoKS0+ZGF0YSgpLCBpbWFnZURhdGEuZGF0YSgpLT5ieXRlTGVuZ3RoKCkpKSAvLyBUaGlzIGNv
cHkgaXMgYWN0dWFsbHkgcmVxdWlyZWQgdG8gcHJlc2VydmUgdGhlIHNlbWFudGljcyBvZiBwdXRJ
bWFnZURhdGEoKS4KKyAgICAsIG1fc3JjUmVjdChzcmNSZWN0KQorICAgICwgbV9kZXN0UG9pbnQo
ZGVzdFBvaW50KQoreworICAgIEFTU0VSVChpbWFnZURhdGEuZGF0YSgpKTsKK30KKworUHV0SW1h
Z2VEYXRhOjp+UHV0SW1hZ2VEYXRhKCkgPSBkZWZhdWx0OworCit2b2lkIFB1dEltYWdlRGF0YTo6
YXBwbHkoR3JhcGhpY3NDb250ZXh0JikgY29uc3QKK3sKKyAgICAvLyBGSVhNRTogSW1wbGVtZW50
IHRoaXMKK30KKworc3RhdGljIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMs
IGNvbnN0IFB1dEltYWdlRGF0YSYgaXRlbSkKK3sKKyAgICB0cyA8PCBzdGF0aWNfY2FzdDxjb25z
dCBEcmF3aW5nSXRlbSY+KGl0ZW0pOworICAgIHRzLmR1bXBQcm9wZXJ0eSgiaW5wdXRGb3JtYXQi
LCBpdGVtLmlucHV0Rm9ybWF0KCkpOworICAgIHRzLmR1bXBQcm9wZXJ0eSgiaW1hZ2VEYXRhU2l6
ZSIsIGl0ZW0uaW1hZ2VEYXRhU2l6ZSgpKTsKKyAgICB0cy5kdW1wUHJvcGVydHkoInNyY1JlY3Qi
LCBpdGVtLnNyY1JlY3QoKSk7CisgICAgdHMuZHVtcFByb3BlcnR5KCJkZXN0UG9pbnQiLCBpdGVt
LmRlc3RQb2ludCgpKTsKKyAgICByZXR1cm4gdHM7Cit9CisKIFN0cm9rZVJlY3Q6OlN0cm9rZVJl
Y3QoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBmbG9hdCBsaW5lV2lkdGgpCiAgICAgOiBEcmF3aW5n
SXRlbShJdGVtVHlwZTo6U3Ryb2tlUmVjdCkKICAgICAsIG1fcmVjdChyZWN0KQpAQCAtMTM4MSw2
ICsxNDEzLDcgQEAgc3RhdGljIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMs
IGNvbnN0IEl0ZW1UeXBlJiB0eXBlKQogICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxSZWN0V2l0aFJv
dW5kZWRIb2xlOiB0cyA8PCAiZmlsbC1yZWN0LXdpdGgtcm91bmRlZC1ob2xlIjsgYnJlYWs7CiAg
ICAgY2FzZSBJdGVtVHlwZTo6RmlsbFBhdGg6IHRzIDw8ICJmaWxsLXBhdGgiOyBicmVhazsKICAg
ICBjYXNlIEl0ZW1UeXBlOjpGaWxsRWxsaXBzZTogdHMgPDwgImZpbGwtZWxsaXBzZSI7IGJyZWFr
OworICAgIGNhc2UgSXRlbVR5cGU6OlB1dEltYWdlRGF0YTogdHMgPDwgInB1dC1pbWFnZS1kYXRh
IjsgYnJlYWs7CiAgICAgY2FzZSBJdGVtVHlwZTo6U3Ryb2tlUmVjdDogdHMgPDwgInN0cm9rZS1y
ZWN0IjsgYnJlYWs7CiAgICAgY2FzZSBJdGVtVHlwZTo6U3Ryb2tlUGF0aDogdHMgPDwgInN0cm9r
ZS1wYXRoIjsgYnJlYWs7CiAgICAgY2FzZSBJdGVtVHlwZTo6U3Ryb2tlRWxsaXBzZTogdHMgPDwg
InN0cm9rZS1lbGxpcHNlIjsgYnJlYWs7CkBAIC0xNTE3LDYgKzE1NTAsOSBAQCBUZXh0U3RyZWFt
JiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBJdGVtJiBpdGVtKQogICAgIGNhc2Ug
SXRlbVR5cGU6OkZpbGxFbGxpcHNlOgogICAgICAgICB0cyA8PCBkb3duY2FzdDxGaWxsRWxsaXBz
ZT4oaXRlbSk7CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgSXRlbVR5cGU6OlB1dEltYWdlRGF0
YToKKyAgICAgICAgdHMgPDwgZG93bmNhc3Q8UHV0SW1hZ2VEYXRhPihpdGVtKTsKKyAgICAgICAg
YnJlYWs7CiAgICAgY2FzZSBJdGVtVHlwZTo6U3Ryb2tlUmVjdDoKICAgICAgICAgdHMgPDwgZG93
bmNhc3Q8U3Ryb2tlUmVjdD4oaXRlbSk7CiAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRl
bXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdEl0ZW1zLmgKaW5kZXggOTdmZDBhMDBhNGQ0YmM2ZTc2MTI3MmQ5NmViNzQ2NjczMDJm
ODBhNi4uMzIyYzE4MzllYTAwZmY1NjJhNzg0MjZiNzhhMzQwOWI2ZGM1NjkwNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlM
aXN0SXRlbXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5
bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiR2x5
cGhCdWZmZXIuaCIKICNpbmNsdWRlICJJbWFnZS5oIgogI2luY2x1ZGUgIlBhdHRlcm4uaCIKKyNp
bmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2lu
Y2x1ZGUgPHd0Zi9UeXBlQ2FzdHMuaD4KIApAQCAtNDEsNiArNDIsOCBAQCBjbGFzcyBUZXh0U3Ry
ZWFtOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2VudW0gY2xhc3MgQWxwaGFQcmVtdWx0aXBs
aWNhdGlvbiA6IHVpbnQ4X3Q7CitjbGFzcyBJbWFnZURhdGE7CiBzdHJ1Y3QgSW1hZ2VQYWludGlu
Z09wdGlvbnM7CiAKIG5hbWVzcGFjZSBEaXNwbGF5TGlzdCB7CkBAIC0yNDU3LDYgKzI0NjAsODUg
QEAgT3B0aW9uYWw8UmVmPEZpbGxFbGxpcHNlPj4gRmlsbEVsbGlwc2U6OmRlY29kZShEZWNvZGVy
JiBkZWNvZGVyKQogICAgIHJldHVybiBGaWxsRWxsaXBzZTo6Y3JlYXRlKCpyZWN0KTsKIH0KIAor
Y2xhc3MgUHV0SW1hZ2VEYXRhIDogcHVibGljIERyYXdpbmdJdGVtIHsKK3B1YmxpYzoKKyAgICBz
dGF0aWMgUmVmPFB1dEltYWdlRGF0YT4gY3JlYXRlKEFscGhhUHJlbXVsdGlwbGljYXRpb24gaW5w
dXRGb3JtYXQsIGNvbnN0IEltYWdlRGF0YSYgaW1hZ2VEYXRhLCBjb25zdCBJbnRSZWN0JiBzcmNS
ZWN0LCBjb25zdCBJbnRQb2ludCYgZGVzdFBvaW50KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgUHV0SW1hZ2VEYXRhKGlucHV0Rm9ybWF0LCBpbWFnZURhdGEsIHNyY1JlY3Qs
IGRlc3RQb2ludCkpOworICAgIH0KKyAgICBzdGF0aWMgUmVmPFB1dEltYWdlRGF0YT4gY3JlYXRl
KEFscGhhUHJlbXVsdGlwbGljYXRpb24gaW5wdXRGb3JtYXQsIGNvbnN0IEludFNpemUmIGltYWdl
RGF0YVNpemUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgZGF0YSwgY29uc3QgSW50UmVjdCYgc3JjUmVj
dCwgY29uc3QgSW50UG9pbnQmIGRlc3RQb2ludCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IFB1dEltYWdlRGF0YShpbnB1dEZvcm1hdCwgaW1hZ2VEYXRhU2l6ZSwgV1RGTW92
ZShkYXRhKSwgc3JjUmVjdCwgZGVzdFBvaW50KSk7CisgICAgfQorCisgICAgV0VCQ09SRV9FWFBP
UlQgdmlydHVhbCB+UHV0SW1hZ2VEYXRhKCk7CisKKyAgICBBbHBoYVByZW11bHRpcGxpY2F0aW9u
IGlucHV0Rm9ybWF0KCkgY29uc3QgeyByZXR1cm4gbV9pbnB1dEZvcm1hdDsgfQorICAgIEludFNp
emUgaW1hZ2VEYXRhU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1faW1hZ2VEYXRhU2l6ZTsgfQorICAg
IEludFJlY3Qgc3JjUmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fc3JjUmVjdDsgfQorICAgIEludFBv
aW50IGRlc3RQb2ludCgpIGNvbnN0IHsgcmV0dXJuIG1fZGVzdFBvaW50OyB9CisKKyAgICB0ZW1w
bGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CisgICAgdGVt
cGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPFJlZjxQdXRJbWFnZURhdGE+PiBk
ZWNvZGUoRGVjb2RlciYpOworCitwcml2YXRlOgorICAgIFdFQkNPUkVfRVhQT1JUIFB1dEltYWdl
RGF0YShBbHBoYVByZW11bHRpcGxpY2F0aW9uIGlucHV0Rm9ybWF0LCBjb25zdCBJbWFnZURhdGEm
LCBjb25zdCBJbnRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbnRQb2ludCYgZGVzdFBvaW50KTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBQdXRJbWFnZURhdGEoQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBpbnB1
dEZvcm1hdCwgY29uc3QgSW50U2l6ZSYgaW1hZ2VEYXRhU2l6ZSwgUmVmPFNoYXJlZEJ1ZmZlcj4m
JiBkYXRhLCBjb25zdCBJbnRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbnRQb2ludCYgZGVzdFBvaW50
KTsKKworICAgIHZvaWQgYXBwbHkoR3JhcGhpY3NDb250ZXh0JikgY29uc3Qgb3ZlcnJpZGU7CisK
KyAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGxvY2FsQm91bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4
dCYpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIEZsb2F0UmVjdChtX2Rlc3RQb2ludCwgbV9zcmNS
ZWN0LnNpemUoKSk7IH0KKworICAgIEFscGhhUHJlbXVsdGlwbGljYXRpb24gbV9pbnB1dEZvcm1h
dDsKKyAgICBJbnRTaXplIG1faW1hZ2VEYXRhU2l6ZTsKKyAgICBSZWY8U2hhcmVkQnVmZmVyPiBt
X2RhdGE7CisgICAgSW50UmVjdCBtX3NyY1JlY3Q7CisgICAgSW50UG9pbnQgbV9kZXN0UG9pbnQ7
Cit9OworCit0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgordm9pZCBQdXRJbWFnZURhdGE6OmVuY29k
ZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAoreworICAgIGVuY29kZXIgPDwgbV9pbnB1dEZvcm1h
dDsKKyAgICBlbmNvZGVyIDw8IG1faW1hZ2VEYXRhU2l6ZTsKKyAgICBlbmNvZGVyIDw8IG1fZGF0
YTsKKyAgICBlbmNvZGVyIDw8IG1fc3JjUmVjdDsKKyAgICBlbmNvZGVyIDw8IG1fZGVzdFBvaW50
OworfQorCit0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgorT3B0aW9uYWw8UmVmPFB1dEltYWdlRGF0
YT4+IFB1dEltYWdlRGF0YTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit7CisgICAgT3B0aW9u
YWw8QWxwaGFQcmVtdWx0aXBsaWNhdGlvbj4gaW5wdXRGb3JtYXQ7CisgICAgT3B0aW9uYWw8SW50
U2l6ZT4gaW1hZ2VEYXRhU2l6ZTsKKyAgICBPcHRpb25hbDxSZWY8U2hhcmVkQnVmZmVyPj4gZGF0
YTsKKyAgICBPcHRpb25hbDxJbnRSZWN0PiBzcmNSZWN0OworICAgIE9wdGlvbmFsPEludFBvaW50
PiBkZXN0UG9pbnQ7CisKKyAgICBkZWNvZGVyID4+IGlucHV0Rm9ybWF0OworICAgIGlmICghaW5w
dXRGb3JtYXQpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBkZWNvZGVyID4+
IGltYWdlRGF0YVNpemU7CisgICAgaWYgKCFpbWFnZURhdGFTaXplKQorICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworCisgICAgZGVjb2RlciA+PiBkYXRhOworICAgIGlmICghZGF0YSkKKyAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIGRlY29kZXIgPj4gc3JjUmVjdDsKKyAg
ICBpZiAoIXNyY1JlY3QpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBkZWNv
ZGVyID4+IGRlc3RQb2ludDsKKyAgICBpZiAoIWRlc3RQb2ludCkKKyAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKworCisgICAgcmV0dXJuIFB1dEltYWdlRGF0YTo6Y3JlYXRlKCppbnB1dEZv
cm1hdCwgKmltYWdlRGF0YVNpemUsIFdURk1vdmUoKmRhdGEpLCAqc3JjUmVjdCwgKmRlc3RQb2lu
dCk7Cit9CisKIGNsYXNzIFN0cm9rZVJlY3QgOiBwdWJsaWMgRHJhd2luZ0l0ZW0gewogcHVibGlj
OgogICAgIHN0YXRpYyBSZWY8U3Ryb2tlUmVjdD4gY3JlYXRlKGNvbnN0IEZsb2F0UmVjdCYgcmVj
dCwgZmxvYXQgbGluZVdpZHRoKQpAQCAtMjg1Miw2ICsyOTM0LDkgQEAgdm9pZCBJdGVtOjplbmNv
ZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKICAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsRWxsaXBz
ZToKICAgICAgICAgZW5jb2RlciA8PCBkb3duY2FzdDxGaWxsRWxsaXBzZT4oKnRoaXMpOwogICAg
ICAgICBicmVhazsKKyAgICBjYXNlIEl0ZW1UeXBlOjpQdXRJbWFnZURhdGE6CisgICAgICAgIGVu
Y29kZXIgPDwgZG93bmNhc3Q8UHV0SW1hZ2VEYXRhPigqdGhpcyk7CisgICAgICAgIGJyZWFrOwog
ICAgIGNhc2UgSXRlbVR5cGU6OlN0cm9rZVJlY3Q6CiAgICAgICAgIGVuY29kZXIgPDwgZG93bmNh
c3Q8U3Ryb2tlUmVjdD4oKnRoaXMpOwogICAgICAgICBicmVhazsKQEAgLTMwNTEsNiArMzEzNiwx
MCBAQCBPcHRpb25hbDxSZWY8SXRlbT4+IEl0ZW06OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQog
ICAgICAgICBpZiAoYXV0byBpdGVtID0gRmlsbEVsbGlwc2U6OmRlY29kZShkZWNvZGVyKSkKICAg
ICAgICAgICAgIHJldHVybiBzdGF0aWNfcmVmZXJlbmNlX2Nhc3Q8SXRlbT4oV1RGTW92ZSgqaXRl
bSkpOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIEl0ZW1UeXBlOjpQdXRJbWFnZURhdGE6Cisg
ICAgICAgIGlmIChhdXRvIGl0ZW0gPSBQdXRJbWFnZURhdGE6OmRlY29kZShkZWNvZGVyKSkKKyAg
ICAgICAgICAgIHJldHVybiBzdGF0aWNfcmVmZXJlbmNlX2Nhc3Q8SXRlbT4oV1RGTW92ZSgqaXRl
bSkpOworICAgICAgICBicmVhazsKICAgICBjYXNlIEl0ZW1UeXBlOjpTdHJva2VSZWN0OgogICAg
ICAgICBpZiAoYXV0byBpdGVtID0gU3Ryb2tlUmVjdDo6ZGVjb2RlKGRlY29kZXIpKQogICAgICAg
ICAgICAgcmV0dXJuIHN0YXRpY19yZWZlcmVuY2VfY2FzdDxJdGVtPihXVEZNb3ZlKCppdGVtKSk7
CkBAIC0zMTUwLDYgKzMyMzksNyBAQCBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0RJU1BMQVlMSVNU
X0lURU0oRmlsbFJvdW5kZWRSZWN0KQogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19ESVNQTEFZTElT
VF9JVEVNKEZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlKQogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19E
SVNQTEFZTElTVF9JVEVNKEZpbGxQYXRoKQogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19ESVNQTEFZ
TElTVF9JVEVNKEZpbGxFbGxpcHNlKQorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19ESVNQTEFZTElT
VF9JVEVNKFB1dEltYWdlRGF0YSkKIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRElTUExBWUxJU1Rf
SVRFTShTdHJva2VSZWN0KQogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19ESVNQTEFZTElTVF9JVEVN
KFN0cm9rZVBhdGgpCiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0RJU1BMQVlMSVNUX0lURU0oU3Ry
b2tlRWxsaXBzZSkKQEAgLTMyMDksNiArMzI5OSw3IEBAIHRlbXBsYXRlPD4gc3RydWN0IEVudW1U
cmFpdHM8V2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlPiB7CiAgICAgV2ViQ29yZTo6RGlz
cGxheUxpc3Q6Okl0ZW1UeXBlOjpGaWxsUmVjdFdpdGhSb3VuZGVkSG9sZSwKICAgICBXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkZpbGxQYXRoLAogICAgIFdlYkNvcmU6OkRpc3BsYXlM
aXN0OjpJdGVtVHlwZTo6RmlsbEVsbGlwc2UsCisgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0
ZW1UeXBlOjpQdXRJbWFnZURhdGEsCiAgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBl
OjpTdHJva2VSZWN0LAogICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6U3Ryb2tl
UGF0aCwKICAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OlN0cm9rZUVsbGlwc2Us
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAKaW5kZXggM2NhZDE4ODYx
MGZjYTAxZmY4NTdkMzJjZjZkNmVlNTJiNmJhYTMzZS4uOTFlNGEyYjAyNDQ5ZjBhZmMwZTJhODhl
ZTgyYjdmMjc5MzFjOWE1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVy
LmNwcApAQCAtMzc5LDcgKzM3OSw3IEBAIEludFJlY3QgUmVjb3JkZXI6OmNsaXBCb3VuZHMoKQog
ICAgIHJldHVybiBJbnRSZWN0KC0yMDQ4LCAtMjA0OCwgNDA5NiwgNDA5Nik7CiB9CiAKLXZvaWQg
UmVjb3JkZXI6OmNsaXBUb0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyJiwgY29uc3QgRmxvYXRSZWN0
JikKK3ZvaWQgUmVjb3JkZXI6OmNsaXBUb0ltYWdlQnVmZmVyKFdlYkNvcmU6OkltYWdlQnVmZmVy
JiwgY29uc3QgRmxvYXRSZWN0JikKIHsKICAgICBXVEZMb2dBbHdheXMoIkdyYXBoaWNzQ29udGV4
dDo6Y2xpcFRvSW1hZ2VCdWZmZXIgaXMgbm90IGNvbXBhdGlibGUgd2l0aCBEaXNwbGF5TGlzdDo6
UmVjb3JkZXIuIik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaAppbmRl
eCBiZjZjYTU1YTljYTVlMTQzNjE0MTNhZmZlMmEzOGMwOTg5ZGYzNDdkLi44ZTcxYWYwOTQwMmE0
ODdhOTJiNGVjN2IyYmMwN2Y5YjJiMTFhOWFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dFJlY29yZGVyLmgKQEAgLTEyNCw3ICsxMjQsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgY2xpcE91
dChjb25zdCBQYXRoJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBjbGlwUGF0aChjb25zdCBQYXRoJiwg
V2luZFJ1bGUpIG92ZXJyaWRlOwogICAgIEludFJlY3QgY2xpcEJvdW5kcygpIG92ZXJyaWRlOwot
ICAgIHZvaWQgY2xpcFRvSW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXImLCBjb25zdCBGbG9hdFJlY3Qm
KSBvdmVycmlkZTsKKyAgICB2b2lkIGNsaXBUb0ltYWdlQnVmZmVyKFdlYkNvcmU6OkltYWdlQnVm
ZmVyJiwgY29uc3QgRmxvYXRSZWN0Jikgb3ZlcnJpZGU7CiAgICAgCiAgICAgdm9pZCBhcHBseURl
dmljZVNjYWxlRmFjdG9yKGZsb2F0KSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TaGFyZWQvV2ViUHJlZmVyZW5jZXMueWFtbCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dl
YlByZWZlcmVuY2VzLnlhbWwKaW5kZXggYTc3OWUzM2Y0NDIzZGQxODY0MDY1ZjlmYTcyNjdlOWQw
OWQ4ZDE3NC4uOGJkYWRjOGIyZjU3MDJhZWJiMzMxYjIzZjUxZDkxNWY3NTdkMDNmYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJlZmVyZW5jZXMueWFtbAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJQcmVmZXJlbmNlcy55YW1sCkBAIC0xNzQ3LDcgKzE3NDcsNyBA
QCBDYXB0dXJlQXVkaW9JbkdQVVByb2Nlc3NFbmFibGVkOgogCiBSZW5kZXJDYW52YXNJbkdQVVBy
b2Nlc3NFbmFibGVkOgogICB0eXBlOiBib29sCi0gIGRlZmF1bHRWYWx1ZTogZmFsc2UKKyAgZGVm
YXVsdFZhbHVlOiB0cnVlCiAgIGh1bWFuUmVhZGFibGVOYW1lOiAiUmVuZGVyIGNhbnZhcyBpbiBH
UFUgUHJvY2VzcyIKICAgaHVtYW5SZWFkYWJsZURlc2NyaXB0aW9uOiAiRW5hYmxlIGNhbnZhcyBy
ZW5kZXJpbmcgaW4gR1BVIFByb2Nlc3MiCiAgIGNhdGVnb3J5OiBpbnRlcm5hbApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdC
YWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZC5jcHAKaW5kZXggMTk1ODMxNjVhY2ZmOGFjNjI3OTVlYzE2OGNjOTA5
YjZhZWU2Yzk4YS4uYTY5NzFjZWM1NzIzMWI1OTU5NzVhYmE5MmQxNWEwMjY2Zjk1ZTJlOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBo
aWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwCkBAIC03NSwxMyArNzUsMTMgQEAgdWludDY0
X3QgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6bWVzc2FnZVNlbmRlckRlc3RpbmF0aW9uSUQoKSBj
b25zdAogYm9vbCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjp3YWl0Rm9yQ3JlYXRlSW1hZ2VCdWZm
ZXJCYWNrZW5kKCkKIHsKICAgICBSZWY8SVBDOjpDb25uZWN0aW9uPiBjb25uZWN0aW9uID0gV2Vi
UHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlR1BVUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0
aW9uKCk7Ci0gICAgcmV0dXJuIGNvbm5lY3Rpb24tPndhaXRGb3JBbmREaXNwYXRjaEltbWVkaWF0
ZWx5PE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpDcmVhdGVJbWFnZUJ1ZmZlckJh
Y2tlbmQ+KG1fcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIsIDFfcywgSVBDOjpXYWl0Rm9yT3B0
aW9uOjpJbnRlcnJ1cHRXYWl0aW5nSWZTeW5jTWVzc2FnZUFycml2ZXMpOworICAgIHJldHVybiBj
b25uZWN0aW9uLT53YWl0Rm9yQW5kRGlzcGF0Y2hJbW1lZGlhdGVseTxNZXNzYWdlczo6UmVtb3Rl
UmVuZGVyaW5nQmFja2VuZDo6Q3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kPihtX3JlbmRlcmluZ0Jh
Y2tlbmRJZGVudGlmaWVyLCBTZWNvbmRzOjppbmZpbml0eSgpLCBJUEM6OldhaXRGb3JPcHRpb246
OkludGVycnVwdFdhaXRpbmdJZlN5bmNNZXNzYWdlQXJyaXZlcyk7CiB9CiAKIGJvb2wgUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZDo6d2FpdEZvckNvbW1pdEltYWdlQnVmZmVyRmx1c2hDb250ZXh0KCkK
IHsKICAgICBSZWY8SVBDOjpDb25uZWN0aW9uPiBjb25uZWN0aW9uID0gV2ViUHJvY2Vzczo6c2lu
Z2xldG9uKCkuZW5zdXJlR1BVUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCk7Ci0gICAg
cmV0dXJuIGNvbm5lY3Rpb24tPndhaXRGb3JBbmREaXNwYXRjaEltbWVkaWF0ZWx5PE1lc3NhZ2Vz
OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpDb21taXRJbWFnZUJ1ZmZlckZsdXNoQ29udGV4dD4o
bV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciwgMV9zLCBJUEM6OldhaXRGb3JPcHRpb246Oklu
dGVycnVwdFdhaXRpbmdJZlN5bmNNZXNzYWdlQXJyaXZlcyk7CisgICAgcmV0dXJuIGNvbm5lY3Rp
b24tPndhaXRGb3JBbmREaXNwYXRjaEltbWVkaWF0ZWx5PE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJp
bmdCYWNrZW5kOjpDb21taXRJbWFnZUJ1ZmZlckZsdXNoQ29udGV4dD4obV9yZW5kZXJpbmdCYWNr
ZW5kSWRlbnRpZmllciwgU2Vjb25kczo6aW5maW5pdHkoKSwgSVBDOjpXYWl0Rm9yT3B0aW9uOjpJ
bnRlcnJ1cHRXYWl0aW5nSWZTeW5jTWVzc2FnZUFycml2ZXMpOwogfQogCiBzdGQ6OnVuaXF1ZV9w
dHI8SW1hZ2VCdWZmZXI+IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmNyZWF0ZUltYWdlQnVmZmVy
KGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgU2hvdWxkQWNjZWxlcmF0ZSBzaG91bGRBY2NlbGVyYXRl
LCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UgY29sb3JTcGFjZSkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>392531</attachid>
            <date>2020-03-04 19:43:53 -0800</date>
            <delta_ts>2020-03-04 23:42:13 -0800</delta_ts>
            <desc>WIP</desc>
            <filename>bug-208621-20200304194351.patch</filename>
            <type>text/plain</type>
            <size>20191</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU3ODcxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTQwYWNhZGYyNzYzYWFh
MzBmYzJlODA2N2I3NDc5NWI2YjAyNTY2NC4uYmRmMDZiZDI0MTA5NzMxYmQ2YzA2OTg5ZTJiY2Q4
NDlmZGQ2ODY2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDIwLTAzLTA0ICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQVSBQcm9j
ZXNzXSBJbXBsZW1lbnQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELnB1dEltYWdlRGF0YSgpCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDg2MjEKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVz
dHMgKE9PUFMhKS4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0FscGhhUHJlbXVsdGlw
bGljYXRpb24uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3QuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3RJbWFnZUJ1ZmZlci5oOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6Oklt
YWdlQnVmZmVyOjpwdXRJbWFnZURhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rp
c3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3Bs
YXlMaXN0OjpJdGVtOjpzaXplSW5CeXRlcyk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlz
dDo6UHV0SW1hZ2VEYXRhOjpQdXRJbWFnZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxh
eUxpc3Q6OlB1dEltYWdlRGF0YTo6YXBwbHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlz
cGxheUxpc3Q6Om9wZXJhdG9yPDwpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmg6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlz
dDo6UHV0SW1hZ2VEYXRhOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6
OlB1dEltYWdlRGF0YTo6aW5wdXRGb3JtYXQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlz
cGxheUxpc3Q6OlB1dEltYWdlRGF0YTo6aW1hZ2VEYXRhU2l6ZSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6UHV0SW1hZ2VEYXRhOjpzcmNSZWN0IGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpQdXRJbWFnZURhdGE6OmRlc3RQb2ludCBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UHV0SW1hZ2VEYXRhOjplbmNvZGUgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlB1dEltYWdlRGF0YTo6ZGVjb2Rl
KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtOjplbmNvZGUgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW06OmRlY29kZSk6CisKIDIwMjAtMDMt
MDQgIEFudG9pbmUgUXVpbnQgIDxncmFvdXRzQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgYW4g
U1BJIHRvIGFsbG93IFVzZXJTdHlsZVNoZWV0IGluamVjdGlvbiB0byB0YXJnZXQgYSBzcGVjaWZp
YyBXS1dlYlZpZXcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggOGNjZjNmNGMzNmM3Zjc1NTFkZDNiYzFhNzM1MjEyZjhk
NGRmZWE4MS4uMDNhMWY3ODExMDc4OWJhZjIxZGE2MjFlNWY2ZjJjZjFjODhjYjhiOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxNSBAQAorMjAyMC0wMy0wNCAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4
ZmllbGRAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vzc10gSW1wbGVtZW50IENhbnZh
c1JlbmRlcmluZ0NvbnRleHQyRC5wdXRJbWFnZURhdGEoKQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA4NjIxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTaGFyZWQvV2ViUHJlZmVyZW5jZXMueWFtbDoK
KyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5k
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6d2FpdEZvckNy
ZWF0ZUltYWdlQnVmZmVyQmFja2VuZCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmQ6OndhaXRGb3JDb21taXRJbWFnZUJ1ZmZlckZsdXNoQ29udGV4dCk6CisKIDIwMjAt
MDMtMDQgIEFudG9pbmUgUXVpbnQgIDxncmFvdXRzQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQg
YW4gU1BJIHRvIGFsbG93IFVzZXJTdHlsZVNoZWV0IGluamVjdGlvbiB0byB0YXJnZXQgYSBzcGVj
aWZpYyBXS1dlYlZpZXcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0FscGhhUHJlbXVsdGlwbGljYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0FscGhhUHJlbXVsdGlwbGljYXRpb24uaAppbmRleCA2ZDFjYWVmODU0MWRlZTA2MmJm
ZTA1NDE2Y2RhMmYyYTdmNzkyNmUyLi5iMjc3ODBmNjJiMTkyZjU4MWMyNDM5MmFkMTkxN2UwYzVj
NWY3MDllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9BbHBo
YVByZW11bHRpcGxpY2F0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvQWxwaGFQcmVtdWx0aXBsaWNhdGlvbi5oCkBAIC0zNCw2ICszNCwxNyBAQCBlbnVtIGNsYXNz
IEFscGhhUHJlbXVsdGlwbGljYXRpb24gOiB1aW50OF90IHsKICAgICBVbnByZW11bHRpcGxpZWQK
IH07CiAKKwogV0VCQ09SRV9FWFBPUlQgV1RGOjpUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6
VGV4dFN0cmVhbSYsIEFscGhhUHJlbXVsdGlwbGljYXRpb24pOwogCi19IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCit9CisKK25hbWVzcGFjZSBXVEYgewordGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0
czxXZWJDb3JlOjpBbHBoYVByZW11bHRpcGxpY2F0aW9uPiB7CisgICAgdXNpbmcgdmFsdWVzID0g
RW51bVZhbHVlczwKKyAgICAgICAgV2ViQ29yZTo6QWxwaGFQcmVtdWx0aXBsaWNhdGlvbiwKKyAg
ICAgICAgV2ViQ29yZTo6QWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6UHJlbXVsdGlwbGllZCwKKyAg
ICAgICAgV2ViQ29yZTo6QWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6VW5wcmVtdWx0aXBsaWVkCisg
ICAgPjsKK307Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5oCmluZGV4IDJjNjc3ZjZiNzM2ZTc1MmU0
MWY4YjNmMjQzNDc2ZDQ1MDg0MjQzNzEuLjRlMjJhZjQ3ZGUwZDI4ZjUyNGE1OTRhYWY4MzNmYWRl
ZDZjNmJlYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rp
c3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5oCkBAIC0zOSw2ICszOSw4IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogbmFtZXNwYWNlIERpc3BsYXlMaXN0IHsKIAordGVtcGxhdGU8dHlw
ZW5hbWUgQmFja2VuZFR5cGU+IGNsYXNzIEltYWdlQnVmZmVyOworCiBlbnVtIGNsYXNzIEl0ZW1U
eXBlIDogdWludDhfdCB7CiAgICAgU2F2ZSwKICAgICBSZXN0b3JlLApAQCAtODEsNiArODMsNyBA
QCBlbnVtIGNsYXNzIEl0ZW1UeXBlIDogdWludDhfdCB7CiAgICAgRmlsbFJlY3RXaXRoUm91bmRl
ZEhvbGUsCiAgICAgRmlsbFBhdGgsCiAgICAgRmlsbEVsbGlwc2UsCisgICAgUHV0SW1hZ2VEYXRh
LAogICAgIFN0cm9rZVJlY3QsCiAgICAgU3Ryb2tlUGF0aCwKICAgICBTdHJva2VFbGxpcHNlLApA
QCAtMTYyLDYgKzE2NSw3IEBAIGNsYXNzIERpc3BsYXlMaXN0IHsKICAgICBXVEZfTUFLRV9OT05D
T1BZQUJMRShEaXNwbGF5TGlzdCk7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIGZyaWVu
ZCBjbGFzcyBSZWNvcmRlcjsKICAgICBmcmllbmQgY2xhc3MgUmVwbGF5ZXI7CisgICAgdGVtcGxh
dGU8dHlwZW5hbWUgQmFja2VuZFR5cGU+IGZyaWVuZCBjbGFzcyBJbWFnZUJ1ZmZlcjsKIHB1Ymxp
YzoKICAgICBEaXNwbGF5TGlzdCgpID0gZGVmYXVsdDsKICAgICBEaXNwbGF5TGlzdChEaXNwbGF5
TGlzdCYmKSA9IGRlZmF1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJbWFnZUJ1ZmZlci5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SW1hZ2VCdWZm
ZXIuaAppbmRleCBhMDI4N2Y4NWRkYjYwZDdiZGMwMDFmYmJhZTQ3NjRhYWFlM2Q0ZjAwLi4wNTZk
MWJmZDRkZjI4ODczYzFiY2U4Y2Q5NGQ3Y2E1NTNhMGUzNzU4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJbWFnZUJ1
ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0
cy9EaXNwbGF5TGlzdEltYWdlQnVmZmVyLmgKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2luY2x1ZGUg
IkNvbmNyZXRlSW1hZ2VCdWZmZXIuaCIKICNpbmNsdWRlICJEaXNwbGF5TGlzdERyYXdpbmdDb250
ZXh0LmgiCisjaW5jbHVkZSAiRGlzcGxheUxpc3RJdGVtcy5oIgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiBuYW1lc3BhY2UgRGlzcGxheUxpc3QgewpAQCAtNjIsNiArNjMsMTEgQEAgcHVibGljOgog
ICAgICAgICBmbHVzaERyYXdpbmdDb250ZXh0KCk7CiAgICAgfQogCisgICAgdm9pZCBwdXRJbWFn
ZURhdGEoQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBpbnB1dEZvcm1hdCwgY29uc3QgSW1hZ2VEYXRh
JiBpbWFnZURhdGEsIGNvbnN0IEludFJlY3QmIHNyY1JlY3QsIGNvbnN0IEludFBvaW50JiBkZXN0
UG9pbnQgPSB7IH0pIG92ZXJyaWRlCisgICAgeworICAgICAgICBtX2RyYXdpbmdDb250ZXh0LmRp
c3BsYXlMaXN0KCkuYXBwZW5kKFB1dEltYWdlRGF0YTo6Y3JlYXRlKGlucHV0Rm9ybWF0LCBpbWFn
ZURhdGEsIHNyY1JlY3QsIGRlc3RQb2ludCkpOworICAgIH0KKwogICAgIEdyYXBoaWNzQ29udGV4
dCYgY29udGV4dCgpIGNvbnN0IG92ZXJyaWRlCiAgICAgewogICAgICAgICByZXR1cm4gbV9kcmF3
aW5nQ29udGV4dC5jb250ZXh0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHAK
aW5kZXggOTFhYjNiZjdkODdiMjQ3YWI2MThkOTgzZGI3NTRiYzJiMjE0MGU2NC4uZWI5YmNlYzZi
YzEwNDhhZTM4N2VhOWU0NWNmZmU4ODU5MzUyMDg2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdEl0ZW1zLmNwcApAQCAtMjcsNiArMjcsOCBAQAogI2luY2x1ZGUgIkRpc3BsYXlMaXN0SXRl
bXMuaCIKIAogI2luY2x1ZGUgIkZvbnRDYXNjYWRlLmgiCisjaW5jbHVkZSAiSW1hZ2VEYXRhLmgi
CisjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvVGV4dFN0cmVh
bS5oPgogCiAjaWYgVVNFKENHKQpAQCAtMTM4LDYgKzE0MCw4IEBAIHNpemVfdCBJdGVtOjpzaXpl
SW5CeXRlcyhjb25zdCBJdGVtJiBpdGVtKQogICAgICAgICByZXR1cm4gc2l6ZW9mKGRvd25jYXN0
PEZpbGxQYXRoPihpdGVtKSk7CiAgICAgY2FzZSBJdGVtVHlwZTo6RmlsbEVsbGlwc2U6CiAgICAg
ICAgIHJldHVybiBzaXplb2YoZG93bmNhc3Q8RmlsbEVsbGlwc2U+KGl0ZW0pKTsKKyAgICBjYXNl
IEl0ZW1UeXBlOjpQdXRJbWFnZURhdGE6CisgICAgICAgIHJldHVybiBzaXplb2YoZG93bmNhc3Q8
UHV0SW1hZ2VEYXRhPihpdGVtKSk7CiAgICAgY2FzZSBJdGVtVHlwZTo6U3Ryb2tlUmVjdDoKICAg
ICAgICAgcmV0dXJuIHNpemVvZihkb3duY2FzdDxTdHJva2VSZWN0PihpdGVtKSk7CiAgICAgY2Fz
ZSBJdGVtVHlwZTo6U3Ryb2tlUGF0aDoKQEAgLTExNTMsNiArMTE1Nyw0NCBAQCBzdGF0aWMgVGV4
dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgRmlsbEVsbGlwc2UmIGl0
ZW0pCiAgICAgcmV0dXJuIHRzOwogfQogCitQdXRJbWFnZURhdGE6OlB1dEltYWdlRGF0YShBbHBo
YVByZW11bHRpcGxpY2F0aW9uIGlucHV0Rm9ybWF0LCBjb25zdCBJbWFnZURhdGEmIGltYWdlRGF0
YSwgY29uc3QgSW50UmVjdCYgc3JjUmVjdCwgY29uc3QgSW50UG9pbnQmIGRlc3RQb2ludCkKKyAg
ICA6IERyYXdpbmdJdGVtKEl0ZW1UeXBlOjpQdXRJbWFnZURhdGEpCisgICAgLCBtX2lucHV0Rm9y
bWF0KGlucHV0Rm9ybWF0KQorICAgICwgbV9pbWFnZURhdGFTaXplKGltYWdlRGF0YS5zaXplKCkp
CisgICAgLCBtX2RhdGEoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoaW1hZ2VEYXRhLmRh
dGEoKS0+ZGF0YSgpLCBpbWFnZURhdGEuZGF0YSgpLT5ieXRlTGVuZ3RoKCkpKSAvLyBUaGlzIGNv
cHkgaXMgYWN0dWFsbHkgcmVxdWlyZWQgdG8gcHJlc2VydmUgdGhlIHNlbWFudGljcyBvZiBwdXRJ
bWFnZURhdGEoKS4KKyAgICAsIG1fc3JjUmVjdChzcmNSZWN0KQorICAgICwgbV9kZXN0UG9pbnQo
ZGVzdFBvaW50KQoreworICAgIEFTU0VSVChpbWFnZURhdGEuZGF0YSgpKTsKK30KKworUHV0SW1h
Z2VEYXRhOjpQdXRJbWFnZURhdGEoQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBpbnB1dEZvcm1hdCwg
Y29uc3QgSW50U2l6ZSYgaW1hZ2VEYXRhU2l6ZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBj
b25zdCBJbnRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbnRQb2ludCYgZGVzdFBvaW50KQorICAgIDog
RHJhd2luZ0l0ZW0oSXRlbVR5cGU6OlB1dEltYWdlRGF0YSkKKyAgICAsIG1faW5wdXRGb3JtYXQo
aW5wdXRGb3JtYXQpCisgICAgLCBtX2ltYWdlRGF0YVNpemUoaW1hZ2VEYXRhU2l6ZSkKKyAgICAs
IG1fZGF0YShXVEZNb3ZlKGRhdGEpKQorICAgICwgbV9zcmNSZWN0KHNyY1JlY3QpCisgICAgLCBt
X2Rlc3RQb2ludChkZXN0UG9pbnQpCit7Cit9CisKK1B1dEltYWdlRGF0YTo6flB1dEltYWdlRGF0
YSgpID0gZGVmYXVsdDsKKwordm9pZCBQdXRJbWFnZURhdGE6OmFwcGx5KEdyYXBoaWNzQ29udGV4
dCYpIGNvbnN0Cit7CisgICAgLy8gRklYTUU6IEltcGxlbWVudCB0aGlzCit9CisKK3N0YXRpYyBU
ZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBQdXRJbWFnZURhdGEm
IGl0ZW0pCit7CisgICAgdHMgPDwgc3RhdGljX2Nhc3Q8Y29uc3QgRHJhd2luZ0l0ZW0mPihpdGVt
KTsKKyAgICB0cy5kdW1wUHJvcGVydHkoImlucHV0Rm9ybWF0IiwgaXRlbS5pbnB1dEZvcm1hdCgp
KTsKKyAgICB0cy5kdW1wUHJvcGVydHkoImltYWdlRGF0YVNpemUiLCBpdGVtLmltYWdlRGF0YVNp
emUoKSk7CisgICAgdHMuZHVtcFByb3BlcnR5KCJzcmNSZWN0IiwgaXRlbS5zcmNSZWN0KCkpOwor
ICAgIHRzLmR1bXBQcm9wZXJ0eSgiZGVzdFBvaW50IiwgaXRlbS5kZXN0UG9pbnQoKSk7CisgICAg
cmV0dXJuIHRzOworfQorCiBTdHJva2VSZWN0OjpTdHJva2VSZWN0KGNvbnN0IEZsb2F0UmVjdCYg
cmVjdCwgZmxvYXQgbGluZVdpZHRoKQogICAgIDogRHJhd2luZ0l0ZW0oSXRlbVR5cGU6OlN0cm9r
ZVJlY3QpCiAgICAgLCBtX3JlY3QocmVjdCkKQEAgLTEzODEsNiArMTQyMyw3IEBAIHN0YXRpYyBU
ZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBJdGVtVHlwZSYgdHlw
ZSkKICAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsUmVjdFdpdGhSb3VuZGVkSG9sZTogdHMgPDwgImZp
bGwtcmVjdC13aXRoLXJvdW5kZWQtaG9sZSI7IGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OkZp
bGxQYXRoOiB0cyA8PCAiZmlsbC1wYXRoIjsgYnJlYWs7CiAgICAgY2FzZSBJdGVtVHlwZTo6Rmls
bEVsbGlwc2U6IHRzIDw8ICJmaWxsLWVsbGlwc2UiOyBicmVhazsKKyAgICBjYXNlIEl0ZW1UeXBl
OjpQdXRJbWFnZURhdGE6IHRzIDw8ICJwdXQtaW1hZ2UtZGF0YSI7IGJyZWFrOwogICAgIGNhc2Ug
SXRlbVR5cGU6OlN0cm9rZVJlY3Q6IHRzIDw8ICJzdHJva2UtcmVjdCI7IGJyZWFrOwogICAgIGNh
c2UgSXRlbVR5cGU6OlN0cm9rZVBhdGg6IHRzIDw8ICJzdHJva2UtcGF0aCI7IGJyZWFrOwogICAg
IGNhc2UgSXRlbVR5cGU6OlN0cm9rZUVsbGlwc2U6IHRzIDw8ICJzdHJva2UtZWxsaXBzZSI7IGJy
ZWFrOwpAQCAtMTUxNyw2ICsxNTYwLDkgQEAgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3Ry
ZWFtJiB0cywgY29uc3QgSXRlbSYgaXRlbSkKICAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsRWxsaXBz
ZToKICAgICAgICAgdHMgPDwgZG93bmNhc3Q8RmlsbEVsbGlwc2U+KGl0ZW0pOwogICAgICAgICBi
cmVhazsKKyAgICBjYXNlIEl0ZW1UeXBlOjpQdXRJbWFnZURhdGE6CisgICAgICAgIHRzIDw8IGRv
d25jYXN0PFB1dEltYWdlRGF0YT4oaXRlbSk7CisgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSXRl
bVR5cGU6OlN0cm9rZVJlY3Q6CiAgICAgICAgIHRzIDw8IGRvd25jYXN0PFN0cm9rZVJlY3Q+KGl0
ZW0pOwogICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oCmluZGV4
IDk3ZmQwYTAwYTRkNGJjNmU3NjEyNzJkOTZlYjc0NjY3MzAyZjgwYTYuLjAxNmMxMjdmODU2YmYz
MjJiNTM0ZDYyODg5MTQ1OWNkYjM0ZDRkOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRl
bXMuaApAQCAtMjUsNiArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIkFscGhh
UHJlbXVsdGlwbGljYXRpb24uaCIKICNpbmNsdWRlICJEaXNwbGF5TGlzdC5oIgogI2luY2x1ZGUg
IkZsb2F0UG9pbnQuaCIKICNpbmNsdWRlICJGbG9hdFJvdW5kZWRSZWN0LmgiCkBAIC0zMiw2ICsz
Myw3IEBACiAjaW5jbHVkZSAiR2x5cGhCdWZmZXIuaCIKICNpbmNsdWRlICJJbWFnZS5oIgogI2lu
Y2x1ZGUgIlBhdHRlcm4uaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNpbmNsdWRlIDx3
dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9UeXBlQ2FzdHMuaD4KIApAQCAtNDEsOCAr
NDMsNDUgQEAgY2xhc3MgVGV4dFN0cmVhbTsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFz
cyBJbWFnZURhdGE7CiBzdHJ1Y3QgSW1hZ2VQYWludGluZ09wdGlvbnM7CiAKK2NsYXNzIFdlYkNv
cmVTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlIHsKK3B1YmxpYzoKKyAgICBXZWJDb3JlU2hhcmVk
QnVmZmVyRGF0YVJlZmVyZW5jZSgpID0gZGVmYXVsdDsKKyAgICBXZWJDb3JlU2hhcmVkQnVmZmVy
RGF0YVJlZmVyZW5jZShSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikgOiBtX2J1ZmZlcihX
VEZNb3ZlKGJ1ZmZlcikpIHsgfQorICAgIFdlYkNvcmVTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNl
KFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKSA6IG1fYnVmZmVyKFdURk1vdmUoYnVmZmVyKSkg
eyB9CisgICAgV2ViQ29yZVNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UoY29uc3QgU2hhcmVkQnVm
ZmVyJiBidWZmZXIpCisgICAgICAgIDogbV9idWZmZXIoU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSkK
KyAgICB7CisgICAgICAgIG1fYnVmZmVyLT5hcHBlbmQoYnVmZmVyKTsKKyAgICB9CisKKyAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKCkgeyByZXR1cm4gbV9idWZmZXI7IH0KKyAgICBj
b25zdCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9idWZm
ZXI7IH0KKworICAgIGNvbnN0IGNoYXIqIGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlciA/
IG1fYnVmZmVyLT5kYXRhKCkgOiBudWxscHRyOyB9CisgICAgc2l6ZV90IHNpemUoKSBjb25zdCB7
IHJldHVybiBtX2J1ZmZlciA/IG1fYnVmZmVyLT5zaXplKCkgOiAwOyB9CisgICAgYm9vbCBpc0Vt
cHR5KCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIgPyBtX2J1ZmZlci0+aXNFbXB0eSgpIDogdHJ1
ZTsgfQorCisgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYg
ZW5jb2RlcikgY29uc3QKKyAgICB7CisgICAgICAgIGVuY29kZXIgPDwgbV9idWZmZXI7CisgICAg
fQorCisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPFdlYkNvcmVT
aGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlPiBkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKKyAgICB7
CisgICAgICAgIE9wdGlvbmFsPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiBidWZmZXI7CisgICAgICAg
IGRlY29kZXIgPj4gYnVmZmVyOworICAgICAgICBpZiAoIWJ1ZmZlcikKKyAgICAgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiB7IFdURk1vdmUoKmJ1ZmZlcikgfTsK
KyAgICB9CisKK3ByaXZhdGU6CisgICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbV9i
dWZmZXI7Cit9OworCiBuYW1lc3BhY2UgRGlzcGxheUxpc3QgewogCiBjbGFzcyBEcmF3aW5nSXRl
bSA6IHB1YmxpYyBJdGVtIHsKQEAgLTI0NTcsNiArMjQ5Niw4NyBAQCBPcHRpb25hbDxSZWY8Rmls
bEVsbGlwc2U+PiBGaWxsRWxsaXBzZTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgcmV0
dXJuIEZpbGxFbGxpcHNlOjpjcmVhdGUoKnJlY3QpOwogfQogCitjbGFzcyBQdXRJbWFnZURhdGEg
OiBwdWJsaWMgRHJhd2luZ0l0ZW0geworcHVibGljOgorICAgIHN0YXRpYyBSZWY8UHV0SW1hZ2VE
YXRhPiBjcmVhdGUoQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBpbnB1dEZvcm1hdCwgY29uc3QgSW1h
Z2VEYXRhJiBpbWFnZURhdGEsIGNvbnN0IEludFJlY3QmIHNyY1JlY3QsIGNvbnN0IEludFBvaW50
JiBkZXN0UG9pbnQpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBQdXRJbWFn
ZURhdGEoaW5wdXRGb3JtYXQsIGltYWdlRGF0YSwgc3JjUmVjdCwgZGVzdFBvaW50KSk7CisgICAg
fQorICAgIHN0YXRpYyBSZWY8UHV0SW1hZ2VEYXRhPiBjcmVhdGUoQWxwaGFQcmVtdWx0aXBsaWNh
dGlvbiBpbnB1dEZvcm1hdCwgY29uc3QgSW50U2l6ZSYgaW1hZ2VEYXRhU2l6ZSwgUmVmPFNoYXJl
ZEJ1ZmZlcj4mJiBkYXRhLCBjb25zdCBJbnRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbnRQb2ludCYg
ZGVzdFBvaW50KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUHV0SW1hZ2VE
YXRhKGlucHV0Rm9ybWF0LCBpbWFnZURhdGFTaXplLCBXVEZNb3ZlKGRhdGEpLCBzcmNSZWN0LCBk
ZXN0UG9pbnQpKTsKKyAgICB9CisKKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIH5QdXRJbWFn
ZURhdGEoKTsKKworICAgIEFscGhhUHJlbXVsdGlwbGljYXRpb24gaW5wdXRGb3JtYXQoKSBjb25z
dCB7IHJldHVybiBtX2lucHV0Rm9ybWF0OyB9CisgICAgSW50U2l6ZSBpbWFnZURhdGFTaXplKCkg
Y29uc3QgeyByZXR1cm4gbV9pbWFnZURhdGFTaXplOyB9CisgICAgSW50UmVjdCBzcmNSZWN0KCkg
Y29uc3QgeyByZXR1cm4gbV9zcmNSZWN0OyB9CisgICAgSW50UG9pbnQgZGVzdFBvaW50KCkgY29u
c3QgeyByZXR1cm4gbV9kZXN0UG9pbnQ7IH0KKworICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+
IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVy
PiBzdGF0aWMgT3B0aW9uYWw8UmVmPFB1dEltYWdlRGF0YT4+IGRlY29kZShEZWNvZGVyJik7CisK
K3ByaXZhdGU6CisgICAgV0VCQ09SRV9FWFBPUlQgUHV0SW1hZ2VEYXRhKEFscGhhUHJlbXVsdGlw
bGljYXRpb24gaW5wdXRGb3JtYXQsIGNvbnN0IEltYWdlRGF0YSYsIGNvbnN0IEludFJlY3QmIHNy
Y1JlY3QsIGNvbnN0IEludFBvaW50JiBkZXN0UG9pbnQpOworICAgIFdFQkNPUkVfRVhQT1JUIFB1
dEltYWdlRGF0YShBbHBoYVByZW11bHRpcGxpY2F0aW9uIGlucHV0Rm9ybWF0LCBjb25zdCBJbnRT
aXplJiBpbWFnZURhdGFTaXplLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGRhdGEsIGNvbnN0IEludFJl
Y3QmIHNyY1JlY3QsIGNvbnN0IEludFBvaW50JiBkZXN0UG9pbnQpOworCisgICAgdm9pZCBhcHBs
eShHcmFwaGljc0NvbnRleHQmKSBjb25zdCBvdmVycmlkZTsKKworICAgIE9wdGlvbmFsPEZsb2F0
UmVjdD4gbG9jYWxCb3VuZHMoY29uc3QgR3JhcGhpY3NDb250ZXh0JikgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gRmxvYXRSZWN0KG1fZGVzdFBvaW50LCBtX3NyY1JlY3Quc2l6ZSgpKTsgfQorCisg
ICAgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBtX2lucHV0Rm9ybWF0OworICAgIEludFNpemUgbV9p
bWFnZURhdGFTaXplOworICAgIFJlZjxTaGFyZWRCdWZmZXI+IG1fZGF0YTsKKyAgICBJbnRSZWN0
IG1fc3JjUmVjdDsKKyAgICBJbnRQb2ludCBtX2Rlc3RQb2ludDsKK307CisKK3RlbXBsYXRlPGNs
YXNzIEVuY29kZXI+Cit2b2lkIFB1dEltYWdlRGF0YTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIp
IGNvbnN0Cit7CisgICAgV2ViQ29yZVNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2Ugc2hhcmVkQnVm
ZmVyRGF0YVJlZmVyZW5jZShtX2RhdGEuY29weVJlZigpKTsKKworICAgIGVuY29kZXIgPDwgbV9p
bnB1dEZvcm1hdDsKKyAgICBlbmNvZGVyIDw8IG1faW1hZ2VEYXRhU2l6ZTsKKyAgICBlbmNvZGVy
IDw8IHNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2U7CisgICAgZW5jb2RlciA8PCBtX3NyY1JlY3Q7
CisgICAgZW5jb2RlciA8PCBtX2Rlc3RQb2ludDsKK30KKwordGVtcGxhdGU8Y2xhc3MgRGVjb2Rl
cj4KK09wdGlvbmFsPFJlZjxQdXRJbWFnZURhdGE+PiBQdXRJbWFnZURhdGE6OmRlY29kZShEZWNv
ZGVyJiBkZWNvZGVyKQoreworICAgIE9wdGlvbmFsPEFscGhhUHJlbXVsdGlwbGljYXRpb24+IGlu
cHV0Rm9ybWF0OworICAgIE9wdGlvbmFsPEludFNpemU+IGltYWdlRGF0YVNpemU7CisgICAgT3B0
aW9uYWw8V2ViQ29yZVNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2U+IGRhdGE7CisgICAgT3B0aW9u
YWw8SW50UmVjdD4gc3JjUmVjdDsKKyAgICBPcHRpb25hbDxJbnRQb2ludD4gZGVzdFBvaW50Owor
CisgICAgZGVjb2RlciA+PiBpbnB1dEZvcm1hdDsKKyAgICBpZiAoIWlucHV0Rm9ybWF0KQorICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgZGVjb2RlciA+PiBpbWFnZURhdGFTaXpl
OworICAgIGlmICghaW1hZ2VEYXRhU2l6ZSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KworICAgIGRlY29kZXIgPj4gZGF0YTsKKyAgICBpZiAoIWRhdGEgfHwgIWRhdGEtPmJ1ZmZlcigp
KQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgZGVjb2RlciA+PiBzcmNSZWN0
OworICAgIGlmICghc3JjUmVjdCkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAg
IGRlY29kZXIgPj4gZGVzdFBvaW50OworICAgIGlmICghZGVzdFBvaW50KQorICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworCisKKyAgICByZXR1cm4gUHV0SW1hZ2VEYXRhOjpjcmVhdGUoKmlu
cHV0Rm9ybWF0LCAqaW1hZ2VEYXRhU2l6ZSwgZGF0YS0+YnVmZmVyKCkucmVsZWFzZU5vbk51bGwo
KSwgKnNyY1JlY3QsICpkZXN0UG9pbnQpOworfQorCiBjbGFzcyBTdHJva2VSZWN0IDogcHVibGlj
IERyYXdpbmdJdGVtIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFN0cm9rZVJlY3Q+IGNyZWF0
ZShjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGZsb2F0IGxpbmVXaWR0aCkKQEAgLTI4NTIsNiArMjk3
Miw5IEBAIHZvaWQgSXRlbTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAgY2Fz
ZSBJdGVtVHlwZTo6RmlsbEVsbGlwc2U6CiAgICAgICAgIGVuY29kZXIgPDwgZG93bmNhc3Q8Rmls
bEVsbGlwc2U+KCp0aGlzKTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJdGVtVHlwZTo6UHV0
SW1hZ2VEYXRhOgorICAgICAgICBlbmNvZGVyIDw8IGRvd25jYXN0PFB1dEltYWdlRGF0YT4oKnRo
aXMpOworICAgICAgICBicmVhazsKICAgICBjYXNlIEl0ZW1UeXBlOjpTdHJva2VSZWN0OgogICAg
ICAgICBlbmNvZGVyIDw8IGRvd25jYXN0PFN0cm9rZVJlY3Q+KCp0aGlzKTsKICAgICAgICAgYnJl
YWs7CkBAIC0zMDUxLDYgKzMxNzQsMTAgQEAgT3B0aW9uYWw8UmVmPEl0ZW0+PiBJdGVtOjpkZWNv
ZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICAgICAgaWYgKGF1dG8gaXRlbSA9IEZpbGxFbGxpcHNl
OjpkZWNvZGUoZGVjb2RlcikpCiAgICAgICAgICAgICByZXR1cm4gc3RhdGljX3JlZmVyZW5jZV9j
YXN0PEl0ZW0+KFdURk1vdmUoKml0ZW0pKTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJdGVt
VHlwZTo6UHV0SW1hZ2VEYXRhOgorICAgICAgICBpZiAoYXV0byBpdGVtID0gUHV0SW1hZ2VEYXRh
OjpkZWNvZGUoZGVjb2RlcikpCisgICAgICAgICAgICByZXR1cm4gc3RhdGljX3JlZmVyZW5jZV9j
YXN0PEl0ZW0+KFdURk1vdmUoKml0ZW0pKTsKKyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBJdGVt
VHlwZTo6U3Ryb2tlUmVjdDoKICAgICAgICAgaWYgKGF1dG8gaXRlbSA9IFN0cm9rZVJlY3Q6OmRl
Y29kZShkZWNvZGVyKSkKICAgICAgICAgICAgIHJldHVybiBzdGF0aWNfcmVmZXJlbmNlX2Nhc3Q8
SXRlbT4oV1RGTW92ZSgqaXRlbSkpOwpAQCAtMzE1MCw2ICszMjc3LDcgQEAgU1BFQ0lBTElaRV9U
WVBFX1RSQUlUU19ESVNQTEFZTElTVF9JVEVNKEZpbGxSb3VuZGVkUmVjdCkKIFNQRUNJQUxJWkVf
VFlQRV9UUkFJVFNfRElTUExBWUxJU1RfSVRFTShGaWxsUmVjdFdpdGhSb3VuZGVkSG9sZSkKIFNQ
RUNJQUxJWkVfVFlQRV9UUkFJVFNfRElTUExBWUxJU1RfSVRFTShGaWxsUGF0aCkKIFNQRUNJQUxJ
WkVfVFlQRV9UUkFJVFNfRElTUExBWUxJU1RfSVRFTShGaWxsRWxsaXBzZSkKK1NQRUNJQUxJWkVf
VFlQRV9UUkFJVFNfRElTUExBWUxJU1RfSVRFTShQdXRJbWFnZURhdGEpCiBTUEVDSUFMSVpFX1RZ
UEVfVFJBSVRTX0RJU1BMQVlMSVNUX0lURU0oU3Ryb2tlUmVjdCkKIFNQRUNJQUxJWkVfVFlQRV9U
UkFJVFNfRElTUExBWUxJU1RfSVRFTShTdHJva2VQYXRoKQogU1BFQ0lBTElaRV9UWVBFX1RSQUlU
U19ESVNQTEFZTElTVF9JVEVNKFN0cm9rZUVsbGlwc2UpCkBAIC0zMjA5LDYgKzMzMzcsNyBAQCB0
ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlw
ZT4gewogICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RmlsbFJlY3RXaXRoUm91
bmRlZEhvbGUsCiAgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpGaWxsUGF0aCwK
ICAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkZpbGxFbGxpcHNlLAorICAgIFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6UHV0SW1hZ2VEYXRhLAogICAgIFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6U3Ryb2tlUmVjdCwKICAgICBXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6SXRlbVR5cGU6OlN0cm9rZVBhdGgsCiAgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0
ZW1UeXBlOjpTdHJva2VFbGxpcHNlLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3Jk
ZXIuY3BwCmluZGV4IDNjYWQxODg2MTBmY2EwMWZmODU3ZDMyY2Y2ZDZlZTUyYjZiYWEzM2UuLjkx
ZTRhMmIwMjQ0OWYwYWZjMGUyYTg4ZWU4MmI3ZjI3OTMxYzlhNTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29y
ZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAKQEAgLTM3OSw3ICszNzksNyBAQCBJbnRSZWN0IFJl
Y29yZGVyOjpjbGlwQm91bmRzKCkKICAgICByZXR1cm4gSW50UmVjdCgtMjA0OCwgLTIwNDgsIDQw
OTYsIDQwOTYpOwogfQogCi12b2lkIFJlY29yZGVyOjpjbGlwVG9JbWFnZUJ1ZmZlcihJbWFnZUJ1
ZmZlciYsIGNvbnN0IEZsb2F0UmVjdCYpCit2b2lkIFJlY29yZGVyOjpjbGlwVG9JbWFnZUJ1ZmZl
cihXZWJDb3JlOjpJbWFnZUJ1ZmZlciYsIGNvbnN0IEZsb2F0UmVjdCYpCiB7CiAgICAgV1RGTG9n
QWx3YXlzKCJHcmFwaGljc0NvbnRleHQ6OmNsaXBUb0ltYWdlQnVmZmVyIGlzIG5vdCBjb21wYXRp
YmxlIHdpdGggRGlzcGxheUxpc3Q6OlJlY29yZGVyLiIpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3Jk
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdFJlY29yZGVyLmgKaW5kZXggYmY2Y2E1NWE5Y2E1ZTE0MzYxNDEzYWZmZTJhMzhjMDk4
OWRmMzQ3ZC4uOGU3MWFmMDk0MDJhNDg3YTkyYjRlYzdiMmJjMDdmOWIyYjExYTlhYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3Bs
YXlMaXN0UmVjb3JkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9k
aXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oCkBAIC0xMjQsNyArMTI0LDcgQEAgcHJp
dmF0ZToKICAgICB2b2lkIGNsaXBPdXQoY29uc3QgUGF0aCYpIG92ZXJyaWRlOwogICAgIHZvaWQg
Y2xpcFBhdGgoY29uc3QgUGF0aCYsIFdpbmRSdWxlKSBvdmVycmlkZTsKICAgICBJbnRSZWN0IGNs
aXBCb3VuZHMoKSBvdmVycmlkZTsKLSAgICB2b2lkIGNsaXBUb0ltYWdlQnVmZmVyKEltYWdlQnVm
ZmVyJiwgY29uc3QgRmxvYXRSZWN0Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBjbGlwVG9JbWFnZUJ1
ZmZlcihXZWJDb3JlOjpJbWFnZUJ1ZmZlciYsIGNvbnN0IEZsb2F0UmVjdCYpIG92ZXJyaWRlOwog
ICAgIAogICAgIHZvaWQgYXBwbHlEZXZpY2VTY2FsZUZhY3RvcihmbG9hdCkgb3ZlcnJpZGU7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByZWZlcmVuY2VzLnlhbWwgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcmVmZXJlbmNlcy55YW1sCmluZGV4IGE3NzllMzNmNDQy
M2RkMTg2NDA2NWY5ZmE3MjY3ZTlkMDlkOGQxNzQuLjhiZGFkYzhiMmY1NzAyYWViYjMzMWIyM2Y1
MWQ5MTVmNzU3ZDAzZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByZWZl
cmVuY2VzLnlhbWwKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJlZmVyZW5jZXMueWFt
bApAQCAtMTc0Nyw3ICsxNzQ3LDcgQEAgQ2FwdHVyZUF1ZGlvSW5HUFVQcm9jZXNzRW5hYmxlZDoK
IAogUmVuZGVyQ2FudmFzSW5HUFVQcm9jZXNzRW5hYmxlZDoKICAgdHlwZTogYm9vbAotICBkZWZh
dWx0VmFsdWU6IGZhbHNlCisgIGRlZmF1bHRWYWx1ZTogdHJ1ZQogICBodW1hblJlYWRhYmxlTmFt
ZTogIlJlbmRlciBjYW52YXMgaW4gR1BVIFByb2Nlc3MiCiAgIGh1bWFuUmVhZGFibGVEZXNjcmlw
dGlvbjogIkVuYWJsZSBjYW52YXMgcmVuZGVyaW5nIGluIEdQVSBQcm9jZXNzIgogICBjYXRlZ29y
eTogaW50ZXJuYWwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3Jh
cGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwCmluZGV4IDE5NTgzMTY1
YWNmZjhhYzYyNzk1ZWMxNjhjYzkwOWI2YWVlNmM5OGEuLmE2OTcxY2VjNTcyMzFiNTk1OTc1YWJh
OTJkMTVhMDI2NmY5NWUyZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcApAQCAt
NzUsMTMgKzc1LDEzIEBAIHVpbnQ2NF90IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6Om1lc3NhZ2VT
ZW5kZXJEZXN0aW5hdGlvbklEKCkgY29uc3QKIGJvb2wgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6
d2FpdEZvckNyZWF0ZUltYWdlQnVmZmVyQmFja2VuZCgpCiB7CiAgICAgUmVmPElQQzo6Q29ubmVj
dGlvbj4gY29ubmVjdGlvbiA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZUdQVVByb2Nl
c3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpOwotICAgIHJldHVybiBjb25uZWN0aW9uLT53YWl0
Rm9yQW5kRGlzcGF0Y2hJbW1lZGlhdGVseTxNZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZDo6Q3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kPihtX3JlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVy
LCAxX3MsIElQQzo6V2FpdEZvck9wdGlvbjo6SW50ZXJydXB0V2FpdGluZ0lmU3luY01lc3NhZ2VB
cnJpdmVzKTsKKyAgICByZXR1cm4gY29ubmVjdGlvbi0+d2FpdEZvckFuZERpc3BhdGNoSW1tZWRp
YXRlbHk8TWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OkNyZWF0ZUltYWdlQnVmZmVy
QmFja2VuZD4obV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciwgU2Vjb25kczo6aW5maW5pdHko
KSwgSVBDOjpXYWl0Rm9yT3B0aW9uOjpJbnRlcnJ1cHRXYWl0aW5nSWZTeW5jTWVzc2FnZUFycml2
ZXMpOwogfQogCiBib29sIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OndhaXRGb3JDb21taXRJbWFn
ZUJ1ZmZlckZsdXNoQ29udGV4dCgpCiB7CiAgICAgUmVmPElQQzo6Q29ubmVjdGlvbj4gY29ubmVj
dGlvbiA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZUdQVVByb2Nlc3NDb25uZWN0aW9u
KCkuY29ubmVjdGlvbigpOwotICAgIHJldHVybiBjb25uZWN0aW9uLT53YWl0Rm9yQW5kRGlzcGF0
Y2hJbW1lZGlhdGVseTxNZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Q29tbWl0SW1h
Z2VCdWZmZXJGbHVzaENvbnRleHQ+KG1fcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIsIDFfcywg
SVBDOjpXYWl0Rm9yT3B0aW9uOjpJbnRlcnJ1cHRXYWl0aW5nSWZTeW5jTWVzc2FnZUFycml2ZXMp
OworICAgIHJldHVybiBjb25uZWN0aW9uLT53YWl0Rm9yQW5kRGlzcGF0Y2hJbW1lZGlhdGVseTxN
ZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Q29tbWl0SW1hZ2VCdWZmZXJGbHVzaENv
bnRleHQ+KG1fcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIsIFNlY29uZHM6OmluZmluaXR5KCks
IElQQzo6V2FpdEZvck9wdGlvbjo6SW50ZXJydXB0V2FpdGluZ0lmU3luY01lc3NhZ2VBcnJpdmVz
KTsKIH0KIAogc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kOjpjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmIHNpemUsIFNob3VsZEFjY2Vs
ZXJhdGUgc2hvdWxkQWNjZWxlcmF0ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNl
IGNvbG9yU3BhY2UpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>392540</attachid>
            <date>2020-03-04 23:42:16 -0800</date>
            <delta_ts>2020-03-05 19:15:38 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-208621-20200304234214.patch</filename>
            <type>text/plain</type>
            <size>27491</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU3ODk5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzhmZDRlNjM5ODQ0YjQ2
MTgyY2ViN2RjZTMzODMyZmU0OTk0YjFmMy4uZWQ1OWM2Yjg3YzdlNzgxYmU5MGY0YTZmMWQzMjYx
Mzc5N2YyMDNhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU4IEBACisyMDIwLTAzLTA0ICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQVSBQcm9j
ZXNzXSBJbXBsZW1lbnQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELnB1dEltYWdlRGF0YSgpCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDg2MjEKKyAg
ICAgICAgPHJkYXI6Ly9wcm9ibGVtLzYwMDY4MDQ3PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIHB1dEltYWdlRGF0YSgpIGlzIGltcGxlbWVudGVkIGp1
c3QgYXMgYSBEaXNwbGF5TGlzdEl0ZW0uIENvbmNlcHR1YWxseSwgaXQncyB0aGUKKyAgICAgICAg
c2FtZSBhcyBhIGRyYXcgY29tbWFuZC4gVW5mb3J0dW5hdGVseSwgaXQgY2FuJ3QgYmUgaW1wbGVt
ZW50ZWQgb24gdG9wIG9mCisgICAgICAgIEdyYXBoaWNzQ29udGV4dCwgYW5kIGluc3RlYWQgaGFz
IHRvIGJlIGltcGxlbWVudGVkIG9uIHRvcCBvZiBJbWFnZUJ1ZmZlciwgc28KKyAgICAgICAgdGhp
cyBwYXRjaCBhbHNvIGFkZHMgYW4gb3B0aW9uYWwgSW1hZ2VCdWZmZXIqIGFyZ3VtZW50IHRvIERp
c3BsYXlMaXN0SXRlbTo6YXBwbHkoKS4KKyAgICAgICAgVGhlIGRhdGEgaXRzZWxmIGlzIHRyYW5z
ZmVycmVkIHVzaW5nIHNoYXJlZCBtZW1vcnkuCisKKyAgICAgICAgSW1wbGVtZW50aW5nIHRoaXMg
YXMgYSBEaXNwbGF5TGlzdEl0ZW0gcmF0aGVyIHRoYW4gaXRzIG93biBJUEMgbWVzc2FnZSBpcyBz
dXBlcmlvcgorICAgICAgICBiZWNhdXNlIGl0IGdpdmVzIHVzIG1vcmUgY29udHJvbCBhYm91dCB3
aGVuIHRvIGZsdXNoIHRoZSBpbi1mbGlnaHQgZGlzcGxheSBsaXN0LgorCisgICAgICAgIFRoZXJl
IGlzIHN0aWxsIG9uZSB1bm5lY2Vzc2FyeSBjb3B5IC0gdGhlIEdQVSBwcm9jZXNzIGNvcGllcyBm
cm9tIHRoZSBTaGFyZWRCdWZmZXIKKyAgICAgICAgaW50byB0aGUgSW1hZ2VCdWZmZXIgYmVmb3Jl
IHJ1bm5pbmcgdGhlIHJlYWwgcHV0SW1hZ2VEYXRhKCkgY29tbWFuZC4gQmVpbmcgYWJsZSB0bwor
ICAgICAgICBlaXRoZXIgaGF2ZSB0aGUgSW1hZ2VCdWZmZXIgcmV0YWluIHRoZSBTaGFyZWRCdWZm
ZXIsIG9yIGhhdmUgcHV0SW1hZ2VEYXRhKCkgaGF2ZQorICAgICAgICBhbiBvdmVybG9hZCB3aGlj
aCBhY2NlcHRzIGEgU2hhcmVkQnVmZmVyLCB3b3VsZCBiZSBhIGdvb2Qgb3Bwb3J0dW5pdHkgZm9y
CisgICAgICAgIGltcHJvdmVtZW50LgorCisgICAgICAgIFRlc3Q6IGZhc3QvY2FudmFzL3B1dElt
YWdlRGF0YS1tdWx0aXBsZS5odG1sCisKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkRCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmlu
Z0NvbnRleHQyREJhc2U6OnBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9BbHBoYVByZW11bHRpcGxpY2F0aW9uLmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0Lmg6CisgICAgICAgIChX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbTo6YXBwbHkgY29uc3QpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEltYWdlQnVmZmVyLmg6CisgICAg
ICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SW1hZ2VCdWZmZXI6OnB1dEltYWdlRGF0YSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW06OnNpemVJbkJ5dGVzKToK
KyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpQdXRJbWFnZURhdGE6OlB1dEltYWdlRGF0
YSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UHV0SW1hZ2VEYXRhOjphcHBseSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6b3BlcmF0b3I8PCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaDoK
KyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpQdXRJbWFnZURhdGE6OmNyZWF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UHV0SW1hZ2VEYXRhOjppbnB1dEZvcm1hdCBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UHV0SW1hZ2VEYXRhOjppbWFn
ZURhdGFTaXplIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpQdXRJbWFn
ZURhdGE6OnNyY1JlY3QgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlB1
dEltYWdlRGF0YTo6ZGVzdFBvaW50IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlM
aXN0OjpQdXRJbWFnZURhdGE6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNw
bGF5TGlzdDo6UHV0SW1hZ2VEYXRhOjpkZWNvZGUpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxh
eUxpc3Q6Okl0ZW06OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlz
dDo6SXRlbTo6ZGVjb2RlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlz
dDo6UmVjb3JkZXI6OmNsaXBUb0ltYWdlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZXBsYXllcjo6UmVwbGF5ZXIpOgorICAgICAgICAo
V2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlcGxheWVyOjpyZXBsYXkpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmg6CisKIDIwMjAt
MDMtMDQgIFphbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbVk5FIGxh
eW91dF0gTW92ZSB2aXN1YWxseSBub24tZW1wdHkgY29udGVudCByZXBvcnRpbmcgdG8gUmVuZGVy
VHJlZUJ1aWxkZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggOGQyYWFlMzU5ZWY0ZjM3ODdlYzkzMjEyYzgzMjFhYzQz
YjJhN2E3Zi4uYjkxMzk2NDk0ODA3N2U5Nzk1MzFkNDgyZmM5YmQ2ZTliNzQyZTJiYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxNyBAQAorMjAyMC0wMy0wNCAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4
ZmllbGRAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vzc10gSW1wbGVtZW50IENhbnZh
c1JlbmRlcmluZ0NvbnRleHQyRC5wdXRJbWFnZURhdGEoKQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA4NjIxCisgICAgICAgIDxyZGFyOi8vcHJvYmxl
bS82MDA2ODA0Nz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oOgorICAg
ICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwOgorICAgICAgICAoSVBDOjpB
cmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+Pjo6ZW5jb2RlKToKKyAgICAg
ICAgKElQQzo6QXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj46OmRlY29k
ZSk6CisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oOgorCiAyMDIwLTAz
LTA0ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgQ29uc3RydWN0
IGZld2VyIHVubmVjZXNzYXJ5IHRlbXBvcmFyeSBXZWJQcm9jZXNzUG9vbCBvYmplY3RzIGluIFdl
YnNpdGVEYXRhU3RvcmUgaW1wbGVtZW50YXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAKaW5kZXgg
ZDJiOGRiODE0ZDMxMzQxODY0MTJmYTVkOGFlYWY3YTIzODBiMTI4NS4uYzQxODZiZTY5ODM0MmJj
YmQ0MGY4YTUxYTYyN2E2OTgwYzNhOGQ1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAKQEAgLTIx
MDMsNyArMjEwMyw3IEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6cGFpbnRS
ZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMoKQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAg
IEZsb2F0UmVjdCBjbGlwKEZsb2F0UG9pbnQ6Onplcm8oKSwgY2FudmFzQmFzZSgpLnNpemUoKSk7
Ci0gICAgICAgIERpc3BsYXlMaXN0OjpSZXBsYXllciByZXBsYXllcigqY2FudmFzQmFzZSgpLmRy
YXdpbmdDb250ZXh0KCksIG1fcmVjb3JkaW5nQ29udGV4dC0+ZGlzcGxheUxpc3QpOworICAgICAg
ICBEaXNwbGF5TGlzdDo6UmVwbGF5ZXIgcmVwbGF5ZXIoKmNhbnZhc0Jhc2UoKS5kcmF3aW5nQ29u
dGV4dCgpLCBtX3JlY29yZGluZ0NvbnRleHQtPmRpc3BsYXlMaXN0LCBjYW52YXNCYXNlKCkuYnVm
ZmVyKCkpOwogCiAgICAgICAgIGlmIChVTkxJS0VMWShtX3RyYWNrc0Rpc3BsYXlMaXN0UmVwbGF5
KSkgewogICAgICAgICAgICAgYXV0byByZXBsYXlMaXN0ID0gcmVwbGF5ZXIucmVwbGF5KGNsaXAs
IG1fdHJhY2tzRGlzcGxheUxpc3RSZXBsYXkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvQWxwaGFQcmVtdWx0aXBsaWNhdGlvbi5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvQWxwaGFQcmVtdWx0aXBsaWNhdGlvbi5oCmluZGV4IDZkMWNh
ZWY4NTQxZGVlMDYyYmZlMDU0MTZjZGEyZjJhN2Y3OTI2ZTIuLmIyNzc4MGY2MmIxOTJmNTgxYzI0
MzkyYWQxOTE3ZTBjNWM1ZjcwOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0FscGhhUHJlbXVsdGlwbGljYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9BbHBoYVByZW11bHRpcGxpY2F0aW9uLmgKQEAgLTM0LDYgKzM0LDE3
IEBAIGVudW0gY2xhc3MgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiA6IHVpbnQ4X3QgewogICAgIFVu
cHJlbXVsdGlwbGllZAogfTsKIAorCiBXRUJDT1JFX0VYUE9SVCBXVEY6OlRleHRTdHJlYW0mIG9w
ZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFtJiwgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbik7CiAKLX0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKK30KKworbmFtZXNwYWNlIFdURiB7Cit0ZW1wbGF0ZTw+IHN0
cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6OkFscGhhUHJlbXVsdGlwbGljYXRpb24+IHsKKyAgICB1
c2luZyB2YWx1ZXMgPSBFbnVtVmFsdWVzPAorICAgICAgICBXZWJDb3JlOjpBbHBoYVByZW11bHRp
cGxpY2F0aW9uLAorICAgICAgICBXZWJDb3JlOjpBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpQcmVt
dWx0aXBsaWVkLAorICAgICAgICBXZWJDb3JlOjpBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnBy
ZW11bHRpcGxpZWQKKyAgICA+OworfTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmgKaW5kZXggMmM2
NzdmNmI3MzZlNzUyZTQxZjhiM2YyNDM0NzZkNDUwODQyNDM3MS4uYWQ5ZDMzYzRiMzRjNjI3Mzdl
YTA5OWRjYzQyNTMwNWJlZWVmODcxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmgKQEAgLTM5LDYg
KzM5LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBuYW1lc3BhY2UgRGlzcGxheUxpc3Qgewog
Cit0ZW1wbGF0ZTx0eXBlbmFtZSBCYWNrZW5kVHlwZT4gY2xhc3MgSW1hZ2VCdWZmZXI7CisKIGVu
dW0gY2xhc3MgSXRlbVR5cGUgOiB1aW50OF90IHsKICAgICBTYXZlLAogICAgIFJlc3RvcmUsCkBA
IC04MSw2ICs4Myw3IEBAIGVudW0gY2xhc3MgSXRlbVR5cGUgOiB1aW50OF90IHsKICAgICBGaWxs
UmVjdFdpdGhSb3VuZGVkSG9sZSwKICAgICBGaWxsUGF0aCwKICAgICBGaWxsRWxsaXBzZSwKKyAg
ICBQdXRJbWFnZURhdGEsCiAgICAgU3Ryb2tlUmVjdCwKICAgICBTdHJva2VQYXRoLAogICAgIFN0
cm9rZUVsbGlwc2UsCkBAIC0xMDYsNyArMTA5LDExIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJu
IG1fdHlwZTsKICAgICB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgYXBwbHkoR3JhcGhpY3NDb250ZXh0
JikgY29uc3QgPSAwOworICAgIHZpcnR1YWwgdm9pZCBhcHBseShHcmFwaGljc0NvbnRleHQmKSBj
b25zdCB7IH07CisgICAgdmlydHVhbCB2b2lkIGFwcGx5KEdyYXBoaWNzQ29udGV4dCYgZ3JhcGhp
Y3NDb250ZXh0LCBXZWJDb3JlOjpJbWFnZUJ1ZmZlciopIGNvbnN0CisgICAgeworICAgICAgICBh
cHBseShncmFwaGljc0NvbnRleHQpOworICAgIH07CiAKICAgICBzdGF0aWMgY29uc3RleHByIGJv
b2wgaXNEaXNwbGF5TGlzdEl0ZW0gPSB0cnVlOwogCkBAIC0xNjIsNiArMTY5LDcgQEAgY2xhc3Mg
RGlzcGxheUxpc3QgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKERpc3BsYXlMaXN0KTsgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgZnJpZW5kIGNsYXNzIFJlY29yZGVyOwogICAgIGZy
aWVuZCBjbGFzcyBSZXBsYXllcjsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBCYWNrZW5kVHlwZT4g
ZnJpZW5kIGNsYXNzIEltYWdlQnVmZmVyOwogcHVibGljOgogICAgIERpc3BsYXlMaXN0KCkgPSBk
ZWZhdWx0OwogICAgIERpc3BsYXlMaXN0KERpc3BsYXlMaXN0JiYpID0gZGVmYXVsdDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdEltYWdlQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9k
aXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJbWFnZUJ1ZmZlci5oCmluZGV4IGEwMjg3Zjg1ZGRiNjBk
N2JkYzAwMWZiYmFlNDc2NGFhYWUzZDRmMDAuLjA1NmQxYmZkNGRmMjg4NzNjMWJjZThjZDk0ZDdj
YTU1M2EwZTM3NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEltYWdlQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXIu
aApAQCAtMjcsNiArMjcsNyBAQAogCiAjaW5jbHVkZSAiQ29uY3JldGVJbWFnZUJ1ZmZlci5oIgog
I2luY2x1ZGUgIkRpc3BsYXlMaXN0RHJhd2luZ0NvbnRleHQuaCIKKyNpbmNsdWRlICJEaXNwbGF5
TGlzdEl0ZW1zLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIG5hbWVzcGFjZSBEaXNwbGF5TGlz
dCB7CkBAIC02Miw2ICs2MywxMSBAQCBwdWJsaWM6CiAgICAgICAgIGZsdXNoRHJhd2luZ0NvbnRl
eHQoKTsKICAgICB9CiAKKyAgICB2b2lkIHB1dEltYWdlRGF0YShBbHBoYVByZW11bHRpcGxpY2F0
aW9uIGlucHV0Rm9ybWF0LCBjb25zdCBJbWFnZURhdGEmIGltYWdlRGF0YSwgY29uc3QgSW50UmVj
dCYgc3JjUmVjdCwgY29uc3QgSW50UG9pbnQmIGRlc3RQb2ludCA9IHsgfSkgb3ZlcnJpZGUKKyAg
ICB7CisgICAgICAgIG1fZHJhd2luZ0NvbnRleHQuZGlzcGxheUxpc3QoKS5hcHBlbmQoUHV0SW1h
Z2VEYXRhOjpjcmVhdGUoaW5wdXRGb3JtYXQsIGltYWdlRGF0YSwgc3JjUmVjdCwgZGVzdFBvaW50
KSk7CisgICAgfQorCiAgICAgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KCkgY29uc3Qgb3ZlcnJp
ZGUKICAgICB7CiAgICAgICAgIHJldHVybiBtX2RyYXdpbmdDb250ZXh0LmNvbnRleHQoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdEl0ZW1zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rp
c3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcAppbmRleCA5MWFiM2JmN2Q4N2IyNDdhYjYx
OGQ5ODNkYjc1NGJjMmIyMTQwZTY0Li5iOTljNmUzNjBhZDMzZTI2ZjU1ZjI1NDE4YTE1YTMzZWE2
ZWQ1YzlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNw
bGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwCkBAIC0yNyw2ICsy
NywxMSBAQAogI2luY2x1ZGUgIkRpc3BsYXlMaXN0SXRlbXMuaCIKIAogI2luY2x1ZGUgIkZvbnRD
YXNjYWRlLmgiCisjaW5jbHVkZSAiSW1hZ2VCdWZmZXIuaCIKKyNpbmNsdWRlICJJbWFnZURhdGEu
aCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9H
ZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
SlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvVGV4
dFN0cmVhbS5oPgogCiAjaWYgVVNFKENHKQpAQCAtMTM4LDYgKzE0Myw4IEBAIHNpemVfdCBJdGVt
OjpzaXplSW5CeXRlcyhjb25zdCBJdGVtJiBpdGVtKQogICAgICAgICByZXR1cm4gc2l6ZW9mKGRv
d25jYXN0PEZpbGxQYXRoPihpdGVtKSk7CiAgICAgY2FzZSBJdGVtVHlwZTo6RmlsbEVsbGlwc2U6
CiAgICAgICAgIHJldHVybiBzaXplb2YoZG93bmNhc3Q8RmlsbEVsbGlwc2U+KGl0ZW0pKTsKKyAg
ICBjYXNlIEl0ZW1UeXBlOjpQdXRJbWFnZURhdGE6CisgICAgICAgIHJldHVybiBzaXplb2YoZG93
bmNhc3Q8UHV0SW1hZ2VEYXRhPihpdGVtKSk7CiAgICAgY2FzZSBJdGVtVHlwZTo6U3Ryb2tlUmVj
dDoKICAgICAgICAgcmV0dXJuIHNpemVvZihkb3duY2FzdDxTdHJva2VSZWN0PihpdGVtKSk7CiAg
ICAgY2FzZSBJdGVtVHlwZTo6U3Ryb2tlUGF0aDoKQEAgLTExNTMsNiArMTE2MCw1NSBAQCBzdGF0
aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgRmlsbEVsbGlw
c2UmIGl0ZW0pCiAgICAgcmV0dXJuIHRzOwogfQogCitQdXRJbWFnZURhdGE6OlB1dEltYWdlRGF0
YShBbHBoYVByZW11bHRpcGxpY2F0aW9uIGlucHV0Rm9ybWF0LCBjb25zdCBJbWFnZURhdGEmIGlt
YWdlRGF0YSwgY29uc3QgSW50UmVjdCYgc3JjUmVjdCwgY29uc3QgSW50UG9pbnQmIGRlc3RQb2lu
dCkKKyAgICA6IERyYXdpbmdJdGVtKEl0ZW1UeXBlOjpQdXRJbWFnZURhdGEpCisgICAgLCBtX2lu
cHV0Rm9ybWF0KGlucHV0Rm9ybWF0KQorICAgICwgbV9pbWFnZURhdGFTaXplKGltYWdlRGF0YS5z
aXplKCkpCisgICAgLCBtX2RhdGEoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoaW1hZ2VE
YXRhLmRhdGEoKS0+ZGF0YSgpLCBpbWFnZURhdGEuZGF0YSgpLT5ieXRlTGVuZ3RoKCkpKSAvLyBU
aGlzIGNvcHkgaXMgYWN0dWFsbHkgcmVxdWlyZWQgdG8gcHJlc2VydmUgdGhlIHNlbWFudGljcyBv
ZiBwdXRJbWFnZURhdGEoKS4KKyAgICAsIG1fc3JjUmVjdChzcmNSZWN0KQorICAgICwgbV9kZXN0
UG9pbnQoZGVzdFBvaW50KQoreworICAgIEFTU0VSVChpbWFnZURhdGEuZGF0YSgpKTsKK30KKwor
UHV0SW1hZ2VEYXRhOjpQdXRJbWFnZURhdGEoQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBpbnB1dEZv
cm1hdCwgY29uc3QgSW50U2l6ZSYgaW1hZ2VEYXRhU2l6ZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBk
YXRhLCBjb25zdCBJbnRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbnRQb2ludCYgZGVzdFBvaW50KQor
ICAgIDogRHJhd2luZ0l0ZW0oSXRlbVR5cGU6OlB1dEltYWdlRGF0YSkKKyAgICAsIG1faW5wdXRG
b3JtYXQoaW5wdXRGb3JtYXQpCisgICAgLCBtX2ltYWdlRGF0YVNpemUoaW1hZ2VEYXRhU2l6ZSkK
KyAgICAsIG1fZGF0YShXVEZNb3ZlKGRhdGEpKQorICAgICwgbV9zcmNSZWN0KHNyY1JlY3QpCisg
ICAgLCBtX2Rlc3RQb2ludChkZXN0UG9pbnQpCit7Cit9CisKK1B1dEltYWdlRGF0YTo6flB1dElt
YWdlRGF0YSgpID0gZGVmYXVsdDsKKwordm9pZCBQdXRJbWFnZURhdGE6OmFwcGx5KEdyYXBoaWNz
Q29udGV4dCYsIFdlYkNvcmU6OkltYWdlQnVmZmVyKiBpbWFnZUJ1ZmZlcikgY29uc3QKK3sKKyAg
ICBBU1NFUlQoaW1hZ2VCdWZmZXIpOworICAgIGlmICghaW1hZ2VCdWZmZXIpCisgICAgICAgIHJl
dHVybjsKKworICAgIC8vIEZJWE1FOiBDb3B5aW5nIGZyb20gdGhlIHNoYXJlZCBidWZmZXIgaW50
byB0aGUgSW1hZ2VEYXRhIGlzIHNsb3cuIEludmVudCBzb21lIHdheSBmb3IgdGhlIEltYWdlRGF0
YSB0byBzaW1wbHkganVzdCByZXRhaW4gdGhlIFNoYXJlZEJ1ZmZlciwgYW5kIHVzZSBpdCBpbnRl
cm5hbGx5LgorICAgIC8vIEFsdGVybmF0aXZlbHksIHB1dEltYWdlRGF0YSgpIGNvdWxkIGhhdmUg
YW4gb3ZlcmxvYWQgd2hpY2ggYWNjZXB0cyB0aGUgU2hhcmVkQnVmZmVyIGl0c2VsZi4KKyAgICBh
dXRvIGltYWdlRGF0YSA9IEltYWdlRGF0YTo6Y3JlYXRlKG1faW1hZ2VEYXRhU2l6ZSwgVWludDhD
bGFtcGVkQXJyYXk6OmNyZWF0ZShyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihtX2Rh
dGEtPmRhdGEoKSksIG1fZGF0YS0+c2l6ZSgpKSk7CisgICAgQVNTRVJUKGltYWdlRGF0YSk7Cisg
ICAgaWYgKCFpbWFnZURhdGEpCisgICAgICAgIHJldHVybjsKKworICAgIGltYWdlQnVmZmVyLT5w
dXRJbWFnZURhdGEobV9pbnB1dEZvcm1hdCwgKmltYWdlRGF0YSwgbV9zcmNSZWN0LCBtX2Rlc3RQ
b2ludCk7Cit9CisKK3N0YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRz
LCBjb25zdCBQdXRJbWFnZURhdGEmIGl0ZW0pCit7CisgICAgdHMgPDwgc3RhdGljX2Nhc3Q8Y29u
c3QgRHJhd2luZ0l0ZW0mPihpdGVtKTsKKyAgICB0cy5kdW1wUHJvcGVydHkoImlucHV0Rm9ybWF0
IiwgaXRlbS5pbnB1dEZvcm1hdCgpKTsKKyAgICB0cy5kdW1wUHJvcGVydHkoImltYWdlRGF0YVNp
emUiLCBpdGVtLmltYWdlRGF0YVNpemUoKSk7CisgICAgdHMuZHVtcFByb3BlcnR5KCJzcmNSZWN0
IiwgaXRlbS5zcmNSZWN0KCkpOworICAgIHRzLmR1bXBQcm9wZXJ0eSgiZGVzdFBvaW50IiwgaXRl
bS5kZXN0UG9pbnQoKSk7CisgICAgcmV0dXJuIHRzOworfQorCiBTdHJva2VSZWN0OjpTdHJva2VS
ZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgZmxvYXQgbGluZVdpZHRoKQogICAgIDogRHJhd2lu
Z0l0ZW0oSXRlbVR5cGU6OlN0cm9rZVJlY3QpCiAgICAgLCBtX3JlY3QocmVjdCkKQEAgLTEzODEs
NiArMTQzNyw3IEBAIHN0YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRz
LCBjb25zdCBJdGVtVHlwZSYgdHlwZSkKICAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsUmVjdFdpdGhS
b3VuZGVkSG9sZTogdHMgPDwgImZpbGwtcmVjdC13aXRoLXJvdW5kZWQtaG9sZSI7IGJyZWFrOwog
ICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxQYXRoOiB0cyA8PCAiZmlsbC1wYXRoIjsgYnJlYWs7CiAg
ICAgY2FzZSBJdGVtVHlwZTo6RmlsbEVsbGlwc2U6IHRzIDw8ICJmaWxsLWVsbGlwc2UiOyBicmVh
azsKKyAgICBjYXNlIEl0ZW1UeXBlOjpQdXRJbWFnZURhdGE6IHRzIDw8ICJwdXQtaW1hZ2UtZGF0
YSI7IGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OlN0cm9rZVJlY3Q6IHRzIDw8ICJzdHJva2Ut
cmVjdCI7IGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OlN0cm9rZVBhdGg6IHRzIDw8ICJzdHJv
a2UtcGF0aCI7IGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OlN0cm9rZUVsbGlwc2U6IHRzIDw8
ICJzdHJva2UtZWxsaXBzZSI7IGJyZWFrOwpAQCAtMTUxNyw2ICsxNTc0LDkgQEAgVGV4dFN0cmVh
bSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgSXRlbSYgaXRlbSkKICAgICBjYXNl
IEl0ZW1UeXBlOjpGaWxsRWxsaXBzZToKICAgICAgICAgdHMgPDwgZG93bmNhc3Q8RmlsbEVsbGlw
c2U+KGl0ZW0pOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIEl0ZW1UeXBlOjpQdXRJbWFnZURh
dGE6CisgICAgICAgIHRzIDw8IGRvd25jYXN0PFB1dEltYWdlRGF0YT4oaXRlbSk7CisgICAgICAg
IGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OlN0cm9rZVJlY3Q6CiAgICAgICAgIHRzIDw8IGRv
d25jYXN0PFN0cm9rZVJlY3Q+KGl0ZW0pOwogICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0
ZW1zLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3RJdGVtcy5oCmluZGV4IDk3ZmQwYTAwYTRkNGJjNmU3NjEyNzJkOTZlYjc0NjY3MzAy
ZjgwYTYuLjRjMTA5MTk3ZDFkOWMwY2Y2OWZkZTE4Njk0ZTAyOGFhOWI3ZTc4MzcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdEl0ZW1zLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaApAQCAtMjUsNiArMjUsNyBAQAogCiAjcHJhZ21hIG9u
Y2UKIAorI2luY2x1ZGUgIkFscGhhUHJlbXVsdGlwbGljYXRpb24uaCIKICNpbmNsdWRlICJEaXNw
bGF5TGlzdC5oIgogI2luY2x1ZGUgIkZsb2F0UG9pbnQuaCIKICNpbmNsdWRlICJGbG9hdFJvdW5k
ZWRSZWN0LmgiCkBAIC0zMiw2ICszMyw3IEBACiAjaW5jbHVkZSAiR2x5cGhCdWZmZXIuaCIKICNp
bmNsdWRlICJJbWFnZS5oIgogI2luY2x1ZGUgIlBhdHRlcm4uaCIKKyNpbmNsdWRlICJTaGFyZWRC
dWZmZXIuaCIKICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9UeXBl
Q2FzdHMuaD4KIApAQCAtNDEsNiArNDMsNyBAQCBjbGFzcyBUZXh0U3RyZWFtOwogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKK2NsYXNzIEltYWdlRGF0YTsKIHN0cnVjdCBJbWFnZVBhaW50aW5nT3B0
aW9uczsKIAogbmFtZXNwYWNlIERpc3BsYXlMaXN0IHsKQEAgLTI0NTcsNiArMjQ2MCw4NSBAQCBP
cHRpb25hbDxSZWY8RmlsbEVsbGlwc2U+PiBGaWxsRWxsaXBzZTo6ZGVjb2RlKERlY29kZXImIGRl
Y29kZXIpCiAgICAgcmV0dXJuIEZpbGxFbGxpcHNlOjpjcmVhdGUoKnJlY3QpOwogfQogCitjbGFz
cyBQdXRJbWFnZURhdGEgOiBwdWJsaWMgRHJhd2luZ0l0ZW0geworcHVibGljOgorICAgIHN0YXRp
YyBSZWY8UHV0SW1hZ2VEYXRhPiBjcmVhdGUoQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBpbnB1dEZv
cm1hdCwgY29uc3QgSW1hZ2VEYXRhJiBpbWFnZURhdGEsIGNvbnN0IEludFJlY3QmIHNyY1JlY3Qs
IGNvbnN0IEludFBvaW50JiBkZXN0UG9pbnQpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBQdXRJbWFnZURhdGEoaW5wdXRGb3JtYXQsIGltYWdlRGF0YSwgc3JjUmVjdCwgZGVz
dFBvaW50KSk7CisgICAgfQorICAgIHN0YXRpYyBSZWY8UHV0SW1hZ2VEYXRhPiBjcmVhdGUoQWxw
aGFQcmVtdWx0aXBsaWNhdGlvbiBpbnB1dEZvcm1hdCwgY29uc3QgSW50U2l6ZSYgaW1hZ2VEYXRh
U2l6ZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBjb25zdCBJbnRSZWN0JiBzcmNSZWN0LCBj
b25zdCBJbnRQb2ludCYgZGVzdFBvaW50KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgUHV0SW1hZ2VEYXRhKGlucHV0Rm9ybWF0LCBpbWFnZURhdGFTaXplLCBXVEZNb3ZlKGRh
dGEpLCBzcmNSZWN0LCBkZXN0UG9pbnQpKTsKKyAgICB9CisKKyAgICBXRUJDT1JFX0VYUE9SVCB2
aXJ0dWFsIH5QdXRJbWFnZURhdGEoKTsKKworICAgIEFscGhhUHJlbXVsdGlwbGljYXRpb24gaW5w
dXRGb3JtYXQoKSBjb25zdCB7IHJldHVybiBtX2lucHV0Rm9ybWF0OyB9CisgICAgSW50U2l6ZSBp
bWFnZURhdGFTaXplKCkgY29uc3QgeyByZXR1cm4gbV9pbWFnZURhdGFTaXplOyB9CisgICAgSW50
UmVjdCBzcmNSZWN0KCkgY29uc3QgeyByZXR1cm4gbV9zcmNSZWN0OyB9CisgICAgSW50UG9pbnQg
ZGVzdFBvaW50KCkgY29uc3QgeyByZXR1cm4gbV9kZXN0UG9pbnQ7IH0KKworICAgIHRlbXBsYXRl
PGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKKyAgICB0ZW1wbGF0
ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8UmVmPFB1dEltYWdlRGF0YT4+IGRlY29k
ZShEZWNvZGVyJik7CisKK3ByaXZhdGU6CisgICAgV0VCQ09SRV9FWFBPUlQgUHV0SW1hZ2VEYXRh
KEFscGhhUHJlbXVsdGlwbGljYXRpb24gaW5wdXRGb3JtYXQsIGNvbnN0IEltYWdlRGF0YSYsIGNv
bnN0IEludFJlY3QmIHNyY1JlY3QsIGNvbnN0IEludFBvaW50JiBkZXN0UG9pbnQpOworICAgIFdF
QkNPUkVfRVhQT1JUIFB1dEltYWdlRGF0YShBbHBoYVByZW11bHRpcGxpY2F0aW9uIGlucHV0Rm9y
bWF0LCBjb25zdCBJbnRTaXplJiBpbWFnZURhdGFTaXplLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGRh
dGEsIGNvbnN0IEludFJlY3QmIHNyY1JlY3QsIGNvbnN0IEludFBvaW50JiBkZXN0UG9pbnQpOwor
CisgICAgdm9pZCBhcHBseShHcmFwaGljc0NvbnRleHQmLCBXZWJDb3JlOjpJbWFnZUJ1ZmZlciop
IGNvbnN0IG92ZXJyaWRlOworCisgICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBsb2NhbEJvdW5kcyhj
b25zdCBHcmFwaGljc0NvbnRleHQmKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBGbG9hdFJlY3Qo
bV9kZXN0UG9pbnQsIG1fc3JjUmVjdC5zaXplKCkpOyB9CisKKyAgICBBbHBoYVByZW11bHRpcGxp
Y2F0aW9uIG1faW5wdXRGb3JtYXQ7CisgICAgSW50U2l6ZSBtX2ltYWdlRGF0YVNpemU7CisgICAg
UmVmPFNoYXJlZEJ1ZmZlcj4gbV9kYXRhOworICAgIEludFJlY3QgbV9zcmNSZWN0OworICAgIElu
dFBvaW50IG1fZGVzdFBvaW50OworfTsKKwordGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KK3ZvaWQg
UHV0SW1hZ2VEYXRhOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAgICBlbmNv
ZGVyIDw8IG1faW5wdXRGb3JtYXQ7CisgICAgZW5jb2RlciA8PCBtX2ltYWdlRGF0YVNpemU7Cisg
ICAgZW5jb2RlciA8PCBtX2RhdGE7CisgICAgZW5jb2RlciA8PCBtX3NyY1JlY3Q7CisgICAgZW5j
b2RlciA8PCBtX2Rlc3RQb2ludDsKK30KKwordGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KK09wdGlv
bmFsPFJlZjxQdXRJbWFnZURhdGE+PiBQdXRJbWFnZURhdGE6OmRlY29kZShEZWNvZGVyJiBkZWNv
ZGVyKQoreworICAgIE9wdGlvbmFsPEFscGhhUHJlbXVsdGlwbGljYXRpb24+IGlucHV0Rm9ybWF0
OworICAgIE9wdGlvbmFsPEludFNpemU+IGltYWdlRGF0YVNpemU7CisgICAgT3B0aW9uYWw8UmVm
PFNoYXJlZEJ1ZmZlcj4+IGRhdGE7CisgICAgT3B0aW9uYWw8SW50UmVjdD4gc3JjUmVjdDsKKyAg
ICBPcHRpb25hbDxJbnRQb2ludD4gZGVzdFBvaW50OworCisgICAgZGVjb2RlciA+PiBpbnB1dEZv
cm1hdDsKKyAgICBpZiAoIWlucHV0Rm9ybWF0KQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworCisgICAgZGVjb2RlciA+PiBpbWFnZURhdGFTaXplOworICAgIGlmICghaW1hZ2VEYXRhU2l6
ZSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIGRlY29kZXIgPj4gZGF0YTsK
KyAgICBpZiAoIWRhdGEpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBkZWNv
ZGVyID4+IHNyY1JlY3Q7CisgICAgaWYgKCFzcmNSZWN0KQorICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworCisgICAgZGVjb2RlciA+PiBkZXN0UG9pbnQ7CisgICAgaWYgKCFkZXN0UG9pbnQp
CisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKworICAgIHJldHVybiBQdXRJbWFnZURh
dGE6OmNyZWF0ZSgqaW5wdXRGb3JtYXQsICppbWFnZURhdGFTaXplLCBXVEZNb3ZlKCpkYXRhKSwg
KnNyY1JlY3QsICpkZXN0UG9pbnQpOworfQorCiBjbGFzcyBTdHJva2VSZWN0IDogcHVibGljIERy
YXdpbmdJdGVtIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFN0cm9rZVJlY3Q+IGNyZWF0ZShj
b25zdCBGbG9hdFJlY3QmIHJlY3QsIGZsb2F0IGxpbmVXaWR0aCkKQEAgLTI4NTIsNiArMjkzNCw5
IEBAIHZvaWQgSXRlbTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAgY2FzZSBJ
dGVtVHlwZTo6RmlsbEVsbGlwc2U6CiAgICAgICAgIGVuY29kZXIgPDwgZG93bmNhc3Q8RmlsbEVs
bGlwc2U+KCp0aGlzKTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJdGVtVHlwZTo6UHV0SW1h
Z2VEYXRhOgorICAgICAgICBlbmNvZGVyIDw8IGRvd25jYXN0PFB1dEltYWdlRGF0YT4oKnRoaXMp
OworICAgICAgICBicmVhazsKICAgICBjYXNlIEl0ZW1UeXBlOjpTdHJva2VSZWN0OgogICAgICAg
ICBlbmNvZGVyIDw8IGRvd25jYXN0PFN0cm9rZVJlY3Q+KCp0aGlzKTsKICAgICAgICAgYnJlYWs7
CkBAIC0zMDUxLDYgKzMxMzYsMTAgQEAgT3B0aW9uYWw8UmVmPEl0ZW0+PiBJdGVtOjpkZWNvZGUo
RGVjb2RlciYgZGVjb2RlcikKICAgICAgICAgaWYgKGF1dG8gaXRlbSA9IEZpbGxFbGxpcHNlOjpk
ZWNvZGUoZGVjb2RlcikpCiAgICAgICAgICAgICByZXR1cm4gc3RhdGljX3JlZmVyZW5jZV9jYXN0
PEl0ZW0+KFdURk1vdmUoKml0ZW0pKTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJdGVtVHlw
ZTo6UHV0SW1hZ2VEYXRhOgorICAgICAgICBpZiAoYXV0byBpdGVtID0gUHV0SW1hZ2VEYXRhOjpk
ZWNvZGUoZGVjb2RlcikpCisgICAgICAgICAgICByZXR1cm4gc3RhdGljX3JlZmVyZW5jZV9jYXN0
PEl0ZW0+KFdURk1vdmUoKml0ZW0pKTsKKyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBJdGVtVHlw
ZTo6U3Ryb2tlUmVjdDoKICAgICAgICAgaWYgKGF1dG8gaXRlbSA9IFN0cm9rZVJlY3Q6OmRlY29k
ZShkZWNvZGVyKSkKICAgICAgICAgICAgIHJldHVybiBzdGF0aWNfcmVmZXJlbmNlX2Nhc3Q8SXRl
bT4oV1RGTW92ZSgqaXRlbSkpOwpAQCAtMzE1MCw2ICszMjM5LDcgQEAgU1BFQ0lBTElaRV9UWVBF
X1RSQUlUU19ESVNQTEFZTElTVF9JVEVNKEZpbGxSb3VuZGVkUmVjdCkKIFNQRUNJQUxJWkVfVFlQ
RV9UUkFJVFNfRElTUExBWUxJU1RfSVRFTShGaWxsUmVjdFdpdGhSb3VuZGVkSG9sZSkKIFNQRUNJ
QUxJWkVfVFlQRV9UUkFJVFNfRElTUExBWUxJU1RfSVRFTShGaWxsUGF0aCkKIFNQRUNJQUxJWkVf
VFlQRV9UUkFJVFNfRElTUExBWUxJU1RfSVRFTShGaWxsRWxsaXBzZSkKK1NQRUNJQUxJWkVfVFlQ
RV9UUkFJVFNfRElTUExBWUxJU1RfSVRFTShQdXRJbWFnZURhdGEpCiBTUEVDSUFMSVpFX1RZUEVf
VFJBSVRTX0RJU1BMQVlMSVNUX0lURU0oU3Ryb2tlUmVjdCkKIFNQRUNJQUxJWkVfVFlQRV9UUkFJ
VFNfRElTUExBWUxJU1RfSVRFTShTdHJva2VQYXRoKQogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19E
SVNQTEFZTElTVF9JVEVNKFN0cm9rZUVsbGlwc2UpCkBAIC0zMjA5LDYgKzMyOTksNyBAQCB0ZW1w
bGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZT4g
ewogICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RmlsbFJlY3RXaXRoUm91bmRl
ZEhvbGUsCiAgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpGaWxsUGF0aCwKICAg
ICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkZpbGxFbGxpcHNlLAorICAgIFdlYkNv
cmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6UHV0SW1hZ2VEYXRhLAogICAgIFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpJdGVtVHlwZTo6U3Ryb2tlUmVjdCwKICAgICBXZWJDb3JlOjpEaXNwbGF5TGlz
dDo6SXRlbVR5cGU6OlN0cm9rZVBhdGgsCiAgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1U
eXBlOjpTdHJva2VFbGxpcHNlLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIu
Y3BwCmluZGV4IDNjYWQxODg2MTBmY2EwMWZmODU3ZDMyY2Y2ZDZlZTUyYjZiYWEzM2UuLjkxZTRh
MmIwMjQ0OWYwYWZjMGUyYTg4ZWU4MmI3ZjI3OTMxYzlhNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3RSZWNvcmRlci5jcHAKQEAgLTM3OSw3ICszNzksNyBAQCBJbnRSZWN0IFJlY29y
ZGVyOjpjbGlwQm91bmRzKCkKICAgICByZXR1cm4gSW50UmVjdCgtMjA0OCwgLTIwNDgsIDQwOTYs
IDQwOTYpOwogfQogCi12b2lkIFJlY29yZGVyOjpjbGlwVG9JbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZl
ciYsIGNvbnN0IEZsb2F0UmVjdCYpCit2b2lkIFJlY29yZGVyOjpjbGlwVG9JbWFnZUJ1ZmZlcihX
ZWJDb3JlOjpJbWFnZUJ1ZmZlciYsIGNvbnN0IEZsb2F0UmVjdCYpCiB7CiAgICAgV1RGTG9nQWx3
YXlzKCJHcmFwaGljc0NvbnRleHQ6OmNsaXBUb0ltYWdlQnVmZmVyIGlzIG5vdCBjb21wYXRpYmxl
IHdpdGggRGlzcGxheUxpc3Q6OlJlY29yZGVyLiIpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdFJlY29yZGVyLmgKaW5kZXggYmY2Y2E1NWE5Y2E1ZTE0MzYxNDEzYWZmZTJhMzhjMDk4OWRm
MzQ3ZC4uOGU3MWFmMDk0MDJhNDg3YTkyYjRlYzdiMmJjMDdmOWIyYjExYTlhYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlM
aXN0UmVjb3JkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNw
bGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oCkBAIC0xMjQsNyArMTI0LDcgQEAgcHJpdmF0
ZToKICAgICB2b2lkIGNsaXBPdXQoY29uc3QgUGF0aCYpIG92ZXJyaWRlOwogICAgIHZvaWQgY2xp
cFBhdGgoY29uc3QgUGF0aCYsIFdpbmRSdWxlKSBvdmVycmlkZTsKICAgICBJbnRSZWN0IGNsaXBC
b3VuZHMoKSBvdmVycmlkZTsKLSAgICB2b2lkIGNsaXBUb0ltYWdlQnVmZmVyKEltYWdlQnVmZmVy
JiwgY29uc3QgRmxvYXRSZWN0Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBjbGlwVG9JbWFnZUJ1ZmZl
cihXZWJDb3JlOjpJbWFnZUJ1ZmZlciYsIGNvbnN0IEZsb2F0UmVjdCYpIG92ZXJyaWRlOwogICAg
IAogICAgIHZvaWQgYXBwbHlEZXZpY2VTY2FsZUZhY3RvcihmbG9hdCkgb3ZlcnJpZGU7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdFJlcGxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmNwcAppbmRleCBkMDRiNDNkNDkzOWMz
MjgwZDcwM2EwYzNlZDcyMjdkYTYxZjNjOWI5Li4wZmYyOThkZTBjZTIzYzA0OGU2N2I3Y2ZkZjNj
YTNhNGE3MmMwNWExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuY3Bw
CkBAIC0zNSw5ICszNSwxMCBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogbmFtZXNwYWNlIERpc3Bs
YXlMaXN0IHsKIAotUmVwbGF5ZXI6OlJlcGxheWVyKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwg
Y29uc3QgRGlzcGxheUxpc3QmIGRpc3BsYXlMaXN0KQorUmVwbGF5ZXI6OlJlcGxheWVyKEdyYXBo
aWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRGlzcGxheUxpc3QmIGRpc3BsYXlMaXN0LCBXZWJD
b3JlOjpJbWFnZUJ1ZmZlciogaW1hZ2VCdWZmZXIpCiAgICAgOiBtX2Rpc3BsYXlMaXN0KGRpc3Bs
YXlMaXN0KQogICAgICwgbV9jb250ZXh0KGNvbnRleHQpCisgICAgLCBtX2ltYWdlQnVmZmVyKGlt
YWdlQnVmZmVyKQogewogfQogCkBAIC02Niw3ICs2Nyw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxEaXNw
bGF5TGlzdD4gUmVwbGF5ZXI6OnJlcGxheShjb25zdCBGbG9hdFJlY3QmIGluaXRpYWxDbGlwLCBi
b29sCiAgICAgICAgIH0KIAogICAgICAgICBMT0dfV0lUSF9TVFJFQU0oRGlzcGxheUxpc3RzLCBz
dHJlYW0gPDwgImFwcGx5aW5nICIgPDwgaSA8PCAiICIgPDwgaXRlbSk7Ci0gICAgICAgIGl0ZW0u
YXBwbHkobV9jb250ZXh0KTsKKyAgICAgICAgaXRlbS5hcHBseShtX2NvbnRleHQsIG1faW1hZ2VC
dWZmZXIpOwogCiAgICAgICAgIGlmIChVTkxJS0VMWSh0cmFja1JlcGxheUxpc3QpKQogICAgICAg
ICAgICAgcmVwbGF5TGlzdC0+YXBwZW5kSXRlbShjb25zdF9jYXN0PEl0ZW0mPihpdGVtKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3RSZXBsYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuaAppbmRleCA2MGU2NWFmMjc4ZTY0OWIx
ZjA0YTM0NDBmYjU0YTU0ZDU0YTJjYjBkLi4yZjRmZDViNjdiY2VkNDExZmYxNDdmZjY2ZmI5YTk2
Y2QyOTNjOGNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9k
aXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmgKQEAgLTM5
LDcgKzM5LDcgQEAgbmFtZXNwYWNlIERpc3BsYXlMaXN0IHsKIGNsYXNzIFJlcGxheWVyIHsKICAg
ICBXVEZfTUFLRV9OT05DT1BZQUJMRShSZXBsYXllcik7CiBwdWJsaWM6Ci0gICAgV0VCQ09SRV9F
WFBPUlQgUmVwbGF5ZXIoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRGlzcGxheUxpc3QmKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBSZXBsYXllcihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBEaXNwbGF5
TGlzdCYsIFdlYkNvcmU6OkltYWdlQnVmZmVyKiA9IG51bGxwdHIpOwogICAgIFdFQkNPUkVfRVhQ
T1JUIH5SZXBsYXllcigpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgc3RkOjp1bmlxdWVfcHRyPERp
c3BsYXlMaXN0PiByZXBsYXkoY29uc3QgRmxvYXRSZWN0JiBpbml0aWFsQ2xpcCA9IHsgfSwgYm9v
bCB0cmFja1JlcGxheUxpc3QgPSBmYWxzZSk7CkBAIC00Nyw2ICs0Nyw3IEBAIHB1YmxpYzoKIHBy
aXZhdGU6CiAgICAgY29uc3QgRGlzcGxheUxpc3QmIG1fZGlzcGxheUxpc3Q7CiAgICAgR3JhcGhp
Y3NDb250ZXh0JiBtX2NvbnRleHQ7CisgICAgV2ViQ29yZTo6SW1hZ2VCdWZmZXIqIG1faW1hZ2VC
dWZmZXI7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3Jh
cGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyUHJveHkuaAppbmRleCAwMDYxZDc3ZTljZjQ0Y2Fi
ZDQyYzkzYTk0OTZmNGJhN2Q1YTg4YTE5Li41ZTFkNDMzOWUxODJmY2FlOWNkYjg1MGRhOTdjMzUx
YmI0ZWQ4ODhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3Mv
UmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9n
cmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmgKQEAgLTU3LDcgKzU3LDcgQEAgcHJpdmF0
ZToKICAgICB2b2lkIGZsdXNoRHJhd2luZ0NvbnRleHQoY29uc3QgV2ViQ29yZTo6RGlzcGxheUxp
c3Q6OkRpc3BsYXlMaXN0JiBkaXNwbGF5TGlzdCwgSW1hZ2VCdWZmZXJGbHVzaElkZW50aWZpZXIg
Zmx1c2hJZGVudGlmaWVyKSBvdmVycmlkZQogICAgIHsKICAgICAgICAgaWYgKGRpc3BsYXlMaXN0
Lml0ZW1Db3VudCgpKSB7Ci0gICAgICAgICAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVwbGF5
ZXIgcmVwbGF5ZXIoQmFzZUNvbmNyZXRlSW1hZ2VCdWZmZXI6OmNvbnRleHQoKSwgZGlzcGxheUxp
c3QpOworICAgICAgICAgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlcGxheWVyIHJlcGxheWVy
KEJhc2VDb25jcmV0ZUltYWdlQnVmZmVyOjpjb250ZXh0KCksIGRpc3BsYXlMaXN0LCB0aGlzKTsK
ICAgICAgICAgICAgIHJlcGxheWVyLnJlcGxheSgpOwogICAgICAgICB9CiAgICAgICAgIG1fYmFj
a2VuZC0+Zmx1c2hDb250ZXh0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9X
ZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFy
Z3VtZW50Q29kZXJzLmNwcAppbmRleCAzZjM1MjA1Y2VlZjRiMGU2NjY5M2U3ODMyMTMwNDdmMTc2
MDI2OTgyLi5iMDA5OTNiYzc2NzA3Njk4NGYzMTJiMThhYmM2ZDFmZjExNDgzODZhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKQEAgLTMyMjMs
NiArMzIyMywyMCBAQCBPcHRpb25hbDxSZWZQdHI8U2hhcmVkQnVmZmVyPj4gQXJndW1lbnRDb2Rl
cjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj46OmRlYwogICAgIHJldHVybiBidWZmZXI7
CiB9CiAKK3ZvaWQgQXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj46OmVu
Y29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYg
YnVmZmVyKQoreworICAgIGVuY29kZVNoYXJlZEJ1ZmZlcihlbmNvZGVyLCBidWZmZXIucHRyKCkp
OworfQorCitPcHRpb25hbDxSZWY8U2hhcmVkQnVmZmVyPj4gQXJndW1lbnRDb2RlcjxSZWY8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPj46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICBpZiAoIWRlY29kZVNoYXJlZEJ1ZmZlcihk
ZWNvZGVyLCBidWZmZXIpIHx8ICFidWZmZXIpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisKKyAgICByZXR1cm4gYnVmZmVyLnJlbGVhc2VOb25OdWxsKCk7Cit9CisKICNpZiBFTkFCTEUo
RU5DUllQVEVEX01FRElBKQogdm9pZCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkNETUluc3RhbmNl
U2Vzc2lvbjo6TWVzc2FnZT46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBXZWJDb3Jl
OjpDRE1JbnN0YW5jZVNlc3Npb246Ok1lc3NhZ2UmIG1lc3NhZ2UpCiB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaCBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCmluZGV4IGQwN2YyYmY1YjIxYjYyMGI5
MTk4MTAxOTk0MGUyNzQ0ZWQyNTAwY2QuLmY5NWJlMTk4ZmE3YWI4Zjk3NzcyMTVmMzk0MTg2Mzkz
MTc2YzBiOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVu
dENvZGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVy
cy5oCkBAIC04NDEsNiArODQxLDExIEBAIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8
UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+IHsKICAgICBzdGF0aWMgT3B0aW9uYWw8UmVm
UHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+IGRlY29kZShEZWNvZGVyJik7CiB9OwogCit0ZW1w
bGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+PiB7
CisgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBSZWY8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPiYpOworICAgIHN0YXRpYyBPcHRpb25hbDxSZWY8V2ViQ29yZTo6U2hhcmVkQnVm
ZmVyPj4gZGVjb2RlKERlY29kZXImKTsKK307CisKICNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElB
KQogdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpDRE1JbnN0YW5jZVNl
c3Npb246Ok1lc3NhZ2U+IHsKICAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0
IFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6TWVzc2FnZSYpOwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDgzMGU5YjQ5
ZGU2MTczMTAyOWNjNDQ5OGQ2NDhlMDQzMWY2OTdhYmMuLjFkMjhlYTIxZGMxN2Q4NmZmMzY3N2M1
ZGUyNjY3YTFhODk0Zjc1NmMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysg
Yi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAyMC0wMy0wNCAgTXls
ZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJv
Y2Vzc10gSW1wbGVtZW50IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5wdXRJbWFnZURhdGEoKQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA4NjIxCisg
ICAgICAgIDxyZGFyOi8vcHJvYmxlbS82MDA2ODA0Nz4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGZhc3QvY2FudmFzL3B1dEltYWdlRGF0YS1tdWx0
aXBsZS1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2NhbnZhcy9wdXRJbWFn
ZURhdGEtbXVsdGlwbGUuaHRtbDogQWRkZWQuCisKIDIwMjAtMDMtMDQgIERvdWcgS2VsbHkgIDxk
b3Vna0BhcHBsZS5jb20+CiAKICAgICAgICAgQ3Jhc2ggaW4gU1ZHRWxlbWVudDo6cmVtb3ZlRXZl
bnRMaXN0ZW5lciB3aXRoIHN5bWJvbCBlbGVtZW50CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9m
YXN0L2NhbnZhcy9wdXRJbWFnZURhdGEtbXVsdGlwbGUtZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRl
c3RzL2Zhc3QvY2FudmFzL3B1dEltYWdlRGF0YS1tdWx0aXBsZS1leHBlY3RlZC5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjAzYzFjMzZhMTdjYjBhZjBhMjdmYTEyYzAxYmNkMGUzNzA2YjFhYjYKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9wdXRJbWFnZURhdGEtbXVsdGlwbGUt
ZXhwZWN0ZWQuaHRtbApAQCAtMCwwICsxLDkgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8
aGVhZD4KKzwvaGVhZD4KKzxib2R5PgorVGhpcyB0ZXN0IG1ha2VzIHN1cmUgdGhhdCBwdXRJbWFn
ZURhdGEoKSBpc24ndCBhZmZlY3RlZCBieSBzdWJzZXF1ZW50IGNoYW5nZXMgdG8gdGhlIEltYWdl
RGF0YS4gVGhlIHRlc3QgcGFzc2VzIGlmIHlvdSBzZWUgYSBncmVlbiBzcXVhcmUgYmVsb3cuCis8
ZGl2IHN0eWxlPSJ3aWR0aDogMTAwcHg7IGhlaWdodDogMTAwcHg7IGJhY2tncm91bmQ6IHJnYigw
LCAyNTUsIDApIj48L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2Zhc3QvY2FudmFzL3B1dEltYWdlRGF0YS1tdWx0aXBsZS5odG1sIGIvTGF5b3V0VGVzdHMv
ZmFzdC9jYW52YXMvcHV0SW1hZ2VEYXRhLW11bHRpcGxlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGYwZWU1
Y2QwODZjZTFhMThkNTdhYjk2ZjdiNDk4YzI4NGZlMmUxZQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2Zhc3QvY2FudmFzL3B1dEltYWdlRGF0YS1tdWx0aXBsZS5odG1sCkBAIC0wLDAg
KzEsMzAgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzwvaGVhZD4KKzxib2R5
PgorVGhpcyB0ZXN0IG1ha2VzIHN1cmUgdGhhdCBwdXRJbWFnZURhdGEoKSBpc24ndCBhZmZlY3Rl
ZCBieSBzdWJzZXF1ZW50IGNoYW5nZXMgdG8gdGhlIEltYWdlRGF0YS4gVGhlIHRlc3QgcGFzc2Vz
IGlmIHlvdSBzZWUgYSBncmVlbiBzcXVhcmUgYmVsb3cuCis8ZGl2PjxjYW52YXMgaWQ9ImNhbnZh
cyIgd2lkdGg9IjEwMCIgaGVpZ2h0PSIxMDAiPjwvY2FudmFzPjwvZGl2PgorPHNjcmlwdD4KK2xl
dCBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2FudmFzIik7CitsZXQgY29udGV4
dCA9IGNhbnZhcy5nZXRDb250ZXh0KCIyZCIpOworbGV0IHdpZHRoID0gMTAwOworbGV0IGhlaWdo
dCA9IDEwMDsKK2xldCBpbWFnZURhdGEgPSBjb250ZXh0LmNyZWF0ZUltYWdlRGF0YSh3aWR0aCwg
aGVpZ2h0KTsKK2xldCBkYXRhID0gaW1hZ2VEYXRhLmRhdGE7Citmb3IgKGxldCBpID0gMDsgaSA8
IHdpZHRoICogaGVpZ2h0OyArK2kpIHsKKyAgICBkYXRhWzQgKiBpICsgMF0gPSAwOworICAgIGRh
dGFbNCAqIGkgKyAxXSA9IDI1NTsKKyAgICBkYXRhWzQgKiBpICsgMl0gPSAwOworICAgIGRhdGFb
NCAqIGkgKyAzXSA9IDI1NTsKK30KK2NvbnRleHQucHV0SW1hZ2VEYXRhKGltYWdlRGF0YSwgMCwg
MCk7Citmb3IgKGxldCBpID0gMDsgaSA8IHdpZHRoICogaGVpZ2h0OyArK2kpIHsKKyAgICBkYXRh
WzQgKiBpICsgMF0gPSAyNTU7CisgICAgZGF0YVs0ICogaSArIDFdID0gMDsKKyAgICBkYXRhWzQg
KiBpICsgMl0gPSAwOworICAgIGRhdGFbNCAqIGkgKyAzXSA9IDI1NTsKK30KKzwvc2NyaXB0Pgor
PC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>392657</attachid>
            <date>2020-03-05 19:15:41 -0800</date>
            <delta_ts>2020-03-06 17:31:10 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-208621-20200305191540.patch</filename>
            <type>text/plain</type>
            <size>31153</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU3OTM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWZhOWM2ODc2ZWU5ZWQ5
OWE3MzM3MTQxYmUxNjEzNjA4ZmMyYzI2Yy4uMTZlYmZmZGI4MGY0Nzc4YWFjNGY0NjczMzFlZTE5
MTZlZjAzNmVlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU4IEBACisyMDIwLTAzLTA1ICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQVSBQcm9j
ZXNzXSBJbXBsZW1lbnQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELnB1dEltYWdlRGF0YSgpCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDg2MjEKKyAg
ICAgICAgPHJkYXI6Ly9wcm9ibGVtLzYwMDY4MDQ3PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIHB1dEltYWdlRGF0YSgpIGlzIGltcGxlbWVudGVkIGp1
c3QgYXMgYSBEaXNwbGF5TGlzdEl0ZW0uIENvbmNlcHR1YWxseSwgaXQncyB0aGUKKyAgICAgICAg
c2FtZSBhcyBhIGRyYXcgY29tbWFuZC4gVW5mb3J0dW5hdGVseSwgaXQgY2FuJ3QgYmUgaW1wbGVt
ZW50ZWQgb24gdG9wIG9mCisgICAgICAgIEdyYXBoaWNzQ29udGV4dCwgYW5kIGluc3RlYWQgaGFz
IHRvIGJlIGltcGxlbWVudGVkIG9uIHRvcCBvZiBJbWFnZUJ1ZmZlciwgc28KKyAgICAgICAgdGhp
cyBwYXRjaCBhbHNvIGFkZHMgYW4gb3B0aW9uYWwgSW1hZ2VCdWZmZXIqIGFyZ3VtZW50IHRvIERp
c3BsYXlMaXN0SXRlbTo6YXBwbHkoKS4KKyAgICAgICAgVGhlIGRhdGEgaXRzZWxmIGlzIHRyYW5z
ZmVycmVkIHVzaW5nIHNoYXJlZCBtZW1vcnkuCisKKyAgICAgICAgSW1wbGVtZW50aW5nIHRoaXMg
YXMgYSBEaXNwbGF5TGlzdEl0ZW0gcmF0aGVyIHRoYW4gaXRzIG93biBJUEMgbWVzc2FnZSBpcyBz
dXBlcmlvcgorICAgICAgICBiZWNhdXNlIGl0IGdpdmVzIHVzIG1vcmUgY29udHJvbCBhYm91dCB3
aGVuIHRvIGZsdXNoIHRoZSBpbi1mbGlnaHQgZGlzcGxheSBsaXN0LgorCisgICAgICAgIFRoZXJl
IGlzIHN0aWxsIG9uZSB1bm5lY2Vzc2FyeSBjb3B5IC0gdGhlIEdQVSBwcm9jZXNzIGNvcGllcyBm
cm9tIHRoZSBTaGFyZWRCdWZmZXIKKyAgICAgICAgaW50byB0aGUgSW1hZ2VCdWZmZXIgYmVmb3Jl
IHJ1bm5pbmcgdGhlIHJlYWwgcHV0SW1hZ2VEYXRhKCkgY29tbWFuZC4gQmVpbmcgYWJsZSB0bwor
ICAgICAgICBlaXRoZXIgaGF2ZSB0aGUgSW1hZ2VCdWZmZXIgcmV0YWluIHRoZSBTaGFyZWRCdWZm
ZXIsIG9yIGhhdmUgcHV0SW1hZ2VEYXRhKCkgaGF2ZQorICAgICAgICBhbiBvdmVybG9hZCB3aGlj
aCBhY2NlcHRzIGEgU2hhcmVkQnVmZmVyLCB3b3VsZCBiZSBhIGdvb2Qgb3Bwb3J0dW5pdHkgZm9y
CisgICAgICAgIGltcHJvdmVtZW50LgorCisgICAgICAgIFRlc3Q6IGZhc3QvY2FudmFzL3B1dElt
YWdlRGF0YS1tdWx0aXBsZS5odG1sCisKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkRCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmlu
Z0NvbnRleHQyREJhc2U6OnBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9BbHBoYVByZW11bHRpcGxpY2F0aW9uLmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0Lmg6CisgICAgICAgIChX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbTo6YXBwbHkgY29uc3QpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEltYWdlQnVmZmVyLmg6CisgICAg
ICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SW1hZ2VCdWZmZXI6OnB1dEltYWdlRGF0YSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW06OnNpemVJbkJ5dGVzKToK
KyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpQdXRJbWFnZURhdGE6OlB1dEltYWdlRGF0
YSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UHV0SW1hZ2VEYXRhOjphcHBseSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6b3BlcmF0b3I8PCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaDoK
KyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpQdXRJbWFnZURhdGE6OmNyZWF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UHV0SW1hZ2VEYXRhOjppbnB1dEZvcm1hdCBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UHV0SW1hZ2VEYXRhOjppbWFn
ZURhdGFTaXplIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpQdXRJbWFn
ZURhdGE6OnNyY1JlY3QgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlB1
dEltYWdlRGF0YTo6ZGVzdFBvaW50IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlM
aXN0OjpQdXRJbWFnZURhdGE6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNw
bGF5TGlzdDo6UHV0SW1hZ2VEYXRhOjpkZWNvZGUpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxh
eUxpc3Q6Okl0ZW06OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlz
dDo6SXRlbTo6ZGVjb2RlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlz
dDo6UmVjb3JkZXI6OmNsaXBUb0ltYWdlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZXBsYXllcjo6UmVwbGF5ZXIpOgorICAgICAgICAo
V2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlcGxheWVyOjpyZXBsYXkpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmg6CisKIDIwMjAt
MDMtMDUgIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CiAKICAgICAgICAgW0dQVVBd
IEltcGxlbWVudCBSZW1vdGVBdWRpb1Nlc3Npb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggMjg1OTZiOTc4YzZjZjVi
Yjc3YTk2NDEwYTI0ZWIwM2JiZWIyOTkwOS4uOWMwODU2Zjg5ZTg0OTZhZjAwY2MyNjI5YmM5ODY2
YTRkYWQ5OWE0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAyMC0wMy0wNSAgTXlsZXMg
Qy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vz
c10gSW1wbGVtZW50IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5wdXRJbWFnZURhdGEoKQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA4NjIxCisgICAg
ICAgIDxyZGFyOi8vcHJvYmxlbS82MDA2ODA0Nz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VC
dWZmZXJQcm94eS5oOgorICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3Bw
OgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+
Pjo6ZW5jb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPj46OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENv
ZGVycy5oOgorCiAyMDIwLTAzLTA1ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgog
CiAgICAgICAgIFtHUFVQXSBJbXBsZW1lbnQgUmVtb3RlQXVkaW9TZXNzaW9uCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQy
REJhc2UuY3BwCmluZGV4IGQyYjhkYjgxNGQzMTM0MTg2NDEyZmE1ZDhhZWFmN2EyMzgwYjEyODUu
LmM0MTg2YmU2OTgzNDJiY2JkNDBmOGE1MWE2MjdhNjk4MGMzYThkNWYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQy
REJhc2UuY3BwCkBAIC0yMTAzLDcgKzIxMDMsNyBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRl
eHQyREJhc2U6OnBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKCkKICAgICAgICAgICAgIHJl
dHVybjsKIAogICAgICAgICBGbG9hdFJlY3QgY2xpcChGbG9hdFBvaW50Ojp6ZXJvKCksIGNhbnZh
c0Jhc2UoKS5zaXplKCkpOwotICAgICAgICBEaXNwbGF5TGlzdDo6UmVwbGF5ZXIgcmVwbGF5ZXIo
KmNhbnZhc0Jhc2UoKS5kcmF3aW5nQ29udGV4dCgpLCBtX3JlY29yZGluZ0NvbnRleHQtPmRpc3Bs
YXlMaXN0KTsKKyAgICAgICAgRGlzcGxheUxpc3Q6OlJlcGxheWVyIHJlcGxheWVyKCpjYW52YXNC
YXNlKCkuZHJhd2luZ0NvbnRleHQoKSwgbV9yZWNvcmRpbmdDb250ZXh0LT5kaXNwbGF5TGlzdCwg
Y2FudmFzQmFzZSgpLmJ1ZmZlcigpKTsKIAogICAgICAgICBpZiAoVU5MSUtFTFkobV90cmFja3NE
aXNwbGF5TGlzdFJlcGxheSkpIHsKICAgICAgICAgICAgIGF1dG8gcmVwbGF5TGlzdCA9IHJlcGxh
eWVyLnJlcGxheShjbGlwLCBtX3RyYWNrc0Rpc3BsYXlMaXN0UmVwbGF5KTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0FscGhhUHJlbXVsdGlwbGljYXRpb24u
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0FscGhhUHJlbXVsdGlwbGljYXRp
b24uaAppbmRleCA2ZDFjYWVmODU0MWRlZTA2MmJmZTA1NDE2Y2RhMmYyYTdmNzkyNmUyLi5iMjc3
ODBmNjJiMTkyZjU4MWMyNDM5MmFkMTkxN2UwYzVjNWY3MDllIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9BbHBoYVByZW11bHRpcGxpY2F0aW9uLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQWxwaGFQcmVtdWx0aXBsaWNhdGlvbi5o
CkBAIC0zNCw2ICszNCwxNyBAQCBlbnVtIGNsYXNzIEFscGhhUHJlbXVsdGlwbGljYXRpb24gOiB1
aW50OF90IHsKICAgICBVbnByZW11bHRpcGxpZWQKIH07CiAKKwogV0VCQ09SRV9FWFBPUlQgV1RG
OjpUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIEFscGhhUHJlbXVsdGlw
bGljYXRpb24pOwogCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCit9CisKK25hbWVzcGFjZSBXVEYg
ewordGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpBbHBoYVByZW11bHRpcGxp
Y2F0aW9uPiB7CisgICAgdXNpbmcgdmFsdWVzID0gRW51bVZhbHVlczwKKyAgICAgICAgV2ViQ29y
ZTo6QWxwaGFQcmVtdWx0aXBsaWNhdGlvbiwKKyAgICAgICAgV2ViQ29yZTo6QWxwaGFQcmVtdWx0
aXBsaWNhdGlvbjo6UHJlbXVsdGlwbGllZCwKKyAgICAgICAgV2ViQ29yZTo6QWxwaGFQcmVtdWx0
aXBsaWNhdGlvbjo6VW5wcmVtdWx0aXBsaWVkCisgICAgPjsKK307Cit9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3Qu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdC5oCmluZGV4IDJjNjc3ZjZiNzM2ZTc1MmU0MWY4YjNmMjQzNDc2ZDQ1MDg0MjQzNzEuLjA3
OWJkMTc1YmZkZWU2ZDJiNTBkNTk0YWUwNzI4OGZiMTg0NjRiMDQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdC5oCkBAIC04MSw2ICs4MSw3IEBAIGVudW0gY2xhc3MgSXRlbVR5cGUgOiB1aW50OF90IHsK
ICAgICBGaWxsUmVjdFdpdGhSb3VuZGVkSG9sZSwKICAgICBGaWxsUGF0aCwKICAgICBGaWxsRWxs
aXBzZSwKKyAgICBQdXRJbWFnZURhdGEsCiAgICAgU3Ryb2tlUmVjdCwKICAgICBTdHJva2VQYXRo
LAogICAgIFN0cm9rZUVsbGlwc2UsCkBAIC0xMDYsNyArMTA3LDExIEBAIHB1YmxpYzoKICAgICAg
ICAgcmV0dXJuIG1fdHlwZTsKICAgICB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgYXBwbHkoR3JhcGhp
Y3NDb250ZXh0JikgY29uc3QgPSAwOworICAgIHZpcnR1YWwgdm9pZCBhcHBseShHcmFwaGljc0Nv
bnRleHQmKSBjb25zdCB7IH07CisgICAgdmlydHVhbCB2b2lkIGFwcGx5KEdyYXBoaWNzQ29udGV4
dCYgZ3JhcGhpY3NDb250ZXh0LCBJbWFnZUJ1ZmZlciopIGNvbnN0CisgICAgeworICAgICAgICBh
cHBseShncmFwaGljc0NvbnRleHQpOworICAgIH07CiAKICAgICBzdGF0aWMgY29uc3RleHByIGJv
b2wgaXNEaXNwbGF5TGlzdEl0ZW0gPSB0cnVlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3REcmF3aW5nQ29udGV4
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3REcmF3aW5nQ29udGV4dC5jcHAKaW5kZXggZTFjNjliNTFhNGJmODVmZWZlMWU3ZDFi
ZDQ1OTk1NDc0N2FhMTkyOS4uZjQ3NWM3MDRmNTY4MjlmMDVjNWMxZDIzZDY4MjEwYjk1YjMyZDhj
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0Rpc3BsYXlMaXN0RHJhd2luZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdERyYXdpbmdDb250ZXh0LmNw
cApAQCAtMzUsNyArMzUsOSBAQCBuYW1lc3BhY2UgRGlzcGxheUxpc3QgewogCiBEcmF3aW5nQ29u
dGV4dDo6RHJhd2luZ0NvbnRleHQoY29uc3QgRmxvYXRTaXplJiBsb2dpY2FsU2l6ZSkKICAgICA6
IG1fY29udGV4dChbJl0oR3JhcGhpY3NDb250ZXh0JiBkaXNwbGF5TGlzdENvbnRleHQpIHsKLSAg
ICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVjb3JkZXI+KGRpc3BsYXlMaXN0Q29udGV4dCwgbV9k
aXNwbGF5TGlzdCwgR3JhcGhpY3NDb250ZXh0U3RhdGUoKSwgRmxvYXRSZWN0KHsgfSwgbG9naWNh
bFNpemUpLCBBZmZpbmVUcmFuc2Zvcm0oKSk7CisgICAgICAgIGF1dG8gcmVjb3JkZXIgPSBtYWtl
VW5pcXVlPFJlY29yZGVyPihkaXNwbGF5TGlzdENvbnRleHQsIG1fZGlzcGxheUxpc3QsIEdyYXBo
aWNzQ29udGV4dFN0YXRlKCksIEZsb2F0UmVjdCh7IH0sIGxvZ2ljYWxTaXplKSwgQWZmaW5lVHJh
bnNmb3JtKCkpOworICAgICAgICBtX3JlY29yZGVyID0gcmVjb3JkZXIuZ2V0KCk7CisgICAgICAg
IHJldHVybiByZWNvcmRlcjsKICAgICB9KQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0RHJhd2luZ0NvbnRl
eHQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdERyYXdpbmdDb250ZXh0LmgKaW5kZXggNWQzODVhYWJkMDRhOTRlY2Y4MTAxNTE2OTI0
MDU3YzY5MzM3MzM2NC4uNjk3YzZmNGY0OWRlZTZiYjhjN2UxMzQzODQ0Zjk5NjI0Y2Q4OTNmYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3Rz
L0Rpc3BsYXlMaXN0RHJhd2luZ0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3REcmF3aW5nQ29udGV4dC5oCkBAIC0z
Niw2ICszNiwxMSBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgRHJhd2luZ0NvbnRleHQo
Y29uc3QgRmxvYXRTaXplJiBsb2dpY2FsU2l6ZSk7CiAKICAgICBHcmFwaGljc0NvbnRleHQmIGNv
bnRleHQoKSBjb25zdCB7IHJldHVybiBjb25zdF9jYXN0PERyYXdpbmdDb250ZXh0Jj4oKnRoaXMp
Lm1fY29udGV4dDsgfQorICAgIFJlY29yZGVyJiByZWNvcmRlcigpCisgICAgeworICAgICAgICBB
U1NFUlQobV9yZWNvcmRlcik7CisgICAgICAgIHJldHVybiAqbV9yZWNvcmRlcjsKKyAgICB9CiAg
ICAgRGlzcGxheUxpc3QmIGRpc3BsYXlMaXN0KCkgeyByZXR1cm4gbV9kaXNwbGF5TGlzdDsgfQog
ICAgIGNvbnN0IERpc3BsYXlMaXN0JiBkaXNwbGF5TGlzdCgpIGNvbnN0IHsgcmV0dXJuIG1fZGlz
cGxheUxpc3Q7IH0KICAgICBjb25zdCBEaXNwbGF5TGlzdCogcmVwbGF5ZWREaXNwbGF5TGlzdCgp
IGNvbnN0IHsgcmV0dXJuIG1fcmVwbGF5ZWREaXNwbGF5TGlzdC5nZXQoKTsgfQpAQCAtNDQsNiAr
NDksNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZXBsYXlEaXNwbGF5TGlz
dChHcmFwaGljc0NvbnRleHQmKTsKIAogcHJvdGVjdGVkOgorICAgIFJlY29yZGVyKiBtX3JlY29y
ZGVyIHsgbnVsbHB0ciB9OwogICAgIEdyYXBoaWNzQ29udGV4dCBtX2NvbnRleHQ7CiAgICAgRGlz
cGxheUxpc3QgbV9kaXNwbGF5TGlzdDsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8RGlzcGxheUxpc3Q+
IG1fcmVwbGF5ZWREaXNwbGF5TGlzdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNw
cAppbmRleCA5MWFiM2JmN2Q4N2IyNDdhYjYxOGQ5ODNkYjc1NGJjMmIyMTQwZTY0Li4zY2FmMDUx
NzAxODRjOTFmZjI2NWVjMDYxYjk2ZTc2NzU5NjQ3NzdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3Bs
YXlMaXN0SXRlbXMuY3BwCkBAIC0yNyw2ICsyNywxMSBAQAogI2luY2x1ZGUgIkRpc3BsYXlMaXN0
SXRlbXMuaCIKIAogI2luY2x1ZGUgIkZvbnRDYXNjYWRlLmgiCisjaW5jbHVkZSAiSW1hZ2VCdWZm
ZXIuaCIKKyNpbmNsdWRlICJJbWFnZURhdGEuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIK
KyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9HZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmg+
CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVz
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvVGV4dFN0cmVhbS5oPgogCiAjaWYgVVNFKENHKQpAQCAt
MTM4LDYgKzE0Myw4IEBAIHNpemVfdCBJdGVtOjpzaXplSW5CeXRlcyhjb25zdCBJdGVtJiBpdGVt
KQogICAgICAgICByZXR1cm4gc2l6ZW9mKGRvd25jYXN0PEZpbGxQYXRoPihpdGVtKSk7CiAgICAg
Y2FzZSBJdGVtVHlwZTo6RmlsbEVsbGlwc2U6CiAgICAgICAgIHJldHVybiBzaXplb2YoZG93bmNh
c3Q8RmlsbEVsbGlwc2U+KGl0ZW0pKTsKKyAgICBjYXNlIEl0ZW1UeXBlOjpQdXRJbWFnZURhdGE6
CisgICAgICAgIHJldHVybiBzaXplb2YoZG93bmNhc3Q8UHV0SW1hZ2VEYXRhPihpdGVtKSk7CiAg
ICAgY2FzZSBJdGVtVHlwZTo6U3Ryb2tlUmVjdDoKICAgICAgICAgcmV0dXJuIHNpemVvZihkb3du
Y2FzdDxTdHJva2VSZWN0PihpdGVtKSk7CiAgICAgY2FzZSBJdGVtVHlwZTo6U3Ryb2tlUGF0aDoK
QEAgLTExNTMsNiArMTE2MCw1NCBAQCBzdGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0
U3RyZWFtJiB0cywgY29uc3QgRmlsbEVsbGlwc2UmIGl0ZW0pCiAgICAgcmV0dXJuIHRzOwogfQog
CitQdXRJbWFnZURhdGE6OlB1dEltYWdlRGF0YShBbHBoYVByZW11bHRpcGxpY2F0aW9uIGlucHV0
Rm9ybWF0LCBjb25zdCBJbWFnZURhdGEmIGltYWdlRGF0YSwgY29uc3QgSW50UmVjdCYgc3JjUmVj
dCwgY29uc3QgSW50UG9pbnQmIGRlc3RQb2ludCkKKyAgICA6IERyYXdpbmdJdGVtKEl0ZW1UeXBl
OjpQdXRJbWFnZURhdGEpCisgICAgLCBtX2lucHV0Rm9ybWF0KGlucHV0Rm9ybWF0KQorICAgICwg
bV9pbWFnZURhdGFTaXplKGltYWdlRGF0YS5zaXplKCkpCisgICAgLCBtX2RhdGEoV2ViQ29yZTo6
U2hhcmVkQnVmZmVyOjpjcmVhdGUoaW1hZ2VEYXRhLmRhdGEoKS0+ZGF0YSgpLCBpbWFnZURhdGEu
ZGF0YSgpLT5ieXRlTGVuZ3RoKCkpKSAvLyBUaGlzIGNvcHkgaXMgYWN0dWFsbHkgcmVxdWlyZWQg
dG8gcHJlc2VydmUgdGhlIHNlbWFudGljcyBvZiBwdXRJbWFnZURhdGEoKS4KKyAgICAsIG1fc3Jj
UmVjdChzcmNSZWN0KQorICAgICwgbV9kZXN0UG9pbnQoZGVzdFBvaW50KQoreworfQorCitQdXRJ
bWFnZURhdGE6OlB1dEltYWdlRGF0YShBbHBoYVByZW11bHRpcGxpY2F0aW9uIGlucHV0Rm9ybWF0
LCBjb25zdCBJbnRTaXplJiBpbWFnZURhdGFTaXplLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGRhdGEs
IGNvbnN0IEludFJlY3QmIHNyY1JlY3QsIGNvbnN0IEludFBvaW50JiBkZXN0UG9pbnQpCisgICAg
OiBEcmF3aW5nSXRlbShJdGVtVHlwZTo6UHV0SW1hZ2VEYXRhKQorICAgICwgbV9pbnB1dEZvcm1h
dChpbnB1dEZvcm1hdCkKKyAgICAsIG1faW1hZ2VEYXRhU2l6ZShpbWFnZURhdGFTaXplKQorICAg
ICwgbV9kYXRhKFdURk1vdmUoZGF0YSkpCisgICAgLCBtX3NyY1JlY3Qoc3JjUmVjdCkKKyAgICAs
IG1fZGVzdFBvaW50KGRlc3RQb2ludCkKK3sKK30KKworUHV0SW1hZ2VEYXRhOjp+UHV0SW1hZ2VE
YXRhKCkgPSBkZWZhdWx0OworCit2b2lkIFB1dEltYWdlRGF0YTo6YXBwbHkoR3JhcGhpY3NDb250
ZXh0JiwgSW1hZ2VCdWZmZXIqIGltYWdlQnVmZmVyKSBjb25zdAoreworICAgIEFTU0VSVChpbWFn
ZUJ1ZmZlcik7CisgICAgaWYgKCFpbWFnZUJ1ZmZlcikKKyAgICAgICAgcmV0dXJuOworCisgICAg
Ly8gRklYTUU6IENvcHlpbmcgZnJvbSB0aGUgc2hhcmVkIGJ1ZmZlciBpbnRvIHRoZSBJbWFnZURh
dGEgaXMgc2xvdy4gSW52ZW50IHNvbWUgd2F5IGZvciB0aGUgSW1hZ2VEYXRhIHRvIHNpbXBseSBq
dXN0IHJldGFpbiB0aGUgU2hhcmVkQnVmZmVyLCBhbmQgdXNlIGl0IGludGVybmFsbHkuCisgICAg
Ly8gQWx0ZXJuYXRpdmVseSwgcHV0SW1hZ2VEYXRhKCkgY291bGQgaGF2ZSBhbiBvdmVybG9hZCB3
aGljaCBhY2NlcHRzIHRoZSBTaGFyZWRCdWZmZXIgaXRzZWxmLgorICAgIGF1dG8gaW1hZ2VEYXRh
ID0gSW1hZ2VEYXRhOjpjcmVhdGUobV9pbWFnZURhdGFTaXplLCBVaW50OENsYW1wZWRBcnJheTo6
Y3JlYXRlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KG1fZGF0YS0+ZGF0YSgpKSwg
bV9kYXRhLT5zaXplKCkpKTsKKyAgICBBU1NFUlQoaW1hZ2VEYXRhKTsKKyAgICBpZiAoIWltYWdl
RGF0YSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaW1hZ2VCdWZmZXItPnB1dEltYWdlRGF0YSht
X2lucHV0Rm9ybWF0LCAqaW1hZ2VEYXRhLCBtX3NyY1JlY3QsIG1fZGVzdFBvaW50KTsKK30KKwor
c3RhdGljIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFB1dElt
YWdlRGF0YSYgaXRlbSkKK3sKKyAgICB0cyA8PCBzdGF0aWNfY2FzdDxjb25zdCBEcmF3aW5nSXRl
bSY+KGl0ZW0pOworICAgIHRzLmR1bXBQcm9wZXJ0eSgiaW5wdXRGb3JtYXQiLCBpdGVtLmlucHV0
Rm9ybWF0KCkpOworICAgIHRzLmR1bXBQcm9wZXJ0eSgiaW1hZ2VEYXRhU2l6ZSIsIGl0ZW0uaW1h
Z2VEYXRhU2l6ZSgpKTsKKyAgICB0cy5kdW1wUHJvcGVydHkoInNyY1JlY3QiLCBpdGVtLnNyY1Jl
Y3QoKSk7CisgICAgdHMuZHVtcFByb3BlcnR5KCJkZXN0UG9pbnQiLCBpdGVtLmRlc3RQb2ludCgp
KTsKKyAgICByZXR1cm4gdHM7Cit9CisKIFN0cm9rZVJlY3Q6OlN0cm9rZVJlY3QoY29uc3QgRmxv
YXRSZWN0JiByZWN0LCBmbG9hdCBsaW5lV2lkdGgpCiAgICAgOiBEcmF3aW5nSXRlbShJdGVtVHlw
ZTo6U3Ryb2tlUmVjdCkKICAgICAsIG1fcmVjdChyZWN0KQpAQCAtMTM4MSw2ICsxNDM2LDcgQEAg
c3RhdGljIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IEl0ZW1U
eXBlJiB0eXBlKQogICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlOiB0
cyA8PCAiZmlsbC1yZWN0LXdpdGgtcm91bmRlZC1ob2xlIjsgYnJlYWs7CiAgICAgY2FzZSBJdGVt
VHlwZTo6RmlsbFBhdGg6IHRzIDw8ICJmaWxsLXBhdGgiOyBicmVhazsKICAgICBjYXNlIEl0ZW1U
eXBlOjpGaWxsRWxsaXBzZTogdHMgPDwgImZpbGwtZWxsaXBzZSI7IGJyZWFrOworICAgIGNhc2Ug
SXRlbVR5cGU6OlB1dEltYWdlRGF0YTogdHMgPDwgInB1dC1pbWFnZS1kYXRhIjsgYnJlYWs7CiAg
ICAgY2FzZSBJdGVtVHlwZTo6U3Ryb2tlUmVjdDogdHMgPDwgInN0cm9rZS1yZWN0IjsgYnJlYWs7
CiAgICAgY2FzZSBJdGVtVHlwZTo6U3Ryb2tlUGF0aDogdHMgPDwgInN0cm9rZS1wYXRoIjsgYnJl
YWs7CiAgICAgY2FzZSBJdGVtVHlwZTo6U3Ryb2tlRWxsaXBzZTogdHMgPDwgInN0cm9rZS1lbGxp
cHNlIjsgYnJlYWs7CkBAIC0xNTE3LDYgKzE1NzMsOSBAQCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8
KFRleHRTdHJlYW0mIHRzLCBjb25zdCBJdGVtJiBpdGVtKQogICAgIGNhc2UgSXRlbVR5cGU6OkZp
bGxFbGxpcHNlOgogICAgICAgICB0cyA8PCBkb3duY2FzdDxGaWxsRWxsaXBzZT4oaXRlbSk7CiAg
ICAgICAgIGJyZWFrOworICAgIGNhc2UgSXRlbVR5cGU6OlB1dEltYWdlRGF0YToKKyAgICAgICAg
dHMgPDwgZG93bmNhc3Q8UHV0SW1hZ2VEYXRhPihpdGVtKTsKKyAgICAgICAgYnJlYWs7CiAgICAg
Y2FzZSBJdGVtVHlwZTo6U3Ryb2tlUmVjdDoKICAgICAgICAgdHMgPDwgZG93bmNhc3Q8U3Ryb2tl
UmVjdD4oaXRlbSk7CiAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1z
LmgKaW5kZXggOTdmZDBhMDBhNGQ0YmM2ZTc2MTI3MmQ5NmViNzQ2NjczMDJmODBhNi4uYzg4MThm
YTk2Yjc2MjRmNzA4MTRiMjc5NTBjYTI2MjE1YTg0ZGZlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3RJdGVtcy5oCkBAIC0yNSw2ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVk
ZSAiQWxwaGFQcmVtdWx0aXBsaWNhdGlvbi5oIgogI2luY2x1ZGUgIkRpc3BsYXlMaXN0LmgiCiAj
aW5jbHVkZSAiRmxvYXRQb2ludC5oIgogI2luY2x1ZGUgIkZsb2F0Um91bmRlZFJlY3QuaCIKQEAg
LTMyLDYgKzMzLDcgQEAKICNpbmNsdWRlICJHbHlwaEJ1ZmZlci5oIgogI2luY2x1ZGUgIkltYWdl
LmgiCiAjaW5jbHVkZSAiUGF0dGVybi5oIgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2lu
Y2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1R5cGVDYXN0cy5oPgogCkBA
IC00MSw2ICs0Myw3IEBAIGNsYXNzIFRleHRTdHJlYW07CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAorY2xhc3MgSW1hZ2VEYXRhOwogc3RydWN0IEltYWdlUGFpbnRpbmdPcHRpb25zOwogCiBuYW1l
c3BhY2UgRGlzcGxheUxpc3QgewpAQCAtNjAsNiArNjMsMTAgQEAgcHVibGljOgogICAgIC8vIERv
ZXMgbm90IGluY2x1ZGUgZWZmZXRzIG9mIHRyYW5zZm9ybSwgc2hhZG93IGV0YyBpbiB0aGUgc3Rh
dGUuCiAgICAgdmlydHVhbCBPcHRpb25hbDxGbG9hdFJlY3Q+IGxvY2FsQm91bmRzKGNvbnN0IEdy
YXBoaWNzQ29udGV4dCYpIGNvbnN0IHsgcmV0dXJuIFdURjo6bnVsbG9wdDsgfQogCisgICAgLy8g
U29tZSBvcGVyYXRpb25zIChlLmcuIHB1dEltYWdlRGF0YSkgb3BlcmF0ZSBpbiBnbG9iYWwgYm91
bmRzLiBGb3IgdGhlc2Ugb3BlcmF0aW9ucywgb3ZlcnJpZGUgdGhpcyBtZXRob2QuCisgICAgLy8g
SWYgYXBwbGljYWJsZSwgdGhlIHJldHVybiB2YWx1ZSBuZWVkcyB0byBpbmNsdWRlIHRoZSBlZmZl
Y3RzIG9mIHNoYWRvd3MsIGNsaXBwaW5nLCBldGMuCisgICAgdmlydHVhbCBPcHRpb25hbDxGbG9h
dFJlY3Q+IGdsb2JhbEJvdW5kcygpIGNvbnN0IHsgcmV0dXJuIFdURjo6bnVsbG9wdDsgfQorCiBw
cml2YXRlOgogICAgIGJvb2wgaXNEcmF3aW5nSXRlbSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IHRydWU7IH0KIApAQCAtMjQ1Nyw2ICsyNDY0LDg0IEBAIE9wdGlvbmFsPFJlZjxGaWxsRWxsaXBz
ZT4+IEZpbGxFbGxpcHNlOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICByZXR1cm4gRmls
bEVsbGlwc2U6OmNyZWF0ZSgqcmVjdCk7CiB9CiAKK2NsYXNzIFB1dEltYWdlRGF0YSA6IHB1Ymxp
YyBEcmF3aW5nSXRlbSB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxQdXRJbWFnZURhdGE+IGNy
ZWF0ZShBbHBoYVByZW11bHRpcGxpY2F0aW9uIGlucHV0Rm9ybWF0LCBjb25zdCBJbWFnZURhdGEm
IGltYWdlRGF0YSwgY29uc3QgSW50UmVjdCYgc3JjUmVjdCwgY29uc3QgSW50UG9pbnQmIGRlc3RQ
b2ludCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFB1dEltYWdlRGF0YShp
bnB1dEZvcm1hdCwgaW1hZ2VEYXRhLCBzcmNSZWN0LCBkZXN0UG9pbnQpKTsKKyAgICB9CisgICAg
c3RhdGljIFJlZjxQdXRJbWFnZURhdGE+IGNyZWF0ZShBbHBoYVByZW11bHRpcGxpY2F0aW9uIGlu
cHV0Rm9ybWF0LCBjb25zdCBJbnRTaXplJiBpbWFnZURhdGFTaXplLCBSZWY8U2hhcmVkQnVmZmVy
PiYmIGRhdGEsIGNvbnN0IEludFJlY3QmIHNyY1JlY3QsIGNvbnN0IEludFBvaW50JiBkZXN0UG9p
bnQpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBQdXRJbWFnZURhdGEoaW5w
dXRGb3JtYXQsIGltYWdlRGF0YVNpemUsIFdURk1vdmUoZGF0YSksIHNyY1JlY3QsIGRlc3RQb2lu
dCkpOworICAgIH0KKworICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgflB1dEltYWdlRGF0YSgp
OworCisgICAgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBpbnB1dEZvcm1hdCgpIGNvbnN0IHsgcmV0
dXJuIG1faW5wdXRGb3JtYXQ7IH0KKyAgICBJbnRTaXplIGltYWdlRGF0YVNpemUoKSBjb25zdCB7
IHJldHVybiBtX2ltYWdlRGF0YVNpemU7IH0KKyAgICBJbnRSZWN0IHNyY1JlY3QoKSBjb25zdCB7
IHJldHVybiBtX3NyY1JlY3Q7IH0KKyAgICBJbnRQb2ludCBkZXN0UG9pbnQoKSBjb25zdCB7IHJl
dHVybiBtX2Rlc3RQb2ludDsgfQorCisgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBl
bmNvZGUoRW5jb2RlciYpIGNvbnN0OworICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRp
YyBPcHRpb25hbDxSZWY8UHV0SW1hZ2VEYXRhPj4gZGVjb2RlKERlY29kZXImKTsKKworcHJpdmF0
ZToKKyAgICBXRUJDT1JFX0VYUE9SVCBQdXRJbWFnZURhdGEoQWxwaGFQcmVtdWx0aXBsaWNhdGlv
biBpbnB1dEZvcm1hdCwgY29uc3QgSW1hZ2VEYXRhJiwgY29uc3QgSW50UmVjdCYgc3JjUmVjdCwg
Y29uc3QgSW50UG9pbnQmIGRlc3RQb2ludCk7CisgICAgV0VCQ09SRV9FWFBPUlQgUHV0SW1hZ2VE
YXRhKEFscGhhUHJlbXVsdGlwbGljYXRpb24gaW5wdXRGb3JtYXQsIGNvbnN0IEludFNpemUmIGlt
YWdlRGF0YVNpemUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgZGF0YSwgY29uc3QgSW50UmVjdCYgc3Jj
UmVjdCwgY29uc3QgSW50UG9pbnQmIGRlc3RQb2ludCk7CisKKyAgICB2b2lkIGFwcGx5KEdyYXBo
aWNzQ29udGV4dCYsIFdlYkNvcmU6OkltYWdlQnVmZmVyKikgY29uc3Qgb3ZlcnJpZGU7CisKKyAg
ICBPcHRpb25hbDxGbG9hdFJlY3Q+IGdsb2JhbEJvdW5kcygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIEZsb2F0UmVjdChtX2Rlc3RQb2ludCwgbV9zcmNSZWN0LnNpemUoKSk7IH0KKworICAgIEFs
cGhhUHJlbXVsdGlwbGljYXRpb24gbV9pbnB1dEZvcm1hdDsKKyAgICBJbnRTaXplIG1faW1hZ2VE
YXRhU2l6ZTsKKyAgICBSZWY8U2hhcmVkQnVmZmVyPiBtX2RhdGE7CisgICAgSW50UmVjdCBtX3Ny
Y1JlY3Q7CisgICAgSW50UG9pbnQgbV9kZXN0UG9pbnQ7Cit9OworCit0ZW1wbGF0ZTxjbGFzcyBF
bmNvZGVyPgordm9pZCBQdXRJbWFnZURhdGE6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25z
dAoreworICAgIGVuY29kZXIgPDwgbV9pbnB1dEZvcm1hdDsKKyAgICBlbmNvZGVyIDw8IG1faW1h
Z2VEYXRhU2l6ZTsKKyAgICBlbmNvZGVyIDw8IG1fZGF0YTsKKyAgICBlbmNvZGVyIDw8IG1fc3Jj
UmVjdDsKKyAgICBlbmNvZGVyIDw8IG1fZGVzdFBvaW50OworfQorCit0ZW1wbGF0ZTxjbGFzcyBE
ZWNvZGVyPgorT3B0aW9uYWw8UmVmPFB1dEltYWdlRGF0YT4+IFB1dEltYWdlRGF0YTo6ZGVjb2Rl
KERlY29kZXImIGRlY29kZXIpCit7CisgICAgT3B0aW9uYWw8QWxwaGFQcmVtdWx0aXBsaWNhdGlv
bj4gaW5wdXRGb3JtYXQ7CisgICAgT3B0aW9uYWw8SW50U2l6ZT4gaW1hZ2VEYXRhU2l6ZTsKKyAg
ICBPcHRpb25hbDxSZWY8U2hhcmVkQnVmZmVyPj4gZGF0YTsKKyAgICBPcHRpb25hbDxJbnRSZWN0
PiBzcmNSZWN0OworICAgIE9wdGlvbmFsPEludFBvaW50PiBkZXN0UG9pbnQ7CisKKyAgICBkZWNv
ZGVyID4+IGlucHV0Rm9ybWF0OworICAgIGlmICghaW5wdXRGb3JtYXQpCisgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisKKyAgICBkZWNvZGVyID4+IGltYWdlRGF0YVNpemU7CisgICAgaWYg
KCFpbWFnZURhdGFTaXplKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgZGVj
b2RlciA+PiBkYXRhOworICAgIGlmICghZGF0YSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKworICAgIGRlY29kZXIgPj4gc3JjUmVjdDsKKyAgICBpZiAoIXNyY1JlY3QpCisgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBkZWNvZGVyID4+IGRlc3RQb2ludDsKKyAgICBp
ZiAoIWRlc3RQb2ludCkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIHJldHVy
biBQdXRJbWFnZURhdGE6OmNyZWF0ZSgqaW5wdXRGb3JtYXQsICppbWFnZURhdGFTaXplLCBXVEZN
b3ZlKCpkYXRhKSwgKnNyY1JlY3QsICpkZXN0UG9pbnQpOworfQorCiBjbGFzcyBTdHJva2VSZWN0
IDogcHVibGljIERyYXdpbmdJdGVtIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFN0cm9rZVJl
Y3Q+IGNyZWF0ZShjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGZsb2F0IGxpbmVXaWR0aCkKQEAgLTI4
NTIsNiArMjkzNyw5IEBAIHZvaWQgSXRlbTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0
CiAgICAgY2FzZSBJdGVtVHlwZTo6RmlsbEVsbGlwc2U6CiAgICAgICAgIGVuY29kZXIgPDwgZG93
bmNhc3Q8RmlsbEVsbGlwc2U+KCp0aGlzKTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJdGVt
VHlwZTo6UHV0SW1hZ2VEYXRhOgorICAgICAgICBlbmNvZGVyIDw8IGRvd25jYXN0PFB1dEltYWdl
RGF0YT4oKnRoaXMpOworICAgICAgICBicmVhazsKICAgICBjYXNlIEl0ZW1UeXBlOjpTdHJva2VS
ZWN0OgogICAgICAgICBlbmNvZGVyIDw8IGRvd25jYXN0PFN0cm9rZVJlY3Q+KCp0aGlzKTsKICAg
ICAgICAgYnJlYWs7CkBAIC0zMDUxLDYgKzMxMzksMTAgQEAgT3B0aW9uYWw8UmVmPEl0ZW0+PiBJ
dGVtOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICAgICAgaWYgKGF1dG8gaXRlbSA9IEZp
bGxFbGxpcHNlOjpkZWNvZGUoZGVjb2RlcikpCiAgICAgICAgICAgICByZXR1cm4gc3RhdGljX3Jl
ZmVyZW5jZV9jYXN0PEl0ZW0+KFdURk1vdmUoKml0ZW0pKTsKICAgICAgICAgYnJlYWs7CisgICAg
Y2FzZSBJdGVtVHlwZTo6UHV0SW1hZ2VEYXRhOgorICAgICAgICBpZiAoYXV0byBpdGVtID0gUHV0
SW1hZ2VEYXRhOjpkZWNvZGUoZGVjb2RlcikpCisgICAgICAgICAgICByZXR1cm4gc3RhdGljX3Jl
ZmVyZW5jZV9jYXN0PEl0ZW0+KFdURk1vdmUoKml0ZW0pKTsKKyAgICAgICAgYnJlYWs7CiAgICAg
Y2FzZSBJdGVtVHlwZTo6U3Ryb2tlUmVjdDoKICAgICAgICAgaWYgKGF1dG8gaXRlbSA9IFN0cm9r
ZVJlY3Q6OmRlY29kZShkZWNvZGVyKSkKICAgICAgICAgICAgIHJldHVybiBzdGF0aWNfcmVmZXJl
bmNlX2Nhc3Q8SXRlbT4oV1RGTW92ZSgqaXRlbSkpOwpAQCAtMzE1MCw2ICszMjQyLDcgQEAgU1BF
Q0lBTElaRV9UWVBFX1RSQUlUU19ESVNQTEFZTElTVF9JVEVNKEZpbGxSb3VuZGVkUmVjdCkKIFNQ
RUNJQUxJWkVfVFlQRV9UUkFJVFNfRElTUExBWUxJU1RfSVRFTShGaWxsUmVjdFdpdGhSb3VuZGVk
SG9sZSkKIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRElTUExBWUxJU1RfSVRFTShGaWxsUGF0aCkK
IFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRElTUExBWUxJU1RfSVRFTShGaWxsRWxsaXBzZSkKK1NQ
RUNJQUxJWkVfVFlQRV9UUkFJVFNfRElTUExBWUxJU1RfSVRFTShQdXRJbWFnZURhdGEpCiBTUEVD
SUFMSVpFX1RZUEVfVFJBSVRTX0RJU1BMQVlMSVNUX0lURU0oU3Ryb2tlUmVjdCkKIFNQRUNJQUxJ
WkVfVFlQRV9UUkFJVFNfRElTUExBWUxJU1RfSVRFTShTdHJva2VQYXRoKQogU1BFQ0lBTElaRV9U
WVBFX1RSQUlUU19ESVNQTEFZTElTVF9JVEVNKFN0cm9rZUVsbGlwc2UpCkBAIC0zMjA5LDYgKzMz
MDIsNyBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6OkRpc3BsYXlMaXN0
OjpJdGVtVHlwZT4gewogICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RmlsbFJl
Y3RXaXRoUm91bmRlZEhvbGUsCiAgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpG
aWxsUGF0aCwKICAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkZpbGxFbGxpcHNl
LAorICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6UHV0SW1hZ2VEYXRhLAogICAg
IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6U3Ryb2tlUmVjdCwKICAgICBXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OlN0cm9rZVBhdGgsCiAgICAgV2ViQ29yZTo6RGlzcGxh
eUxpc3Q6Okl0ZW1UeXBlOjpTdHJva2VFbGxpcHNlLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlM
aXN0UmVjb3JkZXIuY3BwCmluZGV4IDNjYWQxODg2MTBmY2EwMWZmODU3ZDMyY2Y2ZDZlZTUyYjZi
YWEzM2UuLjVjYjNiNjc1NzVkYmEzMjk4NDhmMmI3ODc4Y2Q4MmE0NDIzNDA2MGYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdFJlY29yZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9k
aXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAKQEAgLTUwLDYgKzUwLDExIEBAIFJl
Y29yZGVyOjp+UmVjb3JkZXIoKQogICAgIExPRyhEaXNwbGF5TGlzdHMsICJSZWNvcmRlZCBkaXNw
bGF5IGxpc3Q6XG4lcyIsIG1fZGlzcGxheUxpc3QuZGVzY3JpcHRpb24oKS5kYXRhKCkpOwogfQog
Cit2b2lkIFJlY29yZGVyOjpwdXRJbWFnZURhdGEoV2ViQ29yZTo6QWxwaGFQcmVtdWx0aXBsaWNh
dGlvbiBpbnB1dEZvcm1hdCwgY29uc3QgV2ViQ29yZTo6SW1hZ2VEYXRhJiBpbWFnZURhdGEsIGNv
bnN0IFdlYkNvcmU6OkludFJlY3QmIHNyY1JlY3QsIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBk
ZXN0UG9pbnQpCit7CisgICAgYXBwZW5kSXRlbShXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UHV0SW1h
Z2VEYXRhOjpjcmVhdGUoaW5wdXRGb3JtYXQsIGltYWdlRGF0YSwgc3JjUmVjdCwgZGVzdFBvaW50
KSk7Cit9CisKIHZvaWQgUmVjb3JkZXI6OndpbGxBcHBlbmRJdGVtKGNvbnN0IEl0ZW0mIGl0ZW0p
CiB7CiAgICAgaWYgKGl0ZW0uaXNEcmF3aW5nSXRlbSgpCkBAIC00MDcsNiArNDEyLDggQEAgdm9p
ZCBSZWNvcmRlcjo6dXBkYXRlSXRlbUV4dGVudChEcmF3aW5nSXRlbSYgaXRlbSkgY29uc3QKIHsK
ICAgICBpZiAoT3B0aW9uYWw8RmxvYXRSZWN0PiByZWN0ID0gaXRlbS5sb2NhbEJvdW5kcyhncmFw
aGljc0NvbnRleHQoKSkpCiAgICAgICAgIGl0ZW0uc2V0RXh0ZW50KGV4dGVudEZyb21Mb2NhbEJv
dW5kcyhyZWN0LnZhbHVlKCkpKTsKKyAgICBlbHNlIGlmIChPcHRpb25hbDxGbG9hdFJlY3Q+IHJl
Y3QgPSBpdGVtLmdsb2JhbEJvdW5kcygpKQorICAgICAgICBpdGVtLnNldEV4dGVudChyZWN0LnZh
bHVlKCkpOwogfQogCiAvLyBGSVhNRTogc2hhcmUgd2l0aCBTaGFkb3dEYXRhCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxp
c3RSZWNvcmRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaAppbmRleCBiZjZjYTU1YTljYTVlMTQzNjE0MTNhZmZl
MmEzOGMwOTg5ZGYzNDdkLi5kNmU1Y2ViNTJjMGY0ODg4ZjBmOGFlZDExZjg3Njc2MTIxZjczMWMx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3RSZWNvcmRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmgKQEAgLTMzLDEyICszMywx
NCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2VudW0gY2xhc3MgQWxwaGFQcmVtdWx0aXBs
aWNhdGlvbiA6IHVpbnQ4X3Q7CiBjbGFzcyBGbG9hdFBvaW50OwogY2xhc3MgRmxvYXRSZWN0Owog
Y2xhc3MgR2x5cGhCdWZmZXI7CiBjbGFzcyBGbG9hdFBvaW50OwogY2xhc3MgRm9udDsKIGNsYXNz
IEltYWdlOworY2xhc3MgSW1hZ2VEYXRhOwogCiBzdHJ1Y3QgR3JhcGhpY3NDb250ZXh0U3RhdGU7
CiBzdHJ1Y3QgSW1hZ2VQYWludGluZ09wdGlvbnM7CkBAIC01NCw2ICs1Niw4IEBAIHB1YmxpYzoK
ICAgICBXRUJDT1JFX0VYUE9SVCBSZWNvcmRlcihHcmFwaGljc0NvbnRleHQmLCBEaXNwbGF5TGlz
dCYsIGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiwgY29uc3QgRmxvYXRSZWN0JiBpbml0aWFs
Q2xpcCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVh
bCB+UmVjb3JkZXIoKTsKIAorICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcHV0SW1hZ2VEYXRhKEFs
cGhhUHJlbXVsdGlwbGljYXRpb24gaW5wdXRGb3JtYXQsIGNvbnN0IEltYWdlRGF0YSYsIGNvbnN0
IEludFJlY3QmIHNyY1JlY3QsIGNvbnN0IEludFBvaW50JiBkZXN0UG9pbnQpOworCiAgICAgc2l6
ZV90IGl0ZW1Db3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fZGlzcGxheUxpc3QuaXRlbUNvdW50KCk7
IH0KIAogcHJpdmF0ZToKQEAgLTEyNCw3ICsxMjgsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgY2xp
cE91dChjb25zdCBQYXRoJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBjbGlwUGF0aChjb25zdCBQYXRo
JiwgV2luZFJ1bGUpIG92ZXJyaWRlOwogICAgIEludFJlY3QgY2xpcEJvdW5kcygpIG92ZXJyaWRl
OwotICAgIHZvaWQgY2xpcFRvSW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXImLCBjb25zdCBGbG9hdFJl
Y3QmKSBvdmVycmlkZTsKKyAgICB2b2lkIGNsaXBUb0ltYWdlQnVmZmVyKFdlYkNvcmU6OkltYWdl
QnVmZmVyJiwgY29uc3QgRmxvYXRSZWN0Jikgb3ZlcnJpZGU7CiAgICAgCiAgICAgdm9pZCBhcHBs
eURldmljZVNjYWxlRmFjdG9yKGZsb2F0KSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0UmVwbGF5ZXIuY3BwCmluZGV4IGQwNGI0M2Q0OTM5YzMyODBkNzAzYTBjM2VkNzIy
N2RhNjFmM2M5YjkuLmJiZjZkNjE5NmE2NzFhOWFmY2NlZTFhYjQ3YzY5ZDdmODQxMDI3ZGUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdFJlcGxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5jcHAKQEAgLTM1LDkgKzM1LDEw
IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBuYW1lc3BhY2UgRGlzcGxheUxpc3QgewogCi1SZXBs
YXllcjo6UmVwbGF5ZXIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBEaXNwbGF5TGlz
dCYgZGlzcGxheUxpc3QpCitSZXBsYXllcjo6UmVwbGF5ZXIoR3JhcGhpY3NDb250ZXh0JiBjb250
ZXh0LCBjb25zdCBEaXNwbGF5TGlzdCYgZGlzcGxheUxpc3QsIEltYWdlQnVmZmVyKiBpbWFnZUJ1
ZmZlcikKICAgICA6IG1fZGlzcGxheUxpc3QoZGlzcGxheUxpc3QpCiAgICAgLCBtX2NvbnRleHQo
Y29udGV4dCkKKyAgICAsIG1faW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXIpCiB7CiB9CiAKQEAgLTY2
LDcgKzY3LDcgQEAgc3RkOjp1bmlxdWVfcHRyPERpc3BsYXlMaXN0PiBSZXBsYXllcjo6cmVwbGF5
KGNvbnN0IEZsb2F0UmVjdCYgaW5pdGlhbENsaXAsIGJvb2wKICAgICAgICAgfQogCiAgICAgICAg
IExPR19XSVRIX1NUUkVBTShEaXNwbGF5TGlzdHMsIHN0cmVhbSA8PCAiYXBwbHlpbmcgIiA8PCBp
IDw8ICIgIiA8PCBpdGVtKTsKLSAgICAgICAgaXRlbS5hcHBseShtX2NvbnRleHQpOworICAgICAg
ICBpdGVtLmFwcGx5KG1fY29udGV4dCwgbV9pbWFnZUJ1ZmZlcik7CiAKICAgICAgICAgaWYgKFVO
TElLRUxZKHRyYWNrUmVwbGF5TGlzdCkpCiAgICAgICAgICAgICByZXBsYXlMaXN0LT5hcHBlbmRJ
dGVtKGNvbnN0X2Nhc3Q8SXRlbSY+KGl0ZW0pKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RS
ZXBsYXllci5oCmluZGV4IDYwZTY1YWYyNzhlNjQ5YjFmMDRhMzQ0MGZiNTRhNTRkNTRhMmNiMGQu
Ljk3YTY5Zjg4MGM2MjdhYmYzZTUwNWZmNjM3ZjZhYWQwMDJiNGJmOTIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJl
cGxheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuaApAQCAtMzksNyArMzksNyBAQCBuYW1lc3BhY2UgRGlz
cGxheUxpc3QgewogY2xhc3MgUmVwbGF5ZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFJl
cGxheWVyKTsKIHB1YmxpYzoKLSAgICBXRUJDT1JFX0VYUE9SVCBSZXBsYXllcihHcmFwaGljc0Nv
bnRleHQmLCBjb25zdCBEaXNwbGF5TGlzdCYpOworICAgIFdFQkNPUkVfRVhQT1JUIFJlcGxheWVy
KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IERpc3BsYXlMaXN0JiwgSW1hZ2VCdWZmZXIqID0gbnVs
bHB0cik7CiAgICAgV0VCQ09SRV9FWFBPUlQgflJlcGxheWVyKCk7CiAKICAgICBXRUJDT1JFX0VY
UE9SVCBzdGQ6OnVuaXF1ZV9wdHI8RGlzcGxheUxpc3Q+IHJlcGxheShjb25zdCBGbG9hdFJlY3Qm
IGluaXRpYWxDbGlwID0geyB9LCBib29sIHRyYWNrUmVwbGF5TGlzdCA9IGZhbHNlKTsKQEAgLTQ3
LDYgKzQ3LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBjb25zdCBEaXNwbGF5TGlzdCYgbV9k
aXNwbGF5TGlzdDsKICAgICBHcmFwaGljc0NvbnRleHQmIG1fY29udGV4dDsKKyAgICBJbWFnZUJ1
ZmZlciogbV9pbWFnZUJ1ZmZlcjsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmggYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oCmluZGV4IDAw
NjFkNzdlOWNmNDRjYWJkNDJjOTNhOTQ5NmY0YmE3ZDVhODhhMTkuLjVlMWQ0MzM5ZTE4MmZjYWU5
Y2RiODUwZGE5N2MzNTFiYjRlZDg4OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmgKKysrIGIvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyUHJveHkuaApAQCAtNTcsNyAr
NTcsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZmx1c2hEcmF3aW5nQ29udGV4dChjb25zdCBXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3QmIGRpc3BsYXlMaXN0LCBJbWFnZUJ1ZmZlckZs
dXNoSWRlbnRpZmllciBmbHVzaElkZW50aWZpZXIpIG92ZXJyaWRlCiAgICAgewogICAgICAgICBp
ZiAoZGlzcGxheUxpc3QuaXRlbUNvdW50KCkpIHsKLSAgICAgICAgICAgIFdlYkNvcmU6OkRpc3Bs
YXlMaXN0OjpSZXBsYXllciByZXBsYXllcihCYXNlQ29uY3JldGVJbWFnZUJ1ZmZlcjo6Y29udGV4
dCgpLCBkaXNwbGF5TGlzdCk7CisgICAgICAgICAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVw
bGF5ZXIgcmVwbGF5ZXIoQmFzZUNvbmNyZXRlSW1hZ2VCdWZmZXI6OmNvbnRleHQoKSwgZGlzcGxh
eUxpc3QsIHRoaXMpOwogICAgICAgICAgICAgcmVwbGF5ZXIucmVwbGF5KCk7CiAgICAgICAgIH0K
ICAgICAgICAgbV9iYWNrZW5kLT5mbHVzaENvbnRleHQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCmluZGV4IDgxYWE3NDIwMjViZDg4N2YyMTJj
OGVlNjBkZGQ0ZjgyMDAyNmUzYzUuLmNmMDhlMzJlZjdiMzhmODEzYmZhMmFmNGVjMjZjOTRjODc3
MWFhMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENv
ZGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJz
LmNwcApAQCAtMzI0MSw2ICszMjQxLDIwIEBAIE9wdGlvbmFsPFJlZlB0cjxTaGFyZWRCdWZmZXI+
PiBBcmd1bWVudENvZGVyPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+Pjo6ZGVjCiAgICAg
cmV0dXJuIGJ1ZmZlcjsKIH0KIAordm9pZCBBcmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI+Pjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFJlZjxXZWJDb3JlOjpT
aGFyZWRCdWZmZXI+JiBidWZmZXIpCit7CisgICAgZW5jb2RlU2hhcmVkQnVmZmVyKGVuY29kZXIs
IGJ1ZmZlci5wdHIoKSk7Cit9CisKK09wdGlvbmFsPFJlZjxTaGFyZWRCdWZmZXI+PiBBcmd1bWVu
dENvZGVyPFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+Pjo6ZGVjb2RlKERlY29kZXImIGRlY29k
ZXIpCit7CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgIGlmICghZGVjb2Rl
U2hhcmVkQnVmZmVyKGRlY29kZXIsIGJ1ZmZlcikgfHwgIWJ1ZmZlcikKKyAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKworICAgIHJldHVybiBidWZmZXIucmVsZWFzZU5vbk51bGwoKTsKK30K
KwogI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCiB2b2lkIEFyZ3VtZW50Q29kZXI8V2ViQ29y
ZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpNZXNzYWdlPjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIs
IGNvbnN0IFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6TWVzc2FnZSYgbWVzc2FnZSkKIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5o
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKaW5kZXggZDA3
ZjJiZjViMjFiNjIwYjkxOTgxMDE5OTQwZTI3NDRlZDI1MDBjZC4uZjk1YmUxOThmYTdhYjhmOTc3
NzIxNWYzOTQxODYzOTMxNzZjMGI5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQv
V2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29y
ZUFyZ3VtZW50Q29kZXJzLmgKQEAgLTg0MSw2ICs4NDEsMTEgQEAgdGVtcGxhdGU8PiBzdHJ1Y3Qg
QXJndW1lbnRDb2RlcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4gewogICAgIHN0YXRp
YyBPcHRpb25hbDxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4gZGVjb2RlKERlY29kZXIm
KTsKIH07CiAKK3RlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcj4+IHsKKyAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFJl
ZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+Jik7CisgICAgc3RhdGljIE9wdGlvbmFsPFJlZjxXZWJD
b3JlOjpTaGFyZWRCdWZmZXI+PiBkZWNvZGUoRGVjb2RlciYpOworfTsKKwogI2lmIEVOQUJMRShF
TkNSWVBURURfTUVESUEpCiB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6
OkNETUluc3RhbmNlU2Vzc2lvbjo6TWVzc2FnZT4gewogICAgIHN0YXRpYyB2b2lkIGVuY29kZShF
bmNvZGVyJiwgY29uc3QgV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpNZXNzYWdlJik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUlt
YWdlQnVmZmVyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90
ZUltYWdlQnVmZmVyLmgKaW5kZXggYjdjMGU5YjQ1ZjBkNzAyNjQ5NGUzY2UwOTVjNDY1NGM5Nzlm
MjhjOS4uODlmMzNmY2E1OTI0MmM3MTZjZjFmNjM0YmYzMjc5ZmFlZjdmZDY0ZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZl
ci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1h
Z2VCdWZmZXIuaApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIlJlbW90ZUltYWdlQnVmZmVy
TWVzc2FnZUhhbmRsZXIuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0Rpc3BsYXlMaXN0SW1hZ2VCdWZm
ZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0Rpc3BsYXlMaXN0SXRlbXMuaD4KKyNpbmNsdWRlIDxX
ZWJDb3JlL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKQEAg
LTcyLDYgKzczLDE0IEBAIHByb3RlY3RlZDoKICAgICAgICAgcmV0dXJuIG1fYmFja2VuZC5nZXQo
KTsKICAgICB9CiAKKyAgICB2b2lkIHB1dEltYWdlRGF0YShXZWJDb3JlOjpBbHBoYVByZW11bHRp
cGxpY2F0aW9uIGlucHV0Rm9ybWF0LCBjb25zdCBXZWJDb3JlOjpJbWFnZURhdGEmIGltYWdlRGF0
YSwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgc3JjUmVjdCwgY29uc3QgV2ViQ29yZTo6SW50UG9p
bnQmIGRlc3RQb2ludCA9IHsgfSkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIC8vIFRoZSBtYXRo
IGluc2lkZSBJbWFnZURhdGE6OmNyZWF0ZSgpIGRvZXNuJ3QgYWdyZWUgd2l0aCB0aGUgbWF0aCBp
bnNpZGUgSW1hZ2VCdWZmZXJCYWNrZW5kOjpwdXRJbWFnZURhdGEoKSBhYm91dCBob3cgbV9yZXNv
bHV0aW9uU2NhbGUgaW50ZXJhY3RzIHdpdGggdGhlIGRhdGEgaW4gdGhlIEltYWdlQnVmZmVyLgor
ICAgICAgICAvLyBUaGlzIG1lYW5zIHRoYXQgcHV0SW1hZ2VEYXRhKCkgaXMgb25seSBjYWxsZWQg
d2hlbiBtX3Jlc29sdXRpb25TY2FsZSA9PSAxLgorICAgICAgICBBU1NFUlQobV9iYWNrZW5kLT5y
ZXNvbHV0aW9uU2NhbGUoKSA9PSAxKTsKKyAgICAgICAgbV9kcmF3aW5nQ29udGV4dC5yZWNvcmRl
cigpLnB1dEltYWdlRGF0YShpbnB1dEZvcm1hdCwgaW1hZ2VEYXRhLCBzcmNSZWN0LCBkZXN0UG9p
bnQpOworICAgIH0KKwogICAgIHZvaWQgZmx1c2hDb250ZXh0KCkgb3ZlcnJpZGUKICAgICB7CiAg
ICAgICAgIGZsdXNoRHJhd2luZ0NvbnRleHQoKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0No
YW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA1ZmMwODQzODdhNTY3YmFiNjY2
YmYwZDhmZmU3MzVhNTdlNTE4MDUyLi40YWFlNmQzZTRmNWE0M2EzYTUzNDBlYjEyYzBmNWFjYWQ5
NWE3NmMzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjAtMDMtMDUgIE15bGVzIEMuIE1heGZp
ZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KKworICAgICAgICBbR1BVIFByb2Nlc3NdIEltcGxl
bWVudCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQucHV0SW1hZ2VEYXRhKCkKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwODYyMQorICAgICAgICA8cmRh
cjovL3Byb2JsZW0vNjAwNjgwNDc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBmYXN0L2NhbnZhcy9wdXRJbWFnZURhdGEtbXVsdGlwbGUtZXhwZWN0
ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9jYW52YXMvcHV0SW1hZ2VEYXRhLW11bHRp
cGxlLmh0bWw6IEFkZGVkLgorCiAyMDIwLTAzLTA1ICBKYXNvbiBMYXdyZW5jZSAgPGxhd3JlbmNl
LmpAYXBwbGUuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT046IChyMjU3NzYwPykgWyBNYWMgd2sy
IERlYnVnIF0gQVNTRVJUSU9OIEZBSUxFRDogY2hpbGQtPnBhcmVudE9iamVjdCgpID09IHRoaXMg
aW4gV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aW5zZXJ0Q2hpbGQKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL3B1dEltYWdlRGF0YS1tdWx0aXBsZS1leHBlY3RlZC5o
dG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvcHV0SW1hZ2VEYXRhLW11bHRpcGxlLWV4cGVj
dGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMDNjMWMzNmExN2NiMGFmMGEyN2ZhMTJjMDFiY2QwZTM3MDZi
MWFiNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL3B1dEltYWdl
RGF0YS1tdWx0aXBsZS1leHBlY3RlZC5odG1sCkBAIC0wLDAgKzEsOSBAQAorPCFET0NUWVBFIGh0
bWw+Cis8aHRtbD4KKzxoZWFkPgorPC9oZWFkPgorPGJvZHk+CitUaGlzIHRlc3QgbWFrZXMgc3Vy
ZSB0aGF0IHB1dEltYWdlRGF0YSgpIGlzbid0IGFmZmVjdGVkIGJ5IHN1YnNlcXVlbnQgY2hhbmdl
cyB0byB0aGUgSW1hZ2VEYXRhLiBUaGUgdGVzdCBwYXNzZXMgaWYgeW91IHNlZSBhIGdyZWVuIHNx
dWFyZSBiZWxvdy4KKzxkaXYgc3R5bGU9IndpZHRoOiAxMDBweDsgaGVpZ2h0OiAxMDBweDsgYmFj
a2dyb3VuZDogcmdiKDAsIDI1NSwgMCkiPjwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvcHV0SW1hZ2VEYXRhLW11bHRpcGxlLmh0bWwg
Yi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9wdXRJbWFnZURhdGEtbXVsdGlwbGUuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40ZjBlZTVjZDA4NmNlMWExOGQ1N2FiOTZmN2I0OThjMjg0ZmUyZTFlCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvcHV0SW1hZ2VEYXRhLW11bHRpcGxl
Lmh0bWwKQEAgLTAsMCArMSwzMCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgor
PC9oZWFkPgorPGJvZHk+CitUaGlzIHRlc3QgbWFrZXMgc3VyZSB0aGF0IHB1dEltYWdlRGF0YSgp
IGlzbid0IGFmZmVjdGVkIGJ5IHN1YnNlcXVlbnQgY2hhbmdlcyB0byB0aGUgSW1hZ2VEYXRhLiBU
aGUgdGVzdCBwYXNzZXMgaWYgeW91IHNlZSBhIGdyZWVuIHNxdWFyZSBiZWxvdy4KKzxkaXY+PGNh
bnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iMTAwIiBoZWlnaHQ9IjEwMCI+PC9jYW52YXM+PC9kaXY+
Cis8c2NyaXB0PgorbGV0IGNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjYW52YXMi
KTsKK2xldCBjb250ZXh0ID0gY2FudmFzLmdldENvbnRleHQoIjJkIik7CitsZXQgd2lkdGggPSAx
MDA7CitsZXQgaGVpZ2h0ID0gMTAwOworbGV0IGltYWdlRGF0YSA9IGNvbnRleHQuY3JlYXRlSW1h
Z2VEYXRhKHdpZHRoLCBoZWlnaHQpOworbGV0IGRhdGEgPSBpbWFnZURhdGEuZGF0YTsKK2ZvciAo
bGV0IGkgPSAwOyBpIDwgd2lkdGggKiBoZWlnaHQ7ICsraSkgeworICAgIGRhdGFbNCAqIGkgKyAw
XSA9IDA7CisgICAgZGF0YVs0ICogaSArIDFdID0gMjU1OworICAgIGRhdGFbNCAqIGkgKyAyXSA9
IDA7CisgICAgZGF0YVs0ICogaSArIDNdID0gMjU1OworfQorY29udGV4dC5wdXRJbWFnZURhdGEo
aW1hZ2VEYXRhLCAwLCAwKTsKK2ZvciAobGV0IGkgPSAwOyBpIDwgd2lkdGggKiBoZWlnaHQ7ICsr
aSkgeworICAgIGRhdGFbNCAqIGkgKyAwXSA9IDI1NTsKKyAgICBkYXRhWzQgKiBpICsgMV0gPSAw
OworICAgIGRhdGFbNCAqIGkgKyAyXSA9IDA7CisgICAgZGF0YVs0ICogaSArIDNdID0gMjU1Owor
fQorPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>392820</attachid>
            <date>2020-03-06 17:31:11 -0800</date>
            <delta_ts>2020-03-06 19:34:29 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-208621-20200306173110.patch</filename>
            <type>text/plain</type>
            <size>34551</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU4MDI0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjU2YzRiYmYzMDJmNDM5
Y2EwY2Q1ZGZiZDE3MzQyYTRhNmNhZjA5NS4uZTA4NzllNjkxZWM2ZjRjMTIyYTBlMjgxMzdhNDdl
OGU1Mjg0OGZlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY2IEBACisyMDIwLTAzLTA2ICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQVSBQcm9j
ZXNzXSBJbXBsZW1lbnQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELnB1dEltYWdlRGF0YSgpCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDg2MjEKKyAg
ICAgICAgPHJkYXI6Ly9wcm9ibGVtLzYwMDY4MDQ3PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIHB1dEltYWdlRGF0YSgpIGlzIGltcGxlbWVudGVkIGp1
c3QgYXMgYSBEaXNwbGF5TGlzdEl0ZW0uIENvbmNlcHR1YWxseSwgaXQncyB0aGUKKyAgICAgICAg
c2FtZSBhcyBhIGRyYXcgY29tbWFuZC4gVW5mb3J0dW5hdGVseSwgaXQgY2FuJ3QgYmUgaW1wbGVt
ZW50ZWQgb24gdG9wIG9mCisgICAgICAgIEdyYXBoaWNzQ29udGV4dCwgYW5kIGluc3RlYWQgaGFz
IHRvIGJlIGltcGxlbWVudGVkIG9uIHRvcCBvZiBJbWFnZUJ1ZmZlciwgc28KKyAgICAgICAgdGhp
cyBwYXRjaCBhbHNvIGFkZHMgYSBkZWxlZ2F0ZSB0byBEaXNwbGF5TGlzdDo6UmVwbGF5ZXIgd2hp
Y2ggY2FuIGltcGxlbWVudCB0aGUKKyAgICAgICAgY29tbWFuZHMgdGhhdCByZXF1aXJlIGFuIElt
YWdlQnVmZmVyLiBUaGlzIG1vdmVzIGluIHRoZSBkaXJlY3Rpb24gb2YgbWFraW5nIHRoZQorICAg
ICAgICBkaXNwbGF5IGxpc3QgcmF3IGRhdGEsIGFuZCBtb3ZpbmcgdGhlIGFwcGxpZXIgZnVuY3Rp
b25zIHNvbWV3aGVyZSBlbHNlIGF0IGEKKyAgICAgICAgaGlnaGVyIGxldmVsLgorCisgICAgICAg
IEltcGxlbWVudGluZyB0aGlzIGFzIGEgRGlzcGxheUxpc3RJdGVtIHJhdGhlciB0aGFuIGl0cyBv
d24gSVBDIG1lc3NhZ2UgaXMgc3VwZXJpb3IKKyAgICAgICAgYmVjYXVzZSBpdCBnaXZlcyB1cyBt
b3JlIGNvbnRyb2wgYWJvdXQgd2hlbiB0byBmbHVzaCB0aGUgaW4tZmxpZ2h0IGRpc3BsYXkgbGlz
dC4KKworICAgICAgICBUaGVyZSBpcyBzdGlsbCBhIGZldyB1bm5lY2Vzc2FyeSBjb3BpZXMgLSB3
ZSdyZSBjb3B5aW5nIGludG8gLyBvdXQgb2YgYSBTaGFyZWREYXRhCisgICAgICAgIGR1cmluZyBl
bmNvZGluZy4gQmVpbmcgYWJsZSB0byBlaXRoZXIgaGF2ZSB0aGUgSW1hZ2VCdWZmZXIgcmV0YWlu
IHRoZSBTaGFyZWRCdWZmZXIsCisgICAgICAgIG9yIGhhdmUgcHV0SW1hZ2VEYXRhKCkgaGF2ZSBh
biBvdmVybG9hZCB3aGljaCBhY2NlcHRzIGEgU2hhcmVkQnVmZmVyLCB3b3VsZCBiZSBhCisgICAg
ICAgIGdvb2Qgb3Bwb3J0dW5pdHkgZm9yIGltcHJvdmVtZW50LgorCisgICAgICAgIFRlc3Q6IGZh
c3QvY2FudmFzL3B1dEltYWdlRGF0YS1tdWx0aXBsZS5odG1sCisKKyAgICAgICAgKiBodG1sL0lt
YWdlRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURhdGE6OmRlZXBDbG9uZSBjb25z
dCk6CisgICAgICAgICogaHRtbC9JbWFnZURhdGEuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9BbHBoYVByZW11bHRpcGxpY2F0aW9uLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NDb250ZXh0Lmg6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6
OmltcGwpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdERyYXdpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpE
cmF3aW5nQ29udGV4dDo6cmVjb3JkZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rp
c3BsYXlsaXN0cy9EaXNwbGF5TGlzdERyYXdpbmdDb250ZXh0Lmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW06OnNpemVJbkJ5dGVzKToKKyAgICAgICAgKFdlYkNv
cmU6OkRpc3BsYXlMaXN0OjpQdXRJbWFnZURhdGE6OlB1dEltYWdlRGF0YSk6CisgICAgICAgIChX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6UHV0SW1hZ2VEYXRhOjphcHBseSBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6b3BlcmF0b3I8PCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaDoKKyAgICAgICAgKFdlYkNv
cmU6OkRpc3BsYXlMaXN0OjpEcmF3aW5nSXRlbTo6Z2xvYmFsQm91bmRzIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpQdXRJbWFnZURhdGE6OmNyZWF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UHV0SW1hZ2VEYXRhOjppbnB1dEZvcm1hdCBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UHV0SW1hZ2VEYXRhOjppbWFnZURhdGEg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlB1dEltYWdlRGF0YTo6c3Jj
UmVjdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UHV0SW1hZ2VEYXRh
OjpkZXN0UG9pbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlB1dElt
YWdlRGF0YTo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpQ
dXRJbWFnZURhdGE6OmRlY29kZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRl
bTo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtOjpk
ZWNvZGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdFJlY29yZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRl
cjo6cHV0SW1hZ2VEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRl
cjo6dXBkYXRlSXRlbUV4dGVudCBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
ZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVwbGF5ZXI6OlJlcGxheWVyKToKKyAgICAgICAgKFdlYkNv
cmU6OkRpc3BsYXlMaXN0OjpSZXBsYXllcjo6cmVwbGF5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5oOgorICAgICAgICAoV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6OlJlcGxheWVyOjpEZWxlZ2F0ZTo6fkRlbGVnYXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZXBsYXllcjo6RGVsZWdhdGU6OmFwcGx5KToKKwog
MjAyMC0wMy0wNiAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAg
VXNlIE9iamVjdElkZW50aWZpZXIgdG8gaWRlbnRpZnkgbWVkaWEgc2Vzc2lvbnMKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5k
ZXggNWI0NGFiOWRmMmQ5YjA5ZDM4ZGFiZTAxNzA5ODcxNDZmNDBmNTkzZi4uODMyYmM0YzEyMmQy
MTMzYjZjNWQwZDFlMWFkZTA1MmJjYjlhMDQ1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBAQAor
MjAyMC0wMy0wNiAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgorCisg
ICAgICAgIFtHUFUgUHJvY2Vzc10gSW1wbGVtZW50IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5w
dXRJbWFnZURhdGEoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjA4NjIxCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82MDA2ODA0Nz4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEdQVVByb2Nlc3MvZ3Jh
cGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oOgorICAgICAgICAqIFNoYXJlZC9XZWJDb3Jl
QXJndW1lbnRDb2RlcnMuY3BwOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFJlZjxXZWJD
b3JlOjpTaGFyZWRCdWZmZXI+Pjo6ZW5jb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2Rl
cjxSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj46OmRlY29kZSk6CisgICAgICAgIChJUEM6OkFy
Z3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OkltYWdlRGF0YT4+OjplbmNvZGUpOgorICAgICAgICAo
SVBDOjpBcmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpJbWFnZURhdGE+Pjo6ZGVjb2RlKToKKyAg
ICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmg6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXIuaDoKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlSW1hZ2VCdWZmZXI6OnB1dEltYWdlRGF0YSk6CisKIDIwMjAtMDMtMDYgIFlvdWVubiBG
YWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIFVzZSBPYmplY3RJZGVudGlmaWVy
IHRvIGlkZW50aWZ5IG1lZGlhIHNlc3Npb25zCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0ltYWdlRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRGF0YS5jcHAKaW5k
ZXggMGEyY2QyZGZkNTQyMTNlMzM5YWM3YzA2NjhhNzhkZTZiYzI1YzdlMi4uYzYyMzIzZWM1NDMz
YWI0NDcwOWI1NTFkZTc4NjEyMTQ4Mzg3YTEwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9JbWFnZURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEYXRhLmNw
cApAQCAtMTA4LDUgKzEwOCwxMCBAQCBJbWFnZURhdGE6OkltYWdlRGF0YShjb25zdCBJbnRTaXpl
JiBzaXplLCBSZWY8VWludDhDbGFtcGVkQXJyYXk+JiYgYnl0ZUFycmF5KQogICAgIFJFTEVBU0Vf
QVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oKHNpemUuYXJlYSgpICogNCkudW5zYWZl
R2V0KCkgPD0gbV9kYXRhLT5sZW5ndGgoKSk7CiB9CiAKK1JlZjxJbWFnZURhdGE+IEltYWdlRGF0
YTo6ZGVlcENsb25lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJbWFnZURh
dGEobV9zaXplLCBVaW50OENsYW1wZWRBcnJheTo6Y3JlYXRlKG1fZGF0YS0+ZGF0YSgpLCBtX2Rh
dGEtPmxlbmd0aCgpKSkpOworfQorCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSW1hZ2VEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRGF0YS5oCmluZGV4IGY3
OTg4NTBmM2UyN2MzNDcyOGUwYmI1MDk3MzViYThlODFhNTUxOGIuLjU2NGZlN2NkMGRiYzRhMThl
ZDY4OWVhOGE4NTY5OThjNzZhMWEwOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SW1hZ2VEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURhdGEuaApAQCAtNDcs
NiArNDcsOCBAQCBwdWJsaWM6CiAKICAgICBVaW50OENsYW1wZWRBcnJheSogZGF0YSgpIGNvbnN0
IHsgcmV0dXJuIG1fZGF0YS5wdHIoKTsgfQogCisgICAgUmVmPEltYWdlRGF0YT4gZGVlcENsb25l
KCkgY29uc3Q7CisKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgSW1hZ2VEYXRhKGNvbnN0IEludFNp
emUmKTsKICAgICBJbWFnZURhdGEoY29uc3QgSW50U2l6ZSYsIFJlZjxVaW50OENsYW1wZWRBcnJh
eT4mJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9BbHBo
YVByZW11bHRpcGxpY2F0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9B
bHBoYVByZW11bHRpcGxpY2F0aW9uLmgKaW5kZXggNmQxY2FlZjg1NDFkZWUwNjJiZmUwNTQxNmNk
YTJmMmE3Zjc5MjZlMi4uYjI3NzgwZjYyYjE5MmY1ODFjMjQzOTJhZDE5MTdlMGM1YzVmNzA5ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQWxwaGFQcmVtdWx0
aXBsaWNhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0FscGhh
UHJlbXVsdGlwbGljYXRpb24uaApAQCAtMzQsNiArMzQsMTcgQEAgZW51bSBjbGFzcyBBbHBoYVBy
ZW11bHRpcGxpY2F0aW9uIDogdWludDhfdCB7CiAgICAgVW5wcmVtdWx0aXBsaWVkCiB9OwogCisK
IFdFQkNPUkVfRVhQT1JUIFdURjo6VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChXVEY6OlRleHRTdHJl
YW0mLCBBbHBoYVByZW11bHRpcGxpY2F0aW9uKTsKIAotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQor
fQorCituYW1lc3BhY2UgV1RGIHsKK3RlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29y
ZTo6QWxwaGFQcmVtdWx0aXBsaWNhdGlvbj4geworICAgIHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1
ZXM8CisgICAgICAgIFdlYkNvcmU6OkFscGhhUHJlbXVsdGlwbGljYXRpb24sCisgICAgICAgIFdl
YkNvcmU6OkFscGhhUHJlbXVsdGlwbGljYXRpb246OlByZW11bHRpcGxpZWQsCisgICAgICAgIFdl
YkNvcmU6OkFscGhhUHJlbXVsdGlwbGljYXRpb246OlVucHJlbXVsdGlwbGllZAorICAgID47Cit9
OworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0Nv
bnRleHQuaAppbmRleCBlNWMzMWMxZTY0ZWY1NGI5NjExMzFkYmIyNWM0Y2U0YjE4OWUyZDNhLi4y
YTJlYzAxZmVlMmZkZmNiMGMxN2UzOWQwM2EyNzFhNmQ5Y2ZkODQ4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaApAQCAtNTk4LDYg
KzU5OCw4IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgc3VwcG9ydHNJbnRlcm5hbExpbmtzKCkgY29u
c3Q7CiAKKyAgICBHcmFwaGljc0NvbnRleHRJbXBsKiBpbXBsKCkgeyByZXR1cm4gbV9pbXBsLmdl
dCgpOyB9CisKIHByaXZhdGU6CiAgICAgdm9pZCBwbGF0Zm9ybUluaXQoUGxhdGZvcm1HcmFwaGlj
c0NvbnRleHQqKTsKICAgICB2b2lkIHBsYXRmb3JtRGVzdHJveSgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxp
c3QuaAppbmRleCA3YWUwOGQyYTRjN2JmMzJjNTg4YjI4NmQ1YzMyNjM5M2QwM2YyMTFlLi4zNWMz
OWEwNWFkMzczNjlmNjMxODYzMTc0OTIwZjBlNTRkYjViZjlmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxp
c3QuaApAQCAtODEsNiArODEsNyBAQCBlbnVtIGNsYXNzIEl0ZW1UeXBlIDogdWludDhfdCB7CiAg
ICAgRmlsbFJlY3RXaXRoUm91bmRlZEhvbGUsCiAgICAgRmlsbFBhdGgsCiAgICAgRmlsbEVsbGlw
c2UsCisgICAgUHV0SW1hZ2VEYXRhLAogICAgIFN0cm9rZVJlY3QsCiAgICAgU3Ryb2tlUGF0aCwK
ICAgICBTdHJva2VFbGxpcHNlLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0RHJhd2luZ0NvbnRleHQuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0RHJh
d2luZ0NvbnRleHQuY3BwCmluZGV4IGUxYzY5YjUxYTRiZjg1ZmVmZTFlN2QxYmQ0NTk5NTQ3NDdh
YTE5MjkuLjllMDg2NDI3ZDAyNmQ3ODIwZDFmNDA3YzhkZmY1OWNjNjUwN2ZhNDQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdERyYXdpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3REcmF3aW5nQ29udGV4dC5jcHAKQEAgLTQ2LDYg
KzQ2LDEzIEBAIHZvaWQgRHJhd2luZ0NvbnRleHQ6OnNldFRyYWNrc0Rpc3BsYXlMaXN0UmVwbGF5
KGJvb2wgdHJhY2tzRGlzcGxheUxpc3RSZXBsYXkpCiAgICAgbV9yZXBsYXllZERpc3BsYXlMaXN0
LnJlc2V0KCk7CiB9CiAKK1JlY29yZGVyJiBEcmF3aW5nQ29udGV4dDo6cmVjb3JkZXIoKQorewor
ICAgIGF1dG8qIGdyYXBoaWNzQ29udGV4dEltcGwgPSBjb250ZXh0KCkuaW1wbCgpOworICAgIEFT
U0VSVChncmFwaGljc0NvbnRleHRJbXBsKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8UmVjb3Jk
ZXImPigqZ3JhcGhpY3NDb250ZXh0SW1wbCk7Cit9CisKIHZvaWQgRHJhd2luZ0NvbnRleHQ6OnJl
cGxheURpc3BsYXlMaXN0KEdyYXBoaWNzQ29udGV4dCYgZGVzdENvbnRleHQpCiB7CiAgICAgaWYg
KCFtX2Rpc3BsYXlMaXN0Lml0ZW1Db3VudCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0RHJhd2luZ0NvbnRleHQu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdERyYXdpbmdDb250ZXh0LmgKaW5kZXggNWQzODVhYWJkMDRhOTRlY2Y4MTAxNTE2OTI0MDU3
YzY5MzM3MzM2NC4uYzU3YzEyMmQ0ZDJiMDk1MzliNzkwMDc0N2M1Mzg0Yzc1MGU1NWM5ZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0RHJhd2luZ0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3REcmF3aW5nQ29udGV4dC5oCkBAIC0zNiw2
ICszNiw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBEcmF3aW5nQ29udGV4dChjb25z
dCBGbG9hdFNpemUmIGxvZ2ljYWxTaXplKTsKIAogICAgIEdyYXBoaWNzQ29udGV4dCYgY29udGV4
dCgpIGNvbnN0IHsgcmV0dXJuIGNvbnN0X2Nhc3Q8RHJhd2luZ0NvbnRleHQmPigqdGhpcykubV9j
b250ZXh0OyB9CisgICAgV0VCQ09SRV9FWFBPUlQgUmVjb3JkZXImIHJlY29yZGVyKCk7CiAgICAg
RGlzcGxheUxpc3QmIGRpc3BsYXlMaXN0KCkgeyByZXR1cm4gbV9kaXNwbGF5TGlzdDsgfQogICAg
IGNvbnN0IERpc3BsYXlMaXN0JiBkaXNwbGF5TGlzdCgpIGNvbnN0IHsgcmV0dXJuIG1fZGlzcGxh
eUxpc3Q7IH0KICAgICBjb25zdCBEaXNwbGF5TGlzdCogcmVwbGF5ZWREaXNwbGF5TGlzdCgpIGNv
bnN0IHsgcmV0dXJuIG1fcmVwbGF5ZWREaXNwbGF5TGlzdC5nZXQoKTsgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
SXRlbXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3Rz
L0Rpc3BsYXlMaXN0SXRlbXMuY3BwCmluZGV4IDk4ZTBiMTliNmU5YTdkZTQ4ZjFhYzc4MzliYjgw
N2JlNDBhYmViYzAuLmQ0NTMxYmFiNWNhNDRjZWJjYWY5NWFhZmU3NTAzMmY0MzlhYjhhZDcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdEl0ZW1zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHAKQEAgLTI3LDYgKzI3LDggQEAKICNp
bmNsdWRlICJEaXNwbGF5TGlzdEl0ZW1zLmgiCiAKICNpbmNsdWRlICJGb250Q2FzY2FkZS5oIgor
I2luY2x1ZGUgIkltYWdlRGF0YS5oIgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1
ZGUgPHd0Zi90ZXh0L1RleHRTdHJlYW0uaD4KIAogI2lmIFVTRShDRykKQEAgLTEzOCw2ICsxNDAs
OCBAQCBzaXplX3QgSXRlbTo6c2l6ZUluQnl0ZXMoY29uc3QgSXRlbSYgaXRlbSkKICAgICAgICAg
cmV0dXJuIHNpemVvZihkb3duY2FzdDxGaWxsUGF0aD4oaXRlbSkpOwogICAgIGNhc2UgSXRlbVR5
cGU6OkZpbGxFbGxpcHNlOgogICAgICAgICByZXR1cm4gc2l6ZW9mKGRvd25jYXN0PEZpbGxFbGxp
cHNlPihpdGVtKSk7CisgICAgY2FzZSBJdGVtVHlwZTo6UHV0SW1hZ2VEYXRhOgorICAgICAgICBy
ZXR1cm4gc2l6ZW9mKGRvd25jYXN0PFB1dEltYWdlRGF0YT4oaXRlbSkpOwogICAgIGNhc2UgSXRl
bVR5cGU6OlN0cm9rZVJlY3Q6CiAgICAgICAgIHJldHVybiBzaXplb2YoZG93bmNhc3Q8U3Ryb2tl
UmVjdD4oaXRlbSkpOwogICAgIGNhc2UgSXRlbVR5cGU6OlN0cm9rZVBhdGg6CkBAIC0xMTQ3LDYg
KzExNTEsNDIgQEAgc3RhdGljIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMs
IGNvbnN0IEZpbGxFbGxpcHNlJiBpdGVtKQogICAgIHJldHVybiB0czsKIH0KIAorUHV0SW1hZ2VE
YXRhOjpQdXRJbWFnZURhdGEoQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBpbnB1dEZvcm1hdCwgY29u
c3QgSW1hZ2VEYXRhJiBpbWFnZURhdGEsIGNvbnN0IEludFJlY3QmIHNyY1JlY3QsIGNvbnN0IElu
dFBvaW50JiBkZXN0UG9pbnQpCisgICAgOiBEcmF3aW5nSXRlbShJdGVtVHlwZTo6UHV0SW1hZ2VE
YXRhKQorICAgICwgbV9zcmNSZWN0KHNyY1JlY3QpCisgICAgLCBtX2Rlc3RQb2ludChkZXN0UG9p
bnQpCisgICAgLCBtX2ltYWdlRGF0YShpbWFnZURhdGEuZGVlcENsb25lKCkpIC8vIFRoaXMgY29w
eSBpcyBhY3R1YWxseSByZXF1aXJlZCB0byBwcmVzZXJ2ZSB0aGUgc2VtYW50aWNzIG9mIHB1dElt
YWdlRGF0YSgpLgorICAgICwgbV9pbnB1dEZvcm1hdChpbnB1dEZvcm1hdCkKK3sKK30KKworUHV0
SW1hZ2VEYXRhOjpQdXRJbWFnZURhdGEoQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBpbnB1dEZvcm1h
dCwgUmVmPEltYWdlRGF0YT4mJiBpbWFnZURhdGEsIGNvbnN0IEludFJlY3QmIHNyY1JlY3QsIGNv
bnN0IEludFBvaW50JiBkZXN0UG9pbnQpCisgICAgOiBEcmF3aW5nSXRlbShJdGVtVHlwZTo6UHV0
SW1hZ2VEYXRhKQorICAgICwgbV9zcmNSZWN0KHNyY1JlY3QpCisgICAgLCBtX2Rlc3RQb2ludChk
ZXN0UG9pbnQpCisgICAgLCBtX2ltYWdlRGF0YShXVEZNb3ZlKGltYWdlRGF0YSkpCisgICAgLCBt
X2lucHV0Rm9ybWF0KGlucHV0Rm9ybWF0KQoreworfQorCitQdXRJbWFnZURhdGE6On5QdXRJbWFn
ZURhdGEoKSA9IGRlZmF1bHQ7CisKK3ZvaWQgUHV0SW1hZ2VEYXRhOjphcHBseShHcmFwaGljc0Nv
bnRleHQmKSBjb25zdAoreworICAgIC8vIFNob3VsZCBiZSBoYW5kbGVkIGJ5IHRoZSBkZWxlZ2F0
ZS4KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKworc3RhdGljIFRleHRTdHJlYW0mIG9w
ZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFB1dEltYWdlRGF0YSYgaXRlbSkKK3sKKyAg
ICB0cyA8PCBzdGF0aWNfY2FzdDxjb25zdCBEcmF3aW5nSXRlbSY+KGl0ZW0pOworICAgIHRzLmR1
bXBQcm9wZXJ0eSgiaW5wdXRGb3JtYXQiLCBpdGVtLmlucHV0Rm9ybWF0KCkpOworICAgIHRzLmR1
bXBQcm9wZXJ0eSgiaW1hZ2VEYXRhU2l6ZSIsIGl0ZW0uaW1hZ2VEYXRhKCkuc2l6ZSgpKTsKKyAg
ICB0cy5kdW1wUHJvcGVydHkoInNyY1JlY3QiLCBpdGVtLnNyY1JlY3QoKSk7CisgICAgdHMuZHVt
cFByb3BlcnR5KCJkZXN0UG9pbnQiLCBpdGVtLmRlc3RQb2ludCgpKTsKKyAgICByZXR1cm4gdHM7
Cit9CisKIFN0cm9rZVJlY3Q6OlN0cm9rZVJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBmbG9h
dCBsaW5lV2lkdGgpCiAgICAgOiBEcmF3aW5nSXRlbShJdGVtVHlwZTo6U3Ryb2tlUmVjdCkKICAg
ICAsIG1fcmVjdChyZWN0KQpAQCAtMTM3NSw2ICsxNDE1LDcgQEAgc3RhdGljIFRleHRTdHJlYW0m
IG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IEl0ZW1UeXBlJiB0eXBlKQogICAgIGNh
c2UgSXRlbVR5cGU6OkZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlOiB0cyA8PCAiZmlsbC1yZWN0LXdp
dGgtcm91bmRlZC1ob2xlIjsgYnJlYWs7CiAgICAgY2FzZSBJdGVtVHlwZTo6RmlsbFBhdGg6IHRz
IDw8ICJmaWxsLXBhdGgiOyBicmVhazsKICAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsRWxsaXBzZTog
dHMgPDwgImZpbGwtZWxsaXBzZSI7IGJyZWFrOworICAgIGNhc2UgSXRlbVR5cGU6OlB1dEltYWdl
RGF0YTogdHMgPDwgInB1dC1pbWFnZS1kYXRhIjsgYnJlYWs7CiAgICAgY2FzZSBJdGVtVHlwZTo6
U3Ryb2tlUmVjdDogdHMgPDwgInN0cm9rZS1yZWN0IjsgYnJlYWs7CiAgICAgY2FzZSBJdGVtVHlw
ZTo6U3Ryb2tlUGF0aDogdHMgPDwgInN0cm9rZS1wYXRoIjsgYnJlYWs7CiAgICAgY2FzZSBJdGVt
VHlwZTo6U3Ryb2tlRWxsaXBzZTogdHMgPDwgInN0cm9rZS1lbGxpcHNlIjsgYnJlYWs7CkBAIC0x
NTA4LDYgKzE1NDksOSBAQCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBj
b25zdCBJdGVtJiBpdGVtKQogICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxFbGxpcHNlOgogICAgICAg
ICB0cyA8PCBkb3duY2FzdDxGaWxsRWxsaXBzZT4oaXRlbSk7CiAgICAgICAgIGJyZWFrOworICAg
IGNhc2UgSXRlbVR5cGU6OlB1dEltYWdlRGF0YToKKyAgICAgICAgdHMgPDwgZG93bmNhc3Q8UHV0
SW1hZ2VEYXRhPihpdGVtKTsKKyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBJdGVtVHlwZTo6U3Ry
b2tlUmVjdDoKICAgICAgICAgdHMgPDwgZG93bmNhc3Q8U3Ryb2tlUmVjdD4oaXRlbSk7CiAgICAg
ICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmgKaW5kZXggMWNlMDRmYzc5
MDY1N2UyZWFlNGJkZDY5ZTc4OWM1OGU3YjU0N2Q0My4uNzc0MjA1YWM3M2Y2MjcxNGUzY2ZhOTBl
MDIyY2U1Yzc3MDgyOGYyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oCkBAIC0y
NSwxMyArMjUsMTYgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJBbHBoYVByZW11bHRp
cGxpY2F0aW9uLmgiCiAjaW5jbHVkZSAiRGlzcGxheUxpc3QuaCIKICNpbmNsdWRlICJGbG9hdFBv
aW50LmgiCiAjaW5jbHVkZSAiRmxvYXRSb3VuZGVkUmVjdC5oIgogI2luY2x1ZGUgIkZvbnQuaCIK
ICNpbmNsdWRlICJHbHlwaEJ1ZmZlci5oIgogI2luY2x1ZGUgIkltYWdlLmgiCisjaW5jbHVkZSAi
SW1hZ2VEYXRhLmgiCiAjaW5jbHVkZSAiUGF0dGVybi5oIgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZl
ci5oIgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1R5cGVDYXN0
cy5oPgogCkBAIC00MSw2ICs0NCw3IEBAIGNsYXNzIFRleHRTdHJlYW07CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAorY2xhc3MgSW1hZ2VEYXRhOwogc3RydWN0IEltYWdlUGFpbnRpbmdPcHRpb25z
OwogCiBuYW1lc3BhY2UgRGlzcGxheUxpc3QgewpAQCAtNjAsNiArNjQsMTAgQEAgcHVibGljOgog
ICAgIC8vIERvZXMgbm90IGluY2x1ZGUgZWZmZXRzIG9mIHRyYW5zZm9ybSwgc2hhZG93IGV0YyBp
biB0aGUgc3RhdGUuCiAgICAgdmlydHVhbCBPcHRpb25hbDxGbG9hdFJlY3Q+IGxvY2FsQm91bmRz
KGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0IHsgcmV0dXJuIFdURjo6bnVsbG9wdDsgfQog
CisgICAgLy8gU29tZSBvcGVyYXRpb25zIChlLmcuIHB1dEltYWdlRGF0YSkgb3BlcmF0ZSBpbiBn
bG9iYWwgYm91bmRzLiBGb3IgdGhlc2Ugb3BlcmF0aW9ucywgb3ZlcnJpZGUgdGhpcyBtZXRob2Qu
CisgICAgLy8gSWYgYXBwbGljYWJsZSwgdGhlIHJldHVybiB2YWx1ZSBuZWVkcyB0byBpbmNsdWRl
IHRoZSBlZmZlY3RzIG9mIHNoYWRvd3MsIGNsaXBwaW5nLCBldGMuCisgICAgdmlydHVhbCBPcHRp
b25hbDxGbG9hdFJlY3Q+IGdsb2JhbEJvdW5kcygpIGNvbnN0IHsgcmV0dXJuIFdURjo6bnVsbG9w
dDsgfQorCiBwcml2YXRlOgogICAgIGJvb2wgaXNEcmF3aW5nSXRlbSgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIHRydWU7IH0KIApAQCAtMjQ0Miw2ICsyNDUwLDc3IEBAIE9wdGlvbmFsPFJlZjxG
aWxsRWxsaXBzZT4+IEZpbGxFbGxpcHNlOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICBy
ZXR1cm4gRmlsbEVsbGlwc2U6OmNyZWF0ZSgqcmVjdCk7CiB9CiAKK2NsYXNzIFB1dEltYWdlRGF0
YSA6IHB1YmxpYyBEcmF3aW5nSXRlbSB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxQdXRJbWFn
ZURhdGE+IGNyZWF0ZShBbHBoYVByZW11bHRpcGxpY2F0aW9uIGlucHV0Rm9ybWF0LCBjb25zdCBJ
bWFnZURhdGEmIGltYWdlRGF0YSwgY29uc3QgSW50UmVjdCYgc3JjUmVjdCwgY29uc3QgSW50UG9p
bnQmIGRlc3RQb2ludCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFB1dElt
YWdlRGF0YShpbnB1dEZvcm1hdCwgaW1hZ2VEYXRhLCBzcmNSZWN0LCBkZXN0UG9pbnQpKTsKKyAg
ICB9CisgICAgc3RhdGljIFJlZjxQdXRJbWFnZURhdGE+IGNyZWF0ZShBbHBoYVByZW11bHRpcGxp
Y2F0aW9uIGlucHV0Rm9ybWF0LCBSZWY8SW1hZ2VEYXRhPiYmIGltYWdlRGF0YSwgY29uc3QgSW50
UmVjdCYgc3JjUmVjdCwgY29uc3QgSW50UG9pbnQmIGRlc3RQb2ludCkKKyAgICB7CisgICAgICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IFB1dEltYWdlRGF0YShpbnB1dEZvcm1hdCwgV1RGTW92ZShp
bWFnZURhdGEpLCBzcmNSZWN0LCBkZXN0UG9pbnQpKTsKKyAgICB9CisKKyAgICBXRUJDT1JFX0VY
UE9SVCB2aXJ0dWFsIH5QdXRJbWFnZURhdGEoKTsKKworICAgIEFscGhhUHJlbXVsdGlwbGljYXRp
b24gaW5wdXRGb3JtYXQoKSBjb25zdCB7IHJldHVybiBtX2lucHV0Rm9ybWF0OyB9CisgICAgSW1h
Z2VEYXRhJiBpbWFnZURhdGEoKSBjb25zdCB7IHJldHVybiBtX2ltYWdlRGF0YTsgfQorICAgIElu
dFJlY3Qgc3JjUmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fc3JjUmVjdDsgfQorICAgIEludFBvaW50
IGRlc3RQb2ludCgpIGNvbnN0IHsgcmV0dXJuIG1fZGVzdFBvaW50OyB9CisKKyAgICB0ZW1wbGF0
ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CisgICAgdGVtcGxh
dGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPFJlZjxQdXRJbWFnZURhdGE+PiBkZWNv
ZGUoRGVjb2RlciYpOworCitwcml2YXRlOgorICAgIFdFQkNPUkVfRVhQT1JUIFB1dEltYWdlRGF0
YShBbHBoYVByZW11bHRpcGxpY2F0aW9uIGlucHV0Rm9ybWF0LCBjb25zdCBJbWFnZURhdGEmLCBj
b25zdCBJbnRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbnRQb2ludCYgZGVzdFBvaW50KTsKKyAgICBX
RUJDT1JFX0VYUE9SVCBQdXRJbWFnZURhdGEoQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBpbnB1dEZv
cm1hdCwgUmVmPEltYWdlRGF0YT4mJiwgY29uc3QgSW50UmVjdCYgc3JjUmVjdCwgY29uc3QgSW50
UG9pbnQmIGRlc3RQb2ludCk7CisKKyAgICB2b2lkIGFwcGx5KEdyYXBoaWNzQ29udGV4dCYpIGNv
bnN0IG92ZXJyaWRlOworCisgICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBnbG9iYWxCb3VuZHMoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBGbG9hdFJlY3QobV9kZXN0UG9pbnQsIG1fc3JjUmVjdC5z
aXplKCkpOyB9CisKKyAgICBJbnRSZWN0IG1fc3JjUmVjdDsKKyAgICBJbnRQb2ludCBtX2Rlc3RQ
b2ludDsKKyAgICBSZWY8SW1hZ2VEYXRhPiBtX2ltYWdlRGF0YTsKKyAgICBBbHBoYVByZW11bHRp
cGxpY2F0aW9uIG1faW5wdXRGb3JtYXQ7Cit9OworCit0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgor
dm9pZCBQdXRJbWFnZURhdGE6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAoreworICAg
IGVuY29kZXIgPDwgbV9pbnB1dEZvcm1hdDsKKyAgICBlbmNvZGVyIDw8IG1faW1hZ2VEYXRhOwor
ICAgIGVuY29kZXIgPDwgbV9zcmNSZWN0OworICAgIGVuY29kZXIgPDwgbV9kZXN0UG9pbnQ7Cit9
CisKK3RlbXBsYXRlPGNsYXNzIERlY29kZXI+CitPcHRpb25hbDxSZWY8UHV0SW1hZ2VEYXRhPj4g
UHV0SW1hZ2VEYXRhOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBPcHRpb25hbDxB
bHBoYVByZW11bHRpcGxpY2F0aW9uPiBpbnB1dEZvcm1hdDsKKyAgICBPcHRpb25hbDxSZWY8SW1h
Z2VEYXRhPj4gaW1hZ2VEYXRhOworICAgIE9wdGlvbmFsPEludFJlY3Q+IHNyY1JlY3Q7CisgICAg
T3B0aW9uYWw8SW50UG9pbnQ+IGRlc3RQb2ludDsKKworICAgIGRlY29kZXIgPj4gaW5wdXRGb3Jt
YXQ7CisgICAgaWYgKCFpbnB1dEZvcm1hdCkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KworICAgIGRlY29kZXIgPj4gaW1hZ2VEYXRhOworICAgIGlmICghaW1hZ2VEYXRhKQorICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgZGVjb2RlciA+PiBzcmNSZWN0OworICAgIGlm
ICghc3JjUmVjdCkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIGRlY29kZXIg
Pj4gZGVzdFBvaW50OworICAgIGlmICghZGVzdFBvaW50KQorICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworCisgICAgcmV0dXJuIFB1dEltYWdlRGF0YTo6Y3JlYXRlKCppbnB1dEZvcm1hdCwg
V1RGTW92ZSgqaW1hZ2VEYXRhKSwgKnNyY1JlY3QsICpkZXN0UG9pbnQpOworfQorCiBjbGFzcyBT
dHJva2VSZWN0IDogcHVibGljIERyYXdpbmdJdGVtIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVm
PFN0cm9rZVJlY3Q+IGNyZWF0ZShjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGZsb2F0IGxpbmVXaWR0
aCkKQEAgLTI4MzcsNiArMjkxNiw5IEBAIHZvaWQgSXRlbTo6ZW5jb2RlKEVuY29kZXImIGVuY29k
ZXIpIGNvbnN0CiAgICAgY2FzZSBJdGVtVHlwZTo6RmlsbEVsbGlwc2U6CiAgICAgICAgIGVuY29k
ZXIgPDwgZG93bmNhc3Q8RmlsbEVsbGlwc2U+KCp0aGlzKTsKICAgICAgICAgYnJlYWs7CisgICAg
Y2FzZSBJdGVtVHlwZTo6UHV0SW1hZ2VEYXRhOgorICAgICAgICBlbmNvZGVyIDw8IGRvd25jYXN0
PFB1dEltYWdlRGF0YT4oKnRoaXMpOworICAgICAgICBicmVhazsKICAgICBjYXNlIEl0ZW1UeXBl
OjpTdHJva2VSZWN0OgogICAgICAgICBlbmNvZGVyIDw8IGRvd25jYXN0PFN0cm9rZVJlY3Q+KCp0
aGlzKTsKICAgICAgICAgYnJlYWs7CkBAIC0zMDM2LDYgKzMxMTgsMTAgQEAgT3B0aW9uYWw8UmVm
PEl0ZW0+PiBJdGVtOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICAgICAgaWYgKGF1dG8g
aXRlbSA9IEZpbGxFbGxpcHNlOjpkZWNvZGUoZGVjb2RlcikpCiAgICAgICAgICAgICByZXR1cm4g
c3RhdGljX3JlZmVyZW5jZV9jYXN0PEl0ZW0+KFdURk1vdmUoKml0ZW0pKTsKICAgICAgICAgYnJl
YWs7CisgICAgY2FzZSBJdGVtVHlwZTo6UHV0SW1hZ2VEYXRhOgorICAgICAgICBpZiAoYXV0byBp
dGVtID0gUHV0SW1hZ2VEYXRhOjpkZWNvZGUoZGVjb2RlcikpCisgICAgICAgICAgICByZXR1cm4g
c3RhdGljX3JlZmVyZW5jZV9jYXN0PEl0ZW0+KFdURk1vdmUoKml0ZW0pKTsKKyAgICAgICAgYnJl
YWs7CiAgICAgY2FzZSBJdGVtVHlwZTo6U3Ryb2tlUmVjdDoKICAgICAgICAgaWYgKGF1dG8gaXRl
bSA9IFN0cm9rZVJlY3Q6OmRlY29kZShkZWNvZGVyKSkKICAgICAgICAgICAgIHJldHVybiBzdGF0
aWNfcmVmZXJlbmNlX2Nhc3Q8SXRlbT4oV1RGTW92ZSgqaXRlbSkpOwpAQCAtMzEzNSw2ICszMjIx
LDcgQEAgU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19ESVNQTEFZTElTVF9JVEVNKEZpbGxSb3VuZGVk
UmVjdCkKIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRElTUExBWUxJU1RfSVRFTShGaWxsUmVjdFdp
dGhSb3VuZGVkSG9sZSkKIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRElTUExBWUxJU1RfSVRFTShG
aWxsUGF0aCkKIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRElTUExBWUxJU1RfSVRFTShGaWxsRWxs
aXBzZSkKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRElTUExBWUxJU1RfSVRFTShQdXRJbWFnZURh
dGEpCiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0RJU1BMQVlMSVNUX0lURU0oU3Ryb2tlUmVjdCkK
IFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRElTUExBWUxJU1RfSVRFTShTdHJva2VQYXRoKQogU1BF
Q0lBTElaRV9UWVBFX1RSQUlUU19ESVNQTEFZTElTVF9JVEVNKFN0cm9rZUVsbGlwc2UpCkBAIC0z
MTk0LDYgKzMyODEsNyBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpJdGVtVHlwZT4gewogICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlw
ZTo6RmlsbFJlY3RXaXRoUm91bmRlZEhvbGUsCiAgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0
ZW1UeXBlOjpGaWxsUGF0aCwKICAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkZp
bGxFbGxpcHNlLAorICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6UHV0SW1hZ2VE
YXRhLAogICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6U3Ryb2tlUmVjdCwKICAg
ICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OlN0cm9rZVBhdGgsCiAgICAgV2ViQ29y
ZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpTdHJva2VFbGxpcHNlLApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVj
b3JkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3Rz
L0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCmluZGV4IDQ5ZGE0ZWY1YjNhM2Q4NDQyZWMzODdlY2Zm
ZDE2MTI5NDU5OTc4OTAuLjIwYmEwNjlhNzBlMDk0ZWMzNjE1NWZjNTVhNjdkYTVkMzU5YWJhZGIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0
cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAKQEAgLTUwLDYgKzUw
LDExIEBAIFJlY29yZGVyOjp+UmVjb3JkZXIoKQogICAgIExPRyhEaXNwbGF5TGlzdHMsICJSZWNv
cmRlZCBkaXNwbGF5IGxpc3Q6XG4lcyIsIG1fZGlzcGxheUxpc3QuZGVzY3JpcHRpb24oKS5kYXRh
KCkpOwogfQogCit2b2lkIFJlY29yZGVyOjpwdXRJbWFnZURhdGEoV2ViQ29yZTo6QWxwaGFQcmVt
dWx0aXBsaWNhdGlvbiBpbnB1dEZvcm1hdCwgY29uc3QgV2ViQ29yZTo6SW1hZ2VEYXRhJiBpbWFn
ZURhdGEsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHNyY1JlY3QsIGNvbnN0IFdlYkNvcmU6Oklu
dFBvaW50JiBkZXN0UG9pbnQpCit7CisgICAgYXBwZW5kSXRlbShXZWJDb3JlOjpEaXNwbGF5TGlz
dDo6UHV0SW1hZ2VEYXRhOjpjcmVhdGUoaW5wdXRGb3JtYXQsIGltYWdlRGF0YSwgc3JjUmVjdCwg
ZGVzdFBvaW50KSk7Cit9CisKIHZvaWQgUmVjb3JkZXI6OndpbGxBcHBlbmRJdGVtKGNvbnN0IEl0
ZW0mIGl0ZW0pCiB7CiAgICAgaWYgKGl0ZW0uaXNEcmF3aW5nSXRlbSgpCkBAIC0zOTUsNiArNDAw
LDggQEAgdm9pZCBSZWNvcmRlcjo6dXBkYXRlSXRlbUV4dGVudChEcmF3aW5nSXRlbSYgaXRlbSkg
Y29uc3QKIHsKICAgICBpZiAoT3B0aW9uYWw8RmxvYXRSZWN0PiByZWN0ID0gaXRlbS5sb2NhbEJv
dW5kcyhncmFwaGljc0NvbnRleHQoKSkpCiAgICAgICAgIGl0ZW0uc2V0RXh0ZW50KGV4dGVudEZy
b21Mb2NhbEJvdW5kcyhyZWN0LnZhbHVlKCkpKTsKKyAgICBlbHNlIGlmIChPcHRpb25hbDxGbG9h
dFJlY3Q+IHJlY3QgPSBpdGVtLmdsb2JhbEJvdW5kcygpKQorICAgICAgICBpdGVtLnNldEV4dGVu
dChyZWN0LnZhbHVlKCkpOwogfQogCiAvLyBGSVhNRTogc2hhcmUgd2l0aCBTaGFkb3dEYXRhCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3RSZWNvcmRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaAppbmRleCBjMjljMWZlMTRhMTc5MjNm
OWJlMDkwNjYwYzg0NjFhOTkwYzdmOWZlLi4zNGQ5YWJlMGYwNzYxYWJkNjI0NWY4YWZjMTkyNWVm
NTU5NjZjZGYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9k
aXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmgKQEAgLTMz
LDEyICszMywxNCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2VudW0gY2xhc3MgQWxwaGFQ
cmVtdWx0aXBsaWNhdGlvbiA6IHVpbnQ4X3Q7CiBjbGFzcyBGbG9hdFBvaW50OwogY2xhc3MgRmxv
YXRSZWN0OwogY2xhc3MgR2x5cGhCdWZmZXI7CiBjbGFzcyBGbG9hdFBvaW50OwogY2xhc3MgRm9u
dDsKIGNsYXNzIEltYWdlOworY2xhc3MgSW1hZ2VEYXRhOwogCiBzdHJ1Y3QgR3JhcGhpY3NDb250
ZXh0U3RhdGU7CiBzdHJ1Y3QgSW1hZ2VQYWludGluZ09wdGlvbnM7CkBAIC01NCw2ICs1Niw4IEBA
IHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBSZWNvcmRlcihHcmFwaGljc0NvbnRleHQmLCBE
aXNwbGF5TGlzdCYsIGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiwgY29uc3QgRmxvYXRSZWN0
JiBpbml0aWFsQ2xpcCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJik7CiAgICAgV0VCQ09SRV9FWFBP
UlQgdmlydHVhbCB+UmVjb3JkZXIoKTsKIAorICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcHV0SW1h
Z2VEYXRhKEFscGhhUHJlbXVsdGlwbGljYXRpb24gaW5wdXRGb3JtYXQsIGNvbnN0IEltYWdlRGF0
YSYsIGNvbnN0IEludFJlY3QmIHNyY1JlY3QsIGNvbnN0IEludFBvaW50JiBkZXN0UG9pbnQpOwor
CiAgICAgc2l6ZV90IGl0ZW1Db3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fZGlzcGxheUxpc3QuaXRl
bUNvdW50KCk7IH0KIAogcHJpdmF0ZToKQEAgLTEyNCw3ICsxMjgsNyBAQCBwcml2YXRlOgogICAg
IHZvaWQgY2xpcE91dChjb25zdCBQYXRoJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBjbGlwUGF0aChj
b25zdCBQYXRoJiwgV2luZFJ1bGUpIG92ZXJyaWRlOwogICAgIEludFJlY3QgY2xpcEJvdW5kcygp
IG92ZXJyaWRlOwotICAgIHZvaWQgY2xpcFRvSW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXImLCBjb25z
dCBGbG9hdFJlY3QmKSBvdmVycmlkZTsKKyAgICB2b2lkIGNsaXBUb0ltYWdlQnVmZmVyKFdlYkNv
cmU6OkltYWdlQnVmZmVyJiwgY29uc3QgRmxvYXRSZWN0Jikgb3ZlcnJpZGU7CiAgICAgCiAgICAg
dm9pZCBhcHBseURldmljZVNjYWxlRmFjdG9yKGZsb2F0KSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlM
aXN0UmVwbGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuY3BwCmluZGV4IGQwNGI0M2Q0OTM5YzMyODBkNzAz
YTBjM2VkNzIyN2RhNjFmM2M5YjkuLmFhYzE1ZGUyOTViNzUwNDllNWVmMjE5NmExZTZiZjBjZjc4
ZTVlNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5jcHAKQEAgLTM1
LDkgKzM1LDEwIEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBuYW1lc3BhY2UgRGlzcGxheUxpc3Qg
ewogCi1SZXBsYXllcjo6UmVwbGF5ZXIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBE
aXNwbGF5TGlzdCYgZGlzcGxheUxpc3QpCitSZXBsYXllcjo6UmVwbGF5ZXIoR3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0LCBjb25zdCBEaXNwbGF5TGlzdCYgZGlzcGxheUxpc3QsIERlbGVnYXRlKiBk
ZWxlZ2F0ZSkKICAgICA6IG1fZGlzcGxheUxpc3QoZGlzcGxheUxpc3QpCiAgICAgLCBtX2NvbnRl
eHQoY29udGV4dCkKKyAgICAsIG1fZGVsZWdhdGUoZGVsZWdhdGUpCiB7CiB9CiAKQEAgLTY2LDcg
KzY3LDggQEAgc3RkOjp1bmlxdWVfcHRyPERpc3BsYXlMaXN0PiBSZXBsYXllcjo6cmVwbGF5KGNv
bnN0IEZsb2F0UmVjdCYgaW5pdGlhbENsaXAsIGJvb2wKICAgICAgICAgfQogCiAgICAgICAgIExP
R19XSVRIX1NUUkVBTShEaXNwbGF5TGlzdHMsIHN0cmVhbSA8PCAiYXBwbHlpbmcgIiA8PCBpIDw8
ICIgIiA8PCBpdGVtKTsKLSAgICAgICAgaXRlbS5hcHBseShtX2NvbnRleHQpOworICAgICAgICBp
ZiAoIW1fZGVsZWdhdGUgfHwgIW1fZGVsZWdhdGUtPmFwcGx5KGl0ZW0sIG1fY29udGV4dCkpCisg
ICAgICAgICAgICBpdGVtLmFwcGx5KG1fY29udGV4dCk7CiAKICAgICAgICAgaWYgKFVOTElLRUxZ
KHRyYWNrUmVwbGF5TGlzdCkpCiAgICAgICAgICAgICByZXBsYXlMaXN0LT5hcHBlbmRJdGVtKGNv
bnN0X2Nhc3Q8SXRlbSY+KGl0ZW0pKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXll
ci5oCmluZGV4IDYwZTY1YWYyNzhlNjQ5YjFmMDRhMzQ0MGZiNTRhNTRkNTRhMmNiMGQuLjQwY2Qw
ZmYwZDQxNjgwY2ZjNzNlNTA0ZGVjZmMzZGVmODc3NTMyMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0UmVwbGF5ZXIuaApAQCAtMzEsMjIgKzMxLDMyIEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAorZW51bSBjbGFzcyBBbHBoYVByZW11bHRpcGxpY2F0aW9uIDogdWludDhfdDsKIGNs
YXNzIEZsb2F0UmVjdDsKIGNsYXNzIEdyYXBoaWNzQ29udGV4dDsKK2NsYXNzIEltYWdlRGF0YTsK
IAogbmFtZXNwYWNlIERpc3BsYXlMaXN0IHsKIAogY2xhc3MgUmVwbGF5ZXIgewogICAgIFdURl9N
QUtFX05PTkNPUFlBQkxFKFJlcGxheWVyKTsKIHB1YmxpYzoKLSAgICBXRUJDT1JFX0VYUE9SVCBS
ZXBsYXllcihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBEaXNwbGF5TGlzdCYpOworICAgIGNsYXNz
IERlbGVnYXRlOworICAgIFdFQkNPUkVfRVhQT1JUIFJlcGxheWVyKEdyYXBoaWNzQ29udGV4dCYs
IGNvbnN0IERpc3BsYXlMaXN0JiwgRGVsZWdhdGUqID0gbnVsbHB0cik7CiAgICAgV0VCQ09SRV9F
WFBPUlQgflJlcGxheWVyKCk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBzdGQ6OnVuaXF1ZV9wdHI8
RGlzcGxheUxpc3Q+IHJlcGxheShjb25zdCBGbG9hdFJlY3QmIGluaXRpYWxDbGlwID0geyB9LCBi
b29sIHRyYWNrUmVwbGF5TGlzdCA9IGZhbHNlKTsKKworICAgIGNsYXNzIERlbGVnYXRlIHsKKyAg
ICBwdWJsaWM6CisgICAgICAgIHZpcnR1YWwgfkRlbGVnYXRlKCkgeyB9CisgICAgICAgIHZpcnR1
YWwgYm9vbCBhcHBseShJdGVtJiwgR3JhcGhpY3NDb250ZXh0JikgeyByZXR1cm4gZmFsc2U7IH0K
KyAgICB9OwogICAgIAogcHJpdmF0ZToKICAgICBjb25zdCBEaXNwbGF5TGlzdCYgbV9kaXNwbGF5
TGlzdDsKICAgICBHcmFwaGljc0NvbnRleHQmIG1fY29udGV4dDsKKyAgICBEZWxlZ2F0ZSogbV9k
ZWxlZ2F0ZTsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9n
cmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oCmluZGV4IDAwNjFkNzdlOWNmNDRj
YWJkNDJjOTNhOTQ5NmY0YmE3ZDVhODhhMTkuLjg4MzFhNjBjY2NlZmM3MmNmOTg0YjIwNjJkMDE5
N2FlYTY3NWVlMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGlj
cy9SZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyUHJveHkuaApAQCAtMzQsNyArMzQsNyBAQAogbmFt
ZXNwYWNlIFdlYktpdCB7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEJhY2tlbmRUeXBlPgotY2xhc3Mg
UmVtb3RlSW1hZ2VCdWZmZXJQcm94eSA6IHB1YmxpYyBXZWJDb3JlOjpDb25jcmV0ZUltYWdlQnVm
ZmVyPEJhY2tlbmRUeXBlPiwgcHVibGljIFJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJQ
cm94eSB7CitjbGFzcyBSZW1vdGVJbWFnZUJ1ZmZlclByb3h5IDogcHVibGljIFdlYkNvcmU6OkNv
bmNyZXRlSW1hZ2VCdWZmZXI8QmFja2VuZFR5cGU+LCBwdWJsaWMgUmVtb3RlSW1hZ2VCdWZmZXJN
ZXNzYWdlSGFuZGxlclByb3h5LCBwdWJsaWMgRGlzcGxheUxpc3Q6OlJlcGxheWVyOjpEZWxlZ2F0
ZSB7CiAgICAgdXNpbmcgQmFzZUNvbmNyZXRlSW1hZ2VCdWZmZXIgPSBXZWJDb3JlOjpDb25jcmV0
ZUltYWdlQnVmZmVyPEJhY2tlbmRUeXBlPjsKICAgICB1c2luZyBCYXNlQ29uY3JldGVJbWFnZUJ1
ZmZlcjo6bV9iYWNrZW5kOwogCkBAIC01MywxNiArNTMsMjcgQEAgcHVibGljOgogCiBwcml2YXRl
OgogICAgIHVzaW5nIEJhc2VDb25jcmV0ZUltYWdlQnVmZmVyOjpmbHVzaERyYXdpbmdDb250ZXh0
OworICAgIHVzaW5nIEJhc2VDb25jcmV0ZUltYWdlQnVmZmVyOjpwdXRJbWFnZURhdGE7CiAKICAg
ICB2b2lkIGZsdXNoRHJhd2luZ0NvbnRleHQoY29uc3QgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRp
c3BsYXlMaXN0JiBkaXNwbGF5TGlzdCwgSW1hZ2VCdWZmZXJGbHVzaElkZW50aWZpZXIgZmx1c2hJ
ZGVudGlmaWVyKSBvdmVycmlkZQogICAgIHsKICAgICAgICAgaWYgKGRpc3BsYXlMaXN0Lml0ZW1D
b3VudCgpKSB7Ci0gICAgICAgICAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVwbGF5ZXIgcmVw
bGF5ZXIoQmFzZUNvbmNyZXRlSW1hZ2VCdWZmZXI6OmNvbnRleHQoKSwgZGlzcGxheUxpc3QpOwor
ICAgICAgICAgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlcGxheWVyIHJlcGxheWVyKEJhc2VD
b25jcmV0ZUltYWdlQnVmZmVyOjpjb250ZXh0KCksIGRpc3BsYXlMaXN0LCB0aGlzKTsKICAgICAg
ICAgICAgIHJlcGxheWVyLnJlcGxheSgpOwogICAgICAgICB9CiAgICAgICAgIG1fYmFja2VuZC0+
Zmx1c2hDb250ZXh0KCk7CiAgICAgICAgIGNvbW1pdEZsdXNoQ29udGV4dChmbHVzaElkZW50aWZp
ZXIpOwogICAgIH0KKworICAgIGJvb2wgYXBwbHkoRGlzcGxheUxpc3Q6Okl0ZW0mIGl0ZW0sIEdy
YXBoaWNzQ29udGV4dCYpIG92ZXJyaWRlCisgICAgeworICAgICAgICBpZiAoaXRlbS50eXBlKCkg
IT0gRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpQdXRJbWFnZURhdGEpCisgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICAgICAgYXV0byYgcHV0SW1hZ2VEYXRhSXRlbSA9IHN0YXRpY19jYXN0
PERpc3BsYXlMaXN0OjpQdXRJbWFnZURhdGEmPihpdGVtKTsKKyAgICAgICAgcHV0SW1hZ2VEYXRh
KHB1dEltYWdlRGF0YUl0ZW0uaW5wdXRGb3JtYXQoKSwgcHV0SW1hZ2VEYXRhSXRlbS5pbWFnZURh
dGEoKSwgcHV0SW1hZ2VEYXRhSXRlbS5zcmNSZWN0KCksIHB1dEltYWdlRGF0YUl0ZW0uZGVzdFBv
aW50KCkpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVu
dENvZGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMu
Y3BwCmluZGV4IDgxYWE3NDIwMjViZDg4N2YyMTJjOGVlNjBkZGQ0ZjgyMDAyNmUzYzUuLmFjYmFl
ZmI5ODJlMTAzNDMyYzNmMzcwNGUxYTllYzYzMTNhNjhkZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcApAQCAtMjksNiArMjksOCBAQAogI2lu
Y2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJTaGFyZWFibGVCaXRtYXAuaCIKICNp
bmNsdWRlICJTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmgiCisjaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oPgorI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0Jsb2JQYXJ0
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9DYWNoZVF1ZXJ5T3B0aW9ucy5oPgpAQCAtMzI0MSw2ICsz
MjQzLDIwIEBAIE9wdGlvbmFsPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiBBcmd1bWVudENvZGVyPFJl
ZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+Pjo6ZGVjCiAgICAgcmV0dXJuIGJ1ZmZlcjsKIH0K
IAordm9pZCBBcmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+Pjo6ZW5jb2Rl
KEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiBidWZm
ZXIpCit7CisgICAgZW5jb2RlU2hhcmVkQnVmZmVyKGVuY29kZXIsIGJ1ZmZlci5wdHIoKSk7Cit9
CisKK09wdGlvbmFsPFJlZjxTaGFyZWRCdWZmZXI+PiBBcmd1bWVudENvZGVyPFJlZjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+Pjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit7CisgICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgIGlmICghZGVjb2RlU2hhcmVkQnVmZmVyKGRlY29k
ZXIsIGJ1ZmZlcikgfHwgIWJ1ZmZlcikKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKwor
ICAgIHJldHVybiBidWZmZXIucmVsZWFzZU5vbk51bGwoKTsKK30KKwogI2lmIEVOQUJMRShFTkNS
WVBURURfTUVESUEpCiB2b2lkIEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNz
aW9uOjpNZXNzYWdlPjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFdlYkNvcmU6OkNE
TUluc3RhbmNlU2Vzc2lvbjo6TWVzc2FnZSYgbWVzc2FnZSkKIHsKQEAgLTMyOTYsNCArMzMxMiwz
NCBAQCBPcHRpb25hbDxXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246OktleVN0YXR1c1ZlY3Rv
cj4gQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpDRAogfQogI2VuZGlmIC8vIEVOQUJMRShFTkNSWVBU
RURfTUVESUEpCiAKK3ZvaWQgQXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6SW1hZ2VEYXRhPj46
OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBSZWY8V2ViQ29yZTo6SW1hZ2VEYXRhPiYg
aW1hZ2VEYXRhKQoreworICAgIC8vIEZJWE1FOiBDb3B5aW5nIGZyb20gdGhlIEltYWdlRGF0YSB0
byB0aGUgU2hhcmVkQnVmZmVyIGlzIHNsb3cuIEludmVudCBzb21lIHdheSBmb3IgdGhlIFNoYXJl
ZEJ1ZmZlciB0byBiZSBwb3B1bGF0ZWQgZGlyZWN0bHkuCisgICAgYXV0byBzaGFyZWRCdWZmZXIg
PSBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShpbWFnZURhdGEtPmRhdGEoKS0+ZGF0YSgp
LCBpbWFnZURhdGEtPmRhdGEoKS0+Ynl0ZUxlbmd0aCgpKTsKKyAgICBlbmNvZGVyIDw8IGltYWdl
RGF0YS0+c2l6ZSgpOworICAgIGVuY29kZXIgPDwgc2hhcmVkQnVmZmVyOworfQorCitPcHRpb25h
bDxSZWY8V2ViQ29yZTo6SW1hZ2VEYXRhPj4gQXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6SW1h
Z2VEYXRhPj46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIE9wdGlvbmFsPEludFNp
emU+IGltYWdlRGF0YVNpemU7CisgICAgT3B0aW9uYWw8UmVmPFNoYXJlZEJ1ZmZlcj4+IGRhdGE7
CisKKyAgICBkZWNvZGVyID4+IGltYWdlRGF0YVNpemU7CisgICAgaWYgKCFpbWFnZURhdGFTaXpl
KQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgZGVjb2RlciA+PiBkYXRhOwor
ICAgIGlmICghZGF0YSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIC8vIEZJ
WE1FOiBDb3B5aW5nIGZyb20gdGhlIFNoYXJlZEJ1ZmZlciBpbnRvIHRoZSBJbWFnZURhdGEgaXMg
c2xvdy4gSW52ZW50IHNvbWUgd2F5IGZvciB0aGUgSW1hZ2VEYXRhIHRvIHNpbXBseSBqdXN0IHJl
dGFpbiB0aGUgU2hhcmVkQnVmZmVyLCBhbmQgdXNlIGl0IGludGVybmFsbHkuCisgICAgLy8gQWx0
ZXJuYXRpdmVseSwgd2UgY291bGQgY3JlYXRlIGFuIG92ZXJsb2FkIGZvciBwdXRJbWFnZURhdGEo
KSB3aGljaCBvcGVyYXRlcyBvbiB0aGUgU2hhcmVkQnVmZmVyIGRpcmVjdGx5LgorICAgIGF1dG8g
aW1hZ2VEYXRhID0gSW1hZ2VEYXRhOjpjcmVhdGUoKmltYWdlRGF0YVNpemUsIFVpbnQ4Q2xhbXBl
ZEFycmF5OjpjcmVhdGUocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oKCpkYXRhKS0+
ZGF0YSgpKSwgKCpkYXRhKS0+c2l6ZSgpKSk7CisgICAgaWYgKCFpbWFnZURhdGEpCisgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICByZXR1cm4geyBpbWFnZURhdGEucmVsZWFzZU5v
bk51bGwoKSB9OworfQorCiB9IC8vIG5hbWVzcGFjZSBJUEMKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKaW5kZXggZDA3ZjJiZjViMjFiNjIwYjkxOTgxMDE5
OTQwZTI3NDRlZDI1MDBjZC4uNTJiMDdiYzExODAxOTUxMGQxOTIyYzhlYTc3OTc3ZmE0ODlhM2I4
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJz
LmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKQEAg
LTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0NvbG9yU3BhY2UuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL0RpYWdub3N0aWNMb2dnaW5nQ2xpZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9G
cmFtZUxvYWRlclR5cGVzLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9JbWFnZURhdGEuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL0luZGV4ZWREQi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSW5wdXRNb2RlLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9NZWRpYVNlbGVjdGlvbk9wdGlvbi5oPgpAQCAtODQxLDYgKzg0
MiwxMSBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFJlZlB0cjxXZWJDb3JlOjpT
aGFyZWRCdWZmZXI+PiB7CiAgICAgc3RhdGljIE9wdGlvbmFsPFJlZlB0cjxXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI+PiBkZWNvZGUoRGVjb2RlciYpOwogfTsKIAordGVtcGxhdGU8PiBzdHJ1Y3QgQXJn
dW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4geworICAgIHN0YXRpYyB2b2lk
IGVuY29kZShFbmNvZGVyJiwgY29uc3QgUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mKTsKKyAg
ICBzdGF0aWMgT3B0aW9uYWw8UmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+IGRlY29kZShEZWNv
ZGVyJik7Cit9OworCiAjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKIHRlbXBsYXRlPD4gc3Ry
dWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpNZXNzYWdlPiB7
CiAgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBXZWJDb3JlOjpDRE1JbnN0
YW5jZVNlc3Npb246Ok1lc3NhZ2UmKTsKQEAgLTg1Myw2ICs4NTksMTEgQEAgdGVtcGxhdGU8PiBz
dHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246OktleVN0YXR1
c1ZlY3Rvcj4gewogfTsKICNlbmRpZgogCit0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVy
PFJlZjxXZWJDb3JlOjpJbWFnZURhdGE+PiB7CisgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29k
ZXImLCBjb25zdCBSZWY8V2ViQ29yZTo6SW1hZ2VEYXRhPiYpOworICAgIHN0YXRpYyBPcHRpb25h
bDxSZWY8V2ViQ29yZTo6SW1hZ2VEYXRhPj4gZGVjb2RlKERlY29kZXImKTsKK307CisKIH0gLy8g
bmFtZXNwYWNlIElQQwogCiBuYW1lc3BhY2UgV1RGIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXIuaCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXIuaAppbmRleCBi
N2MwZTliNDVmMGQ3MDI2NDk0ZTNjZTA5NWM0NjU0Yzk3OWYyOGM5Li44OWYzM2ZjYTU5MjQyYzcx
NmNmMWY2MzRiZjMyNzlmYWVmN2ZkNjRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlci5oCkBAIC0zMCw2ICsz
MCw3IEBACiAjaW5jbHVkZSAiUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlci5oIgogI2lu
Y2x1ZGUgPFdlYkNvcmUvRGlzcGxheUxpc3RJbWFnZUJ1ZmZlci5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvRGlzcGxheUxpc3RJdGVtcy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvRGlzcGxheUxpc3RSZWNv
cmRlci5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIApAQCAtNzIsNiArNzMsMTQgQEAgcHJvdGVj
dGVkOgogICAgICAgICByZXR1cm4gbV9iYWNrZW5kLmdldCgpOwogICAgIH0KIAorICAgIHZvaWQg
cHV0SW1hZ2VEYXRhKFdlYkNvcmU6OkFscGhhUHJlbXVsdGlwbGljYXRpb24gaW5wdXRGb3JtYXQs
IGNvbnN0IFdlYkNvcmU6OkltYWdlRGF0YSYgaW1hZ2VEYXRhLCBjb25zdCBXZWJDb3JlOjpJbnRS
ZWN0JiBzcmNSZWN0LCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgZGVzdFBvaW50ID0geyB9KSBv
dmVycmlkZQorICAgIHsKKyAgICAgICAgLy8gVGhlIG1hdGggaW5zaWRlIEltYWdlRGF0YTo6Y3Jl
YXRlKCkgZG9lc24ndCBhZ3JlZSB3aXRoIHRoZSBtYXRoIGluc2lkZSBJbWFnZUJ1ZmZlckJhY2tl
bmQ6OnB1dEltYWdlRGF0YSgpIGFib3V0IGhvdyBtX3Jlc29sdXRpb25TY2FsZSBpbnRlcmFjdHMg
d2l0aCB0aGUgZGF0YSBpbiB0aGUgSW1hZ2VCdWZmZXIuCisgICAgICAgIC8vIFRoaXMgbWVhbnMg
dGhhdCBwdXRJbWFnZURhdGEoKSBpcyBvbmx5IGNhbGxlZCB3aGVuIG1fcmVzb2x1dGlvblNjYWxl
ID09IDEuCisgICAgICAgIEFTU0VSVChtX2JhY2tlbmQtPnJlc29sdXRpb25TY2FsZSgpID09IDEp
OworICAgICAgICBtX2RyYXdpbmdDb250ZXh0LnJlY29yZGVyKCkucHV0SW1hZ2VEYXRhKGlucHV0
Rm9ybWF0LCBpbWFnZURhdGEsIHNyY1JlY3QsIGRlc3RQb2ludCk7CisgICAgfQorCiAgICAgdm9p
ZCBmbHVzaENvbnRleHQoKSBvdmVycmlkZQogICAgIHsKICAgICAgICAgZmx1c2hEcmF3aW5nQ29u
dGV4dCgpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCmluZGV4IDk5MzM0NzM3MDBlY2M0YTQ2MzM5NGUwMjU1Mjk3NWQxMmEwOTQzNjUu
LjhjZTA2NjQ0NzE5Yzk3NzVlMWI4NTU1ZmYxM2RjYjhkODJlYzhjZjMgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxNCBAQAorMjAyMC0wMy0wNiAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUu
Y29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vzc10gSW1wbGVtZW50IENhbnZhc1JlbmRlcmluZ0Nv
bnRleHQyRC5wdXRJbWFnZURhdGEoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjA4NjIxCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82MDA2ODA0Nz4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGZhc3Qv
Y2FudmFzL3B1dEltYWdlRGF0YS1tdWx0aXBsZS1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAg
ICAgKiBmYXN0L2NhbnZhcy9wdXRJbWFnZURhdGEtbXVsdGlwbGUuaHRtbDogQWRkZWQuCisKIDIw
MjAtMDMtMDYgIEphc29uIExhd3JlbmNlICA8bGF3cmVuY2UuakBhcHBsZS5jb20+CiAKICAgICAg
ICAgUkVHUkVTU0lPTjogKHIyNTc3NjA/KSBbIE1hYyB3azIgRGVidWcgXSBBU1NFUlRJT04gRkFJ
TEVEOiBjaGlsZC0+cGFyZW50T2JqZWN0KCkgPT0gdGhpcyBpbiBXZWJDb3JlOjpBY2Nlc3NpYmls
aXR5T2JqZWN0OjppbnNlcnRDaGlsZApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jYW52
YXMvcHV0SW1hZ2VEYXRhLW11bHRpcGxlLWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0
L2NhbnZhcy9wdXRJbWFnZURhdGEtbXVsdGlwbGUtZXhwZWN0ZWQuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4w
M2MxYzM2YTE3Y2IwYWYwYTI3ZmExMmMwMWJjZDBlMzcwNmIxYWI2Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvcHV0SW1hZ2VEYXRhLW11bHRpcGxlLWV4cGVjdGVk
Lmh0bWwKQEAgLTAsMCArMSw5IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8
L2hlYWQ+Cis8Ym9keT4KK1RoaXMgdGVzdCBtYWtlcyBzdXJlIHRoYXQgcHV0SW1hZ2VEYXRhKCkg
aXNuJ3QgYWZmZWN0ZWQgYnkgc3Vic2VxdWVudCBjaGFuZ2VzIHRvIHRoZSBJbWFnZURhdGEuIFRo
ZSB0ZXN0IHBhc3NlcyBpZiB5b3Ugc2VlIGEgZ3JlZW4gc3F1YXJlIGJlbG93LgorPGRpdiBzdHls
ZT0id2lkdGg6IDEwMHB4OyBoZWlnaHQ6IDEwMHB4OyBiYWNrZ3JvdW5kOiByZ2IoMCwgMjU1LCAw
KSI+PC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0
L2NhbnZhcy9wdXRJbWFnZURhdGEtbXVsdGlwbGUuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvY2Fu
dmFzL3B1dEltYWdlRGF0YS1tdWx0aXBsZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRmMGVlNWNkMDg2Y2Ux
YTE4ZDU3YWI5NmY3YjQ5OGMyODRmZTJlMWUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9mYXN0L2NhbnZhcy9wdXRJbWFnZURhdGEtbXVsdGlwbGUuaHRtbApAQCAtMCwwICsxLDMwIEBA
Cis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8L2hlYWQ+Cis8Ym9keT4KK1RoaXMg
dGVzdCBtYWtlcyBzdXJlIHRoYXQgcHV0SW1hZ2VEYXRhKCkgaXNuJ3QgYWZmZWN0ZWQgYnkgc3Vi
c2VxdWVudCBjaGFuZ2VzIHRvIHRoZSBJbWFnZURhdGEuIFRoZSB0ZXN0IHBhc3NlcyBpZiB5b3Ug
c2VlIGEgZ3JlZW4gc3F1YXJlIGJlbG93LgorPGRpdj48Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRo
PSIxMDAiIGhlaWdodD0iMTAwIj48L2NhbnZhcz48L2Rpdj4KKzxzY3JpcHQ+CitsZXQgY2FudmFz
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNhbnZhcyIpOworbGV0IGNvbnRleHQgPSBjYW52
YXMuZ2V0Q29udGV4dCgiMmQiKTsKK2xldCB3aWR0aCA9IDEwMDsKK2xldCBoZWlnaHQgPSAxMDA7
CitsZXQgaW1hZ2VEYXRhID0gY29udGV4dC5jcmVhdGVJbWFnZURhdGEod2lkdGgsIGhlaWdodCk7
CitsZXQgZGF0YSA9IGltYWdlRGF0YS5kYXRhOworZm9yIChsZXQgaSA9IDA7IGkgPCB3aWR0aCAq
IGhlaWdodDsgKytpKSB7CisgICAgZGF0YVs0ICogaSArIDBdID0gMDsKKyAgICBkYXRhWzQgKiBp
ICsgMV0gPSAyNTU7CisgICAgZGF0YVs0ICogaSArIDJdID0gMDsKKyAgICBkYXRhWzQgKiBpICsg
M10gPSAyNTU7Cit9Citjb250ZXh0LnB1dEltYWdlRGF0YShpbWFnZURhdGEsIDAsIDApOworZm9y
IChsZXQgaSA9IDA7IGkgPCB3aWR0aCAqIGhlaWdodDsgKytpKSB7CisgICAgZGF0YVs0ICogaSAr
IDBdID0gMjU1OworICAgIGRhdGFbNCAqIGkgKyAxXSA9IDA7CisgICAgZGF0YVs0ICogaSArIDJd
ID0gMDsKKyAgICBkYXRhWzQgKiBpICsgM10gPSAyNTU7Cit9Cis8L3NjcmlwdD4KKzwvYm9keT4K
KzwvaHRtbD4K
</data>

          </attachment>
      

    </bug>

</bugzilla>