<?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>218896</bug_id>
          
          <creation_ts>2020-11-13 05:00:40 -0800</creation_ts>
          <short_desc>Remove unused functions from GraphicsContextGL and ExtensionsGL</short_desc>
          <delta_ts>2021-02-04 08:41:33 -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>WebGL</component>
          <version>Other</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>
          <dependson>220460</dependson>
          <blocked>217211</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Kimmo Kinnunen">kkinnunen</reporter>
          <assigned_to name="Rini Patel">rini_patel</assigned_to>
          <cc>cdumez</cc>
    
    <cc>changseok</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>darin</cc>
    
    <cc>dino</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fujii</cc>
    
    <cc>graouts</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>luiz</cc>
    
    <cc>pnormand</cc>
    
    <cc>rini_patel</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1707198</commentid>
    <comment_count>0</comment_count>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2020-11-13 05:00:40 -0800</bug_when>
    <thetext>Remove unused functions from GraphicsContextGL and ExtensionsGL
They&apos;re dead code and make it harder to implement the GPU Process version.

- If the function is unused, remove it fully
- If the function is unused in USE(ANGLE) WebGL part, remove the function from GraphicsContextGL and ANGLE GraphicsContextGLOpenGL</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1709448</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-11-20 05:01:44 -0800</bug_when>
    <thetext>&lt;rdar://problem/71624036&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1710693</commentid>
    <comment_count>2</comment_count>
      <attachid>415038</attachid>
    <who name="Rini Patel">rini_patel</who>
    <bug_when>2020-11-30 11:39:29 -0800</bug_when>
    <thetext>Created attachment 415038
Adding initial wip patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1710770</commentid>
    <comment_count>3</comment_count>
      <attachid>415057</attachid>
    <who name="Rini Patel">rini_patel</who>
    <bug_when>2020-11-30 14:15:04 -0800</bug_when>
    <thetext>Created attachment 415057
Updated patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1710911</commentid>
    <comment_count>4</comment_count>
      <attachid>415091</attachid>
    <who name="Rini Patel">rini_patel</who>
    <bug_when>2020-11-30 20:17:28 -0800</bug_when>
    <thetext>Created attachment 415091
Updated patch to address build errors. This is still WIP.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1711166</commentid>
    <comment_count>5</comment_count>
      <attachid>415160</attachid>
    <who name="Rini Patel">rini_patel</who>
    <bug_when>2020-12-01 14:15:15 -0800</bug_when>
    <thetext>Created attachment 415160
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1711177</commentid>
    <comment_count>6</comment_count>
      <attachid>415165</attachid>
    <who name="Rini Patel">rini_patel</who>
    <bug_when>2020-12-01 14:30:38 -0800</bug_when>
    <thetext>Created attachment 415165
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1711188</commentid>
    <comment_count>7</comment_count>
      <attachid>415167</attachid>
    <who name="Rini Patel">rini_patel</who>
    <bug_when>2020-12-01 15:02:43 -0800</bug_when>
    <thetext>Created attachment 415167
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1711189</commentid>
    <comment_count>8</comment_count>
      <attachid>415167</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-12-01 15:05:01 -0800</bug_when>
    <thetext>Comment on attachment 415167
Patch

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

&gt; Source/WebCore/platform/graphics/angle/ExtensionsGLANGLE.cpp:215
&gt; +#if 0

Why do this instead of deleting? Same question everywhere we are using #if 0.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1711276</commentid>
    <comment_count>9</comment_count>
      <attachid>415167</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2020-12-02 01:18:07 -0800</bug_when>
    <thetext>Comment on attachment 415167
Patch

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

&gt;&gt; Source/WebCore/platform/graphics/angle/ExtensionsGLANGLE.cpp:215
&gt;&gt; +#if 0
&gt; 
&gt; Why do this instead of deleting? Same question everywhere we are using #if 0.

My bad.
Rini, the #if 0 hunks were examples of function ranges that probably are removable. So if the functions inside the #if 0 blocks are removable, you could just remove them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1711365</commentid>
    <comment_count>10</comment_count>
    <who name="Rini Patel">rini_patel</who>
    <bug_when>2020-12-02 09:52:37 -0800</bug_when>
    <thetext>(In reply to Kimmo Kinnunen from comment #9)
&gt; Comment on attachment 415167 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=415167&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebCore/platform/graphics/angle/ExtensionsGLANGLE.cpp:215
&gt; &gt;&gt; +#if 0
&gt; &gt; 
&gt; &gt; Why do this instead of deleting? Same question everywhere we are using #if 0.
&gt; 
&gt; My bad.
&gt; Rini, the #if 0 hunks were examples of function ranges that probably are
&gt; removable. So if the functions inside the #if 0 blocks are removable, you
&gt; could just remove them.

Okay, will remove those.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1711372</commentid>
    <comment_count>11</comment_count>
      <attachid>415232</attachid>
    <who name="Rini Patel">rini_patel</who>
    <bug_when>2020-12-02 10:11:44 -0800</bug_when>
    <thetext>Created attachment 415232
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1711498</commentid>
    <comment_count>12</comment_count>
      <attachid>415232</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-12-02 16:01:57 -0800</bug_when>
    <thetext>Comment on attachment 415232
Patch

The failures in the iOS-wk2 EWS bot seem to be WebGL-related.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1711617</commentid>
    <comment_count>13</comment_count>
      <attachid>415232</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2020-12-03 00:12:00 -0800</bug_when>
    <thetext>Comment on attachment 415232
Patch

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

&gt; Source/WebCore/html/canvas/WebGLRenderingContextBase.cpp:743
&gt;  

You can test the test failures by leaving the  context-&gt;getExtensions() call here.
If the tests pass on the currently failing platform, then there is a bug somewhere, perhaps something to do with makecurrent.

&gt; Source/WebCore/platform/graphics/ExtensionsGL.h:304
&gt;  };

So this hunk is ok to remove, i.e it should be dead code. Also applies tho the cpp file.
However, see below, the corresponding change is not ok for the OpenGL.h/OpenGLES.h

&gt; Source/WebCore/platform/graphics/opengl/ExtensionsGLOpenGLCommon.h:-62
&gt; -    bool isNVIDIA() override { return m_isNVIDIA; }

So these functions cannot be removed from here.
So for non-ANGLE implementation, this hunk below is not dead code. So it cannot be removed, and the corresponding code in the .cpp cannot be removed either.

&gt; Source/WebCore/platform/graphics/opengl/ExtensionsGLOpenGLCommon.h:-126
&gt; -

These are not dead code, cannot be removed.

&gt; Source/WebCore/platform/graphics/opengl/GraphicsContextGLOpenGLBase.cpp:-69
&gt; -    if (!attrs.alpha &amp;&amp; getExtensions().isNVIDIA()) {

cannot be removed.
So you must change getExtensions() with
static_cast&lt;ExtensionsGLOpenGLCommon&amp;&gt;(getExtensions()).isNVIDIA() or similar construct.

&gt; Source/WebCore/platform/graphics/opengl/GraphicsContextGLOpenGLBase.cpp:291
&gt;  #endif

same thing for all of these below that use getExtensions() --- these are not dead code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1711798</commentid>
    <comment_count>14</comment_count>
      <attachid>415338</attachid>
    <who name="Rini Patel">rini_patel</who>
    <bug_when>2020-12-03 13:50:31 -0800</bug_when>
    <thetext>Created attachment 415338
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1711844</commentid>
    <comment_count>15</comment_count>
      <attachid>415353</attachid>
    <who name="Rini Patel">rini_patel</who>
    <bug_when>2020-12-03 14:56:34 -0800</bug_when>
    <thetext>Created attachment 415353
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1711853</commentid>
    <comment_count>16</comment_count>
      <attachid>415353</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-12-03 15:12:15 -0800</bug_when>
    <thetext>Comment on attachment 415353
Patch

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

&gt; Source/WebCore/html/canvas/WebGLRenderingContextBase.cpp:746
&gt;      auto&amp; extensions = context-&gt;getExtensions();
&gt; -    if (extensions.supports(&quot;GL_EXT_debug_marker&quot;_s))
&gt; -        extensions.pushGroupMarkerEXT(&quot;WebGLRenderingContext&quot;_s);
&gt; +    if (extensions.supports(&quot;GL_EXT_debug_marker&quot;_s)) { }

Why can’t we delete this whole paragraph of code, instead of just the pushGroupMarkerEXT call? Is there a side effect of calling getExtensions or supports?

&gt; Source/WebCore/platform/graphics/angle/ExtensionsGLANGLE.h:39
&gt; +    ExtensionsGLANGLE(GraphicsContextGLOpenGL*);

Should add the &quot;explicit&quot; keyword to this constructor.

&gt; Source/WebCore/platform/graphics/opengl/ExtensionsGLOpenGLCommon.h:69
&gt; +    bool isNVIDIA() { return m_isNVIDIA; }
&gt; +    bool isAMD() { return m_isAMD; }
&gt; +    bool isIntel() { return m_isIntel; }
&gt; +    bool isImagination() { return m_isImagination; }
&gt; +    String vendor() { return m_vendor; }
&gt; +
&gt; +    bool requiresBuiltInFunctionEmulation() { return m_requiresBuiltInFunctionEmulation; }
&gt; +    bool requiresRestrictedMaximumTextureSize() { return m_requiresRestrictedMaximumTextureSize; }

These should probably all be const.

&gt; Source/WebCore/platform/graphics/opengl/GraphicsContextGLOpenGLBase.cpp:69
&gt; +    if (!attrs.alpha &amp;&amp; static_cast&lt;ExtensionsGLOpenGLCommon&amp;&gt;(getExtensions()).isNVIDIA()) {

This cast seems inelegant. Why is it safe? Do we really need to make this change?

&gt; Source/WebCore/platform/graphics/opengl/GraphicsContextGLOpenGLBase.cpp:292
&gt; +        if (static_cast&lt;ExtensionsGLOpenGLCommon&amp;&gt;(getExtensions()).requiresRestrictedMaximumTextureSize())

Ditto.

&gt; Source/WebCore/platform/graphics/opengl/GraphicsContextGLOpenGLBase.cpp:297
&gt; +        if (static_cast&lt;ExtensionsGLOpenGLCommon&amp;&gt;(getExtensions()).requiresRestrictedMaximumTextureSize())

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1711893</commentid>
    <comment_count>17</comment_count>
    <who name="Rini Patel">rini_patel</who>
    <bug_when>2020-12-03 16:37:43 -0800</bug_when>
    <thetext>(In reply to Darin Adler from comment #16)
&gt; Comment on attachment 415353 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=415353&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/html/canvas/WebGLRenderingContextBase.cpp:746
&gt; &gt;      auto&amp; extensions = context-&gt;getExtensions();
&gt; &gt; -    if (extensions.supports(&quot;GL_EXT_debug_marker&quot;_s))
&gt; &gt; -        extensions.pushGroupMarkerEXT(&quot;WebGLRenderingContext&quot;_s);
&gt; &gt; +    if (extensions.supports(&quot;GL_EXT_debug_marker&quot;_s)) { }
&gt; 
&gt; Why can’t we delete this whole paragraph of code, instead of just the
&gt; pushGroupMarkerEXT call? Is there a side effect of calling getExtensions or
&gt; supports?
I left it there to test if the ios-wk2 test failure had something to do with it. 

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/angle/ExtensionsGLANGLE.h:39
&gt; &gt; +    ExtensionsGLANGLE(GraphicsContextGLOpenGL*);
&gt; 
&gt; Should add the &quot;explicit&quot; keyword to this constructor.
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/opengl/ExtensionsGLOpenGLCommon.h:69
&gt; &gt; +    bool isNVIDIA() { return m_isNVIDIA; }
&gt; &gt; +    bool isAMD() { return m_isAMD; }
&gt; &gt; +    bool isIntel() { return m_isIntel; }
&gt; &gt; +    bool isImagination() { return m_isImagination; }
&gt; &gt; +    String vendor() { return m_vendor; }
&gt; &gt; +
&gt; &gt; +    bool requiresBuiltInFunctionEmulation() { return m_requiresBuiltInFunctionEmulation; }
&gt; &gt; +    bool requiresRestrictedMaximumTextureSize() { return m_requiresRestrictedMaximumTextureSize; }
&gt; 
&gt; These should probably all be const.
Will change it. 

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/opengl/GraphicsContextGLOpenGLBase.cpp:69
&gt; &gt; +    if (!attrs.alpha &amp;&amp; static_cast&lt;ExtensionsGLOpenGLCommon&amp;&gt;(getExtensions()).isNVIDIA()) {
&gt; 
&gt; This cast seems inelegant. Why is it safe? Do we really need to make this
&gt; change?
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/opengl/GraphicsContextGLOpenGLBase.cpp:292
&gt; &gt; +        if (static_cast&lt;ExtensionsGLOpenGLCommon&amp;&gt;(getExtensions()).requiresRestrictedMaximumTextureSize())
&gt; 
&gt; Ditto.
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/opengl/GraphicsContextGLOpenGLBase.cpp:297
&gt; &gt; +        if (static_cast&lt;ExtensionsGLOpenGLCommon&amp;&gt;(getExtensions()).requiresRestrictedMaximumTextureSize())
&gt; 
&gt; Ditto.
We no longer have these queries in ExtensionsGL, and the default method getExtensions() returns the type ExtensionsGL, which is a parent to ExtensionsGLOpenGLCommon. So I think static_cast should be safe in this case?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1711957</commentid>
    <comment_count>18</comment_count>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2020-12-03 23:09:14 -0800</bug_when>
    <thetext>(In reply to Darin Adler from comment #16)
&gt; Why can’t we delete this whole paragraph of code, instead of just the
&gt; pushGroupMarkerEXT call? Is there a side effect of calling getExtensions or
&gt; supports?

Yeah, we should delete the whole paragraph.
The intention was for Rini to test if the source of the test failure was removing this hunk, which it was. 

The call has a side-effect of making the underlying OpenGL context current. After removing the hunk, the context is not current when some buggy function is being called. Historically the implementations (ANGLE, OpenGL, OpenGL ES) have been very buggy wrt this. I tried to fix this recently with a patch that makes the call for every public entry point. I must have missed some, or there is some other kind of logic problem related to this.
I&apos;ll sync up with Rini on how to spot this.



&gt; &gt; Source/WebCore/platform/graphics/opengl/GraphicsContextGLOpenGLBase.cpp:69
&gt; &gt; +    if (!attrs.alpha &amp;&amp; static_cast&lt;ExtensionsGLOpenGLCommon&amp;&gt;(getExtensions()).isNVIDIA()) {
&gt; 
&gt; This cast seems inelegant. Why is it safe? Do we really need to make this
&gt; change?

So the &quot;extensions&quot; object is conceptually the same object as the &quot;context&quot; object. This is safe because this is modifying &quot;OpenGLCommon&quot; context, which only uses &quot;OpenGLCommon&quot; extensions implementation. For a given compile, there&apos;s only these implementations of the interfaces.

The underlying problem is that the Extensions interface was not supposed to be used like this inside the Context interface implementation. Rather, I would imagine the original intention was that the Extensions interface was used from the outside, e.g. WebGL implementation level.

We are trying to simplify by removing the extensions interface altogether. However, since the OpenGL and OpenGL ES implementations of these are relatively unmaintained, unimplemented and buggy, it&apos;s not entirely simple to just remove the interface. 
This is a transitional commit towards a scenario where the getExtensions call would be removed from the common interface. After that, the old OpenGL  / OpenGL ES implementations can add their exact type to the getExtensions call, or follow through with the removal of the Extensions/Context separation altogether.

We need to make this change to eventually remove the Extensions interface from the main code. The interface is just full of empty functions and it does not abstract anything related to extending the context object. As it stands today, the interfaces are very much tied together.

Also we need to make the change because the abstract Extensions interface contains concrete properties that are not common to all the Extensions implementors. The properties &quot;isNVIDIA()&quot; etc are used in the OpenGL/OpenGLES _implementation_ of the GraphicsContextGLOpenGL

If you so feel, we can extend the ifdefing in the header to change the getExtensions to covariant return value, which should side-step the need for casting. I felt it would complicate the matter more than simplify, especially given that the code would stay as-is hopefully for somewhat short amount of time anyway.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1712043</commentid>
    <comment_count>19</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-12-04 09:23:53 -0800</bug_when>
    <thetext>(In reply to Kimmo Kinnunen from comment #18)
&gt; If you so feel, we can extend the ifdefing in the header to change the
&gt; getExtensions to covariant return value, which should side-step the need for
&gt; casting. I felt it would complicate the matter more than simplify,
&gt; especially given that the code would stay as-is hopefully for somewhat short
&gt; amount of time anyway.

I think we should. Adding one function does not sound like it would complicate things much.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1712097</commentid>
    <comment_count>20</comment_count>
      <attachid>415439</attachid>
    <who name="Rini Patel">rini_patel</who>
    <bug_when>2020-12-04 11:50:18 -0800</bug_when>
    <thetext>Created attachment 415439
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1712187</commentid>
    <comment_count>21</comment_count>
      <attachid>415464</attachid>
    <who name="Rini Patel">rini_patel</who>
    <bug_when>2020-12-04 15:07:40 -0800</bug_when>
    <thetext>Created attachment 415464
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1712193</commentid>
    <comment_count>22</comment_count>
      <attachid>415466</attachid>
    <who name="Rini Patel">rini_patel</who>
    <bug_when>2020-12-04 15:37:01 -0800</bug_when>
    <thetext>Created attachment 415466
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1712208</commentid>
    <comment_count>23</comment_count>
      <attachid>415473</attachid>
    <who name="Rini Patel">rini_patel</who>
    <bug_when>2020-12-04 16:18:53 -0800</bug_when>
    <thetext>Created attachment 415473
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1712225</commentid>
    <comment_count>24</comment_count>
      <attachid>415480</attachid>
    <who name="Rini Patel">rini_patel</who>
    <bug_when>2020-12-04 17:49:20 -0800</bug_when>
    <thetext>Created attachment 415480
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1712227</commentid>
    <comment_count>25</comment_count>
    <who name="Rini Patel">rini_patel</who>
    <bug_when>2020-12-04 18:01:33 -0800</bug_when>
    <thetext>Sorry for the noise. I&apos;m not able to figure out this build error in gtk/wpe/wincario platforms. 
__invalid covariant return type for ‘virtual WebCore::ExtensionsGLOpenGLCommon&amp; WebCore::GraphicsContextGLOpenGL::getExtensions()’__
I&apos;m using the covariant return type for getExtensions() in !USE(ANGLE) case. Am I supposed to ifdef something else for these platforms?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1712352</commentid>
    <comment_count>26</comment_count>
      <attachid>415480</attachid>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2020-12-06 12:19:00 -0800</bug_when>
    <thetext>Comment on attachment 415480
Patch

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

&gt; Source/WebCore/platform/graphics/opengl/GraphicsContextGLOpenGL.h:487
&gt; +    // Use covariant return type for OPENGL/OPENGL_ES

I think this doesn&apos;t follow the covariant return type pattern.
The return type should be the derived class (GraphicsContextGLOpenGL&amp;) for the covariant return type in this case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1712492</commentid>
    <comment_count>27</comment_count>
    <who name="Rini Patel">rini_patel</who>
    <bug_when>2020-12-07 10:31:46 -0800</bug_when>
    <thetext>(In reply to Fujii Hironori from comment #26)
&gt; Comment on attachment 415480 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=415480&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/opengl/GraphicsContextGLOpenGL.h:487
&gt; &gt; +    // Use covariant return type for OPENGL/OPENGL_ES
&gt; 
&gt; I think this doesn&apos;t follow the covariant return type pattern.
&gt; The return type should be the derived class (GraphicsContextGLOpenGL&amp;) for
&gt; the covariant return type in this case.

According to this https://en.wikipedia.org/wiki/Covariant_return_type page, since ExtensionsGLOpenGLCommon is derived from ExtensionsGL, this type of covariant return type should&apos;ve been possible.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1712524</commentid>
    <comment_count>28</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2020-12-07 11:56:35 -0800</bug_when>
    <thetext>(In reply to Rini Patel from comment #27)
&gt; According to this https://en.wikipedia.org/wiki/Covariant_return_type page,
&gt; since ExtensionsGLOpenGLCommon is derived from ExtensionsGL, this type of
&gt; covariant return type should&apos;ve been possible.

It&apos;s a Java example. There is a link to C++ in the page.
https://www.lwithers.me.uk/articles/covariant.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1712528</commentid>
    <comment_count>29</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2020-12-07 12:03:07 -0800</bug_when>
    <thetext>In the example,
Derived::clone() returns Derived*.
NetServerTCP::acceptConnection() returns NetServerTCP*.
NetServerSCTP::acceptConnection() returns NetClientSCTP*.

However, in your patch,
GraphicsContextGLOpenGL::getExtensions() returns ExtensionsGLOpenGLCommon&amp;.
GraphicsContextGLOpenGL::getExtensions() should return GraphicsContextGLOpenGL&amp; for the covariant return type.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1712544</commentid>
    <comment_count>30</comment_count>
    <who name="Rini Patel">rini_patel</who>
    <bug_when>2020-12-07 12:27:49 -0800</bug_when>
    <thetext>(In reply to Fujii Hironori from comment #29)
&gt; In the example,
&gt; Derived::clone() returns Derived*.
&gt; NetServerTCP::acceptConnection() returns NetServerTCP*.
&gt; NetServerSCTP::acceptConnection() returns NetClientSCTP*.
&gt; 
&gt; However, in your patch,
&gt; GraphicsContextGLOpenGL::getExtensions() returns ExtensionsGLOpenGLCommon&amp;.
&gt; GraphicsContextGLOpenGL::getExtensions() should return
&gt; GraphicsContextGLOpenGL&amp; for the covariant return type.

NetServerTCP::acceptConnection() returns NetClientTCP*, where NetClientTCP is child of NetClient. 
 
According to example code snippet: 
/* Inheritance hierarchies

         NetServer                               NetClient
             |                                       |
             ^                                       ^
            / \                                     / \
NetServerTCP   NetServerSCTP            NetClientTCP   NetClientSCTP
*/



In my case I have following hierarchy, seems like I&apos;m following it correctly?
/* Inheritance hierarchies

       GraphicsContextGL                  ExtensionsGL
             |                                 |
    GraphicsContextGLOpenGL           ExtensionsGLOpenGLCommon
*/


class GraphicsContextGL {
public:
    virtual ExtensionsGL&amp; getExtensions() = 0;
};

class GraphicsContextGLOpenGL : public GraphicsContextGL {
public:
    ExtensionsGLOpenGLCommon&amp; getExtensions();
};

Is it possible that the failure could be related improper ifdef on gtk/wpe platforms?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1712555</commentid>
    <comment_count>31</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2020-12-07 12:42:10 -0800</bug_when>
    <thetext>I&apos;m sorry. You are right.
https://godbolt.org/z/df8cWv

The problem seems that you don&apos;t include ExtensionsGLOpenGL.h in GraphicsContextGLOpenGL.h.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1712626</commentid>
    <comment_count>32</comment_count>
      <attachid>415480</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-12-07 14:49:35 -0800</bug_when>
    <thetext>Comment on attachment 415480
Patch

Need a new version that includes the header for ExtensionsGLOpenGLCommon so it compiles on GTK, WPE, and Windows.

Do you understand the failures on the iOS-WK2 build bot?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1712657</commentid>
    <comment_count>33</comment_count>
    <who name="Rini Patel">rini_patel</who>
    <bug_when>2020-12-07 16:50:44 -0800</bug_when>
    <thetext>(In reply to Darin Adler from comment #32)
&gt; Comment on attachment 415480 [details]
&gt; Patch
&gt; 
&gt; Need a new version that includes the header for ExtensionsGLOpenGLCommon so
&gt; it compiles on GTK, WPE, and Windows.
&gt; 
I see, the forward decl isn&apos;t working for covariant return type.

&gt; Do you understand the failures on the iOS-WK2 build bot?
Not yet. Kimmo had submitted some patches that might help with that. Will try to update the trunk.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1712659</commentid>
    <comment_count>34</comment_count>
      <attachid>415602</attachid>
    <who name="Rini Patel">rini_patel</who>
    <bug_when>2020-12-07 17:06:37 -0800</bug_when>
    <thetext>Created attachment 415602
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1712660</commentid>
    <comment_count>35</comment_count>
      <attachid>415603</attachid>
    <who name="Rini Patel">rini_patel</who>
    <bug_when>2020-12-07 17:14:31 -0800</bug_when>
    <thetext>Created attachment 415603
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1713413</commentid>
    <comment_count>36</comment_count>
      <attachid>415826</attachid>
    <who name="Rini Patel">rini_patel</who>
    <bug_when>2020-12-09 20:46:40 -0800</bug_when>
    <thetext>Created attachment 415826
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1713415</commentid>
    <comment_count>37</comment_count>
      <attachid>415827</attachid>
    <who name="Rini Patel">rini_patel</who>
    <bug_when>2020-12-09 21:30:16 -0800</bug_when>
    <thetext>Created attachment 415827
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1713418</commentid>
    <comment_count>38</comment_count>
      <attachid>415829</attachid>
    <who name="Rini Patel">rini_patel</who>
    <bug_when>2020-12-09 21:37:01 -0800</bug_when>
    <thetext>Created attachment 415829
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1713422</commentid>
    <comment_count>39</comment_count>
      <attachid>415831</attachid>
    <who name="Rini Patel">rini_patel</who>
    <bug_when>2020-12-09 21:56:03 -0800</bug_when>
    <thetext>Created attachment 415831
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1713427</commentid>
    <comment_count>40</comment_count>
      <attachid>415834</attachid>
    <who name="Rini Patel">rini_patel</who>
    <bug_when>2020-12-09 22:20:35 -0800</bug_when>
    <thetext>Created attachment 415834
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1713794</commentid>
    <comment_count>41</comment_count>
      <attachid>415955</attachid>
    <who name="Rini Patel">rini_patel</who>
    <bug_when>2020-12-10 18:19:31 -0800</bug_when>
    <thetext>Created attachment 415955
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1714936</commentid>
    <comment_count>42</comment_count>
      <attachid>416296</attachid>
    <who name="Rini Patel">rini_patel</who>
    <bug_when>2020-12-15 14:44:00 -0800</bug_when>
    <thetext>Created attachment 416296
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1715056</commentid>
    <comment_count>43</comment_count>
      <attachid>416296</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2020-12-16 03:01:09 -0800</bug_when>
    <thetext>Comment on attachment 416296
Patch

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

&gt; Source/WebCore/platform/graphics/angle/GraphicsContextGLANGLE.cpp:164
&gt;              internalDepthStencilFormat = GL_DEPTH_COMPONENT16;

So the problem is the above getExtensions call?
The size change logic is a bit hacky at the moment, so maybe it&apos;d be better not to move it from the start of the reshape code.
E.g. obvious places to change are:
 a) start of the function (change always succeeds)
 b) ends f the function (change takes effect when the function succeeds)

Now moving it to middle is surprising, since the reason is just a side-effect of using a function in the implementation that happens to need the previous size.
(The makeContextCurrent using the size seems to be source of bugs, that should be removed and the problem solved in another manner, but it&apos;s a bit bigger change).
 

Instead, you can change the above like so:

if (attrs.stencil) {
       // We don&apos;t allow the logic where stencil is required and depth is not.
       // See GraphicsContextGLOpenGL::validateAttributes.
       internalDepthStencilFormat = GL_DEPTH24_STENCIL8_OES;
} else if (attrs.depth)
        internalDepthStencilFormat = GL_DEPTH_COMPONENT16;


The attribute validation already checks for the extension and modifies the attributes accordingly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1715146</commentid>
    <comment_count>44</comment_count>
    <who name="Rini Patel">rini_patel</who>
    <bug_when>2020-12-16 09:53:45 -0800</bug_when>
    <thetext>(In reply to Kimmo Kinnunen from comment #43)
&gt; Comment on attachment 416296 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=416296&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/angle/GraphicsContextGLANGLE.cpp:164
&gt; &gt;              internalDepthStencilFormat = GL_DEPTH_COMPONENT16;
&gt; 
&gt; So the problem is the above getExtensions call?
&gt; The size change logic is a bit hacky at the moment, so maybe it&apos;d be better
&gt; not to move it from the start of the reshape code.
&gt; E.g. obvious places to change are:
&gt;  a) start of the function (change always succeeds)
&gt;  b) ends f the function (change takes effect when the function succeeds)
&gt; 
&gt; Now moving it to middle is surprising, since the reason is just a
&gt; side-effect of using a function in the implementation that happens to need
&gt; the previous size.
&gt; (The makeContextCurrent using the size seems to be source of bugs, that
&gt; should be removed and the problem solved in another manner, but it&apos;s a bit
&gt; bigger change).
&gt;  
&gt; 
&gt; Instead, you can change the above like so:
&gt; 
&gt; if (attrs.stencil) {
&gt;        // We don&apos;t allow the logic where stencil is required and depth is
&gt; not.
&gt;        // See GraphicsContextGLOpenGL::validateAttributes.
&gt;        internalDepthStencilFormat = GL_DEPTH24_STENCIL8_OES;
&gt; } else if (attrs.depth)
&gt;         internalDepthStencilFormat = GL_DEPTH_COMPONENT16;
&gt; 
&gt; 
Okay. 

&gt; The attribute validation already checks for the extension and modifies the
&gt; attributes accordingly.

Seemed like side effect was coming from call to supports(). If extensions are initialized for the first time in reshapeFBOs, the makeContextCurrent call expects the framebuffer size to be non-zero. But by that time, we&apos;ve already set the size parameters.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1717398</commentid>
    <comment_count>45</comment_count>
      <attachid>417020</attachid>
    <who name="Rini Patel">rini_patel</who>
    <bug_when>2021-01-05 11:02:04 -0800</bug_when>
    <thetext>Created attachment 417020
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1722221</commentid>
    <comment_count>46</comment_count>
      <attachid>418327</attachid>
    <who name="Rini Patel">rini_patel</who>
    <bug_when>2021-01-25 13:05:38 -0800</bug_when>
    <thetext>Created attachment 418327
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1722229</commentid>
    <comment_count>47</comment_count>
      <attachid>418327</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-01-25 13:19:07 -0800</bug_when>
    <thetext>Comment on attachment 418327
Patch

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

Looking again, not really wanting to fully review until EWS passes.

&gt; Source/WebCore/platform/graphics/angle/ExtensionsGLANGLE.h:39
&gt; +    explicit ExtensionsGLANGLE(GraphicsContextGLOpenGL*);

Not needed in this patch, but a note for future refinement: Why is this remaining argument a pointer rather than a reference?

&gt; Source/WebCore/platform/graphics/angle/GraphicsContextGLANGLE.cpp:2094
&gt; +    if (!makeContextCurrent())
&gt; +        return;

Change log does not mention or explain this change.

&gt; Source/WebCore/platform/graphics/opengl/ExtensionsGLOpenGLCommon.h:35
&gt;  namespace WebCore {
&gt; +class GraphicsContextGLOpenGL;

Normally we’d leave a blank line here. I see some other OpenGL-related WebKit headers not doing that, but it’s our normal format to do that.

&gt; Source/WebCore/platform/graphics/opengl/ExtensionsGLOpenGLES.h:30
&gt; +#include &quot;GraphicsContextGLOpenGL.h&quot;

Why does this header have an include rather than a forward declaration? I think this could be a forward declaration instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1722389</commentid>
    <comment_count>48</comment_count>
      <attachid>418327</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-01-25 21:05:54 -0800</bug_when>
    <thetext>Comment on attachment 418327
Patch

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

&gt;&gt; Source/WebCore/platform/graphics/angle/GraphicsContextGLANGLE.cpp:2094
&gt;&gt; +        return;
&gt; 
&gt; Change log does not mention or explain this change.

I don’t understand how this change fits in.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1722607</commentid>
    <comment_count>49</comment_count>
    <who name="Rini Patel">rini_patel</who>
    <bug_when>2021-01-26 11:19:46 -0800</bug_when>
    <thetext>Thanks Darin for the review. 


(In reply to Darin Adler from comment #47)
&gt; Comment on attachment 418327 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=418327&amp;action=review
&gt; 
&gt; Looking again, not really wanting to fully review until EWS passes.
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/angle/ExtensionsGLANGLE.h:39
&gt; &gt; +    explicit ExtensionsGLANGLE(GraphicsContextGLOpenGL*);
&gt; 
&gt; Not needed in this patch, but a note for future refinement: Why is this
&gt; remaining argument a pointer rather than a reference?
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/angle/GraphicsContextGLANGLE.cpp:2094
&gt; &gt; +    if (!makeContextCurrent())
&gt; &gt; +        return;
&gt; 
&gt; Change log does not mention or explain this change.

Ah yes, this was added for the debugging purpose for failing iOS-WK2 tests, as initial suspect was missing makeContextCurrent() call at some of the public entry points. Will remove it.

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/opengl/ExtensionsGLOpenGLCommon.h:35
&gt; &gt;  namespace WebCore {
&gt; &gt; +class GraphicsContextGLOpenGL;
&gt; 
&gt; Normally we’d leave a blank line here. I see some other OpenGL-related
&gt; WebKit headers not doing that, but it’s our normal format to do that.
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/opengl/ExtensionsGLOpenGLES.h:30
&gt; &gt; +#include &quot;GraphicsContextGLOpenGL.h&quot;
&gt; 
&gt; Why does this header have an include rather than a forward declaration? I
&gt; think this could be a forward declaration instead.

I&apos;ll address the suggested refinements in next patch. Thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1722643</commentid>
    <comment_count>50</comment_count>
      <attachid>418458</attachid>
    <who name="Rini Patel">rini_patel</who>
    <bug_when>2021-01-26 11:57:45 -0800</bug_when>
    <thetext>Created attachment 418458
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1723881</commentid>
    <comment_count>51</comment_count>
      <attachid>418458</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2021-01-29 14:20:32 -0800</bug_when>
    <thetext>Comment on attachment 418458
Patch

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

&gt; Source/WebCore/platform/graphics/angle/ExtensionsGLANGLE.cpp:36
&gt; +ExtensionsGLANGLE::ExtensionsGLANGLE(GraphicsContextGLOpenGL* context)

+1 to Darin&apos;s comment that this should be a ref parameter/member, but not important now.

I think Kimmo wants to get rid of ExtensionsGL anyway.

&gt; Source/WebCore/platform/graphics/opengl/ExtensionsGLOpenGLCommon.h:67
&gt; +    bool isNVIDIA() const { return m_isNVIDIA; }
&gt; +    bool isAMD() const { return m_isAMD; }
&gt; +    bool isIntel() const { return m_isIntel; }
&gt; +    bool isImagination() const { return m_isImagination; }
&gt; +    String vendor() const { return m_vendor; }

It&apos;s not relevant for this patch, but I&apos;m surprised that other ports are still using these.

&gt; Source/WebCore/platform/graphics/opengl/GraphicsContextGLOpenGL.h:495
&gt; +#if !USE(ANGLE)

Is there a case where someone would include this header while using ANGLE?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1723907</commentid>
    <comment_count>52</comment_count>
      <attachid>418458</attachid>
    <who name="Rini Patel">rini_patel</who>
    <bug_when>2021-01-29 15:24:56 -0800</bug_when>
    <thetext>Comment on attachment 418458
Patch

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

&gt;&gt; Source/WebCore/platform/graphics/opengl/GraphicsContextGLOpenGL.h:495
&gt;&gt; +#if !USE(ANGLE)
&gt; 
&gt; Is there a case where someone would include this header while using ANGLE?

Yeah, it is included in GraphicsContextGLANGLE.cpp and ExtensionsGLANGLE.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1724718</commentid>
    <comment_count>53</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-02-02 09:59:16 -0800</bug_when>
    <thetext>rini_patel@apple.com does not have committer permissions according to https://raw.githubusercontent.com/WebKit/WebKit/main/Tools/Scripts/webkitpy/common/config/contributors.json.

Rejecting attachment 418458 from commit queue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1724725</commentid>
    <comment_count>54</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-02-02 10:10:45 -0800</bug_when>
    <thetext>Committed r272217: &lt;https://trac.webkit.org/changeset/272217&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 418458.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1725633</commentid>
    <comment_count>55</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2021-02-04 08:41:33 -0800</bug_when>
    <thetext>New warnings after this, https://bugs.webkit.org/show_bug.cgi?id=221409</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>415038</attachid>
            <date>2020-11-30 11:39:29 -0800</date>
            <delta_ts>2020-11-30 20:17:28 -0800</delta_ts>
            <desc>Adding initial wip patch</desc>
            <filename>webgl-gpup-remove-unused-functions.patch</filename>
            <type>text/plain</type>
            <size>17706</size>
            <attacher name="Rini Patel">rini_patel</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA1ODY2Zjc4OTNlZjYuLmFkNTI3NGZlOTI5OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDM2IEBACisyMDIwLTExLTMwICBSaW5pIFBhdGVsICA8cmluaV9wYXRlbEBhcHBsZS5j
b20+CisKKyAgICAgICAgUmVtb3ZlIHVudXNlZCBmdW5jdGlvbnMgZnJvbSBHcmFwaGljc0NvbnRl
eHRHTCBhbmQgRXh0ZW5zaW9uc0dMCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMTg4OTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBSZW1vdmUgdW51c2VkIGZ1bmN0aW9ucyBmcm9tIEdyYXBoaWNzQ29udGV4
dEdMIGFuZCBFeHRlbnNpb25zR0wKKyAgICAgICAgVGhleSdyZSBkZWFkIGNvZGUgYW5kIG1ha2Ug
aXQgaGFyZGVyIHRvIGltcGxlbWVudCB0aGUgR1BVIFByb2Nlc3MgdmVyc2lvbi4KKworICAgICAg
ICAtIElmIHRoZSBmdW5jdGlvbiBpcyB1bnVzZWQsIHJlbW92ZSBpdCBmdWxseQorICAgICAgICAt
IElmIHRoZSBmdW5jdGlvbiBpcyB1bnVzZWQgaW4gVVNFKEFOR0xFKSBXZWJHTCBwYXJ0LCByZW1v
dmUgdGhlIGZ1bmN0aW9uIGZyb20gR3JhcGhpY3NDb250ZXh0R0wgYW5kIEFOR0xFIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMCisKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2U6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRXh0ZW5zaW9uc0dMLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OkV4dGVuc2lvbnNHTEFOR0xF
KToKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjppbml0aWFsaXplQXZhaWxh
YmxlRXh0ZW5zaW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6Ymxp
dEZyYW1lYnVmZmVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFO
R0xFOjpyZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6Omluc2VydEV2ZW50TWFya2VyRVhUKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpwdXNoR3JvdXBNYXJrZXJF
WFQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OnBvcEdy
b3VwTWFya2VyRVhUKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hbmds
ZS9FeHRlbnNpb25zR0xBTkdMRS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5n
bC9FeHRlbnNpb25zR0xPcGVuR0wuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dM
T3BlbkdMOjpibGl0RnJhbWVidWZmZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0
ZW5zaW9uc0dMT3BlbkdMOjpyZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUpOiBEZWxldGVk
LgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdM
RVMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMRVM6OmJsaXRGcmFt
ZWJ1ZmZlcik6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4
dGVuc2lvbnNHTE9wZW5HTEVTLmg6CisKIDIwMjAtMTEtMzAgIFlvdWVubiBGYWJsZXQgIDx5b3Vl
bm5AYXBwbGUuY29tPgogCiAgICAgICAgIE1pc3NpbmcgV2ViUlRDIE1ldHJpY3MgaW4gaU9TIDE0
IEJldGEgNQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlLmNwcAppbmRleCA1NTc4NGUxYTMzZWMuLjJhZWNlYjhhOTUwMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZS5jcHAKQEAgLTc0MSwxMCArNzQxLDYgQEAgc3RkOjp1bmlxdWVfcHRyPFdl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2U+IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmNyZWF0
ZShDYW4KICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAgYXV0byYgZXh0ZW5z
aW9ucyA9IGNvbnRleHQtPmdldEV4dGVuc2lvbnMoKTsKLSAgICBpZiAoZXh0ZW5zaW9ucy5zdXBw
b3J0cygiR0xfRVhUX2RlYnVnX21hcmtlciJfcykpCi0gICAgICAgIGV4dGVuc2lvbnMucHVzaEdy
b3VwTWFya2VyRVhUKCJXZWJHTFJlbmRlcmluZ0NvbnRleHQiX3MpOwotCiAgICAgc3RkOjp1bmlx
dWVfcHRyPFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U+IHJlbmRlcmluZ0NvbnRleHQ7CiAjaWYg
RU5BQkxFKFdFQkdMMikKICAgICBpZiAodHlwZSA9PSAid2ViZ2wyIikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0V4dGVuc2lvbnNHTC5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRXh0ZW5zaW9uc0dMLmgKaW5kZXggMDZjMTIxMTI3ZTIy
Li5lNjQ0YmQyNjNhYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0V4dGVuc2lvbnNHTC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0V4dGVuc2lvbnNHTC5oCkBAIC0yNzUsMTIgKzI3NSw2IEBAIHB1YmxpYzoKICAgICAvLyBleHRl
cm5hbGx5LgogICAgIHZpcnR1YWwgR0NHTGludCBnZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJCKCkg
PSAwOwogCi0gICAgLy8gR0xfQU5HTEVfZnJhbWVidWZmZXJfYmxpdAotICAgIHZpcnR1YWwgdm9p
ZCBibGl0RnJhbWVidWZmZXIobG9uZyBzcmNYMCwgbG9uZyBzcmNZMCwgbG9uZyBzcmNYMSwgbG9u
ZyBzcmNZMSwgbG9uZyBkc3RYMCwgbG9uZyBkc3RZMCwgbG9uZyBkc3RYMSwgbG9uZyBkc3RZMSwg
dW5zaWduZWQgbG9uZyBtYXNrLCB1bnNpZ25lZCBsb25nIGZpbHRlcikgPSAwOwotCi0gICAgLy8g
R0xfQU5HTEVfZnJhbWVidWZmZXJfbXVsdGlzYW1wbGUKLSAgICB2aXJ0dWFsIHZvaWQgcmVuZGVy
YnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlKHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBs
b25nIHNhbXBsZXMsIHVuc2lnbmVkIGxvbmcgaW50ZXJuYWxmb3JtYXQsIHVuc2lnbmVkIGxvbmcg
d2lkdGgsIHVuc2lnbmVkIGxvbmcgaGVpZ2h0KSA9IDA7Ci0KICAgICAvLyBHTF9PRVNfdmVydGV4
X2FycmF5X29iamVjdAogICAgIHZpcnR1YWwgUGxhdGZvcm1HTE9iamVjdCBjcmVhdGVWZXJ0ZXhB
cnJheU9FUygpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlVmVydGV4QXJyYXlPRVMoUGxh
dGZvcm1HTE9iamVjdCkgPSAwOwpAQCAtMzUyLDcgKzM0Niw2IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIHZvaWQgcmVhZG5QaXhlbHNFWFQoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3
aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBH
Q0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHZvaWQqIGRhdGEpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
Z2V0blVuaWZvcm1mdkVYVChHQ0dMdWludCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dM
c2l6ZWkgYnVmU2l6ZSwgR0NHTGZsb2F0KiBwYXJhbXMpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
Z2V0blVuaWZvcm1pdkVYVChHQ0dMdWludCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dM
c2l6ZWkgYnVmU2l6ZSwgR0NHTGludCogcGFyYW1zKSA9IDA7Ci0jZW5kaWYKIAogICAgIHZpcnR1
YWwgYm9vbCBpc05WSURJQSgpID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgaXNBTUQoKSA9IDA7CkBA
IC0zNjQsNyArMzU3LDcgQEAgcHVibGljOgogICAgIC8vIHRoYXQgbXVzdCBiZSBhdm9pZGVkLiBQ
b3J0cyBzaG91bGQgaW1wbGVtZW50IHRoZXNlIGZsYWdzIG9uIHN1Y2ggY29uZmlndXJhdGlvbnMu
CiAgICAgdmlydHVhbCBib29sIHJlcXVpcmVzQnVpbHRJbkZ1bmN0aW9uRW11bGF0aW9uKCkgPSAw
OwogICAgIHZpcnR1YWwgYm9vbCByZXF1aXJlc1Jlc3RyaWN0ZWRNYXhpbXVtVGV4dHVyZVNpemUo
KSA9IDA7Ci0KKyNlbmRpZgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvRXh0ZW5zaW9uc0dMQU5H
TEUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvRXh0ZW5zaW9u
c0dMQU5HTEUuY3BwCmluZGV4IDI4M2RhODJjNmE2MC4uYTg3MThkY2Q1OGE4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRlbnNpb25zR0xBTkdM
RS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvRXh0ZW5z
aW9uc0dMQU5HTEUuY3BwCkBAIC00MywzMSArNDMsMTAgQEAgdHlwZWRlZiB2b2lkKiBHTGVnbENv
bnRleHQ7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotRXh0ZW5zaW9uc0dMQU5HTEU6OkV4dGVu
c2lvbnNHTEFOR0xFKEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiBjb250ZXh0LCBib29sIHVzZUlu
ZGV4ZWRHZXRTdHJpbmcpCitFeHRlbnNpb25zR0xBTkdMRTo6RXh0ZW5zaW9uc0dMQU5HTEUoR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0wqIGNvbnRleHQpCiAgICAgOiBtX2luaXRpYWxpemVkQXZhaWxh
YmxlRXh0ZW5zaW9ucyhmYWxzZSkKICAgICAsIG1fY29udGV4dChjb250ZXh0KQotICAgICwgbV9p
c05WSURJQShmYWxzZSkKLSAgICAsIG1faXNBTUQoZmFsc2UpCi0gICAgLCBtX2lzSW50ZWwoZmFs
c2UpCi0gICAgLCBtX2lzSW1hZ2luYXRpb24oZmFsc2UpCi0gICAgLCBtX3JlcXVpcmVzQnVpbHRJ
bkZ1bmN0aW9uRW11bGF0aW9uKGZhbHNlKQotICAgICwgbV9yZXF1aXJlc1Jlc3RyaWN0ZWRNYXhp
bXVtVGV4dHVyZVNpemUoZmFsc2UpCi0gICAgLCBtX3VzZUluZGV4ZWRHZXRTdHJpbmcodXNlSW5k
ZXhlZEdldFN0cmluZykKLXsKLSAgICAvLyBGSVhNRTogaWRlYWxseSwgcmVtb3ZlIHRoaXMgaW5p
dGlhbGl6YXRpb24gYWx0b2dldGhlci4gQU5HTEUKLSAgICAvLyBzdWJzdW1lcyB0aGUgcmVzcG9u
c2liaWxpdHkgZm9yIGdyYXBoaWNzIGRyaXZlciB3b3JrYXJvdW5kcy4KLSAgICBtX3ZlbmRvciA9
IFN0cmluZyhyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihnbDo6R2V0U3RyaW5nKEdMX1ZF
TkRPUikpKTsKLSAgICBtX3JlbmRlcmVyID0gU3RyaW5nKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
Y2hhcio+KGdsOjpHZXRTdHJpbmcoR0xfUkVOREVSRVIpKSk7Ci0KLSAgICBWZWN0b3I8U3RyaW5n
PiB2ZW5kb3JDb21wb25lbnRzID0gbV92ZW5kb3IuY29udmVydFRvQVNDSUlMb3dlcmNhc2UoKS5z
cGxpdCgnICcpOwotICAgIGlmICh2ZW5kb3JDb21wb25lbnRzLmNvbnRhaW5zKCJudmlkaWEiKSkK
LSAgICAgICAgbV9pc05WSURJQSA9IHRydWU7Ci0gICAgaWYgKHZlbmRvckNvbXBvbmVudHMuY29u
dGFpbnMoImF0aSIpIHx8IHZlbmRvckNvbXBvbmVudHMuY29udGFpbnMoImFtZCIpKQotICAgICAg
ICBtX2lzQU1EID0gdHJ1ZTsKLSAgICBpZiAodmVuZG9yQ29tcG9uZW50cy5jb250YWlucygiaW50
ZWwiKSkKLSAgICAgICAgbV9pc0ludGVsID0gdHJ1ZTsKLSAgICBpZiAodmVuZG9yQ29tcG9uZW50
cy5jb250YWlucygiaW1hZ2luYXRpb24iKSkKLSAgICAgICAgbV9pc0ltYWdpbmF0aW9uID0gdHJ1
ZTsKK3sKIH0KIAogRXh0ZW5zaW9uc0dMQU5HTEU6On5FeHRlbnNpb25zR0xBTkdMRSgpID0gZGVm
YXVsdDsKQEAgLTEyOCw0MiArMTA3LDE1IEBAIFN0cmluZyBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0
VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFKFBsYXRmb3JtR0xPYmplY3Qgc2hhZGVyCiAKIHZv
aWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmluaXRpYWxpemVBdmFpbGFibGVFeHRlbnNpb25zKCkKIHsK
LSAgICBpZiAobV91c2VJbmRleGVkR2V0U3RyaW5nKSB7Ci0gICAgICAgIEdMaW50IG51bUV4dGVu
c2lvbnMgPSAwOwotICAgICAgICBnbDo6R2V0SW50ZWdlcnYoR0xfTlVNX0VYVEVOU0lPTlMsICZu
dW1FeHRlbnNpb25zKTsKLSAgICAgICAgZm9yIChHTGludCBpID0gMDsgaSA8IG51bUV4dGVuc2lv
bnM7ICsraSkKLSAgICAgICAgICAgIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5hZGQoZ2w6OkdldFN0
cmluZ2koR0xfRVhURU5TSU9OUywgaSkpOwotICAgICAgICBnbDo6R2V0SW50ZWdlcnYoR0xfTlVN
X1JFUVVFU1RBQkxFX0VYVEVOU0lPTlNfQU5HTEUsICZudW1FeHRlbnNpb25zKTsKLSAgICAgICAg
Zm9yIChHTGludCBpID0gMDsgaSA8IG51bUV4dGVuc2lvbnM7ICsraSkKLSAgICAgICAgICAgIG1f
cmVxdWVzdGFibGVFeHRlbnNpb25zLmFkZChnbDo6R2V0U3RyaW5naShHTF9SRVFVRVNUQUJMRV9F
WFRFTlNJT05TX0FOR0xFLCBpKSk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgU3RyaW5nIGV4dGVu
c2lvbnNTdHJpbmcgPSBnZXRFeHRlbnNpb25zKCk7Ci0gICAgICAgIGZvciAoYXV0byYgZXh0ZW5z
aW9uIDogZXh0ZW5zaW9uc1N0cmluZy5zcGxpdCgnICcpKQotICAgICAgICAgICAgbV9hdmFpbGFi
bGVFeHRlbnNpb25zLmFkZChleHRlbnNpb24pOwotICAgICAgICBleHRlbnNpb25zU3RyaW5nID0g
U3RyaW5nKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGdsOjpHZXRTdHJpbmcoR0xfUkVR
VUVTVEFCTEVfRVhURU5TSU9OU19BTkdMRSkpKTsKLSAgICAgICAgZm9yIChhdXRvJiBleHRlbnNp
b24gOiBleHRlbnNpb25zU3RyaW5nLnNwbGl0KCcgJykpCi0gICAgICAgICAgICBtX3JlcXVlc3Rh
YmxlRXh0ZW5zaW9ucy5hZGQoZXh0ZW5zaW9uKTsKLSAgICB9CisgICAgU3RyaW5nIGV4dGVuc2lv
bnNTdHJpbmcgPSBnZXRFeHRlbnNpb25zKCk7CisgICAgZm9yIChhdXRvJiBleHRlbnNpb24gOiBl
eHRlbnNpb25zU3RyaW5nLnNwbGl0KCcgJykpCisgICAgICAgIG1fYXZhaWxhYmxlRXh0ZW5zaW9u
cy5hZGQoZXh0ZW5zaW9uKTsKKyAgICBleHRlbnNpb25zU3RyaW5nID0gU3RyaW5nKHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGdsOjpHZXRTdHJpbmcoR0xfUkVRVUVTVEFCTEVfRVhURU5T
SU9OU19BTkdMRSkpKTsKKyAgICBmb3IgKGF1dG8mIGV4dGVuc2lvbiA6IGV4dGVuc2lvbnNTdHJp
bmcuc3BsaXQoJyAnKSkKKyAgICAgICAgbV9yZXF1ZXN0YWJsZUV4dGVuc2lvbnMuYWRkKGV4dGVu
c2lvbik7CiAgICAgbV9pbml0aWFsaXplZEF2YWlsYWJsZUV4dGVuc2lvbnMgPSB0cnVlOwogfQog
Ci12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpibGl0RnJhbWVidWZmZXIobG9uZyBzcmNYMCwgbG9u
ZyBzcmNZMCwgbG9uZyBzcmNYMSwgbG9uZyBzcmNZMSwgbG9uZyBkc3RYMCwgbG9uZyBkc3RZMCwg
bG9uZyBkc3RYMSwgbG9uZyBkc3RZMSwgdW5zaWduZWQgbG9uZyBtYXNrLCB1bnNpZ25lZCBsb25n
IGZpbHRlcikKLXsKLSAgICAvLyBGSVhNRTogY29uc2lkZXIgYWRkaW5nIHN1cHBvcnQgZm9yIEFQ
UExFX2ZyYW1lYnVmZmVyX211bHRpc2FtcGxlLgotICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29u
dGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OkJsaXRGcmFtZWJ1ZmZl
ckFOR0xFKHNyY1gwLCBzcmNZMCwgc3JjWDEsIHNyY1kxLCBkc3RYMCwgZHN0WTAsIGRzdFgxLCBk
c3RZMSwgbWFzaywgZmlsdGVyKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6cmVuZGVy
YnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlKHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBs
b25nIHNhbXBsZXMsIHVuc2lnbmVkIGxvbmcgaW50ZXJuYWxmb3JtYXQsIHVuc2lnbmVkIGxvbmcg
d2lkdGgsIHVuc2lnbmVkIGxvbmcgaGVpZ2h0KQotewotICAgIGlmICghbV9jb250ZXh0LT5tYWtl
Q29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OlJlbmRlcmJ1ZmZl
clN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKHRhcmdldCwgc2FtcGxlcywgaW50ZXJuYWxmb3JtYXQs
IHdpZHRoLCBoZWlnaHQpOwotfQotCiBQbGF0Zm9ybUdMT2JqZWN0IEV4dGVuc2lvbnNHTEFOR0xF
OjpjcmVhdGVWZXJ0ZXhBcnJheU9FUygpCiB7CiAgICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250
ZXh0Q3VycmVudCgpKQpAQCAtMjA0LDI0ICsxNTYsNiBAQCB2b2lkIEV4dGVuc2lvbnNHTEFOR0xF
OjpiaW5kVmVydGV4QXJyYXlPRVMoUGxhdGZvcm1HTE9iamVjdCBhcnJheSkKICAgICBnbDo6Qmlu
ZFZlcnRleEFycmF5T0VTKGFycmF5KTsKIH0KIAotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6aW5z
ZXJ0RXZlbnRNYXJrZXJFWFQoY29uc3QgU3RyaW5nJikKLXsKLSAgICAvLyBGSVhNRTogaW1wbGVt
ZW50IHRoaXMgZnVuY3Rpb24gYW5kIGFkZCBHTF9FWFRfZGVidWdfbWFya2VyIGluIHN1cHBvcnRz
KCkuCi0gICAgcmV0dXJuOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpwdXNoR3JvdXBN
YXJrZXJFWFQoY29uc3QgU3RyaW5nJikKLXsKLSAgICAvLyBGSVhNRTogaW1wbGVtZW50IHRoaXMg
ZnVuY3Rpb24gYW5kIGFkZCBHTF9FWFRfZGVidWdfbWFya2VyIGluIHN1cHBvcnRzKCkuCi0gICAg
cmV0dXJuOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpwb3BHcm91cE1hcmtlckVYVCh2
b2lkKQotewotICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQgdGhpcyBmdW5jdGlvbiBhbmQgYWRkIEdM
X0VYVF9kZWJ1Z19tYXJrZXIgaW4gc3VwcG9ydHMoKS4KLSAgICByZXR1cm47Ci19Ci0KIGJvb2wg
RXh0ZW5zaW9uc0dMQU5HTEU6OnN1cHBvcnRzRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgbmFtZSkK
IHsKICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKG5hbWUpIHx8IG1f
cmVxdWVzdGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKG5hbWUpOwpAQCAtNDU1LDYgKzM4OSw3IEBA
IHZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldFBvaW50ZXJ2Um9idXN0QU5HTEVSb2J1c3RBTkdM
RShHQ0dMZW51bSBwbmFtZSwgR0NHTHNpCiAKICAgICBnbDo6R2V0UG9pbnRlcnZSb2J1c3RBTkdM
RVJvYnVzdEFOR0xFKHBuYW1lLCBidWZTaXplLCBsZW5ndGgsIHBhcmFtcyk7CiB9CisjZW5kaWYK
IAogI2lmIFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIHN0YXRpYyB2b2lk
IHdpcGVBbHBoYUNoYW5uZWxGcm9tUGl4ZWxzKGludCB3aWR0aCwgaW50IGhlaWdodCwgdW5zaWdu
ZWQgY2hhciogcGl4ZWxzKQpAQCAtNTAzLDcgKzQzOCw3IEBAIHZvaWQgRXh0ZW5zaW9uc0dMQU5H
TEU6OnJlYWRuUGl4ZWxzUm9idXN0QU5HTEUoaW50IHgsIGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgs
IEdDCiAgICAgVU5VU0VEX1BBUkFNKHJlYWRpbmdUb1BpeGVsQnVmZmVyT2JqZWN0KTsKICNlbmRp
ZgogfQotCisjaWYgMAogdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0blVuaWZvcm1mdlJvYnVz
dEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUs
IEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMZmxvYXQgKnBhcmFtcykKIHsKICAgICBpZiAoIW1fY29u
dGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCkBAIC02MTYsNyArNTUxLDcgQEAgdm9pZCBFeHRl
bnNpb25zR0xBTkdMRTo6Z2V0UXVlcnlPYmplY3R1aTY0dlJvYnVzdEFOR0xFKEdDR0x1aW50IGlk
LCBHQ0dMZW51bSBwbmEKIAogICAgIGdsOjpHZXRRdWVyeU9iamVjdHVpNjR2Um9idXN0QU5HTEUo
aWQsIHBuYW1lLCBidWZTaXplLCBsZW5ndGgsIHJlaW50ZXJwcmV0X2Nhc3Q8R0x1aW50NjQqPihw
YXJhbXMpKTsKIH0KLQorI2VuZGlmCiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvRXh0ZW5zaW9uc0dM
QU5HTEUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0V4dGVuc2lv
bnNHTEFOR0xFLmgKaW5kZXggYTc3MzFkZmQyMGM1Li45ZGQ2MzU3MjE3Y2YgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xF
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvRXh0ZW5zaW9u
c0dMQU5HTEUuaApAQCAtMzYsNyArMzYsNyBAQCBjbGFzcyBFeHRlbnNpb25zR0xBTkdMRSA6IHB1
YmxpYyBFeHRlbnNpb25zR0wgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGlj
OgogICAgIC8vIFRoaXMgY2xhc3Mgb25seSBuZWVkcyB0byBiZSBpbnN0YW50aWF0ZWQgYnkgR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0wgaW1wbGVtZW50YXRpb25zLgotICAgIEV4dGVuc2lvbnNHTEFO
R0xFKEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiwgYm9vbCB1c2VJbmRleGVkR2V0U3RyaW5nID0g
ZmFsc2UpOworICAgIEV4dGVuc2lvbnNHTEFOR0xFKEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKik7
CiAgICAgdmlydHVhbCB+RXh0ZW5zaW9uc0dMQU5HTEUoKTsKIAogICAgIC8vIEV4dGVuc2lvbnNH
TCBtZXRob2RzLgpAQCAtOTcsNyArOTcsMTAgQEAgcHVibGljOgogICAgIHZvaWQgZ2V0VGV4TGV2
ZWxQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwg
R0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NH
TGZsb2F0ICpwYXJhbXMpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBnZXRQb2ludGVydlJvYnVzdEFO
R0xFUm9idXN0QU5HTEUoR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6
ZWkgKmxlbmd0aCwgdm9pZCAqKnBhcmFtcykgb3ZlcnJpZGU7CisjZW5kaWYKKwogICAgIHZvaWQg
cmVhZG5QaXhlbHNSb2J1c3RBTkdMRShHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdp
ZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdD
R0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHNpemVpICpjb2x1bW5zLCBH
Q0dMc2l6ZWkgKnJvd3MsIHZvaWQgKmRhdGEsIGJvb2wgcmVhZGluZ1RvUGl4ZWxCdWZmZXJPYmpl
Y3QpIG92ZXJyaWRlOworI2lmIDAKICAgICB2b2lkIGdldG5Vbmlmb3JtZnZSb2J1c3RBTkdMRShH
Q0dMdWludCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NH
THNpemVpICpsZW5ndGgsIEdDR0xmbG9hdCAqcGFyYW1zKSBvdmVycmlkZTsKICAgICB2b2lkIGdl
dG5Vbmlmb3JtaXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9u
LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykg
b3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRuVW5pZm9ybXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHBy
b2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxl
bmd0aCwgR0NHTHVpbnQgKnBhcmFtcykgb3ZlcnJpZGU7CkBAIC0xMTMsNyArMTE2LDcgQEAgcHVi
bGljOgogICAgIHZvaWQgZ2V0UXVlcnlPYmplY3RpdlJvYnVzdEFOR0xFKEdDR0x1aW50IGlkLCBH
Q0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dM
aW50ICpwYXJhbXMpIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0UXVlcnlPYmplY3RpNjR2Um9idXN0
QU5HTEUoR0NHTHVpbnQgaWQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NH
THNpemVpICpsZW5ndGgsIEdDR0xpbnQ2NCAqcGFyYW1zKSBvdmVycmlkZTsKICAgICB2b2lkIGdl
dFF1ZXJ5T2JqZWN0dWk2NHZSb2J1c3RBTkdMRShHQ0dMdWludCBpZCwgR0NHTGVudW0gcG5hbWUs
IEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHVpbnQ2NCAqcGFyYW1z
KSBvdmVycmlkZTsKLQorI2VuZGlmCiAgICAgLy8gT25seSBmb3Igbm9uLVdlYkdMIDIuMCBjb250
ZXh0cy4KICAgICBHQ0dMZW51bSBhZGp1c3RXZWJHTDFUZXh0dXJlSW50ZXJuYWxGb3JtYXQoR0NH
TGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSk7CiAK
QEAgLTEyOSwxOSArMTMyLDYgQEAgcHJpdmF0ZToKIAogICAgIC8vIFdlYWsgcG9pbnRlciBiYWNr
IHRvIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMLgogICAgIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
KiBtX2NvbnRleHQ7Ci0KLSAgICBib29sIG1faXNOVklESUE7Ci0gICAgYm9vbCBtX2lzQU1EOwot
ICAgIGJvb2wgbV9pc0ludGVsOwotICAgIGJvb2wgbV9pc0ltYWdpbmF0aW9uOwotICAgIGJvb2wg
bV9yZXF1aXJlc0J1aWx0SW5GdW5jdGlvbkVtdWxhdGlvbjsKLSAgICBib29sIG1fcmVxdWlyZXNS
ZXN0cmljdGVkTWF4aW11bVRleHR1cmVTaXplOwotCi0gICAgYm9vbCBtX3VzZUluZGV4ZWRHZXRT
dHJpbmcgeyBmYWxzZSB9OwotCi0gICAgU3RyaW5nIG1fdmVuZG9yOwotICAgIFN0cmluZyBtX3Jl
bmRlcmVyOwotCiAgICAgLy8gV2hldGhlciB0aGUgV2ViR0wgMS4wLXJlbGF0ZWQgZmxvYXRpbmct
cG9pbnQgcmVuZGVyYWJpbGl0eSBleHRlbnNpb25zIGhhdmUgYmVlbiBlbmFibGVkLgogICAgIGJv
b2wgbV93ZWJnbENvbG9yQnVmZmVyRmxvYXRSR0IgeyBmYWxzZSB9OwogICAgIGJvb2wgbV93ZWJn
bENvbG9yQnVmZmVyRmxvYXRSR0JBIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTC5j
cHAKaW5kZXggN2VjODFjZjRhZTU3Li43NmRjMzJjMTc2YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xP
cGVuR0wuY3BwCkBAIC00NywyMyArNDcsNiBAQCBFeHRlbnNpb25zR0xPcGVuR0w6OkV4dGVuc2lv
bnNHTE9wZW5HTChHcmFwaGljc0NvbnRleHRHTE9wZW5HTCogY29udGV4dCwgYm9vbCB1cwogCiBF
eHRlbnNpb25zR0xPcGVuR0w6On5FeHRlbnNpb25zR0xPcGVuR0woKSA9IGRlZmF1bHQ7CiAKLQot
dm9pZCBFeHRlbnNpb25zR0xPcGVuR0w6OmJsaXRGcmFtZWJ1ZmZlcihsb25nIHNyY1gwLCBsb25n
IHNyY1kwLCBsb25nIHNyY1gxLCBsb25nIHNyY1kxLCBsb25nIGRzdFgwLCBsb25nIGRzdFkwLCBs
b25nIGRzdFgxLCBsb25nIGRzdFkxLCB1bnNpZ25lZCBsb25nIG1hc2ssIHVuc2lnbmVkIGxvbmcg
ZmlsdGVyKQotewotICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAg
ICAgICAgcmV0dXJuOwotCi0gICAgOjpnbEJsaXRGcmFtZWJ1ZmZlckVYVChzcmNYMCwgc3JjWTAs
IHNyY1gxLCBzcmNZMSwgZHN0WDAsIGRzdFkwLCBkc3RYMSwgZHN0WTEsIG1hc2ssIGZpbHRlcik7
Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMOjpyZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlz
YW1wbGUodW5zaWduZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgc2FtcGxlcywgdW5zaWdu
ZWQgbG9uZyBpbnRlcm5hbGZvcm1hdCwgdW5zaWduZWQgbG9uZyB3aWR0aCwgdW5zaWduZWQgbG9u
ZyBoZWlnaHQpCi17Ci0gICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQot
ICAgICAgICByZXR1cm47Ci0KLSAgICA6OmdsUmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxl
RVhUKHRhcmdldCwgc2FtcGxlcywgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQpOwotfQot
CiBQbGF0Zm9ybUdMT2JqZWN0IEV4dGVuc2lvbnNHTE9wZW5HTDo6Y3JlYXRlVmVydGV4QXJyYXlP
RVMoKQogewogICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25z
R0xPcGVuR0wuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRl
bnNpb25zR0xPcGVuR0wuaAppbmRleCA0OTYyODljZWEwZTYuLjdjMmMwZTIyODBmZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNH
TE9wZW5HTC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9F
eHRlbnNpb25zR0xPcGVuR0wuaApAQCAtNDAsOSArNDAsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCB+RXh0ZW5zaW9uc0dMT3BlbkdMKCk7CiAKICAgICAvLyBFeHRlbnNpb25zR0wgbWV0aG9kcy4K
LSAgICB2b2lkIGJsaXRGcmFtZWJ1ZmZlcihsb25nIHNyY1gwLCBsb25nIHNyY1kwLCBsb25nIHNy
Y1gxLCBsb25nIHNyY1kxLCBsb25nIGRzdFgwLCBsb25nIGRzdFkwLCBsb25nIGRzdFgxLCBsb25n
IGRzdFkxLCB1bnNpZ25lZCBsb25nIG1hc2ssIHVuc2lnbmVkIGxvbmcgZmlsdGVyKSBvdmVycmlk
ZTsKLSAgICB2b2lkIHJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZSh1bnNpZ25lZCBsb25n
IHRhcmdldCwgdW5zaWduZWQgbG9uZyBzYW1wbGVzLCB1bnNpZ25lZCBsb25nIGludGVybmFsZm9y
bWF0LCB1bnNpZ25lZCBsb25nIHdpZHRoLCB1bnNpZ25lZCBsb25nIGhlaWdodCkgb3ZlcnJpZGU7
Ci0KICAgICBQbGF0Zm9ybUdMT2JqZWN0IGNyZWF0ZVZlcnRleEFycmF5T0VTKCkgb3ZlcnJpZGU7
CiAgICAgdm9pZCBkZWxldGVWZXJ0ZXhBcnJheU9FUyhQbGF0Zm9ybUdMT2JqZWN0KSBvdmVycmlk
ZTsKICAgICBHQ0dMYm9vbGVhbiBpc1ZlcnRleEFycmF5T0VTKFBsYXRmb3JtR0xPYmplY3QpIG92
ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Bl
bmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVTLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xFUy5jcHAKaW5kZXggMzZjM2VmMzhmOThi
Li5hNzAxNjRmOTBjNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xFUy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVTLmNwcApAQCAtMTAw
LDExICsxMDAsNiBAQCB2b2lkIEV4dGVuc2lvbnNHTE9wZW5HTEVTOjpyZW5kZXJidWZmZXJTdG9y
YWdlTXVsdGlzYW1wbGVJTUcodW5zaWduZWQgbG9uZyB0YXJnZQogICAgICAgICBtX2NvbnRleHQt
PnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKIH0KIAotdm9pZCBFeHRl
bnNpb25zR0xPcGVuR0xFUzo6YmxpdEZyYW1lYnVmZmVyKGxvbmcgLyogc3JjWDAgKi8sIGxvbmcg
Lyogc3JjWTAgKi8sIGxvbmcgLyogc3JjWDEgKi8sIGxvbmcgLyogc3JjWTEgKi8sIGxvbmcgLyog
ZHN0WDAgKi8sIGxvbmcgLyogZHN0WTAgKi8sIGxvbmcgLyogZHN0WDEgKi8sIGxvbmcgLyogZHN0
WTEgKi8sIHVuc2lnbmVkIGxvbmcgLyogbWFzayAqLywgdW5zaWduZWQgbG9uZyAvKiBmaWx0ZXIg
Ki8pCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQogdm9pZCBFeHRlbnNpb25zR0xPcGVu
R0xFUzo6cmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlKHVuc2lnbmVkIGxvbmcgdGFyZ2V0
LCB1bnNpZ25lZCBsb25nIHNhbXBsZXMsIHVuc2lnbmVkIGxvbmcgaW50ZXJuYWxmb3JtYXQsIHVu
c2lnbmVkIGxvbmcgd2lkdGgsIHVuc2lnbmVkIGxvbmcgaGVpZ2h0KQogewogICAgIGlmICghbV9j
b250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xFUy5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVTLmgK
aW5kZXggMDE3YTQ1YjczOThkLi4xMDU4NDcwNDU1NDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xFUy5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVu
R0xFUy5oCkBAIC03MiwxMSArNzIsMTAgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGZy
YW1lYnVmZmVyVGV4dHVyZTJETXVsdGlzYW1wbGVJTUcodW5zaWduZWQgbG9uZyB0YXJnZXQsIHVu
c2lnbmVkIGxvbmcgYXR0YWNobWVudCwgdW5zaWduZWQgbG9uZyB0ZXh0YXJnZXQsIHVuc2lnbmVk
IHRleHR1cmUsIGludCBsZXZlbCwgdW5zaWduZWQgbG9uZyBzYW1wbGVzKTsKICAgICB2aXJ0dWFs
IHZvaWQgcmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlSU1HKHVuc2lnbmVkIGxvbmcgdGFy
Z2V0LCB1bnNpZ25lZCBsb25nIHNhbXBsZXMsIHVuc2lnbmVkIGxvbmcgaW50ZXJuYWxmb3JtYXQs
IHVuc2lnbmVkIGxvbmcgd2lkdGgsIHVuc2lnbmVkIGxvbmcgaGVpZ2h0KTsKKyAgICB2b2lkIHJl
bmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZSh1bnNpZ25lZCBsb25nIHRhcmdldCwgdW5zaWdu
ZWQgbG9uZyBzYW1wbGVzLCB1bnNpZ25lZCBsb25nIGludGVybmFsZm9ybWF0LCB1bnNpZ25lZCBs
b25nIHdpZHRoLCB1bnNpZ25lZCBsb25nIGhlaWdodCk7CiAKICAgICAvLyBFeHRlbnNpb24zRCBt
ZXRob2RzCiAgICAgYm9vbCBpc0VuYWJsZWQoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7Ci0gICAg
dm9pZCBibGl0RnJhbWVidWZmZXIobG9uZyBzcmNYMCwgbG9uZyBzcmNZMCwgbG9uZyBzcmNYMSwg
bG9uZyBzcmNZMSwgbG9uZyBkc3RYMCwgbG9uZyBkc3RZMCwgbG9uZyBkc3RYMSwgbG9uZyBkc3RZ
MSwgdW5zaWduZWQgbG9uZyBtYXNrLCB1bnNpZ25lZCBsb25nIGZpbHRlcikgb3ZlcnJpZGU7Ci0g
ICAgdm9pZCByZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUodW5zaWduZWQgbG9uZyB0YXJn
ZXQsIHVuc2lnbmVkIGxvbmcgc2FtcGxlcywgdW5zaWduZWQgbG9uZyBpbnRlcm5hbGZvcm1hdCwg
dW5zaWduZWQgbG9uZyB3aWR0aCwgdW5zaWduZWQgbG9uZyBoZWlnaHQpIG92ZXJyaWRlOwogICAg
IHZvaWQgaW5zZXJ0RXZlbnRNYXJrZXJFWFQoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAg
dm9pZCBwdXNoR3JvdXBNYXJrZXJFWFQoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBwb3BHcm91cE1hcmtlckVYVCh2b2lkKSBvdmVycmlkZTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>415057</attachid>
            <date>2020-11-30 14:15:04 -0800</date>
            <delta_ts>2020-11-30 20:17:28 -0800</delta_ts>
            <desc>Updated patch</desc>
            <filename>webgl-gpup-remove-unused-functions.patch</filename>
            <type>text/plain</type>
            <size>26464</size>
            <attacher name="Rini Patel">rini_patel</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA1ODY2Zjc4OTNlZjYuLmFkNTI3NGZlOTI5OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDM2IEBACisyMDIwLTExLTMwICBSaW5pIFBhdGVsICA8cmluaV9wYXRlbEBhcHBsZS5j
b20+CisKKyAgICAgICAgUmVtb3ZlIHVudXNlZCBmdW5jdGlvbnMgZnJvbSBHcmFwaGljc0NvbnRl
eHRHTCBhbmQgRXh0ZW5zaW9uc0dMCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMTg4OTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBSZW1vdmUgdW51c2VkIGZ1bmN0aW9ucyBmcm9tIEdyYXBoaWNzQ29udGV4
dEdMIGFuZCBFeHRlbnNpb25zR0wKKyAgICAgICAgVGhleSdyZSBkZWFkIGNvZGUgYW5kIG1ha2Ug
aXQgaGFyZGVyIHRvIGltcGxlbWVudCB0aGUgR1BVIFByb2Nlc3MgdmVyc2lvbi4KKworICAgICAg
ICAtIElmIHRoZSBmdW5jdGlvbiBpcyB1bnVzZWQsIHJlbW92ZSBpdCBmdWxseQorICAgICAgICAt
IElmIHRoZSBmdW5jdGlvbiBpcyB1bnVzZWQgaW4gVVNFKEFOR0xFKSBXZWJHTCBwYXJ0LCByZW1v
dmUgdGhlIGZ1bmN0aW9uIGZyb20gR3JhcGhpY3NDb250ZXh0R0wgYW5kIEFOR0xFIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMCisKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2U6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRXh0ZW5zaW9uc0dMLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OkV4dGVuc2lvbnNHTEFOR0xF
KToKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjppbml0aWFsaXplQXZhaWxh
YmxlRXh0ZW5zaW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6Ymxp
dEZyYW1lYnVmZmVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFO
R0xFOjpyZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6Omluc2VydEV2ZW50TWFya2VyRVhUKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpwdXNoR3JvdXBNYXJrZXJF
WFQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OnBvcEdy
b3VwTWFya2VyRVhUKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hbmds
ZS9FeHRlbnNpb25zR0xBTkdMRS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5n
bC9FeHRlbnNpb25zR0xPcGVuR0wuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dM
T3BlbkdMOjpibGl0RnJhbWVidWZmZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0
ZW5zaW9uc0dMT3BlbkdMOjpyZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUpOiBEZWxldGVk
LgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdM
RVMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMRVM6OmJsaXRGcmFt
ZWJ1ZmZlcik6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4
dGVuc2lvbnNHTE9wZW5HTEVTLmg6CisKIDIwMjAtMTEtMzAgIFlvdWVubiBGYWJsZXQgIDx5b3Vl
bm5AYXBwbGUuY29tPgogCiAgICAgICAgIE1pc3NpbmcgV2ViUlRDIE1ldHJpY3MgaW4gaU9TIDE0
IEJldGEgNQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlLmNwcAppbmRleCA1NTc4NGUxYTMzZWMuLjJhZWNlYjhhOTUwMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZS5jcHAKQEAgLTc0MSwxMCArNzQxLDYgQEAgc3RkOjp1bmlxdWVfcHRyPFdl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2U+IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmNyZWF0
ZShDYW4KICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAgYXV0byYgZXh0ZW5z
aW9ucyA9IGNvbnRleHQtPmdldEV4dGVuc2lvbnMoKTsKLSAgICBpZiAoZXh0ZW5zaW9ucy5zdXBw
b3J0cygiR0xfRVhUX2RlYnVnX21hcmtlciJfcykpCi0gICAgICAgIGV4dGVuc2lvbnMucHVzaEdy
b3VwTWFya2VyRVhUKCJXZWJHTFJlbmRlcmluZ0NvbnRleHQiX3MpOwotCiAgICAgc3RkOjp1bmlx
dWVfcHRyPFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U+IHJlbmRlcmluZ0NvbnRleHQ7CiAjaWYg
RU5BQkxFKFdFQkdMMikKICAgICBpZiAodHlwZSA9PSAid2ViZ2wyIikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0V4dGVuc2lvbnNHTC5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRXh0ZW5zaW9uc0dMLmgKaW5kZXggMDZjMTIxMTI3ZTIy
Li45NTI0NDhlYmE4ZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0V4dGVuc2lvbnNHTC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0V4dGVuc2lvbnNHTC5oCkBAIC0yNzUsMTIgKzI3NSw2IEBAIHB1YmxpYzoKICAgICAvLyBleHRl
cm5hbGx5LgogICAgIHZpcnR1YWwgR0NHTGludCBnZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJCKCkg
PSAwOwogCi0gICAgLy8gR0xfQU5HTEVfZnJhbWVidWZmZXJfYmxpdAotICAgIHZpcnR1YWwgdm9p
ZCBibGl0RnJhbWVidWZmZXIobG9uZyBzcmNYMCwgbG9uZyBzcmNZMCwgbG9uZyBzcmNYMSwgbG9u
ZyBzcmNZMSwgbG9uZyBkc3RYMCwgbG9uZyBkc3RZMCwgbG9uZyBkc3RYMSwgbG9uZyBkc3RZMSwg
dW5zaWduZWQgbG9uZyBtYXNrLCB1bnNpZ25lZCBsb25nIGZpbHRlcikgPSAwOwotCi0gICAgLy8g
R0xfQU5HTEVfZnJhbWVidWZmZXJfbXVsdGlzYW1wbGUKLSAgICB2aXJ0dWFsIHZvaWQgcmVuZGVy
YnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlKHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBs
b25nIHNhbXBsZXMsIHVuc2lnbmVkIGxvbmcgaW50ZXJuYWxmb3JtYXQsIHVuc2lnbmVkIGxvbmcg
d2lkdGgsIHVuc2lnbmVkIGxvbmcgaGVpZ2h0KSA9IDA7Ci0KICAgICAvLyBHTF9PRVNfdmVydGV4
X2FycmF5X29iamVjdAogICAgIHZpcnR1YWwgUGxhdGZvcm1HTE9iamVjdCBjcmVhdGVWZXJ0ZXhB
cnJheU9FUygpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlVmVydGV4QXJyYXlPRVMoUGxh
dGZvcm1HTE9iamVjdCkgPSAwOwpAQCAtMjkwLDExICsyODQsNiBAQCBwdWJsaWM6CiAgICAgLy8g
R0xfQU5HTEVfdHJhbnNsYXRlZF9zaGFkZXJfc291cmNlCiAgICAgdmlydHVhbCBTdHJpbmcgZ2V0
VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFKFBsYXRmb3JtR0xPYmplY3QpID0gMDsKIAotICAg
IC8vIEdMX0VYVF9kZWJ1Z19tYXJrZXIKLSAgICB2aXJ0dWFsIHZvaWQgaW5zZXJ0RXZlbnRNYXJr
ZXJFWFQoY29uc3QgU3RyaW5nJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBwdXNoR3JvdXBNYXJr
ZXJFWFQoY29uc3QgU3RyaW5nJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBwb3BHcm91cE1hcmtl
ckVYVCh2b2lkKSA9IDA7Ci0KICAgICAvLyBHTF9BUkJfZHJhd19idWZmZXJzIC8gR0xfRVhUX2Ry
YXdfYnVmZmVycwogICAgIHZpcnR1YWwgdm9pZCBkcmF3QnVmZmVyc0VYVChHQ0dMU3Bhbjxjb25z
dCBHQ0dMZW51bT4gYnVmcykgPSAwOwogCkBAIC0zMDMsNDggKzI5Miw3IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIHZvaWQgZHJhd0VsZW1lbnRzSW5zdGFuY2VkKEdDR0xlbnVtIG1vZGUsIEdDR0xz
aXplaSBjb3VudCwgR0NHTGVudW0gdHlwZSwgbG9uZyBsb25nIG9mZnNldCwgR0NHTHNpemVpIHBy
aW1jb3VudCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB2ZXJ0ZXhBdHRyaWJEaXZpc29yKEdDR0x1
aW50IGluZGV4LCBHQ0dMdWludCBkaXZpc29yKSA9IDA7CiAKLSAgICAvLyBHTF9BTkdMRV9yb2J1
c3RfY2xpZW50X21lbW9yeQotICAgIHZpcnR1YWwgdm9pZCByZWFkUGl4ZWxzUm9idXN0QU5HTEUo
R0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwg
R0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNp
emVpKiBsZW5ndGgsIEdDR0xzaXplaSogY29sdW1ucywgR0NHTHNpemVpKiByb3dzLCBHQ0dMdm9p
ZCogcGl4ZWxzKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHRleFBhcmFtZXRlcmZ2Um9idXN0QU5H
TEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNv
bnN0IEdDR0xmbG9hdCogcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHRleFBhcmFtZXRl
cml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVp
IGJ1ZlNpemUsIGNvbnN0IEdDR0xpbnQqIHBhcmFtcykgPSAwOwotCi0gICAgdmlydHVhbCB2b2lk
IGdldFF1ZXJ5aXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBH
Q0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykgPSAw
OwotICAgIHZpcnR1YWwgdm9pZCBnZXRRdWVyeU9iamVjdHVpdlJvYnVzdEFOR0xFKEdDR0x1aW50
IGlkLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3Ro
LCBHQ0dMdWludCogcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldEJ1ZmZlclBvaW50
ZXJ2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVp
IGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMdm9pZCoqIHBhcmFtcykgPSAwOwotICAg
IHZpcnR1YWwgdm9pZCBnZXRJbnRlcm5hbGZvcm1hdGl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBi
dWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1zKSA9IDA7Ci0gICAgdmly
dHVhbCB2b2lkIGdldFZlcnRleEF0dHJpYklpdlJvYnVzdEFOR0xFKEdDR0x1aW50IGluZGV4LCBH
Q0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dM
aW50KiBwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0VmVydGV4QXR0cmliSXVpdlJv
YnVzdEFOR0xFKEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNp
emUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMdWludCogcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVh
bCB2b2lkIGdldFVuaWZvcm11aXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMaW50
IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0x1aW50
KiBwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0QnVmZmVyUGFyYW1ldGVyaTY0dlJv
YnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZT
aXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludDY0KiBwYXJhbXMpID0gMDsKLSAgICB2aXJ0
dWFsIHZvaWQgc2FtcGxlclBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwg
R0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMaW50KiBwYXJhbSkg
PSAwOwotICAgIHZpcnR1YWwgdm9pZCBzYW1wbGVyUGFyYW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dM
dWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdD
R0xmbG9hdCogcGFyYW0pID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0U2FtcGxlclBhcmFtZXRl
cml2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXpl
aSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1zKSA9IDA7Ci0gICAg
dmlydHVhbCB2b2lkIGdldFNhbXBsZXJQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNh
bXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5n
dGgsIEdDR0xmbG9hdCogcGFyYW1zKSA9IDA7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgZ2V0RnJhbWVi
dWZmZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5h
bWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1z
KSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldFByb2dyYW1JbnRlcmZhY2VpdlJvYnVzdEFOR0xF
KEdDR0x1aW50IHByb2dyYW0sIEdDR0xlbnVtIHByb2dyYW1JbnRlcmZhY2UsIEdDR0xlbnVtIHBu
YW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFt
cykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRCb29sZWFuaV92Um9idXN0QU5HTEUoR0NHTGVu
dW0gdGFyZ2V0LCBHQ0dMdWludCBpbmRleCwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSog
bGVuZ3RoLCBHQ0dMYm9vbGVhbiogZGF0YSkgPSAwOyAvLyBOT0xJTlQKLSAgICB2aXJ0dWFsIHZv
aWQgZ2V0TXVsdGlzYW1wbGVmdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHBuYW1lLCBHQ0dMdWludCBp
bmRleCwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMZmxvYXQqIHZh
bCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRUZXhMZXZlbFBhcmFtZXRlcml2Um9idXN0QU5H
TEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNp
emVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpID0gMDsKLSAg
ICB2aXJ0dWFsIHZvaWQgZ2V0VGV4TGV2ZWxQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0xlbnVt
IHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXpl
LCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGZsb2F0KiBwYXJhbXMpID0gMDsKLQotICAgIHZpcnR1
YWwgdm9pZCBnZXRQb2ludGVydlJvYnVzdEFOR0xFUm9idXN0QU5HTEUoR0NHTGVudW0gcG5hbWUs
IEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHZvaWQqKiBwYXJhbXMp
ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcmVhZG5QaXhlbHNSb2J1c3RBTkdMRShHQ0dMaW50IHgs
IEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBm
b3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0
aCwgR0NHTHNpemVpKiBjb2x1bW5zLCBHQ0dMc2l6ZWkqIHJvd3MsIEdDR0x2b2lkKiBkYXRhLCBi
b29sIHJlYWRpbmdUb1BpeGVsQnVmZmVyT2JqZWN0KSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdl
dG5Vbmlmb3JtZnZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9u
LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xmbG9hdCogcGFyYW1z
KSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldG5Vbmlmb3JtaXZSb2J1c3RBTkdMRShHQ0dMdWlu
dCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVp
KiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRuVW5p
Zm9ybXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdD
R0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHVpbnQqIHBhcmFtcykgPSAw
OwotICAgIHZpcnR1YWwgdm9pZCB0ZXhQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0
YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGludCog
cGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHRleFBhcmFtZXRlckl1aXZSb2J1c3RBTkdM
RShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29u
c3QgR0NHTHVpbnQqIHBhcmFtcykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRUZXhQYXJhbWV0
ZXJJaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6
ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykgPSAwOwotICAg
IHZpcnR1YWwgdm9pZCBnZXRUZXhQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3Ro
LCBHQ0dMdWludCogcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHNhbXBsZXJQYXJhbWV0
ZXJJaXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNp
emVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xpbnQqIHBhcmFtKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lk
IHNhbXBsZXJQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVu
dW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMdWludCogcGFyYW0pID0gMDsK
LSAgICB2aXJ0dWFsIHZvaWQgZ2V0U2FtcGxlclBhcmFtZXRlcklpdlJvYnVzdEFOR0xFKEdDR0x1
aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVp
KiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRTYW1w
bGVyUGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBu
YW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0x1aW50KiBwYXJh
bXMpID0gMDsKLQotICAgIHZpcnR1YWwgdm9pZCBnZXRRdWVyeU9iamVjdGl2Um9idXN0QU5HTEUo
R0NHTHVpbnQgaWQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVp
KiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRRdWVy
eU9iamVjdGk2NHZSb2J1c3RBTkdMRShHQ0dMdWludCBpZCwgR0NHTGVudW0gcG5hbWUsIEdDR0xz
aXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludDY0KiBwYXJhbXMpID0gMDsK
LSAgICB2aXJ0dWFsIHZvaWQgZ2V0UXVlcnlPYmplY3R1aTY0dlJvYnVzdEFOR0xFKEdDR0x1aW50
IGlkLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3Ro
LCBHQ0dMdWludDY0KiBwYXJhbXMpID0gMDsKIAogICAgIC8vIE90aGVyIGZ1bmN0aW9ucy4KICNp
ZiAhVVNFKEFOR0xFKQpAQCAtMzUyLDcgKzMwMCw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZv
aWQgcmVhZG5QaXhlbHNFWFQoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwg
R0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6
ZWkgYnVmU2l6ZSwgR0NHTHZvaWQqIGRhdGEpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZ2V0blVu
aWZvcm1mdkVYVChHQ0dMdWludCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkg
YnVmU2l6ZSwgR0NHTGZsb2F0KiBwYXJhbXMpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZ2V0blVu
aWZvcm1pdkVYVChHQ0dMdWludCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkg
YnVmU2l6ZSwgR0NHTGludCogcGFyYW1zKSA9IDA7Ci0jZW5kaWYKIAogICAgIHZpcnR1YWwgYm9v
bCBpc05WSURJQSgpID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgaXNBTUQoKSA9IDA7CkBAIC0zNjQs
NyArMzExLDcgQEAgcHVibGljOgogICAgIC8vIHRoYXQgbXVzdCBiZSBhdm9pZGVkLiBQb3J0cyBz
aG91bGQgaW1wbGVtZW50IHRoZXNlIGZsYWdzIG9uIHN1Y2ggY29uZmlndXJhdGlvbnMuCiAgICAg
dmlydHVhbCBib29sIHJlcXVpcmVzQnVpbHRJbkZ1bmN0aW9uRW11bGF0aW9uKCkgPSAwOwogICAg
IHZpcnR1YWwgYm9vbCByZXF1aXJlc1Jlc3RyaWN0ZWRNYXhpbXVtVGV4dHVyZVNpemUoKSA9IDA7
Ci0KKyNlbmRpZgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvRXh0ZW5zaW9uc0dMQU5H
TEUuY3BwCmluZGV4IDI4M2RhODJjNmE2MC4uMWRhODQyY2ZkNzI4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRlbnNpb25zR0xBTkdMRS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvRXh0ZW5zaW9uc0dM
QU5HTEUuY3BwCkBAIC00MywzMSArNDMsMTAgQEAgdHlwZWRlZiB2b2lkKiBHTGVnbENvbnRleHQ7
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotRXh0ZW5zaW9uc0dMQU5HTEU6OkV4dGVuc2lvbnNH
TEFOR0xFKEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiBjb250ZXh0LCBib29sIHVzZUluZGV4ZWRH
ZXRTdHJpbmcpCitFeHRlbnNpb25zR0xBTkdMRTo6RXh0ZW5zaW9uc0dMQU5HTEUoR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0wqIGNvbnRleHQpCiAgICAgOiBtX2luaXRpYWxpemVkQXZhaWxhYmxlRXh0
ZW5zaW9ucyhmYWxzZSkKICAgICAsIG1fY29udGV4dChjb250ZXh0KQotICAgICwgbV9pc05WSURJ
QShmYWxzZSkKLSAgICAsIG1faXNBTUQoZmFsc2UpCi0gICAgLCBtX2lzSW50ZWwoZmFsc2UpCi0g
ICAgLCBtX2lzSW1hZ2luYXRpb24oZmFsc2UpCi0gICAgLCBtX3JlcXVpcmVzQnVpbHRJbkZ1bmN0
aW9uRW11bGF0aW9uKGZhbHNlKQotICAgICwgbV9yZXF1aXJlc1Jlc3RyaWN0ZWRNYXhpbXVtVGV4
dHVyZVNpemUoZmFsc2UpCi0gICAgLCBtX3VzZUluZGV4ZWRHZXRTdHJpbmcodXNlSW5kZXhlZEdl
dFN0cmluZykKLXsKLSAgICAvLyBGSVhNRTogaWRlYWxseSwgcmVtb3ZlIHRoaXMgaW5pdGlhbGl6
YXRpb24gYWx0b2dldGhlci4gQU5HTEUKLSAgICAvLyBzdWJzdW1lcyB0aGUgcmVzcG9uc2liaWxp
dHkgZm9yIGdyYXBoaWNzIGRyaXZlciB3b3JrYXJvdW5kcy4KLSAgICBtX3ZlbmRvciA9IFN0cmlu
ZyhyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihnbDo6R2V0U3RyaW5nKEdMX1ZFTkRPUikp
KTsKLSAgICBtX3JlbmRlcmVyID0gU3RyaW5nKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+
KGdsOjpHZXRTdHJpbmcoR0xfUkVOREVSRVIpKSk7Ci0KLSAgICBWZWN0b3I8U3RyaW5nPiB2ZW5k
b3JDb21wb25lbnRzID0gbV92ZW5kb3IuY29udmVydFRvQVNDSUlMb3dlcmNhc2UoKS5zcGxpdCgn
ICcpOwotICAgIGlmICh2ZW5kb3JDb21wb25lbnRzLmNvbnRhaW5zKCJudmlkaWEiKSkKLSAgICAg
ICAgbV9pc05WSURJQSA9IHRydWU7Ci0gICAgaWYgKHZlbmRvckNvbXBvbmVudHMuY29udGFpbnMo
ImF0aSIpIHx8IHZlbmRvckNvbXBvbmVudHMuY29udGFpbnMoImFtZCIpKQotICAgICAgICBtX2lz
QU1EID0gdHJ1ZTsKLSAgICBpZiAodmVuZG9yQ29tcG9uZW50cy5jb250YWlucygiaW50ZWwiKSkK
LSAgICAgICAgbV9pc0ludGVsID0gdHJ1ZTsKLSAgICBpZiAodmVuZG9yQ29tcG9uZW50cy5jb250
YWlucygiaW1hZ2luYXRpb24iKSkKLSAgICAgICAgbV9pc0ltYWdpbmF0aW9uID0gdHJ1ZTsKK3sK
IH0KIAogRXh0ZW5zaW9uc0dMQU5HTEU6On5FeHRlbnNpb25zR0xBTkdMRSgpID0gZGVmYXVsdDsK
QEAgLTEyOCw0MiArMTA3LDE1IEBAIFN0cmluZyBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0VHJhbnNs
YXRlZFNoYWRlclNvdXJjZUFOR0xFKFBsYXRmb3JtR0xPYmplY3Qgc2hhZGVyCiAKIHZvaWQgRXh0
ZW5zaW9uc0dMQU5HTEU6OmluaXRpYWxpemVBdmFpbGFibGVFeHRlbnNpb25zKCkKIHsKLSAgICBp
ZiAobV91c2VJbmRleGVkR2V0U3RyaW5nKSB7Ci0gICAgICAgIEdMaW50IG51bUV4dGVuc2lvbnMg
PSAwOwotICAgICAgICBnbDo6R2V0SW50ZWdlcnYoR0xfTlVNX0VYVEVOU0lPTlMsICZudW1FeHRl
bnNpb25zKTsKLSAgICAgICAgZm9yIChHTGludCBpID0gMDsgaSA8IG51bUV4dGVuc2lvbnM7ICsr
aSkKLSAgICAgICAgICAgIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5hZGQoZ2w6OkdldFN0cmluZ2ko
R0xfRVhURU5TSU9OUywgaSkpOwotICAgICAgICBnbDo6R2V0SW50ZWdlcnYoR0xfTlVNX1JFUVVF
U1RBQkxFX0VYVEVOU0lPTlNfQU5HTEUsICZudW1FeHRlbnNpb25zKTsKLSAgICAgICAgZm9yIChH
TGludCBpID0gMDsgaSA8IG51bUV4dGVuc2lvbnM7ICsraSkKLSAgICAgICAgICAgIG1fcmVxdWVz
dGFibGVFeHRlbnNpb25zLmFkZChnbDo6R2V0U3RyaW5naShHTF9SRVFVRVNUQUJMRV9FWFRFTlNJ
T05TX0FOR0xFLCBpKSk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgU3RyaW5nIGV4dGVuc2lvbnNT
dHJpbmcgPSBnZXRFeHRlbnNpb25zKCk7Ci0gICAgICAgIGZvciAoYXV0byYgZXh0ZW5zaW9uIDog
ZXh0ZW5zaW9uc1N0cmluZy5zcGxpdCgnICcpKQotICAgICAgICAgICAgbV9hdmFpbGFibGVFeHRl
bnNpb25zLmFkZChleHRlbnNpb24pOwotICAgICAgICBleHRlbnNpb25zU3RyaW5nID0gU3RyaW5n
KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGdsOjpHZXRTdHJpbmcoR0xfUkVRVUVTVEFC
TEVfRVhURU5TSU9OU19BTkdMRSkpKTsKLSAgICAgICAgZm9yIChhdXRvJiBleHRlbnNpb24gOiBl
eHRlbnNpb25zU3RyaW5nLnNwbGl0KCcgJykpCi0gICAgICAgICAgICBtX3JlcXVlc3RhYmxlRXh0
ZW5zaW9ucy5hZGQoZXh0ZW5zaW9uKTsKLSAgICB9CisgICAgU3RyaW5nIGV4dGVuc2lvbnNTdHJp
bmcgPSBnZXRFeHRlbnNpb25zKCk7CisgICAgZm9yIChhdXRvJiBleHRlbnNpb24gOiBleHRlbnNp
b25zU3RyaW5nLnNwbGl0KCcgJykpCisgICAgICAgIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5hZGQo
ZXh0ZW5zaW9uKTsKKyAgICBleHRlbnNpb25zU3RyaW5nID0gU3RyaW5nKHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgY2hhcio+KGdsOjpHZXRTdHJpbmcoR0xfUkVRVUVTVEFCTEVfRVhURU5TSU9OU19B
TkdMRSkpKTsKKyAgICBmb3IgKGF1dG8mIGV4dGVuc2lvbiA6IGV4dGVuc2lvbnNTdHJpbmcuc3Bs
aXQoJyAnKSkKKyAgICAgICAgbV9yZXF1ZXN0YWJsZUV4dGVuc2lvbnMuYWRkKGV4dGVuc2lvbik7
CiAgICAgbV9pbml0aWFsaXplZEF2YWlsYWJsZUV4dGVuc2lvbnMgPSB0cnVlOwogfQogCi12b2lk
IEV4dGVuc2lvbnNHTEFOR0xFOjpibGl0RnJhbWVidWZmZXIobG9uZyBzcmNYMCwgbG9uZyBzcmNZ
MCwgbG9uZyBzcmNYMSwgbG9uZyBzcmNZMSwgbG9uZyBkc3RYMCwgbG9uZyBkc3RZMCwgbG9uZyBk
c3RYMSwgbG9uZyBkc3RZMSwgdW5zaWduZWQgbG9uZyBtYXNrLCB1bnNpZ25lZCBsb25nIGZpbHRl
cikKLXsKLSAgICAvLyBGSVhNRTogY29uc2lkZXIgYWRkaW5nIHN1cHBvcnQgZm9yIEFQUExFX2Zy
YW1lYnVmZmVyX211bHRpc2FtcGxlLgotICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1
cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OkJsaXRGcmFtZWJ1ZmZlckFOR0xF
KHNyY1gwLCBzcmNZMCwgc3JjWDEsIHNyY1kxLCBkc3RYMCwgZHN0WTAsIGRzdFgxLCBkc3RZMSwg
bWFzaywgZmlsdGVyKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6cmVuZGVyYnVmZmVy
U3RvcmFnZU11bHRpc2FtcGxlKHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25nIHNh
bXBsZXMsIHVuc2lnbmVkIGxvbmcgaW50ZXJuYWxmb3JtYXQsIHVuc2lnbmVkIGxvbmcgd2lkdGgs
IHVuc2lnbmVkIGxvbmcgaGVpZ2h0KQotewotICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4
dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OlJlbmRlcmJ1ZmZlclN0b3Jh
Z2VNdWx0aXNhbXBsZUFOR0xFKHRhcmdldCwgc2FtcGxlcywgaW50ZXJuYWxmb3JtYXQsIHdpZHRo
LCBoZWlnaHQpOwotfQotCiBQbGF0Zm9ybUdMT2JqZWN0IEV4dGVuc2lvbnNHTEFOR0xFOjpjcmVh
dGVWZXJ0ZXhBcnJheU9FUygpCiB7CiAgICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3Vy
cmVudCgpKQpAQCAtMjA0LDI0ICsxNTYsNiBAQCB2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpiaW5k
VmVydGV4QXJyYXlPRVMoUGxhdGZvcm1HTE9iamVjdCBhcnJheSkKICAgICBnbDo6QmluZFZlcnRl
eEFycmF5T0VTKGFycmF5KTsKIH0KIAotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6aW5zZXJ0RXZl
bnRNYXJrZXJFWFQoY29uc3QgU3RyaW5nJikKLXsKLSAgICAvLyBGSVhNRTogaW1wbGVtZW50IHRo
aXMgZnVuY3Rpb24gYW5kIGFkZCBHTF9FWFRfZGVidWdfbWFya2VyIGluIHN1cHBvcnRzKCkuCi0g
ICAgcmV0dXJuOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpwdXNoR3JvdXBNYXJrZXJF
WFQoY29uc3QgU3RyaW5nJikKLXsKLSAgICAvLyBGSVhNRTogaW1wbGVtZW50IHRoaXMgZnVuY3Rp
b24gYW5kIGFkZCBHTF9FWFRfZGVidWdfbWFya2VyIGluIHN1cHBvcnRzKCkuCi0gICAgcmV0dXJu
OwotfQotCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpwb3BHcm91cE1hcmtlckVYVCh2b2lkKQot
ewotICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQgdGhpcyBmdW5jdGlvbiBhbmQgYWRkIEdMX0VYVF9k
ZWJ1Z19tYXJrZXIgaW4gc3VwcG9ydHMoKS4KLSAgICByZXR1cm47Ci19Ci0KIGJvb2wgRXh0ZW5z
aW9uc0dMQU5HTEU6OnN1cHBvcnRzRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgbmFtZSkKIHsKICAg
ICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKG5hbWUpIHx8IG1fcmVxdWVz
dGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKG5hbWUpOwpAQCAtMjc4LDYgKzIxMiw3IEBAIEdDR0xl
bnVtIEV4dGVuc2lvbnNHTEFOR0xFOjphZGp1c3RXZWJHTDFUZXh0dXJlSW50ZXJuYWxGb3JtYXQo
R0NHTGVudW0gaW50ZXJuYWxmCiB9CiAKIC8vIEdMX0FOR0xFX3JvYnVzdF9jbGllbnRfbWVtb3J5
CisjaWYgMAogdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6cmVhZFBpeGVsc1JvYnVzdEFOR0xFKGlu
dCB4LCBpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBm
b3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0
aCwgR0NHTHNpemVpICpjb2x1bW5zLCBHQ0dMc2l6ZWkgKnJvd3MsIHZvaWQgKnBpeGVscykKIHsK
ICAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCkBAIC00NTUsNiArMzkw
LDcgQEAgdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0UG9pbnRlcnZSb2J1c3RBTkdMRVJvYnVz
dEFOR0xFKEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2kKIAogICAgIGdsOjpHZXRQb2ludGVydlJvYnVz
dEFOR0xFUm9idXN0QU5HTEUocG5hbWUsIGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1zKTsKIH0KKyNl
bmRpZgogCiAjaWYgUExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShJT1NfRkFNSUxZKQogc3RhdGlj
IHZvaWQgd2lwZUFscGhhQ2hhbm5lbEZyb21QaXhlbHMoaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCB1
bnNpZ25lZCBjaGFyKiBwaXhlbHMpCkBAIC01MDMsNyArNDM5LDcgQEAgdm9pZCBFeHRlbnNpb25z
R0xBTkdMRTo6cmVhZG5QaXhlbHNSb2J1c3RBTkdMRShpbnQgeCwgaW50IHksIEdDR0xzaXplaSB3
aWR0aCwgR0MKICAgICBVTlVTRURfUEFSQU0ocmVhZGluZ1RvUGl4ZWxCdWZmZXJPYmplY3QpOwog
I2VuZGlmCiB9Ci0KKyNpZiAwCiB2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRuVW5pZm9ybWZ2
Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVm
U2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xmbG9hdCAqcGFyYW1zKQogewogICAgIGlmICgh
bV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKQEAgLTYxNiw3ICs1NTIsNyBAQCB2b2lk
IEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRRdWVyeU9iamVjdHVpNjR2Um9idXN0QU5HTEUoR0NHTHVp
bnQgaWQsIEdDR0xlbnVtIHBuYQogCiAgICAgZ2w6OkdldFF1ZXJ5T2JqZWN0dWk2NHZSb2J1c3RB
TkdMRShpZCwgcG5hbWUsIGJ1ZlNpemUsIGxlbmd0aCwgcmVpbnRlcnByZXRfY2FzdDxHTHVpbnQ2
NCo+KHBhcmFtcykpOwogfQotCisjZW5kaWYKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRlbnNp
b25zR0xBTkdMRS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvRXh0
ZW5zaW9uc0dMQU5HTEUuaAppbmRleCBhNzczMWRmZDIwYzUuLmI1NGUzNDg3NjVlOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvRXh0ZW5zaW9uc0dM
QU5HTEUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRl
bnNpb25zR0xBTkdMRS5oCkBAIC0zNiw3ICszNiw3IEBAIGNsYXNzIEV4dGVuc2lvbnNHTEFOR0xF
IDogcHVibGljIEV4dGVuc2lvbnNHTCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBw
dWJsaWM6CiAgICAgLy8gVGhpcyBjbGFzcyBvbmx5IG5lZWRzIHRvIGJlIGluc3RhbnRpYXRlZCBi
eSBHcmFwaGljc0NvbnRleHRHTE9wZW5HTCBpbXBsZW1lbnRhdGlvbnMuCi0gICAgRXh0ZW5zaW9u
c0dMQU5HTEUoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqLCBib29sIHVzZUluZGV4ZWRHZXRTdHJp
bmcgPSBmYWxzZSk7CisgICAgRXh0ZW5zaW9uc0dMQU5HTEUoR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0wqKTsKICAgICB2aXJ0dWFsIH5FeHRlbnNpb25zR0xBTkdMRSgpOwogCiAgICAgLy8gRXh0ZW5z
aW9uc0dMIG1ldGhvZHMuCkBAIC00OSwzMCArNDksMTYgQEAgcHVibGljOgogICAgIHZvaWQgZGVs
ZXRlVmVydGV4QXJyYXlPRVMoUGxhdGZvcm1HTE9iamVjdCkgb3ZlcnJpZGU7CiAgICAgR0NHTGJv
b2xlYW4gaXNWZXJ0ZXhBcnJheU9FUyhQbGF0Zm9ybUdMT2JqZWN0KSBvdmVycmlkZTsKICAgICB2
b2lkIGJpbmRWZXJ0ZXhBcnJheU9FUyhQbGF0Zm9ybUdMT2JqZWN0KSBvdmVycmlkZTsKLSAgICB2
b2lkIGluc2VydEV2ZW50TWFya2VyRVhUKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwotICAgIHZv
aWQgcHVzaEdyb3VwTWFya2VyRVhUKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwotICAgIHZvaWQg
cG9wR3JvdXBNYXJrZXJFWFQodm9pZCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkcmF3QnVmZmVyc0VY
VChHQ0dMU3Bhbjxjb25zdCBHQ0dMZW51bT4pIG92ZXJyaWRlOwogCiAgICAgU3RyaW5nIGdldFRy
YW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRShQbGF0Zm9ybUdMT2JqZWN0KSBvdmVycmlkZTsKIAot
ICAgIHZvaWQgYmxpdEZyYW1lYnVmZmVyKGxvbmcgc3JjWDAsIGxvbmcgc3JjWTAsIGxvbmcgc3Jj
WDEsIGxvbmcgc3JjWTEsIGxvbmcgZHN0WDAsIGxvbmcgZHN0WTAsIGxvbmcgZHN0WDEsIGxvbmcg
ZHN0WTEsIHVuc2lnbmVkIGxvbmcgbWFzaywgdW5zaWduZWQgbG9uZyBmaWx0ZXIpIG92ZXJyaWRl
OwotICAgIHZvaWQgcmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlKHVuc2lnbmVkIGxvbmcg
dGFyZ2V0LCB1bnNpZ25lZCBsb25nIHNhbXBsZXMsIHVuc2lnbmVkIGxvbmcgaW50ZXJuYWxmb3Jt
YXQsIHVuc2lnbmVkIGxvbmcgd2lkdGgsIHVuc2lnbmVkIGxvbmcgaGVpZ2h0KSBvdmVycmlkZTsK
LQogICAgIHZvaWQgZHJhd0FycmF5c0luc3RhbmNlZChHQ0dMZW51bSBtb2RlLCBHQ0dMaW50IGZp
cnN0LCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xzaXplaSBwcmltY291bnQpIG92ZXJyaWRlOwogICAg
IHZvaWQgZHJhd0VsZW1lbnRzSW5zdGFuY2VkKEdDR0xlbnVtIG1vZGUsIEdDR0xzaXplaSBjb3Vu
dCwgR0NHTGVudW0gdHlwZSwgbG9uZyBsb25nIG9mZnNldCwgR0NHTHNpemVpIHByaW1jb3VudCkg
b3ZlcnJpZGU7CiAgICAgdm9pZCB2ZXJ0ZXhBdHRyaWJEaXZpc29yKEdDR0x1aW50IGluZGV4LCBH
Q0dMdWludCBkaXZpc29yKSBvdmVycmlkZTsKIAotICAgIGJvb2wgaXNOVklESUEoKSBvdmVycmlk
ZSB7IHJldHVybiBtX2lzTlZJRElBOyB9Ci0gICAgYm9vbCBpc0FNRCgpIG92ZXJyaWRlIHsgcmV0
dXJuIG1faXNBTUQ7IH0KLSAgICBib29sIGlzSW50ZWwoKSBvdmVycmlkZSB7IHJldHVybiBtX2lz
SW50ZWw7IH0KLSAgICBib29sIGlzSW1hZ2luYXRpb24oKSBvdmVycmlkZSB7IHJldHVybiBtX2lz
SW1hZ2luYXRpb247IH0KLSAgICBTdHJpbmcgdmVuZG9yKCkgb3ZlcnJpZGUgeyByZXR1cm4gbV92
ZW5kb3I7IH0KLQotICAgIGJvb2wgcmVxdWlyZXNCdWlsdEluRnVuY3Rpb25FbXVsYXRpb24oKSBv
dmVycmlkZSB7IHJldHVybiBtX3JlcXVpcmVzQnVpbHRJbkZ1bmN0aW9uRW11bGF0aW9uOyB9Ci0g
ICAgYm9vbCByZXF1aXJlc1Jlc3RyaWN0ZWRNYXhpbXVtVGV4dHVyZVNpemUoKSBvdmVycmlkZSB7
IHJldHVybiBtX3JlcXVpcmVzUmVzdHJpY3RlZE1heGltdW1UZXh0dXJlU2l6ZTsgfQotCiAgICAg
Ly8gR0xfQU5HTEVfcm9idXN0X2NsaWVudF9tZW1vcnkKKyNpZiAwCiAgICAgdm9pZCByZWFkUGl4
ZWxzUm9idXN0QU5HTEUoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NH
THNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkg
YnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xzaXplaSAqY29sdW1ucywgR0NHTHNpemVp
ICpyb3dzLCB2b2lkICpwaXhlbHMpIG92ZXJyaWRlOwogICAgIHZvaWQgdGV4UGFyYW1ldGVyZnZS
b2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVm
U2l6ZSwgY29uc3QgR0NHTGZsb2F0ICpwYXJhbXMpIG92ZXJyaWRlOwogICAgIHZvaWQgdGV4UGFy
YW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dM
c2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGludCAqcGFyYW1zKSBvdmVycmlkZTsKQEAgLTk3LDcg
KzgzLDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIGdldFRleExldmVsUGFyYW1ldGVyZnZSb2J1c3RB
TkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIHBuYW1lLCBHQ0dM
c2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xmbG9hdCAqcGFyYW1zKSBvdmVy
cmlkZTsKIAogICAgIHZvaWQgZ2V0UG9pbnRlcnZSb2J1c3RBTkdMRVJvYnVzdEFOR0xFKEdDR0xl
bnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIHZvaWQgKipw
YXJhbXMpIG92ZXJyaWRlOworI2VuZGlmCisKICAgICB2b2lkIHJlYWRuUGl4ZWxzUm9idXN0QU5H
TEUoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdo
dCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NH
THNpemVpICpsZW5ndGgsIEdDR0xzaXplaSAqY29sdW1ucywgR0NHTHNpemVpICpyb3dzLCB2b2lk
ICpkYXRhLCBib29sIHJlYWRpbmdUb1BpeGVsQnVmZmVyT2JqZWN0KSBvdmVycmlkZTsKKyNpZiAw
CiAgICAgdm9pZCBnZXRuVW5pZm9ybWZ2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NH
TGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dM
ZmxvYXQgKnBhcmFtcykgb3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRuVW5pZm9ybWl2Um9idXN0QU5H
TEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUs
IEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJyaWRlOwogICAgIHZvaWQg
Z2V0blVuaWZvcm11aXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0
aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0x1aW50ICpwYXJh
bXMpIG92ZXJyaWRlOwpAQCAtMTEzLDcgKzEwMiw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGdldFF1
ZXJ5T2JqZWN0aXZSb2J1c3RBTkdMRShHQ0dMdWludCBpZCwgR0NHTGVudW0gcG5hbWUsIEdDR0xz
aXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVycmlk
ZTsKICAgICB2b2lkIGdldFF1ZXJ5T2JqZWN0aTY0dlJvYnVzdEFOR0xFKEdDR0x1aW50IGlkLCBH
Q0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dM
aW50NjQgKnBhcmFtcykgb3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRRdWVyeU9iamVjdHVpNjR2Um9i
dXN0QU5HTEUoR0NHTHVpbnQgaWQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwg
R0NHTHNpemVpICpsZW5ndGgsIEdDR0x1aW50NjQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0KKyNlbmRp
ZgogICAgIC8vIE9ubHkgZm9yIG5vbi1XZWJHTCAyLjAgY29udGV4dHMuCiAgICAgR0NHTGVudW0g
YWRqdXN0V2ViR0wxVGV4dHVyZUludGVybmFsRm9ybWF0KEdDR0xlbnVtIGludGVybmFsZm9ybWF0
LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUpOwogCkBAIC0xMjksMTkgKzExOCw2IEBA
IHByaXZhdGU6CiAKICAgICAvLyBXZWFrIHBvaW50ZXIgYmFjayB0byBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTC4KICAgICBHcmFwaGljc0NvbnRleHRHTE9wZW5HTCogbV9jb250ZXh0OwotCi0gICAg
Ym9vbCBtX2lzTlZJRElBOwotICAgIGJvb2wgbV9pc0FNRDsKLSAgICBib29sIG1faXNJbnRlbDsK
LSAgICBib29sIG1faXNJbWFnaW5hdGlvbjsKLSAgICBib29sIG1fcmVxdWlyZXNCdWlsdEluRnVu
Y3Rpb25FbXVsYXRpb247Ci0gICAgYm9vbCBtX3JlcXVpcmVzUmVzdHJpY3RlZE1heGltdW1UZXh0
dXJlU2l6ZTsKLQotICAgIGJvb2wgbV91c2VJbmRleGVkR2V0U3RyaW5nIHsgZmFsc2UgfTsKLQot
ICAgIFN0cmluZyBtX3ZlbmRvcjsKLSAgICBTdHJpbmcgbV9yZW5kZXJlcjsKLQogICAgIC8vIFdo
ZXRoZXIgdGhlIFdlYkdMIDEuMC1yZWxhdGVkIGZsb2F0aW5nLXBvaW50IHJlbmRlcmFiaWxpdHkg
ZXh0ZW5zaW9ucyBoYXZlIGJlZW4gZW5hYmxlZC4KICAgICBib29sIG1fd2ViZ2xDb2xvckJ1ZmZl
ckZsb2F0UkdCIHsgZmFsc2UgfTsKICAgICBib29sIG1fd2ViZ2xDb2xvckJ1ZmZlckZsb2F0UkdC
QSB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuY3BwCmluZGV4IDdlYzgxY2Y0YWU1
Ny4uNzZkYzMyYzE3NmE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMLmNwcApAQCAtNDcsMjMg
KzQ3LDYgQEAgRXh0ZW5zaW9uc0dMT3BlbkdMOjpFeHRlbnNpb25zR0xPcGVuR0woR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0wqIGNvbnRleHQsIGJvb2wgdXMKIAogRXh0ZW5zaW9uc0dMT3BlbkdMOjp+
RXh0ZW5zaW9uc0dMT3BlbkdMKCkgPSBkZWZhdWx0OwogCi0KLXZvaWQgRXh0ZW5zaW9uc0dMT3Bl
bkdMOjpibGl0RnJhbWVidWZmZXIobG9uZyBzcmNYMCwgbG9uZyBzcmNZMCwgbG9uZyBzcmNYMSwg
bG9uZyBzcmNZMSwgbG9uZyBkc3RYMCwgbG9uZyBkc3RZMCwgbG9uZyBkc3RYMSwgbG9uZyBkc3RZ
MSwgdW5zaWduZWQgbG9uZyBtYXNrLCB1bnNpZ25lZCBsb25nIGZpbHRlcikKLXsKLSAgICBpZiAo
IW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAg
IDo6Z2xCbGl0RnJhbWVidWZmZXJFWFQoc3JjWDAsIHNyY1kwLCBzcmNYMSwgc3JjWTEsIGRzdFgw
LCBkc3RZMCwgZHN0WDEsIGRzdFkxLCBtYXNrLCBmaWx0ZXIpOwotfQotCi12b2lkIEV4dGVuc2lv
bnNHTE9wZW5HTDo6cmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlKHVuc2lnbmVkIGxvbmcg
dGFyZ2V0LCB1bnNpZ25lZCBsb25nIHNhbXBsZXMsIHVuc2lnbmVkIGxvbmcgaW50ZXJuYWxmb3Jt
YXQsIHVuc2lnbmVkIGxvbmcgd2lkdGgsIHVuc2lnbmVkIGxvbmcgaGVpZ2h0KQotewotICAgIGlm
ICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0g
ICAgOjpnbFJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUVYVCh0YXJnZXQsIHNhbXBsZXMs
IGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0KTsKLX0KLQogUGxhdGZvcm1HTE9iamVjdCBF
eHRlbnNpb25zR0xPcGVuR0w6OmNyZWF0ZVZlcnRleEFycmF5T0VTKCkKIHsKICAgICBpZiAoIW1f
Y29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMLmgKaW5k
ZXggNDk2Mjg5Y2VhMGU2Li43YzJjMGUyMjgwZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMLmgK
QEAgLTQwLDkgKzQwLDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgfkV4dGVuc2lvbnNHTE9wZW5H
TCgpOwogCiAgICAgLy8gRXh0ZW5zaW9uc0dMIG1ldGhvZHMuCi0gICAgdm9pZCBibGl0RnJhbWVi
dWZmZXIobG9uZyBzcmNYMCwgbG9uZyBzcmNZMCwgbG9uZyBzcmNYMSwgbG9uZyBzcmNZMSwgbG9u
ZyBkc3RYMCwgbG9uZyBkc3RZMCwgbG9uZyBkc3RYMSwgbG9uZyBkc3RZMSwgdW5zaWduZWQgbG9u
ZyBtYXNrLCB1bnNpZ25lZCBsb25nIGZpbHRlcikgb3ZlcnJpZGU7Ci0gICAgdm9pZCByZW5kZXJi
dWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUodW5zaWduZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxv
bmcgc2FtcGxlcywgdW5zaWduZWQgbG9uZyBpbnRlcm5hbGZvcm1hdCwgdW5zaWduZWQgbG9uZyB3
aWR0aCwgdW5zaWduZWQgbG9uZyBoZWlnaHQpIG92ZXJyaWRlOwotCiAgICAgUGxhdGZvcm1HTE9i
amVjdCBjcmVhdGVWZXJ0ZXhBcnJheU9FUygpIG92ZXJyaWRlOwogICAgIHZvaWQgZGVsZXRlVmVy
dGV4QXJyYXlPRVMoUGxhdGZvcm1HTE9iamVjdCkgb3ZlcnJpZGU7CiAgICAgR0NHTGJvb2xlYW4g
aXNWZXJ0ZXhBcnJheU9FUyhQbGF0Zm9ybUdMT2JqZWN0KSBvdmVycmlkZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVu
R0xFUy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5z
aW9uc0dMT3BlbkdMRVMuY3BwCmluZGV4IDM2YzNlZjM4Zjk4Yi4uYTcwMTY0ZjkwYzYwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9u
c0dMT3BlbkdMRVMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29w
ZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xFUy5jcHAKQEAgLTEwMCwxMSArMTAwLDYgQEAgdm9pZCBF
eHRlbnNpb25zR0xPcGVuR0xFUzo6cmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlSU1HKHVu
c2lnbmVkIGxvbmcgdGFyZ2UKICAgICAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihH
TF9JTlZBTElEX09QRVJBVElPTik7CiB9CiAKLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMRVM6OmJs
aXRGcmFtZWJ1ZmZlcihsb25nIC8qIHNyY1gwICovLCBsb25nIC8qIHNyY1kwICovLCBsb25nIC8q
IHNyY1gxICovLCBsb25nIC8qIHNyY1kxICovLCBsb25nIC8qIGRzdFgwICovLCBsb25nIC8qIGRz
dFkwICovLCBsb25nIC8qIGRzdFgxICovLCBsb25nIC8qIGRzdFkxICovLCB1bnNpZ25lZCBsb25n
IC8qIG1hc2sgKi8sIHVuc2lnbmVkIGxvbmcgLyogZmlsdGVyICovKQotewotICAgIG5vdEltcGxl
bWVudGVkKCk7Ci19Ci0KIHZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMRVM6OnJlbmRlcmJ1ZmZlclN0
b3JhZ2VNdWx0aXNhbXBsZSh1bnNpZ25lZCBsb25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBzYW1w
bGVzLCB1bnNpZ25lZCBsb25nIGludGVybmFsZm9ybWF0LCB1bnNpZ25lZCBsb25nIHdpZHRoLCB1
bnNpZ25lZCBsb25nIGhlaWdodCkKIHsKICAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRD
dXJyZW50KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9v
cGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMRVMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xFUy5oCmluZGV4IDAxN2E0NWI3Mzk4ZC4u
MTA1ODQ3MDQ1NTQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMRVMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMRVMuaApAQCAtNzIsMTEgKzcy
LDEwIEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBmcmFtZWJ1ZmZlclRleHR1cmUyRE11
bHRpc2FtcGxlSU1HKHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25nIGF0dGFjaG1l
bnQsIHVuc2lnbmVkIGxvbmcgdGV4dGFyZ2V0LCB1bnNpZ25lZCB0ZXh0dXJlLCBpbnQgbGV2ZWws
IHVuc2lnbmVkIGxvbmcgc2FtcGxlcyk7CiAgICAgdmlydHVhbCB2b2lkIHJlbmRlcmJ1ZmZlclN0
b3JhZ2VNdWx0aXNhbXBsZUlNRyh1bnNpZ25lZCBsb25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBz
YW1wbGVzLCB1bnNpZ25lZCBsb25nIGludGVybmFsZm9ybWF0LCB1bnNpZ25lZCBsb25nIHdpZHRo
LCB1bnNpZ25lZCBsb25nIGhlaWdodCk7CisgICAgdm9pZCByZW5kZXJidWZmZXJTdG9yYWdlTXVs
dGlzYW1wbGUodW5zaWduZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgc2FtcGxlcywgdW5z
aWduZWQgbG9uZyBpbnRlcm5hbGZvcm1hdCwgdW5zaWduZWQgbG9uZyB3aWR0aCwgdW5zaWduZWQg
bG9uZyBoZWlnaHQpOwogCiAgICAgLy8gRXh0ZW5zaW9uM0QgbWV0aG9kcwogICAgIGJvb2wgaXNF
bmFibGVkKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwotICAgIHZvaWQgYmxpdEZyYW1lYnVmZmVy
KGxvbmcgc3JjWDAsIGxvbmcgc3JjWTAsIGxvbmcgc3JjWDEsIGxvbmcgc3JjWTEsIGxvbmcgZHN0
WDAsIGxvbmcgZHN0WTAsIGxvbmcgZHN0WDEsIGxvbmcgZHN0WTEsIHVuc2lnbmVkIGxvbmcgbWFz
aywgdW5zaWduZWQgbG9uZyBmaWx0ZXIpIG92ZXJyaWRlOwotICAgIHZvaWQgcmVuZGVyYnVmZmVy
U3RvcmFnZU11bHRpc2FtcGxlKHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25nIHNh
bXBsZXMsIHVuc2lnbmVkIGxvbmcgaW50ZXJuYWxmb3JtYXQsIHVuc2lnbmVkIGxvbmcgd2lkdGgs
IHVuc2lnbmVkIGxvbmcgaGVpZ2h0KSBvdmVycmlkZTsKICAgICB2b2lkIGluc2VydEV2ZW50TWFy
a2VyRVhUKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwogICAgIHZvaWQgcHVzaEdyb3VwTWFya2Vy
RVhUKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwogICAgIHZvaWQgcG9wR3JvdXBNYXJrZXJFWFQo
dm9pZCkgb3ZlcnJpZGU7Cg==
</data>
<flag name="commit-queue"
          id="432142"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>415091</attachid>
            <date>2020-11-30 20:17:28 -0800</date>
            <delta_ts>2020-12-01 14:15:13 -0800</delta_ts>
            <desc>Updated patch to address build errors. This is still WIP.</desc>
            <filename>webgl-gpup-remove-unused-functions.patch</filename>
            <type>text/plain</type>
            <size>29601</size>
            <attacher name="Rini Patel">rini_patel</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA1ODY2Zjc4OTNlZjYuLmFkNTI3NGZlOTI5OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDM2IEBACisyMDIwLTExLTMwICBSaW5pIFBhdGVsICA8cmluaV9wYXRlbEBhcHBsZS5j
b20+CisKKyAgICAgICAgUmVtb3ZlIHVudXNlZCBmdW5jdGlvbnMgZnJvbSBHcmFwaGljc0NvbnRl
eHRHTCBhbmQgRXh0ZW5zaW9uc0dMCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMTg4OTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBSZW1vdmUgdW51c2VkIGZ1bmN0aW9ucyBmcm9tIEdyYXBoaWNzQ29udGV4
dEdMIGFuZCBFeHRlbnNpb25zR0wKKyAgICAgICAgVGhleSdyZSBkZWFkIGNvZGUgYW5kIG1ha2Ug
aXQgaGFyZGVyIHRvIGltcGxlbWVudCB0aGUgR1BVIFByb2Nlc3MgdmVyc2lvbi4KKworICAgICAg
ICAtIElmIHRoZSBmdW5jdGlvbiBpcyB1bnVzZWQsIHJlbW92ZSBpdCBmdWxseQorICAgICAgICAt
IElmIHRoZSBmdW5jdGlvbiBpcyB1bnVzZWQgaW4gVVNFKEFOR0xFKSBXZWJHTCBwYXJ0LCByZW1v
dmUgdGhlIGZ1bmN0aW9uIGZyb20gR3JhcGhpY3NDb250ZXh0R0wgYW5kIEFOR0xFIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMCisKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2U6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRXh0ZW5zaW9uc0dMLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OkV4dGVuc2lvbnNHTEFOR0xF
KToKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjppbml0aWFsaXplQXZhaWxh
YmxlRXh0ZW5zaW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6Ymxp
dEZyYW1lYnVmZmVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFO
R0xFOjpyZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6Omluc2VydEV2ZW50TWFya2VyRVhUKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpwdXNoR3JvdXBNYXJrZXJF
WFQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OnBvcEdy
b3VwTWFya2VyRVhUKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hbmds
ZS9FeHRlbnNpb25zR0xBTkdMRS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5n
bC9FeHRlbnNpb25zR0xPcGVuR0wuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dM
T3BlbkdMOjpibGl0RnJhbWVidWZmZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0
ZW5zaW9uc0dMT3BlbkdMOjpyZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUpOiBEZWxldGVk
LgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdM
RVMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMRVM6OmJsaXRGcmFt
ZWJ1ZmZlcik6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4
dGVuc2lvbnNHTE9wZW5HTEVTLmg6CisKIDIwMjAtMTEtMzAgIFlvdWVubiBGYWJsZXQgIDx5b3Vl
bm5AYXBwbGUuY29tPgogCiAgICAgICAgIE1pc3NpbmcgV2ViUlRDIE1ldHJpY3MgaW4gaU9TIDE0
IEJldGEgNQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlLmNwcAppbmRleCA1NTc4NGUxYTMzZWMuLjJhZWNlYjhhOTUwMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZS5jcHAKQEAgLTc0MSwxMCArNzQxLDYgQEAgc3RkOjp1bmlxdWVfcHRyPFdl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2U+IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmNyZWF0
ZShDYW4KICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAgYXV0byYgZXh0ZW5z
aW9ucyA9IGNvbnRleHQtPmdldEV4dGVuc2lvbnMoKTsKLSAgICBpZiAoZXh0ZW5zaW9ucy5zdXBw
b3J0cygiR0xfRVhUX2RlYnVnX21hcmtlciJfcykpCi0gICAgICAgIGV4dGVuc2lvbnMucHVzaEdy
b3VwTWFya2VyRVhUKCJXZWJHTFJlbmRlcmluZ0NvbnRleHQiX3MpOwotCiAgICAgc3RkOjp1bmlx
dWVfcHRyPFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U+IHJlbmRlcmluZ0NvbnRleHQ7CiAjaWYg
RU5BQkxFKFdFQkdMMikKICAgICBpZiAodHlwZSA9PSAid2ViZ2wyIikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0V4dGVuc2lvbnNHTC5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRXh0ZW5zaW9uc0dMLmgKaW5kZXggMDZjMTIxMTI3ZTIy
Li4wMzNkZjE1ZjQxMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0V4dGVuc2lvbnNHTC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0V4dGVuc2lvbnNHTC5oCkBAIC0yNzUsMTIgKzI3NSw2IEBAIHB1YmxpYzoKICAgICAvLyBleHRl
cm5hbGx5LgogICAgIHZpcnR1YWwgR0NHTGludCBnZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJCKCkg
PSAwOwogCi0gICAgLy8gR0xfQU5HTEVfZnJhbWVidWZmZXJfYmxpdAotICAgIHZpcnR1YWwgdm9p
ZCBibGl0RnJhbWVidWZmZXIobG9uZyBzcmNYMCwgbG9uZyBzcmNZMCwgbG9uZyBzcmNYMSwgbG9u
ZyBzcmNZMSwgbG9uZyBkc3RYMCwgbG9uZyBkc3RZMCwgbG9uZyBkc3RYMSwgbG9uZyBkc3RZMSwg
dW5zaWduZWQgbG9uZyBtYXNrLCB1bnNpZ25lZCBsb25nIGZpbHRlcikgPSAwOwotCi0gICAgLy8g
R0xfQU5HTEVfZnJhbWVidWZmZXJfbXVsdGlzYW1wbGUKLSAgICB2aXJ0dWFsIHZvaWQgcmVuZGVy
YnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlKHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBs
b25nIHNhbXBsZXMsIHVuc2lnbmVkIGxvbmcgaW50ZXJuYWxmb3JtYXQsIHVuc2lnbmVkIGxvbmcg
d2lkdGgsIHVuc2lnbmVkIGxvbmcgaGVpZ2h0KSA9IDA7Ci0KICAgICAvLyBHTF9PRVNfdmVydGV4
X2FycmF5X29iamVjdAogICAgIHZpcnR1YWwgUGxhdGZvcm1HTE9iamVjdCBjcmVhdGVWZXJ0ZXhB
cnJheU9FUygpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlVmVydGV4QXJyYXlPRVMoUGxh
dGZvcm1HTE9iamVjdCkgPSAwOwpAQCAtMjkwLDExICsyODQsNiBAQCBwdWJsaWM6CiAgICAgLy8g
R0xfQU5HTEVfdHJhbnNsYXRlZF9zaGFkZXJfc291cmNlCiAgICAgdmlydHVhbCBTdHJpbmcgZ2V0
VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFKFBsYXRmb3JtR0xPYmplY3QpID0gMDsKIAotICAg
IC8vIEdMX0VYVF9kZWJ1Z19tYXJrZXIKLSAgICB2aXJ0dWFsIHZvaWQgaW5zZXJ0RXZlbnRNYXJr
ZXJFWFQoY29uc3QgU3RyaW5nJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBwdXNoR3JvdXBNYXJr
ZXJFWFQoY29uc3QgU3RyaW5nJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBwb3BHcm91cE1hcmtl
ckVYVCh2b2lkKSA9IDA7Ci0KICAgICAvLyBHTF9BUkJfZHJhd19idWZmZXJzIC8gR0xfRVhUX2Ry
YXdfYnVmZmVycwogICAgIHZpcnR1YWwgdm9pZCBkcmF3QnVmZmVyc0VYVChHQ0dMU3Bhbjxjb25z
dCBHQ0dMZW51bT4gYnVmcykgPSAwOwogCkBAIC0zMDMsNDggKzI5Miw3IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIHZvaWQgZHJhd0VsZW1lbnRzSW5zdGFuY2VkKEdDR0xlbnVtIG1vZGUsIEdDR0xz
aXplaSBjb3VudCwgR0NHTGVudW0gdHlwZSwgbG9uZyBsb25nIG9mZnNldCwgR0NHTHNpemVpIHBy
aW1jb3VudCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB2ZXJ0ZXhBdHRyaWJEaXZpc29yKEdDR0x1
aW50IGluZGV4LCBHQ0dMdWludCBkaXZpc29yKSA9IDA7CiAKLSAgICAvLyBHTF9BTkdMRV9yb2J1
c3RfY2xpZW50X21lbW9yeQotICAgIHZpcnR1YWwgdm9pZCByZWFkUGl4ZWxzUm9idXN0QU5HTEUo
R0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwg
R0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNp
emVpKiBsZW5ndGgsIEdDR0xzaXplaSogY29sdW1ucywgR0NHTHNpemVpKiByb3dzLCBHQ0dMdm9p
ZCogcGl4ZWxzKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHRleFBhcmFtZXRlcmZ2Um9idXN0QU5H
TEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNv
bnN0IEdDR0xmbG9hdCogcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHRleFBhcmFtZXRl
cml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVp
IGJ1ZlNpemUsIGNvbnN0IEdDR0xpbnQqIHBhcmFtcykgPSAwOwotCi0gICAgdmlydHVhbCB2b2lk
IGdldFF1ZXJ5aXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBH
Q0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykgPSAw
OwotICAgIHZpcnR1YWwgdm9pZCBnZXRRdWVyeU9iamVjdHVpdlJvYnVzdEFOR0xFKEdDR0x1aW50
IGlkLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3Ro
LCBHQ0dMdWludCogcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldEJ1ZmZlclBvaW50
ZXJ2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVp
IGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMdm9pZCoqIHBhcmFtcykgPSAwOwotICAg
IHZpcnR1YWwgdm9pZCBnZXRJbnRlcm5hbGZvcm1hdGl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBi
dWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1zKSA9IDA7Ci0gICAgdmly
dHVhbCB2b2lkIGdldFZlcnRleEF0dHJpYklpdlJvYnVzdEFOR0xFKEdDR0x1aW50IGluZGV4LCBH
Q0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dM
aW50KiBwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0VmVydGV4QXR0cmliSXVpdlJv
YnVzdEFOR0xFKEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNp
emUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMdWludCogcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVh
bCB2b2lkIGdldFVuaWZvcm11aXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMaW50
IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0x1aW50
KiBwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0QnVmZmVyUGFyYW1ldGVyaTY0dlJv
YnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZT
aXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludDY0KiBwYXJhbXMpID0gMDsKLSAgICB2aXJ0
dWFsIHZvaWQgc2FtcGxlclBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwg
R0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMaW50KiBwYXJhbSkg
PSAwOwotICAgIHZpcnR1YWwgdm9pZCBzYW1wbGVyUGFyYW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dM
dWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdD
R0xmbG9hdCogcGFyYW0pID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0U2FtcGxlclBhcmFtZXRl
cml2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXpl
aSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1zKSA9IDA7Ci0gICAg
dmlydHVhbCB2b2lkIGdldFNhbXBsZXJQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNh
bXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5n
dGgsIEdDR0xmbG9hdCogcGFyYW1zKSA9IDA7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgZ2V0RnJhbWVi
dWZmZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5h
bWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1z
KSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldFByb2dyYW1JbnRlcmZhY2VpdlJvYnVzdEFOR0xF
KEdDR0x1aW50IHByb2dyYW0sIEdDR0xlbnVtIHByb2dyYW1JbnRlcmZhY2UsIEdDR0xlbnVtIHBu
YW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFt
cykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRCb29sZWFuaV92Um9idXN0QU5HTEUoR0NHTGVu
dW0gdGFyZ2V0LCBHQ0dMdWludCBpbmRleCwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSog
bGVuZ3RoLCBHQ0dMYm9vbGVhbiogZGF0YSkgPSAwOyAvLyBOT0xJTlQKLSAgICB2aXJ0dWFsIHZv
aWQgZ2V0TXVsdGlzYW1wbGVmdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHBuYW1lLCBHQ0dMdWludCBp
bmRleCwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMZmxvYXQqIHZh
bCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRUZXhMZXZlbFBhcmFtZXRlcml2Um9idXN0QU5H
TEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNp
emVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpID0gMDsKLSAg
ICB2aXJ0dWFsIHZvaWQgZ2V0VGV4TGV2ZWxQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0xlbnVt
IHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXpl
LCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGZsb2F0KiBwYXJhbXMpID0gMDsKLQotICAgIHZpcnR1
YWwgdm9pZCBnZXRQb2ludGVydlJvYnVzdEFOR0xFUm9idXN0QU5HTEUoR0NHTGVudW0gcG5hbWUs
IEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHZvaWQqKiBwYXJhbXMp
ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcmVhZG5QaXhlbHNSb2J1c3RBTkdMRShHQ0dMaW50IHgs
IEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBm
b3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0
aCwgR0NHTHNpemVpKiBjb2x1bW5zLCBHQ0dMc2l6ZWkqIHJvd3MsIEdDR0x2b2lkKiBkYXRhLCBi
b29sIHJlYWRpbmdUb1BpeGVsQnVmZmVyT2JqZWN0KSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdl
dG5Vbmlmb3JtZnZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9u
LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xmbG9hdCogcGFyYW1z
KSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldG5Vbmlmb3JtaXZSb2J1c3RBTkdMRShHQ0dMdWlu
dCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVp
KiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRuVW5p
Zm9ybXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdD
R0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHVpbnQqIHBhcmFtcykgPSAw
OwotICAgIHZpcnR1YWwgdm9pZCB0ZXhQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0
YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGludCog
cGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHRleFBhcmFtZXRlckl1aXZSb2J1c3RBTkdM
RShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29u
c3QgR0NHTHVpbnQqIHBhcmFtcykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRUZXhQYXJhbWV0
ZXJJaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6
ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykgPSAwOwotICAg
IHZpcnR1YWwgdm9pZCBnZXRUZXhQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3Ro
LCBHQ0dMdWludCogcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHNhbXBsZXJQYXJhbWV0
ZXJJaXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNp
emVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xpbnQqIHBhcmFtKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lk
IHNhbXBsZXJQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVu
dW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMdWludCogcGFyYW0pID0gMDsK
LSAgICB2aXJ0dWFsIHZvaWQgZ2V0U2FtcGxlclBhcmFtZXRlcklpdlJvYnVzdEFOR0xFKEdDR0x1
aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVp
KiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRTYW1w
bGVyUGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBu
YW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0x1aW50KiBwYXJh
bXMpID0gMDsKLQotICAgIHZpcnR1YWwgdm9pZCBnZXRRdWVyeU9iamVjdGl2Um9idXN0QU5HTEUo
R0NHTHVpbnQgaWQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVp
KiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRRdWVy
eU9iamVjdGk2NHZSb2J1c3RBTkdMRShHQ0dMdWludCBpZCwgR0NHTGVudW0gcG5hbWUsIEdDR0xz
aXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludDY0KiBwYXJhbXMpID0gMDsK
LSAgICB2aXJ0dWFsIHZvaWQgZ2V0UXVlcnlPYmplY3R1aTY0dlJvYnVzdEFOR0xFKEdDR0x1aW50
IGlkLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3Ro
LCBHQ0dMdWludDY0KiBwYXJhbXMpID0gMDsKIAogICAgIC8vIE90aGVyIGZ1bmN0aW9ucy4KICNp
ZiAhVVNFKEFOR0xFKQpAQCAtMzUzLDE4ICszMDEsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2
b2lkIGdldG5Vbmlmb3JtZnZFWFQoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwg
R0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xmbG9hdCogcGFyYW1zKSA9IDA7CiAgICAgdmlydHVhbCB2
b2lkIGdldG5Vbmlmb3JtaXZFWFQoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwg
R0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xpbnQqIHBhcmFtcykgPSAwOwogI2VuZGlmCi0KLSAgICB2
aXJ0dWFsIGJvb2wgaXNOVklESUEoKSA9IDA7Ci0gICAgdmlydHVhbCBib29sIGlzQU1EKCkgPSAw
OwotICAgIHZpcnR1YWwgYm9vbCBpc0ludGVsKCkgPSAwOwotICAgIHZpcnR1YWwgYm9vbCBpc0lt
YWdpbmF0aW9uKCkgPSAwOwotICAgIHZpcnR1YWwgU3RyaW5nIHZlbmRvcigpID0gMDsKLQotICAg
IC8vIFNvbWUgY29uZmlndXJhdGlvbnMgaGF2ZSBidWdzIHJlZ2FyZGluZyBidWlsdC1pbiBmdW5j
dGlvbnMgaW4gdGhlaXIgT3BlbkdMIGRyaXZlcnMKLSAgICAvLyB0aGF0IG11c3QgYmUgYXZvaWRl
ZC4gUG9ydHMgc2hvdWxkIGltcGxlbWVudCB0aGVzZSBmbGFncyBvbiBzdWNoIGNvbmZpZ3VyYXRp
b25zLgotICAgIHZpcnR1YWwgYm9vbCByZXF1aXJlc0J1aWx0SW5GdW5jdGlvbkVtdWxhdGlvbigp
ID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgcmVxdWlyZXNSZXN0cmljdGVkTWF4aW11bVRleHR1cmVT
aXplKCkgPSAwOwotCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRlbnNpb25zR0xBTkdMRS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRlbnNpb25zR0xB
TkdMRS5jcHAKaW5kZXggMjgzZGE4MmM2YTYwLi4xZGE4NDJjZmQ3MjggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRlbnNpb25z
R0xBTkdMRS5jcHAKQEAgLTQzLDMxICs0MywxMCBAQCB0eXBlZGVmIHZvaWQqIEdMZWdsQ29udGV4
dDsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1FeHRlbnNpb25zR0xBTkdMRTo6RXh0ZW5zaW9u
c0dMQU5HTEUoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqIGNvbnRleHQsIGJvb2wgdXNlSW5kZXhl
ZEdldFN0cmluZykKK0V4dGVuc2lvbnNHTEFOR0xFOjpFeHRlbnNpb25zR0xBTkdMRShHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTCogY29udGV4dCkKICAgICA6IG1faW5pdGlhbGl6ZWRBdmFpbGFibGVF
eHRlbnNpb25zKGZhbHNlKQogICAgICwgbV9jb250ZXh0KGNvbnRleHQpCi0gICAgLCBtX2lzTlZJ
RElBKGZhbHNlKQotICAgICwgbV9pc0FNRChmYWxzZSkKLSAgICAsIG1faXNJbnRlbChmYWxzZSkK
LSAgICAsIG1faXNJbWFnaW5hdGlvbihmYWxzZSkKLSAgICAsIG1fcmVxdWlyZXNCdWlsdEluRnVu
Y3Rpb25FbXVsYXRpb24oZmFsc2UpCi0gICAgLCBtX3JlcXVpcmVzUmVzdHJpY3RlZE1heGltdW1U
ZXh0dXJlU2l6ZShmYWxzZSkKLSAgICAsIG1fdXNlSW5kZXhlZEdldFN0cmluZyh1c2VJbmRleGVk
R2V0U3RyaW5nKQotewotICAgIC8vIEZJWE1FOiBpZGVhbGx5LCByZW1vdmUgdGhpcyBpbml0aWFs
aXphdGlvbiBhbHRvZ2V0aGVyLiBBTkdMRQotICAgIC8vIHN1YnN1bWVzIHRoZSByZXNwb25zaWJp
bGl0eSBmb3IgZ3JhcGhpY3MgZHJpdmVyIHdvcmthcm91bmRzLgotICAgIG1fdmVuZG9yID0gU3Ry
aW5nKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGdsOjpHZXRTdHJpbmcoR0xfVkVORE9S
KSkpOwotICAgIG1fcmVuZGVyZXIgPSBTdHJpbmcocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFy
Kj4oZ2w6OkdldFN0cmluZyhHTF9SRU5ERVJFUikpKTsKLQotICAgIFZlY3RvcjxTdHJpbmc+IHZl
bmRvckNvbXBvbmVudHMgPSBtX3ZlbmRvci5jb252ZXJ0VG9BU0NJSUxvd2VyY2FzZSgpLnNwbGl0
KCcgJyk7Ci0gICAgaWYgKHZlbmRvckNvbXBvbmVudHMuY29udGFpbnMoIm52aWRpYSIpKQotICAg
ICAgICBtX2lzTlZJRElBID0gdHJ1ZTsKLSAgICBpZiAodmVuZG9yQ29tcG9uZW50cy5jb250YWlu
cygiYXRpIikgfHwgdmVuZG9yQ29tcG9uZW50cy5jb250YWlucygiYW1kIikpCi0gICAgICAgIG1f
aXNBTUQgPSB0cnVlOwotICAgIGlmICh2ZW5kb3JDb21wb25lbnRzLmNvbnRhaW5zKCJpbnRlbCIp
KQotICAgICAgICBtX2lzSW50ZWwgPSB0cnVlOwotICAgIGlmICh2ZW5kb3JDb21wb25lbnRzLmNv
bnRhaW5zKCJpbWFnaW5hdGlvbiIpKQotICAgICAgICBtX2lzSW1hZ2luYXRpb24gPSB0cnVlOwor
ewogfQogCiBFeHRlbnNpb25zR0xBTkdMRTo6fkV4dGVuc2lvbnNHTEFOR0xFKCkgPSBkZWZhdWx0
OwpAQCAtMTI4LDQyICsxMDcsMTUgQEAgU3RyaW5nIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRUcmFu
c2xhdGVkU2hhZGVyU291cmNlQU5HTEUoUGxhdGZvcm1HTE9iamVjdCBzaGFkZXIKIAogdm9pZCBF
eHRlbnNpb25zR0xBTkdMRTo6aW5pdGlhbGl6ZUF2YWlsYWJsZUV4dGVuc2lvbnMoKQogewotICAg
IGlmIChtX3VzZUluZGV4ZWRHZXRTdHJpbmcpIHsKLSAgICAgICAgR0xpbnQgbnVtRXh0ZW5zaW9u
cyA9IDA7Ci0gICAgICAgIGdsOjpHZXRJbnRlZ2VydihHTF9OVU1fRVhURU5TSU9OUywgJm51bUV4
dGVuc2lvbnMpOwotICAgICAgICBmb3IgKEdMaW50IGkgPSAwOyBpIDwgbnVtRXh0ZW5zaW9uczsg
KytpKQotICAgICAgICAgICAgbV9hdmFpbGFibGVFeHRlbnNpb25zLmFkZChnbDo6R2V0U3RyaW5n
aShHTF9FWFRFTlNJT05TLCBpKSk7Ci0gICAgICAgIGdsOjpHZXRJbnRlZ2VydihHTF9OVU1fUkVR
VUVTVEFCTEVfRVhURU5TSU9OU19BTkdMRSwgJm51bUV4dGVuc2lvbnMpOwotICAgICAgICBmb3Ig
KEdMaW50IGkgPSAwOyBpIDwgbnVtRXh0ZW5zaW9uczsgKytpKQotICAgICAgICAgICAgbV9yZXF1
ZXN0YWJsZUV4dGVuc2lvbnMuYWRkKGdsOjpHZXRTdHJpbmdpKEdMX1JFUVVFU1RBQkxFX0VYVEVO
U0lPTlNfQU5HTEUsIGkpKTsKLSAgICB9IGVsc2UgewotICAgICAgICBTdHJpbmcgZXh0ZW5zaW9u
c1N0cmluZyA9IGdldEV4dGVuc2lvbnMoKTsKLSAgICAgICAgZm9yIChhdXRvJiBleHRlbnNpb24g
OiBleHRlbnNpb25zU3RyaW5nLnNwbGl0KCcgJykpCi0gICAgICAgICAgICBtX2F2YWlsYWJsZUV4
dGVuc2lvbnMuYWRkKGV4dGVuc2lvbik7Ci0gICAgICAgIGV4dGVuc2lvbnNTdHJpbmcgPSBTdHJp
bmcocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZ2w6OkdldFN0cmluZyhHTF9SRVFVRVNU
QUJMRV9FWFRFTlNJT05TX0FOR0xFKSkpOwotICAgICAgICBmb3IgKGF1dG8mIGV4dGVuc2lvbiA6
IGV4dGVuc2lvbnNTdHJpbmcuc3BsaXQoJyAnKSkKLSAgICAgICAgICAgIG1fcmVxdWVzdGFibGVF
eHRlbnNpb25zLmFkZChleHRlbnNpb24pOwotICAgIH0KKyAgICBTdHJpbmcgZXh0ZW5zaW9uc1N0
cmluZyA9IGdldEV4dGVuc2lvbnMoKTsKKyAgICBmb3IgKGF1dG8mIGV4dGVuc2lvbiA6IGV4dGVu
c2lvbnNTdHJpbmcuc3BsaXQoJyAnKSkKKyAgICAgICAgbV9hdmFpbGFibGVFeHRlbnNpb25zLmFk
ZChleHRlbnNpb24pOworICAgIGV4dGVuc2lvbnNTdHJpbmcgPSBTdHJpbmcocmVpbnRlcnByZXRf
Y2FzdDxjb25zdCBjaGFyKj4oZ2w6OkdldFN0cmluZyhHTF9SRVFVRVNUQUJMRV9FWFRFTlNJT05T
X0FOR0xFKSkpOworICAgIGZvciAoYXV0byYgZXh0ZW5zaW9uIDogZXh0ZW5zaW9uc1N0cmluZy5z
cGxpdCgnICcpKQorICAgICAgICBtX3JlcXVlc3RhYmxlRXh0ZW5zaW9ucy5hZGQoZXh0ZW5zaW9u
KTsKICAgICBtX2luaXRpYWxpemVkQXZhaWxhYmxlRXh0ZW5zaW9ucyA9IHRydWU7CiB9CiAKLXZv
aWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmJsaXRGcmFtZWJ1ZmZlcihsb25nIHNyY1gwLCBsb25nIHNy
Y1kwLCBsb25nIHNyY1gxLCBsb25nIHNyY1kxLCBsb25nIGRzdFgwLCBsb25nIGRzdFkwLCBsb25n
IGRzdFgxLCBsb25nIGRzdFkxLCB1bnNpZ25lZCBsb25nIG1hc2ssIHVuc2lnbmVkIGxvbmcgZmls
dGVyKQotewotICAgIC8vIEZJWE1FOiBjb25zaWRlciBhZGRpbmcgc3VwcG9ydCBmb3IgQVBQTEVf
ZnJhbWVidWZmZXJfbXVsdGlzYW1wbGUuCi0gICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0
Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6QmxpdEZyYW1lYnVmZmVyQU5H
TEUoc3JjWDAsIHNyY1kwLCBzcmNYMSwgc3JjWTEsIGRzdFgwLCBkc3RZMCwgZHN0WDEsIGRzdFkx
LCBtYXNrLCBmaWx0ZXIpOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpyZW5kZXJidWZm
ZXJTdG9yYWdlTXVsdGlzYW1wbGUodW5zaWduZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcg
c2FtcGxlcywgdW5zaWduZWQgbG9uZyBpbnRlcm5hbGZvcm1hdCwgdW5zaWduZWQgbG9uZyB3aWR0
aCwgdW5zaWduZWQgbG9uZyBoZWlnaHQpCi17Ci0gICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250
ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6UmVuZGVyYnVmZmVyU3Rv
cmFnZU11bHRpc2FtcGxlQU5HTEUodGFyZ2V0LCBzYW1wbGVzLCBpbnRlcm5hbGZvcm1hdCwgd2lk
dGgsIGhlaWdodCk7Ci19Ci0KIFBsYXRmb3JtR0xPYmplY3QgRXh0ZW5zaW9uc0dMQU5HTEU6OmNy
ZWF0ZVZlcnRleEFycmF5T0VTKCkKIHsKICAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRD
dXJyZW50KCkpCkBAIC0yMDQsMjQgKzE1Niw2IEBAIHZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmJp
bmRWZXJ0ZXhBcnJheU9FUyhQbGF0Zm9ybUdMT2JqZWN0IGFycmF5KQogICAgIGdsOjpCaW5kVmVy
dGV4QXJyYXlPRVMoYXJyYXkpOwogfQogCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjppbnNlcnRF
dmVudE1hcmtlckVYVChjb25zdCBTdHJpbmcmKQotewotICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQg
dGhpcyBmdW5jdGlvbiBhbmQgYWRkIEdMX0VYVF9kZWJ1Z19tYXJrZXIgaW4gc3VwcG9ydHMoKS4K
LSAgICByZXR1cm47Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OnB1c2hHcm91cE1hcmtl
ckVYVChjb25zdCBTdHJpbmcmKQotewotICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQgdGhpcyBmdW5j
dGlvbiBhbmQgYWRkIEdMX0VYVF9kZWJ1Z19tYXJrZXIgaW4gc3VwcG9ydHMoKS4KLSAgICByZXR1
cm47Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OnBvcEdyb3VwTWFya2VyRVhUKHZvaWQp
Ci17Ci0gICAgLy8gRklYTUU6IGltcGxlbWVudCB0aGlzIGZ1bmN0aW9uIGFuZCBhZGQgR0xfRVhU
X2RlYnVnX21hcmtlciBpbiBzdXBwb3J0cygpLgotICAgIHJldHVybjsKLX0KLQogYm9vbCBFeHRl
bnNpb25zR0xBTkdMRTo6c3VwcG9ydHNFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBuYW1lKQogewog
ICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMobmFtZSkgfHwgbV9yZXF1
ZXN0YWJsZUV4dGVuc2lvbnMuY29udGFpbnMobmFtZSk7CkBAIC0yNzgsNiArMjEyLDcgQEAgR0NH
TGVudW0gRXh0ZW5zaW9uc0dMQU5HTEU6OmFkanVzdFdlYkdMMVRleHR1cmVJbnRlcm5hbEZvcm1h
dChHQ0dMZW51bSBpbnRlcm5hbGYKIH0KIAogLy8gR0xfQU5HTEVfcm9idXN0X2NsaWVudF9tZW1v
cnkKKyNpZiAwCiB2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpyZWFkUGl4ZWxzUm9idXN0QU5HTEUo
aW50IHgsIGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVt
IGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVu
Z3RoLCBHQ0dMc2l6ZWkgKmNvbHVtbnMsIEdDR0xzaXplaSAqcm93cywgdm9pZCAqcGl4ZWxzKQog
ewogICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKQEAgLTQ1NSw2ICsz
OTAsNyBAQCB2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRQb2ludGVydlJvYnVzdEFOR0xFUm9i
dXN0QU5HTEUoR0NHTGVudW0gcG5hbWUsIEdDR0xzaQogCiAgICAgZ2w6OkdldFBvaW50ZXJ2Um9i
dXN0QU5HTEVSb2J1c3RBTkdMRShwbmFtZSwgYnVmU2l6ZSwgbGVuZ3RoLCBwYXJhbXMpOwogfQor
I2VuZGlmCiAKICNpZiBQTEFURk9STShNQUMpIHx8IFBMQVRGT1JNKElPU19GQU1JTFkpCiBzdGF0
aWMgdm9pZCB3aXBlQWxwaGFDaGFubmVsRnJvbVBpeGVscyhpbnQgd2lkdGgsIGludCBoZWlnaHQs
IHVuc2lnbmVkIGNoYXIqIHBpeGVscykKQEAgLTUwMyw3ICs0MzksNyBAQCB2b2lkIEV4dGVuc2lv
bnNHTEFOR0xFOjpyZWFkblBpeGVsc1JvYnVzdEFOR0xFKGludCB4LCBpbnQgeSwgR0NHTHNpemVp
IHdpZHRoLCBHQwogICAgIFVOVVNFRF9QQVJBTShyZWFkaW5nVG9QaXhlbEJ1ZmZlck9iamVjdCk7
CiAjZW5kaWYKIH0KLQorI2lmIDAKIHZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldG5Vbmlmb3Jt
ZnZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBi
dWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGZsb2F0ICpwYXJhbXMpCiB7CiAgICAgaWYg
KCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQpAQCAtNjE2LDcgKzU1Miw3IEBAIHZv
aWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldFF1ZXJ5T2JqZWN0dWk2NHZSb2J1c3RBTkdMRShHQ0dM
dWludCBpZCwgR0NHTGVudW0gcG5hCiAKICAgICBnbDo6R2V0UXVlcnlPYmplY3R1aTY0dlJvYnVz
dEFOR0xFKGlkLCBwbmFtZSwgYnVmU2l6ZSwgbGVuZ3RoLCByZWludGVycHJldF9jYXN0PEdMdWlu
dDY0Kj4ocGFyYW1zKSk7CiB9Ci0KKyNlbmRpZgogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0V4dGVu
c2lvbnNHTEFOR0xFLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9F
eHRlbnNpb25zR0xBTkdMRS5oCmluZGV4IGE3NzMxZGZkMjBjNS4uYjU0ZTM0ODc2NWU4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRlbnNpb25z
R0xBTkdMRS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0V4
dGVuc2lvbnNHTEFOR0xFLmgKQEAgLTM2LDcgKzM2LDcgQEAgY2xhc3MgRXh0ZW5zaW9uc0dMQU5H
TEUgOiBwdWJsaWMgRXh0ZW5zaW9uc0dMIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
IHB1YmxpYzoKICAgICAvLyBUaGlzIGNsYXNzIG9ubHkgbmVlZHMgdG8gYmUgaW5zdGFudGlhdGVk
IGJ5IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMIGltcGxlbWVudGF0aW9ucy4KLSAgICBFeHRlbnNp
b25zR0xBTkdMRShHcmFwaGljc0NvbnRleHRHTE9wZW5HTCosIGJvb2wgdXNlSW5kZXhlZEdldFN0
cmluZyA9IGZhbHNlKTsKKyAgICBFeHRlbnNpb25zR0xBTkdMRShHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTCopOwogICAgIHZpcnR1YWwgfkV4dGVuc2lvbnNHTEFOR0xFKCk7CiAKICAgICAvLyBFeHRl
bnNpb25zR0wgbWV0aG9kcy4KQEAgLTQ5LDMwICs0OSwxNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBk
ZWxldGVWZXJ0ZXhBcnJheU9FUyhQbGF0Zm9ybUdMT2JqZWN0KSBvdmVycmlkZTsKICAgICBHQ0dM
Ym9vbGVhbiBpc1ZlcnRleEFycmF5T0VTKFBsYXRmb3JtR0xPYmplY3QpIG92ZXJyaWRlOwogICAg
IHZvaWQgYmluZFZlcnRleEFycmF5T0VTKFBsYXRmb3JtR0xPYmplY3QpIG92ZXJyaWRlOwotICAg
IHZvaWQgaW5zZXJ0RXZlbnRNYXJrZXJFWFQoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7Ci0gICAg
dm9pZCBwdXNoR3JvdXBNYXJrZXJFWFQoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7Ci0gICAgdm9p
ZCBwb3BHcm91cE1hcmtlckVYVCh2b2lkKSBvdmVycmlkZTsKICAgICB2b2lkIGRyYXdCdWZmZXJz
RVhUKEdDR0xTcGFuPGNvbnN0IEdDR0xlbnVtPikgb3ZlcnJpZGU7CiAKICAgICBTdHJpbmcgZ2V0
VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFKFBsYXRmb3JtR0xPYmplY3QpIG92ZXJyaWRlOwog
Ci0gICAgdm9pZCBibGl0RnJhbWVidWZmZXIobG9uZyBzcmNYMCwgbG9uZyBzcmNZMCwgbG9uZyBz
cmNYMSwgbG9uZyBzcmNZMSwgbG9uZyBkc3RYMCwgbG9uZyBkc3RZMCwgbG9uZyBkc3RYMSwgbG9u
ZyBkc3RZMSwgdW5zaWduZWQgbG9uZyBtYXNrLCB1bnNpZ25lZCBsb25nIGZpbHRlcikgb3ZlcnJp
ZGU7Ci0gICAgdm9pZCByZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUodW5zaWduZWQgbG9u
ZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgc2FtcGxlcywgdW5zaWduZWQgbG9uZyBpbnRlcm5hbGZv
cm1hdCwgdW5zaWduZWQgbG9uZyB3aWR0aCwgdW5zaWduZWQgbG9uZyBoZWlnaHQpIG92ZXJyaWRl
OwotCiAgICAgdm9pZCBkcmF3QXJyYXlzSW5zdGFuY2VkKEdDR0xlbnVtIG1vZGUsIEdDR0xpbnQg
Zmlyc3QsIEdDR0xzaXplaSBjb3VudCwgR0NHTHNpemVpIHByaW1jb3VudCkgb3ZlcnJpZGU7CiAg
ICAgdm9pZCBkcmF3RWxlbWVudHNJbnN0YW5jZWQoR0NHTGVudW0gbW9kZSwgR0NHTHNpemVpIGNv
dW50LCBHQ0dMZW51bSB0eXBlLCBsb25nIGxvbmcgb2Zmc2V0LCBHQ0dMc2l6ZWkgcHJpbWNvdW50
KSBvdmVycmlkZTsKICAgICB2b2lkIHZlcnRleEF0dHJpYkRpdmlzb3IoR0NHTHVpbnQgaW5kZXgs
IEdDR0x1aW50IGRpdmlzb3IpIG92ZXJyaWRlOwogCi0gICAgYm9vbCBpc05WSURJQSgpIG92ZXJy
aWRlIHsgcmV0dXJuIG1faXNOVklESUE7IH0KLSAgICBib29sIGlzQU1EKCkgb3ZlcnJpZGUgeyBy
ZXR1cm4gbV9pc0FNRDsgfQotICAgIGJvb2wgaXNJbnRlbCgpIG92ZXJyaWRlIHsgcmV0dXJuIG1f
aXNJbnRlbDsgfQotICAgIGJvb2wgaXNJbWFnaW5hdGlvbigpIG92ZXJyaWRlIHsgcmV0dXJuIG1f
aXNJbWFnaW5hdGlvbjsgfQotICAgIFN0cmluZyB2ZW5kb3IoKSBvdmVycmlkZSB7IHJldHVybiBt
X3ZlbmRvcjsgfQotCi0gICAgYm9vbCByZXF1aXJlc0J1aWx0SW5GdW5jdGlvbkVtdWxhdGlvbigp
IG92ZXJyaWRlIHsgcmV0dXJuIG1fcmVxdWlyZXNCdWlsdEluRnVuY3Rpb25FbXVsYXRpb247IH0K
LSAgICBib29sIHJlcXVpcmVzUmVzdHJpY3RlZE1heGltdW1UZXh0dXJlU2l6ZSgpIG92ZXJyaWRl
IHsgcmV0dXJuIG1fcmVxdWlyZXNSZXN0cmljdGVkTWF4aW11bVRleHR1cmVTaXplOyB9Ci0KICAg
ICAvLyBHTF9BTkdMRV9yb2J1c3RfY2xpZW50X21lbW9yeQorI2lmIDAKICAgICB2b2lkIHJlYWRQ
aXhlbHNSb2J1c3RBTkdMRShHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBH
Q0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXpl
aSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHNpemVpICpjb2x1bW5zLCBHQ0dMc2l6
ZWkgKnJvd3MsIHZvaWQgKnBpeGVscykgb3ZlcnJpZGU7CiAgICAgdm9pZCB0ZXhQYXJhbWV0ZXJm
dlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBi
dWZTaXplLCBjb25zdCBHQ0dMZmxvYXQgKnBhcmFtcykgb3ZlcnJpZGU7CiAgICAgdm9pZCB0ZXhQ
YXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdD
R0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJyaWRlOwpAQCAtOTcs
NyArODMsMTAgQEAgcHVibGljOgogICAgIHZvaWQgZ2V0VGV4TGV2ZWxQYXJhbWV0ZXJmdlJvYnVz
dEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gcG5hbWUsIEdD
R0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGZsb2F0ICpwYXJhbXMpIG92
ZXJyaWRlOwogCiAgICAgdm9pZCBnZXRQb2ludGVydlJvYnVzdEFOR0xFUm9idXN0QU5HTEUoR0NH
TGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgdm9pZCAq
KnBhcmFtcykgb3ZlcnJpZGU7CisjZW5kaWYKKwogICAgIHZvaWQgcmVhZG5QaXhlbHNSb2J1c3RB
TkdMRShHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVp
Z2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXplLCBH
Q0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHNpemVpICpjb2x1bW5zLCBHQ0dMc2l6ZWkgKnJvd3MsIHZv
aWQgKmRhdGEsIGJvb2wgcmVhZGluZ1RvUGl4ZWxCdWZmZXJPYmplY3QpIG92ZXJyaWRlOworI2lm
IDAKICAgICB2b2lkIGdldG5Vbmlmb3JtZnZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBH
Q0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdD
R0xmbG9hdCAqcGFyYW1zKSBvdmVycmlkZTsKICAgICB2b2lkIGdldG5Vbmlmb3JtaXZSb2J1c3RB
TkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6
ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBnZXRuVW5pZm9ybXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9j
YXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHVpbnQgKnBh
cmFtcykgb3ZlcnJpZGU7CkBAIC0xMTMsNyArMTAyLDcgQEAgcHVibGljOgogICAgIHZvaWQgZ2V0
UXVlcnlPYmplY3RpdlJvYnVzdEFOR0xFKEdDR0x1aW50IGlkLCBHQ0dMZW51bSBwbmFtZSwgR0NH
THNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJy
aWRlOwogICAgIHZvaWQgZ2V0UXVlcnlPYmplY3RpNjR2Um9idXN0QU5HTEUoR0NHTHVpbnQgaWQs
IEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdD
R0xpbnQ2NCAqcGFyYW1zKSBvdmVycmlkZTsKICAgICB2b2lkIGdldFF1ZXJ5T2JqZWN0dWk2NHZS
b2J1c3RBTkdMRShHQ0dMdWludCBpZCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXpl
LCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHVpbnQ2NCAqcGFyYW1zKSBvdmVycmlkZTsKLQorI2Vu
ZGlmCiAgICAgLy8gT25seSBmb3Igbm9uLVdlYkdMIDIuMCBjb250ZXh0cy4KICAgICBHQ0dMZW51
bSBhZGp1c3RXZWJHTDFUZXh0dXJlSW50ZXJuYWxGb3JtYXQoR0NHTGVudW0gaW50ZXJuYWxmb3Jt
YXQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSk7CiAKQEAgLTEyOSwxOSArMTE4LDYg
QEAgcHJpdmF0ZToKIAogICAgIC8vIFdlYWsgcG9pbnRlciBiYWNrIHRvIEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMLgogICAgIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiBtX2NvbnRleHQ7Ci0KLSAg
ICBib29sIG1faXNOVklESUE7Ci0gICAgYm9vbCBtX2lzQU1EOwotICAgIGJvb2wgbV9pc0ludGVs
OwotICAgIGJvb2wgbV9pc0ltYWdpbmF0aW9uOwotICAgIGJvb2wgbV9yZXF1aXJlc0J1aWx0SW5G
dW5jdGlvbkVtdWxhdGlvbjsKLSAgICBib29sIG1fcmVxdWlyZXNSZXN0cmljdGVkTWF4aW11bVRl
eHR1cmVTaXplOwotCi0gICAgYm9vbCBtX3VzZUluZGV4ZWRHZXRTdHJpbmcgeyBmYWxzZSB9Owot
Ci0gICAgU3RyaW5nIG1fdmVuZG9yOwotICAgIFN0cmluZyBtX3JlbmRlcmVyOwotCiAgICAgLy8g
V2hldGhlciB0aGUgV2ViR0wgMS4wLXJlbGF0ZWQgZmxvYXRpbmctcG9pbnQgcmVuZGVyYWJpbGl0
eSBleHRlbnNpb25zIGhhdmUgYmVlbiBlbmFibGVkLgogICAgIGJvb2wgbV93ZWJnbENvbG9yQnVm
ZmVyRmxvYXRSR0IgeyBmYWxzZSB9OwogICAgIGJvb2wgbV93ZWJnbENvbG9yQnVmZmVyRmxvYXRS
R0JBIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTC5jcHAKaW5kZXggN2VjODFjZjRh
ZTU3Li43NmRjMzJjMTc2YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuY3BwCkBAIC00Nywy
MyArNDcsNiBAQCBFeHRlbnNpb25zR0xPcGVuR0w6OkV4dGVuc2lvbnNHTE9wZW5HTChHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTCogY29udGV4dCwgYm9vbCB1cwogCiBFeHRlbnNpb25zR0xPcGVuR0w6
On5FeHRlbnNpb25zR0xPcGVuR0woKSA9IGRlZmF1bHQ7CiAKLQotdm9pZCBFeHRlbnNpb25zR0xP
cGVuR0w6OmJsaXRGcmFtZWJ1ZmZlcihsb25nIHNyY1gwLCBsb25nIHNyY1kwLCBsb25nIHNyY1gx
LCBsb25nIHNyY1kxLCBsb25nIGRzdFgwLCBsb25nIGRzdFkwLCBsb25nIGRzdFgxLCBsb25nIGRz
dFkxLCB1bnNpZ25lZCBsb25nIG1hc2ssIHVuc2lnbmVkIGxvbmcgZmlsdGVyKQotewotICAgIGlm
ICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0g
ICAgOjpnbEJsaXRGcmFtZWJ1ZmZlckVYVChzcmNYMCwgc3JjWTAsIHNyY1gxLCBzcmNZMSwgZHN0
WDAsIGRzdFkwLCBkc3RYMSwgZHN0WTEsIG1hc2ssIGZpbHRlcik7Ci19Ci0KLXZvaWQgRXh0ZW5z
aW9uc0dMT3BlbkdMOjpyZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUodW5zaWduZWQgbG9u
ZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgc2FtcGxlcywgdW5zaWduZWQgbG9uZyBpbnRlcm5hbGZv
cm1hdCwgdW5zaWduZWQgbG9uZyB3aWR0aCwgdW5zaWduZWQgbG9uZyBoZWlnaHQpCi17Ci0gICAg
aWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0K
LSAgICA6OmdsUmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlRVhUKHRhcmdldCwgc2FtcGxl
cywgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQpOwotfQotCiBQbGF0Zm9ybUdMT2JqZWN0
IEV4dGVuc2lvbnNHTE9wZW5HTDo6Y3JlYXRlVmVydGV4QXJyYXlPRVMoKQogewogICAgIGlmICgh
bV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuaApp
bmRleCA0OTYyODljZWEwZTYuLjdjMmMwZTIyODBmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wu
aApAQCAtNDAsOSArNDAsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+RXh0ZW5zaW9uc0dMT3Bl
bkdMKCk7CiAKICAgICAvLyBFeHRlbnNpb25zR0wgbWV0aG9kcy4KLSAgICB2b2lkIGJsaXRGcmFt
ZWJ1ZmZlcihsb25nIHNyY1gwLCBsb25nIHNyY1kwLCBsb25nIHNyY1gxLCBsb25nIHNyY1kxLCBs
b25nIGRzdFgwLCBsb25nIGRzdFkwLCBsb25nIGRzdFgxLCBsb25nIGRzdFkxLCB1bnNpZ25lZCBs
b25nIG1hc2ssIHVuc2lnbmVkIGxvbmcgZmlsdGVyKSBvdmVycmlkZTsKLSAgICB2b2lkIHJlbmRl
cmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZSh1bnNpZ25lZCBsb25nIHRhcmdldCwgdW5zaWduZWQg
bG9uZyBzYW1wbGVzLCB1bnNpZ25lZCBsb25nIGludGVybmFsZm9ybWF0LCB1bnNpZ25lZCBsb25n
IHdpZHRoLCB1bnNpZ25lZCBsb25nIGhlaWdodCkgb3ZlcnJpZGU7Ci0KICAgICBQbGF0Zm9ybUdM
T2JqZWN0IGNyZWF0ZVZlcnRleEFycmF5T0VTKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkZWxldGVW
ZXJ0ZXhBcnJheU9FUyhQbGF0Zm9ybUdMT2JqZWN0KSBvdmVycmlkZTsKICAgICBHQ0dMYm9vbGVh
biBpc1ZlcnRleEFycmF5T0VTKFBsYXRmb3JtR0xPYmplY3QpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9w
ZW5HTENvbW1vbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4
dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5oCmluZGV4IGJmZTQ1MjE1NDNmZi4uZjFlZmQxNTFkOGI4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0
ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5oCkBAIC01OSwxNiArNTksMTEg
QEAgcHVibGljOgogICAgIHZvaWQgZ2V0blVuaWZvcm1mdkVYVChHQ0dMdWludCBwcm9ncmFtLCBp
bnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBmbG9hdCAqcGFyYW1zKSBvdmVycmlkZTsK
ICAgICB2b2lkIGdldG5Vbmlmb3JtaXZFWFQoR0NHTHVpbnQgcHJvZ3JhbSwgaW50IGxvY2F0aW9u
LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgaW50ICpwYXJhbXMpIG92ZXJyaWRlOwogCi0gICAgYm9vbCBp
c05WSURJQSgpIG92ZXJyaWRlIHsgcmV0dXJuIG1faXNOVklESUE7IH0KLSAgICBib29sIGlzQU1E
KCkgb3ZlcnJpZGUgeyByZXR1cm4gbV9pc0FNRDsgfQotICAgIGJvb2wgaXNJbnRlbCgpIG92ZXJy
aWRlIHsgcmV0dXJuIG1faXNJbnRlbDsgfQotICAgIGJvb2wgaXNJbWFnaW5hdGlvbigpIG92ZXJy
aWRlIHsgcmV0dXJuIG1faXNJbWFnaW5hdGlvbjsgfQotICAgIFN0cmluZyB2ZW5kb3IoKSBvdmVy
cmlkZSB7IHJldHVybiBtX3ZlbmRvcjsgfQotCiAgICAgYm9vbCByZXF1aXJlc0J1aWx0SW5GdW5j
dGlvbkVtdWxhdGlvbigpIG92ZXJyaWRlIHsgcmV0dXJuIG1fcmVxdWlyZXNCdWlsdEluRnVuY3Rp
b25FbXVsYXRpb247IH0KICAgICBib29sIHJlcXVpcmVzUmVzdHJpY3RlZE1heGltdW1UZXh0dXJl
U2l6ZSgpIG92ZXJyaWRlIHsgcmV0dXJuIG1fcmVxdWlyZXNSZXN0cmljdGVkTWF4aW11bVRleHR1
cmVTaXplOyB9CiAKICAgICAvLyBHTF9BTkdMRV9yb2J1c3RfY2xpZW50X21lbW9yeQorI2lmIDAK
ICAgICB2b2lkIHJlYWRQaXhlbHNSb2J1c3RBTkdMRShpbnQgeCwgaW50IHksIEdDR0xzaXplaSB3
aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBH
Q0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xzaXplaSAqY29sdW1ucywg
R0NHTHNpemVpICpyb3dzLCB2b2lkICpwaXhlbHMpIG92ZXJyaWRlOwogICAgIHZvaWQgdGV4UGFy
YW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dM
c2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGZsb2F0ICpwYXJhbXMpIG92ZXJyaWRlOwogICAgIHZv
aWQgdGV4UGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBu
YW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGludCAqcGFyYW1zKSBvdmVycmlkZTsK
QEAgLTkzLDcgKzg4LDExIEBAIHB1YmxpYzoKICAgICB2b2lkIGdldFRleExldmVsUGFyYW1ldGVy
ZnZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIGludCBsZXZlbCwgR0NHTGVudW0gcG5hbWUs
IEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGZsb2F0ICpwYXJhbXMp
IG92ZXJyaWRlOwogCiAgICAgdm9pZCBnZXRQb2ludGVydlJvYnVzdEFOR0xFUm9idXN0QU5HTEUo
R0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgdm9p
ZCAqKnBhcmFtcykgb3ZlcnJpZGU7CisjZW5kaWYKKwogICAgIHZvaWQgcmVhZG5QaXhlbHNSb2J1
c3RBTkdMRShpbnQgeCwgaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwg
R0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNp
emVpICpsZW5ndGgsIEdDR0xzaXplaSAqY29sdW1ucywgR0NHTHNpemVpICpyb3dzLCB2b2lkICpk
YXRhLCBib29sIHJlYWRpbmdUb1BpeGVsQnVmZmVyT2JqZWN0KSBvdmVycmlkZTsKKyAgICAKKyNp
ZiAwCiAgICAgdm9pZCBnZXRuVW5pZm9ybWZ2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwg
aW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xm
bG9hdCAqcGFyYW1zKSBvdmVycmlkZTsKICAgICB2b2lkIGdldG5Vbmlmb3JtaXZSb2J1c3RBTkdM
RShHQ0dMdWludCBwcm9ncmFtLCBpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dM
c2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVycmlkZTsKICAgICB2b2lkIGdldG5V
bmlmb3JtdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgaW50IGxvY2F0aW9uLCBHQ0dM
c2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0x1aW50ICpwYXJhbXMpIG92ZXJy
aWRlOwpAQCAtMTA5LDYgKzEwOCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGdldFF1ZXJ5T2JqZWN0
aXZSb2J1c3RBTkdMRShHQ0dMdWludCBpZCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZT
aXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVycmlkZTsKICAgICB2
b2lkIGdldFF1ZXJ5T2JqZWN0aTY0dlJvYnVzdEFOR0xFKEdDR0x1aW50IGlkLCBHQ0dMZW51bSBw
bmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50NjQgKnBh
cmFtcykgb3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRRdWVyeU9iamVjdHVpNjR2Um9idXN0QU5HTEUo
R0NHTHVpbnQgaWQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVp
ICpsZW5ndGgsIEdDR0x1aW50NjQgKnBhcmFtcykgb3ZlcnJpZGU7CisjZW5kaWYKIAogcHJvdGVj
dGVkOgogICAgIGZyaWVuZCBjbGFzcyBFeHRlbnNpb25zR0xPcGVuR0xFUzsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVu
R0xFUy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5z
aW9uc0dMT3BlbkdMRVMuY3BwCmluZGV4IDM2YzNlZjM4Zjk4Yi4uYTcwMTY0ZjkwYzYwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9u
c0dMT3BlbkdMRVMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29w
ZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xFUy5jcHAKQEAgLTEwMCwxMSArMTAwLDYgQEAgdm9pZCBF
eHRlbnNpb25zR0xPcGVuR0xFUzo6cmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlSU1HKHVu
c2lnbmVkIGxvbmcgdGFyZ2UKICAgICAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihH
TF9JTlZBTElEX09QRVJBVElPTik7CiB9CiAKLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMRVM6OmJs
aXRGcmFtZWJ1ZmZlcihsb25nIC8qIHNyY1gwICovLCBsb25nIC8qIHNyY1kwICovLCBsb25nIC8q
IHNyY1gxICovLCBsb25nIC8qIHNyY1kxICovLCBsb25nIC8qIGRzdFgwICovLCBsb25nIC8qIGRz
dFkwICovLCBsb25nIC8qIGRzdFgxICovLCBsb25nIC8qIGRzdFkxICovLCB1bnNpZ25lZCBsb25n
IC8qIG1hc2sgKi8sIHVuc2lnbmVkIGxvbmcgLyogZmlsdGVyICovKQotewotICAgIG5vdEltcGxl
bWVudGVkKCk7Ci19Ci0KIHZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMRVM6OnJlbmRlcmJ1ZmZlclN0
b3JhZ2VNdWx0aXNhbXBsZSh1bnNpZ25lZCBsb25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBzYW1w
bGVzLCB1bnNpZ25lZCBsb25nIGludGVybmFsZm9ybWF0LCB1bnNpZ25lZCBsb25nIHdpZHRoLCB1
bnNpZ25lZCBsb25nIGhlaWdodCkKIHsKICAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRD
dXJyZW50KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9v
cGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMRVMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xFUy5oCmluZGV4IDAxN2E0NWI3Mzk4ZC4u
N2VmOTZiMjNjNTk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMRVMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMRVMuaApAQCAtNzIsMTQgKzcy
LDEwIEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBmcmFtZWJ1ZmZlclRleHR1cmUyRE11
bHRpc2FtcGxlSU1HKHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25nIGF0dGFjaG1l
bnQsIHVuc2lnbmVkIGxvbmcgdGV4dGFyZ2V0LCB1bnNpZ25lZCB0ZXh0dXJlLCBpbnQgbGV2ZWws
IHVuc2lnbmVkIGxvbmcgc2FtcGxlcyk7CiAgICAgdmlydHVhbCB2b2lkIHJlbmRlcmJ1ZmZlclN0
b3JhZ2VNdWx0aXNhbXBsZUlNRyh1bnNpZ25lZCBsb25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBz
YW1wbGVzLCB1bnNpZ25lZCBsb25nIGludGVybmFsZm9ybWF0LCB1bnNpZ25lZCBsb25nIHdpZHRo
LCB1bnNpZ25lZCBsb25nIGhlaWdodCk7CisgICAgdm9pZCByZW5kZXJidWZmZXJTdG9yYWdlTXVs
dGlzYW1wbGUodW5zaWduZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgc2FtcGxlcywgdW5z
aWduZWQgbG9uZyBpbnRlcm5hbGZvcm1hdCwgdW5zaWduZWQgbG9uZyB3aWR0aCwgdW5zaWduZWQg
bG9uZyBoZWlnaHQpOwogCiAgICAgLy8gRXh0ZW5zaW9uM0QgbWV0aG9kcwogICAgIGJvb2wgaXNF
bmFibGVkKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwotICAgIHZvaWQgYmxpdEZyYW1lYnVmZmVy
KGxvbmcgc3JjWDAsIGxvbmcgc3JjWTAsIGxvbmcgc3JjWDEsIGxvbmcgc3JjWTEsIGxvbmcgZHN0
WDAsIGxvbmcgZHN0WTAsIGxvbmcgZHN0WDEsIGxvbmcgZHN0WTEsIHVuc2lnbmVkIGxvbmcgbWFz
aywgdW5zaWduZWQgbG9uZyBmaWx0ZXIpIG92ZXJyaWRlOwotICAgIHZvaWQgcmVuZGVyYnVmZmVy
U3RvcmFnZU11bHRpc2FtcGxlKHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25nIHNh
bXBsZXMsIHVuc2lnbmVkIGxvbmcgaW50ZXJuYWxmb3JtYXQsIHVuc2lnbmVkIGxvbmcgd2lkdGgs
IHVuc2lnbmVkIGxvbmcgaGVpZ2h0KSBvdmVycmlkZTsKLSAgICB2b2lkIGluc2VydEV2ZW50TWFy
a2VyRVhUKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwotICAgIHZvaWQgcHVzaEdyb3VwTWFya2Vy
RVhUKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwotICAgIHZvaWQgcG9wR3JvdXBNYXJrZXJFWFQo
dm9pZCkgb3ZlcnJpZGU7CiAKICAgICBQbGF0Zm9ybUdMT2JqZWN0IGNyZWF0ZVZlcnRleEFycmF5
T0VTKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkZWxldGVWZXJ0ZXhBcnJheU9FUyhQbGF0Zm9ybUdM
T2JqZWN0KSBvdmVycmlkZTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>415160</attachid>
            <date>2020-12-01 14:15:15 -0800</date>
            <delta_ts>2020-12-01 14:59:05 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-218896-20201201141514.patch</filename>
            <type>text/plain</type>
            <size>37451</size>
            <attacher name="Rini Patel">rini_patel</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwMjU1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTg2NmY3ODkzZWY2Njhh
Y2ZhOWQ1M2Q1YmEzMGE2ZjMxOGFlMDM3Ny4uYWQ1Mjc0ZmU5Mjk4MTcyMTc4M2YzZTIyYTJmNjM2
Yzg3OTJiMTcxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDIwLTExLTMwICBSaW5p
IFBhdGVsICA8cmluaV9wYXRlbEBhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3ZlIHVudXNlZCBm
dW5jdGlvbnMgZnJvbSBHcmFwaGljc0NvbnRleHRHTCBhbmQgRXh0ZW5zaW9uc0dMCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTg4OTYKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW1vdmUgdW51c2VkIGZ1
bmN0aW9ucyBmcm9tIEdyYXBoaWNzQ29udGV4dEdMIGFuZCBFeHRlbnNpb25zR0wKKyAgICAgICAg
VGhleSdyZSBkZWFkIGNvZGUgYW5kIG1ha2UgaXQgaGFyZGVyIHRvIGltcGxlbWVudCB0aGUgR1BV
IFByb2Nlc3MgdmVyc2lvbi4KKworICAgICAgICAtIElmIHRoZSBmdW5jdGlvbiBpcyB1bnVzZWQs
IHJlbW92ZSBpdCBmdWxseQorICAgICAgICAtIElmIHRoZSBmdW5jdGlvbiBpcyB1bnVzZWQgaW4g
VVNFKEFOR0xFKSBXZWJHTCBwYXJ0LCByZW1vdmUgdGhlIGZ1bmN0aW9uIGZyb20gR3JhcGhpY3ND
b250ZXh0R0wgYW5kIEFOR0xFIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMCisKKyAgICAgICAgKiBo
dG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvRXh0ZW5zaW9uc0dMLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
YW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9u
c0dMQU5HTEU6OkV4dGVuc2lvbnNHTEFOR0xFKToKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lv
bnNHTEFOR0xFOjppbml0aWFsaXplQXZhaWxhYmxlRXh0ZW5zaW9ucyk6CisgICAgICAgIChXZWJD
b3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6YmxpdEZyYW1lYnVmZmVyKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpyZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlz
YW1wbGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6Omlu
c2VydEV2ZW50TWFya2VyRVhUKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lv
bnNHTEFOR0xFOjpwdXNoR3JvdXBNYXJrZXJFWFQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OnBvcEdyb3VwTWFya2VyRVhUKTogRGVsZXRlZC4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRlbnNpb25zR0xBTkdMRS5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMOjpibGl0RnJhbWVidWZmZXIpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMOjpyZW5kZXJidWZmZXJT
dG9yYWdlTXVsdGlzYW1wbGUpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMRVMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXh0
ZW5zaW9uc0dMT3BlbkdMRVM6OmJsaXRGcmFtZWJ1ZmZlcik6IERlbGV0ZWQuCisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVTLmg6CisKIDIwMjAt
MTEtMzAgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIE1pc3Np
bmcgV2ViUlRDIE1ldHJpY3MgaW4gaU9TIDE0IEJldGEgNQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcAppbmRleCA1
NTc4NGUxYTMzZWMwNWI0MDI5NTMxMGY2ZWIwZTdjZTBhNWU5OGRkLi4yYWVjZWI4YTk1MDNlZDM5
MmViNzE1ZDM2ODJjZmI5YTU1ZWI0NTM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcApAQCAtNzQxLDEwICs3
NDEsNiBAQCBzdGQ6OnVuaXF1ZV9wdHI8V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZT4gV2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZTo6Y3JlYXRlKENhbgogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
ICAgICB9CiAKLSAgICBhdXRvJiBleHRlbnNpb25zID0gY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygp
OwotICAgIGlmIChleHRlbnNpb25zLnN1cHBvcnRzKCJHTF9FWFRfZGVidWdfbWFya2VyIl9zKSkK
LSAgICAgICAgZXh0ZW5zaW9ucy5wdXNoR3JvdXBNYXJrZXJFWFQoIldlYkdMUmVuZGVyaW5nQ29u
dGV4dCJfcyk7Ci0KICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZT4gcmVuZGVyaW5nQ29udGV4dDsKICNpZiBFTkFCTEUoV0VCR0wyKQogICAgIGlmICh0eXBlID09
ICJ3ZWJnbDIiKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
RXh0ZW5zaW9uc0dMLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9FeHRlbnNp
b25zR0wuaAppbmRleCAwNmMxMjExMjdlMjJkMTNlNmJlMzg2YjhlYmJhNzZjNjcxMTZhMTNkLi4w
MzNkZjE1ZjQxMTE1MjQ4MjQ5ZDM4MmU2MGFmODMyNDVhZGU0MDk3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9FeHRlbnNpb25zR0wuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9FeHRlbnNpb25zR0wuaApAQCAtMjc1LDEyICsyNzUs
NiBAQCBwdWJsaWM6CiAgICAgLy8gZXh0ZXJuYWxseS4KICAgICB2aXJ0dWFsIEdDR0xpbnQgZ2V0
R3JhcGhpY3NSZXNldFN0YXR1c0FSQigpID0gMDsKIAotICAgIC8vIEdMX0FOR0xFX2ZyYW1lYnVm
ZmVyX2JsaXQKLSAgICB2aXJ0dWFsIHZvaWQgYmxpdEZyYW1lYnVmZmVyKGxvbmcgc3JjWDAsIGxv
bmcgc3JjWTAsIGxvbmcgc3JjWDEsIGxvbmcgc3JjWTEsIGxvbmcgZHN0WDAsIGxvbmcgZHN0WTAs
IGxvbmcgZHN0WDEsIGxvbmcgZHN0WTEsIHVuc2lnbmVkIGxvbmcgbWFzaywgdW5zaWduZWQgbG9u
ZyBmaWx0ZXIpID0gMDsKLQotICAgIC8vIEdMX0FOR0xFX2ZyYW1lYnVmZmVyX211bHRpc2FtcGxl
Ci0gICAgdmlydHVhbCB2b2lkIHJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZSh1bnNpZ25l
ZCBsb25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBzYW1wbGVzLCB1bnNpZ25lZCBsb25nIGludGVy
bmFsZm9ybWF0LCB1bnNpZ25lZCBsb25nIHdpZHRoLCB1bnNpZ25lZCBsb25nIGhlaWdodCkgPSAw
OwotCiAgICAgLy8gR0xfT0VTX3ZlcnRleF9hcnJheV9vYmplY3QKICAgICB2aXJ0dWFsIFBsYXRm
b3JtR0xPYmplY3QgY3JlYXRlVmVydGV4QXJyYXlPRVMoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lk
IGRlbGV0ZVZlcnRleEFycmF5T0VTKFBsYXRmb3JtR0xPYmplY3QpID0gMDsKQEAgLTI5MCwxMSAr
Mjg0LDYgQEAgcHVibGljOgogICAgIC8vIEdMX0FOR0xFX3RyYW5zbGF0ZWRfc2hhZGVyX3NvdXJj
ZQogICAgIHZpcnR1YWwgU3RyaW5nIGdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRShQbGF0
Zm9ybUdMT2JqZWN0KSA9IDA7CiAKLSAgICAvLyBHTF9FWFRfZGVidWdfbWFya2VyCi0gICAgdmly
dHVhbCB2b2lkIGluc2VydEV2ZW50TWFya2VyRVhUKGNvbnN0IFN0cmluZyYpID0gMDsKLSAgICB2
aXJ0dWFsIHZvaWQgcHVzaEdyb3VwTWFya2VyRVhUKGNvbnN0IFN0cmluZyYpID0gMDsKLSAgICB2
aXJ0dWFsIHZvaWQgcG9wR3JvdXBNYXJrZXJFWFQodm9pZCkgPSAwOwotCiAgICAgLy8gR0xfQVJC
X2RyYXdfYnVmZmVycyAvIEdMX0VYVF9kcmF3X2J1ZmZlcnMKICAgICB2aXJ0dWFsIHZvaWQgZHJh
d0J1ZmZlcnNFWFQoR0NHTFNwYW48Y29uc3QgR0NHTGVudW0+IGJ1ZnMpID0gMDsKIApAQCAtMzAz
LDQ4ICsyOTIsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRyYXdFbGVtZW50c0luc3Rh
bmNlZChHQ0dMZW51bSBtb2RlLCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xlbnVtIHR5cGUsIGxvbmcg
bG9uZyBvZmZzZXQsIEdDR0xzaXplaSBwcmltY291bnQpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
dmVydGV4QXR0cmliRGl2aXNvcihHQ0dMdWludCBpbmRleCwgR0NHTHVpbnQgZGl2aXNvcikgPSAw
OwogCi0gICAgLy8gR0xfQU5HTEVfcm9idXN0X2NsaWVudF9tZW1vcnkKLSAgICB2aXJ0dWFsIHZv
aWQgcmVhZFBpeGVsc1JvYnVzdEFOR0xFKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkg
d2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwg
R0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMc2l6ZWkqIGNvbHVtbnMs
IEdDR0xzaXplaSogcm93cywgR0NHTHZvaWQqIHBpeGVscykgPSAwOwotICAgIHZpcnR1YWwgdm9p
ZCB0ZXhQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5h
bWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMZmxvYXQqIHBhcmFtcykgPSAwOwotICAg
IHZpcnR1YWwgdm9pZCB0ZXhQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwg
R0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMaW50KiBwYXJhbXMp
ID0gMDsKLQotICAgIHZpcnR1YWwgdm9pZCBnZXRRdWVyeWl2Um9idXN0QU5HTEUoR0NHTGVudW0g
dGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVu
Z3RoLCBHQ0dMaW50KiBwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0UXVlcnlPYmpl
Y3R1aXZSb2J1c3RBTkdMRShHQ0dMdWludCBpZCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBi
dWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHVpbnQqIHBhcmFtcykgPSAwOwotICAgIHZp
cnR1YWwgdm9pZCBnZXRCdWZmZXJQb2ludGVydlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwg
R0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NH
THZvaWQqKiBwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0SW50ZXJuYWxmb3JtYXRp
dlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdD
R0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xp
bnQqIHBhcmFtcykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJJaXZSb2J1
c3RBTkdMRShHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXpl
LCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2
b2lkIGdldFZlcnRleEF0dHJpYkl1aXZSb2J1c3RBTkdMRShHQ0dMdWludCBpbmRleCwgR0NHTGVu
dW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHVpbnQq
IHBhcmFtcykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRVbmlmb3JtdWl2Um9idXN0QU5HTEUo
R0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdD
R0xzaXplaSogbGVuZ3RoLCBHQ0dMdWludCogcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lk
IGdldEJ1ZmZlclBhcmFtZXRlcmk2NHZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xl
bnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQ2
NCogcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHNhbXBsZXJQYXJhbWV0ZXJpdlJvYnVz
dEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6
ZSwgY29uc3QgR0NHTGludCogcGFyYW0pID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgc2FtcGxlclBh
cmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdD
R0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMZmxvYXQqIHBhcmFtKSA9IDA7Ci0gICAgdmlydHVh
bCB2b2lkIGdldFNhbXBsZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIs
IEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdD
R0xpbnQqIHBhcmFtcykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRTYW1wbGVyUGFyYW1ldGVy
ZnZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVp
IGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMZmxvYXQqIHBhcmFtcykgPSAwOwotCi0g
ICAgdmlydHVhbCB2b2lkIGdldEZyYW1lYnVmZmVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVp
KiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRQcm9n
cmFtSW50ZXJmYWNlaXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMZW51bSBwcm9n
cmFtSW50ZXJmYWNlLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXpl
aSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0Qm9v
bGVhbmlfdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTHVpbnQgaW5kZXgsIEdDR0xz
aXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGJvb2xlYW4qIGRhdGEpID0gMDsg
Ly8gTk9MSU5UCi0gICAgdmlydHVhbCB2b2lkIGdldE11bHRpc2FtcGxlZnZSb2J1c3RBTkdMRShH
Q0dMZW51bSBwbmFtZSwgR0NHTHVpbnQgaW5kZXgsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6
ZWkqIGxlbmd0aCwgR0NHTGZsb2F0KiB2YWwpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0VGV4
TGV2ZWxQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZl
bCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwg
R0NHTGludCogcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldFRleExldmVsUGFyYW1l
dGVyZnZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVt
IHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xmbG9hdCog
cGFyYW1zKSA9IDA7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgZ2V0UG9pbnRlcnZSb2J1c3RBTkdMRVJv
YnVzdEFOR0xFKEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBs
ZW5ndGgsIEdDR0x2b2lkKiogcGFyYW1zKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHJlYWRuUGl4
ZWxzUm9idXN0QU5HTEUoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NH
THNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkg
YnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xzaXplaSogY29sdW1ucywgR0NHTHNpemVp
KiByb3dzLCBHQ0dMdm9pZCogZGF0YSwgYm9vbCByZWFkaW5nVG9QaXhlbEJ1ZmZlck9iamVjdCkg
PSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRuVW5pZm9ybWZ2Um9idXN0QU5HTEUoR0NHTHVpbnQg
cHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSog
bGVuZ3RoLCBHQ0dMZmxvYXQqIHBhcmFtcykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRuVW5p
Zm9ybWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NH
THNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpID0gMDsK
LSAgICB2aXJ0dWFsIHZvaWQgZ2V0blVuaWZvcm11aXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9n
cmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5n
dGgsIEdDR0x1aW50KiBwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgdGV4UGFyYW1ldGVy
SWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVp
IGJ1ZlNpemUsIGNvbnN0IEdDR0xpbnQqIHBhcmFtcykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCB0
ZXhQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFt
ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0x1aW50KiBwYXJhbXMpID0gMDsKLSAgICB2
aXJ0dWFsIHZvaWQgZ2V0VGV4UGFyYW1ldGVySWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBH
Q0dMaW50KiBwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0VGV4UGFyYW1ldGVySXVp
dlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBi
dWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHVpbnQqIHBhcmFtcykgPSAwOwotICAgIHZp
cnR1YWwgdm9pZCBzYW1wbGVyUGFyYW1ldGVySWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxl
ciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMaW50KiBwYXJh
bSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBzYW1wbGVyUGFyYW1ldGVySXVpdlJvYnVzdEFOR0xF
KEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29u
c3QgR0NHTHVpbnQqIHBhcmFtKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldFNhbXBsZXJQYXJh
bWV0ZXJJaXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NH
THNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpID0gMDsK
LSAgICB2aXJ0dWFsIHZvaWQgZ2V0U2FtcGxlclBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRShHQ0dM
dWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXpl
aSogbGVuZ3RoLCBHQ0dMdWludCogcGFyYW1zKSA9IDA7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgZ2V0
UXVlcnlPYmplY3RpdlJvYnVzdEFOR0xFKEdDR0x1aW50IGlkLCBHQ0dMZW51bSBwbmFtZSwgR0NH
THNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpID0gMDsK
LSAgICB2aXJ0dWFsIHZvaWQgZ2V0UXVlcnlPYmplY3RpNjR2Um9idXN0QU5HTEUoR0NHTHVpbnQg
aWQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgs
IEdDR0xpbnQ2NCogcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldFF1ZXJ5T2JqZWN0
dWk2NHZSb2J1c3RBTkdMRShHQ0dMdWludCBpZCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBi
dWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHVpbnQ2NCogcGFyYW1zKSA9IDA7CiAKICAg
ICAvLyBPdGhlciBmdW5jdGlvbnMuCiAjaWYgIVVTRShBTkdMRSkKQEAgLTM1MywxOCArMzAxLDYg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBnZXRuVW5pZm9ybWZ2RVhUKEdDR0x1aW50IHBy
b2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMZmxvYXQqIHBh
cmFtcykgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBnZXRuVW5pZm9ybWl2RVhUKEdDR0x1aW50IHBy
b2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMaW50KiBwYXJh
bXMpID0gMDsKICNlbmRpZgotCi0gICAgdmlydHVhbCBib29sIGlzTlZJRElBKCkgPSAwOwotICAg
IHZpcnR1YWwgYm9vbCBpc0FNRCgpID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgaXNJbnRlbCgpID0g
MDsKLSAgICB2aXJ0dWFsIGJvb2wgaXNJbWFnaW5hdGlvbigpID0gMDsKLSAgICB2aXJ0dWFsIFN0
cmluZyB2ZW5kb3IoKSA9IDA7Ci0KLSAgICAvLyBTb21lIGNvbmZpZ3VyYXRpb25zIGhhdmUgYnVn
cyByZWdhcmRpbmcgYnVpbHQtaW4gZnVuY3Rpb25zIGluIHRoZWlyIE9wZW5HTCBkcml2ZXJzCi0g
ICAgLy8gdGhhdCBtdXN0IGJlIGF2b2lkZWQuIFBvcnRzIHNob3VsZCBpbXBsZW1lbnQgdGhlc2Ug
ZmxhZ3Mgb24gc3VjaCBjb25maWd1cmF0aW9ucy4KLSAgICB2aXJ0dWFsIGJvb2wgcmVxdWlyZXNC
dWlsdEluRnVuY3Rpb25FbXVsYXRpb24oKSA9IDA7Ci0gICAgdmlydHVhbCBib29sIHJlcXVpcmVz
UmVzdHJpY3RlZE1heGltdW1UZXh0dXJlU2l6ZSgpID0gMDsKLQogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUuY3BwCmluZGV4IDI4M2RhODJjNmE2MDJlYTRi
NTU3YzY4NmNmZDgyM2QwODFjNTVlNGEuLjFkYTg0MmNmZDcyOGY4YmQzYmQ3Y2JhNGM2MjhhNjYz
OGUyZTZkOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Fu
Z2xlL0V4dGVuc2lvbnNHTEFOR0xFLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hbmdsZS9FeHRlbnNpb25zR0xBTkdMRS5jcHAKQEAgLTQzLDMxICs0MywxMCBAQCB0
eXBlZGVmIHZvaWQqIEdMZWdsQ29udGV4dDsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1FeHRl
bnNpb25zR0xBTkdMRTo6RXh0ZW5zaW9uc0dMQU5HTEUoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wq
IGNvbnRleHQsIGJvb2wgdXNlSW5kZXhlZEdldFN0cmluZykKK0V4dGVuc2lvbnNHTEFOR0xFOjpF
eHRlbnNpb25zR0xBTkdMRShHcmFwaGljc0NvbnRleHRHTE9wZW5HTCogY29udGV4dCkKICAgICA6
IG1faW5pdGlhbGl6ZWRBdmFpbGFibGVFeHRlbnNpb25zKGZhbHNlKQogICAgICwgbV9jb250ZXh0
KGNvbnRleHQpCi0gICAgLCBtX2lzTlZJRElBKGZhbHNlKQotICAgICwgbV9pc0FNRChmYWxzZSkK
LSAgICAsIG1faXNJbnRlbChmYWxzZSkKLSAgICAsIG1faXNJbWFnaW5hdGlvbihmYWxzZSkKLSAg
ICAsIG1fcmVxdWlyZXNCdWlsdEluRnVuY3Rpb25FbXVsYXRpb24oZmFsc2UpCi0gICAgLCBtX3Jl
cXVpcmVzUmVzdHJpY3RlZE1heGltdW1UZXh0dXJlU2l6ZShmYWxzZSkKLSAgICAsIG1fdXNlSW5k
ZXhlZEdldFN0cmluZyh1c2VJbmRleGVkR2V0U3RyaW5nKQotewotICAgIC8vIEZJWE1FOiBpZGVh
bGx5LCByZW1vdmUgdGhpcyBpbml0aWFsaXphdGlvbiBhbHRvZ2V0aGVyLiBBTkdMRQotICAgIC8v
IHN1YnN1bWVzIHRoZSByZXNwb25zaWJpbGl0eSBmb3IgZ3JhcGhpY3MgZHJpdmVyIHdvcmthcm91
bmRzLgotICAgIG1fdmVuZG9yID0gU3RyaW5nKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+
KGdsOjpHZXRTdHJpbmcoR0xfVkVORE9SKSkpOwotICAgIG1fcmVuZGVyZXIgPSBTdHJpbmcocmVp
bnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZ2w6OkdldFN0cmluZyhHTF9SRU5ERVJFUikpKTsK
LQotICAgIFZlY3RvcjxTdHJpbmc+IHZlbmRvckNvbXBvbmVudHMgPSBtX3ZlbmRvci5jb252ZXJ0
VG9BU0NJSUxvd2VyY2FzZSgpLnNwbGl0KCcgJyk7Ci0gICAgaWYgKHZlbmRvckNvbXBvbmVudHMu
Y29udGFpbnMoIm52aWRpYSIpKQotICAgICAgICBtX2lzTlZJRElBID0gdHJ1ZTsKLSAgICBpZiAo
dmVuZG9yQ29tcG9uZW50cy5jb250YWlucygiYXRpIikgfHwgdmVuZG9yQ29tcG9uZW50cy5jb250
YWlucygiYW1kIikpCi0gICAgICAgIG1faXNBTUQgPSB0cnVlOwotICAgIGlmICh2ZW5kb3JDb21w
b25lbnRzLmNvbnRhaW5zKCJpbnRlbCIpKQotICAgICAgICBtX2lzSW50ZWwgPSB0cnVlOwotICAg
IGlmICh2ZW5kb3JDb21wb25lbnRzLmNvbnRhaW5zKCJpbWFnaW5hdGlvbiIpKQotICAgICAgICBt
X2lzSW1hZ2luYXRpb24gPSB0cnVlOworewogfQogCiBFeHRlbnNpb25zR0xBTkdMRTo6fkV4dGVu
c2lvbnNHTEFOR0xFKCkgPSBkZWZhdWx0OwpAQCAtMTI4LDQyICsxMDcsMTUgQEAgU3RyaW5nIEV4
dGVuc2lvbnNHTEFOR0xFOjpnZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUoUGxhdGZvcm1H
TE9iamVjdCBzaGFkZXIKIAogdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6aW5pdGlhbGl6ZUF2YWls
YWJsZUV4dGVuc2lvbnMoKQogewotICAgIGlmIChtX3VzZUluZGV4ZWRHZXRTdHJpbmcpIHsKLSAg
ICAgICAgR0xpbnQgbnVtRXh0ZW5zaW9ucyA9IDA7Ci0gICAgICAgIGdsOjpHZXRJbnRlZ2VydihH
TF9OVU1fRVhURU5TSU9OUywgJm51bUV4dGVuc2lvbnMpOwotICAgICAgICBmb3IgKEdMaW50IGkg
PSAwOyBpIDwgbnVtRXh0ZW5zaW9uczsgKytpKQotICAgICAgICAgICAgbV9hdmFpbGFibGVFeHRl
bnNpb25zLmFkZChnbDo6R2V0U3RyaW5naShHTF9FWFRFTlNJT05TLCBpKSk7Ci0gICAgICAgIGds
OjpHZXRJbnRlZ2VydihHTF9OVU1fUkVRVUVTVEFCTEVfRVhURU5TSU9OU19BTkdMRSwgJm51bUV4
dGVuc2lvbnMpOwotICAgICAgICBmb3IgKEdMaW50IGkgPSAwOyBpIDwgbnVtRXh0ZW5zaW9uczsg
KytpKQotICAgICAgICAgICAgbV9yZXF1ZXN0YWJsZUV4dGVuc2lvbnMuYWRkKGdsOjpHZXRTdHJp
bmdpKEdMX1JFUVVFU1RBQkxFX0VYVEVOU0lPTlNfQU5HTEUsIGkpKTsKLSAgICB9IGVsc2Ugewot
ICAgICAgICBTdHJpbmcgZXh0ZW5zaW9uc1N0cmluZyA9IGdldEV4dGVuc2lvbnMoKTsKLSAgICAg
ICAgZm9yIChhdXRvJiBleHRlbnNpb24gOiBleHRlbnNpb25zU3RyaW5nLnNwbGl0KCcgJykpCi0g
ICAgICAgICAgICBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuYWRkKGV4dGVuc2lvbik7Ci0gICAgICAg
IGV4dGVuc2lvbnNTdHJpbmcgPSBTdHJpbmcocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4o
Z2w6OkdldFN0cmluZyhHTF9SRVFVRVNUQUJMRV9FWFRFTlNJT05TX0FOR0xFKSkpOwotICAgICAg
ICBmb3IgKGF1dG8mIGV4dGVuc2lvbiA6IGV4dGVuc2lvbnNTdHJpbmcuc3BsaXQoJyAnKSkKLSAg
ICAgICAgICAgIG1fcmVxdWVzdGFibGVFeHRlbnNpb25zLmFkZChleHRlbnNpb24pOwotICAgIH0K
KyAgICBTdHJpbmcgZXh0ZW5zaW9uc1N0cmluZyA9IGdldEV4dGVuc2lvbnMoKTsKKyAgICBmb3Ig
KGF1dG8mIGV4dGVuc2lvbiA6IGV4dGVuc2lvbnNTdHJpbmcuc3BsaXQoJyAnKSkKKyAgICAgICAg
bV9hdmFpbGFibGVFeHRlbnNpb25zLmFkZChleHRlbnNpb24pOworICAgIGV4dGVuc2lvbnNTdHJp
bmcgPSBTdHJpbmcocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZ2w6OkdldFN0cmluZyhH
TF9SRVFVRVNUQUJMRV9FWFRFTlNJT05TX0FOR0xFKSkpOworICAgIGZvciAoYXV0byYgZXh0ZW5z
aW9uIDogZXh0ZW5zaW9uc1N0cmluZy5zcGxpdCgnICcpKQorICAgICAgICBtX3JlcXVlc3RhYmxl
RXh0ZW5zaW9ucy5hZGQoZXh0ZW5zaW9uKTsKICAgICBtX2luaXRpYWxpemVkQXZhaWxhYmxlRXh0
ZW5zaW9ucyA9IHRydWU7CiB9CiAKLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmJsaXRGcmFtZWJ1
ZmZlcihsb25nIHNyY1gwLCBsb25nIHNyY1kwLCBsb25nIHNyY1gxLCBsb25nIHNyY1kxLCBsb25n
IGRzdFgwLCBsb25nIGRzdFkwLCBsb25nIGRzdFgxLCBsb25nIGRzdFkxLCB1bnNpZ25lZCBsb25n
IG1hc2ssIHVuc2lnbmVkIGxvbmcgZmlsdGVyKQotewotICAgIC8vIEZJWE1FOiBjb25zaWRlciBh
ZGRpbmcgc3VwcG9ydCBmb3IgQVBQTEVfZnJhbWVidWZmZXJfbXVsdGlzYW1wbGUuCi0gICAgaWYg
KCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAg
ICBnbDo6QmxpdEZyYW1lYnVmZmVyQU5HTEUoc3JjWDAsIHNyY1kwLCBzcmNYMSwgc3JjWTEsIGRz
dFgwLCBkc3RZMCwgZHN0WDEsIGRzdFkxLCBtYXNrLCBmaWx0ZXIpOwotfQotCi12b2lkIEV4dGVu
c2lvbnNHTEFOR0xFOjpyZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUodW5zaWduZWQgbG9u
ZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgc2FtcGxlcywgdW5zaWduZWQgbG9uZyBpbnRlcm5hbGZv
cm1hdCwgdW5zaWduZWQgbG9uZyB3aWR0aCwgdW5zaWduZWQgbG9uZyBoZWlnaHQpCi17Ci0gICAg
aWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0K
LSAgICBnbDo6UmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5HTEUodGFyZ2V0LCBzYW1w
bGVzLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCk7Ci19Ci0KIFBsYXRmb3JtR0xPYmpl
Y3QgRXh0ZW5zaW9uc0dMQU5HTEU6OmNyZWF0ZVZlcnRleEFycmF5T0VTKCkKIHsKICAgICBpZiAo
IW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCkBAIC0yMDQsMjQgKzE1Niw2IEBAIHZv
aWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmJpbmRWZXJ0ZXhBcnJheU9FUyhQbGF0Zm9ybUdMT2JqZWN0
IGFycmF5KQogICAgIGdsOjpCaW5kVmVydGV4QXJyYXlPRVMoYXJyYXkpOwogfQogCi12b2lkIEV4
dGVuc2lvbnNHTEFOR0xFOjppbnNlcnRFdmVudE1hcmtlckVYVChjb25zdCBTdHJpbmcmKQotewot
ICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQgdGhpcyBmdW5jdGlvbiBhbmQgYWRkIEdMX0VYVF9kZWJ1
Z19tYXJrZXIgaW4gc3VwcG9ydHMoKS4KLSAgICByZXR1cm47Ci19Ci0KLXZvaWQgRXh0ZW5zaW9u
c0dMQU5HTEU6OnB1c2hHcm91cE1hcmtlckVYVChjb25zdCBTdHJpbmcmKQotewotICAgIC8vIEZJ
WE1FOiBpbXBsZW1lbnQgdGhpcyBmdW5jdGlvbiBhbmQgYWRkIEdMX0VYVF9kZWJ1Z19tYXJrZXIg
aW4gc3VwcG9ydHMoKS4KLSAgICByZXR1cm47Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6
OnBvcEdyb3VwTWFya2VyRVhUKHZvaWQpCi17Ci0gICAgLy8gRklYTUU6IGltcGxlbWVudCB0aGlz
IGZ1bmN0aW9uIGFuZCBhZGQgR0xfRVhUX2RlYnVnX21hcmtlciBpbiBzdXBwb3J0cygpLgotICAg
IHJldHVybjsKLX0KLQogYm9vbCBFeHRlbnNpb25zR0xBTkdMRTo6c3VwcG9ydHNFeHRlbnNpb24o
Y29uc3QgU3RyaW5nJiBuYW1lKQogewogICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMu
Y29udGFpbnMobmFtZSkgfHwgbV9yZXF1ZXN0YWJsZUV4dGVuc2lvbnMuY29udGFpbnMobmFtZSk7
CkBAIC0yNzgsNiArMjEyLDcgQEAgR0NHTGVudW0gRXh0ZW5zaW9uc0dMQU5HTEU6OmFkanVzdFdl
YkdMMVRleHR1cmVJbnRlcm5hbEZvcm1hdChHQ0dMZW51bSBpbnRlcm5hbGYKIH0KIAogLy8gR0xf
QU5HTEVfcm9idXN0X2NsaWVudF9tZW1vcnkKKyNpZiAwCiB2b2lkIEV4dGVuc2lvbnNHTEFOR0xF
OjpyZWFkUGl4ZWxzUm9idXN0QU5HTEUoaW50IHgsIGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdD
R0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVp
IGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMc2l6ZWkgKmNvbHVtbnMsIEdDR0xzaXpl
aSAqcm93cywgdm9pZCAqcGl4ZWxzKQogewogICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4
dEN1cnJlbnQoKSkKQEAgLTQ1NSw2ICszOTAsNyBAQCB2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpn
ZXRQb2ludGVydlJvYnVzdEFOR0xFUm9idXN0QU5HTEUoR0NHTGVudW0gcG5hbWUsIEdDR0xzaQog
CiAgICAgZ2w6OkdldFBvaW50ZXJ2Um9idXN0QU5HTEVSb2J1c3RBTkdMRShwbmFtZSwgYnVmU2l6
ZSwgbGVuZ3RoLCBwYXJhbXMpOwogfQorI2VuZGlmCiAKICNpZiBQTEFURk9STShNQUMpIHx8IFBM
QVRGT1JNKElPU19GQU1JTFkpCiBzdGF0aWMgdm9pZCB3aXBlQWxwaGFDaGFubmVsRnJvbVBpeGVs
cyhpbnQgd2lkdGgsIGludCBoZWlnaHQsIHVuc2lnbmVkIGNoYXIqIHBpeGVscykKQEAgLTUwMyw3
ICs0MzksNyBAQCB2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpyZWFkblBpeGVsc1JvYnVzdEFOR0xF
KGludCB4LCBpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQwogICAgIFVOVVNFRF9QQVJBTShyZWFk
aW5nVG9QaXhlbEJ1ZmZlck9iamVjdCk7CiAjZW5kaWYKIH0KLQorI2lmIDAKIHZvaWQgRXh0ZW5z
aW9uc0dMQU5HTEU6OmdldG5Vbmlmb3JtZnZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBp
bnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGZs
b2F0ICpwYXJhbXMpCiB7CiAgICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgp
KQpAQCAtNjE2LDcgKzU1Miw3IEBAIHZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldFF1ZXJ5T2Jq
ZWN0dWk2NHZSb2J1c3RBTkdMRShHQ0dMdWludCBpZCwgR0NHTGVudW0gcG5hCiAKICAgICBnbDo6
R2V0UXVlcnlPYmplY3R1aTY0dlJvYnVzdEFOR0xFKGlkLCBwbmFtZSwgYnVmU2l6ZSwgbGVuZ3Ro
LCByZWludGVycHJldF9jYXN0PEdMdWludDY0Kj4ocGFyYW1zKSk7CiB9Ci0KKyNlbmRpZgogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRlbnNpb25zR0xBTkdMRS5oCmluZGV4IGE3NzMxZGZk
MjBjNWYwM2EzMzU5MDNmYWE2ZTM4ZmY3MmY0YjIzMjMuLmI1NGUzNDg3NjVlOGI5YzY3YmNkODVj
NmJhMzczOGNhMzA5NDQ0ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUuaApAQCAtMzYsNyArMzYsNyBA
QCBjbGFzcyBFeHRlbnNpb25zR0xBTkdMRSA6IHB1YmxpYyBFeHRlbnNpb25zR0wgewogICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIC8vIFRoaXMgY2xhc3Mgb25seSBu
ZWVkcyB0byBiZSBpbnN0YW50aWF0ZWQgYnkgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wgaW1wbGVt
ZW50YXRpb25zLgotICAgIEV4dGVuc2lvbnNHTEFOR0xFKEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
KiwgYm9vbCB1c2VJbmRleGVkR2V0U3RyaW5nID0gZmFsc2UpOworICAgIEV4dGVuc2lvbnNHTEFO
R0xFKEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKik7CiAgICAgdmlydHVhbCB+RXh0ZW5zaW9uc0dM
QU5HTEUoKTsKIAogICAgIC8vIEV4dGVuc2lvbnNHTCBtZXRob2RzLgpAQCAtNDksMzAgKzQ5LDE2
IEBAIHB1YmxpYzoKICAgICB2b2lkIGRlbGV0ZVZlcnRleEFycmF5T0VTKFBsYXRmb3JtR0xPYmpl
Y3QpIG92ZXJyaWRlOwogICAgIEdDR0xib29sZWFuIGlzVmVydGV4QXJyYXlPRVMoUGxhdGZvcm1H
TE9iamVjdCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBiaW5kVmVydGV4QXJyYXlPRVMoUGxhdGZvcm1H
TE9iamVjdCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBpbnNlcnRFdmVudE1hcmtlckVYVChjb25zdCBT
dHJpbmcmKSBvdmVycmlkZTsKLSAgICB2b2lkIHB1c2hHcm91cE1hcmtlckVYVChjb25zdCBTdHJp
bmcmKSBvdmVycmlkZTsKLSAgICB2b2lkIHBvcEdyb3VwTWFya2VyRVhUKHZvaWQpIG92ZXJyaWRl
OwogICAgIHZvaWQgZHJhd0J1ZmZlcnNFWFQoR0NHTFNwYW48Y29uc3QgR0NHTGVudW0+KSBvdmVy
cmlkZTsKIAogICAgIFN0cmluZyBnZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUoUGxhdGZv
cm1HTE9iamVjdCkgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIGJsaXRGcmFtZWJ1ZmZlcihsb25nIHNy
Y1gwLCBsb25nIHNyY1kwLCBsb25nIHNyY1gxLCBsb25nIHNyY1kxLCBsb25nIGRzdFgwLCBsb25n
IGRzdFkwLCBsb25nIGRzdFgxLCBsb25nIGRzdFkxLCB1bnNpZ25lZCBsb25nIG1hc2ssIHVuc2ln
bmVkIGxvbmcgZmlsdGVyKSBvdmVycmlkZTsKLSAgICB2b2lkIHJlbmRlcmJ1ZmZlclN0b3JhZ2VN
dWx0aXNhbXBsZSh1bnNpZ25lZCBsb25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBzYW1wbGVzLCB1
bnNpZ25lZCBsb25nIGludGVybmFsZm9ybWF0LCB1bnNpZ25lZCBsb25nIHdpZHRoLCB1bnNpZ25l
ZCBsb25nIGhlaWdodCkgb3ZlcnJpZGU7Ci0KICAgICB2b2lkIGRyYXdBcnJheXNJbnN0YW5jZWQo
R0NHTGVudW0gbW9kZSwgR0NHTGludCBmaXJzdCwgR0NHTHNpemVpIGNvdW50LCBHQ0dMc2l6ZWkg
cHJpbWNvdW50KSBvdmVycmlkZTsKICAgICB2b2lkIGRyYXdFbGVtZW50c0luc3RhbmNlZChHQ0dM
ZW51bSBtb2RlLCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xlbnVtIHR5cGUsIGxvbmcgbG9uZyBvZmZz
ZXQsIEdDR0xzaXplaSBwcmltY291bnQpIG92ZXJyaWRlOwogICAgIHZvaWQgdmVydGV4QXR0cmli
RGl2aXNvcihHQ0dMdWludCBpbmRleCwgR0NHTHVpbnQgZGl2aXNvcikgb3ZlcnJpZGU7CiAKLSAg
ICBib29sIGlzTlZJRElBKCkgb3ZlcnJpZGUgeyByZXR1cm4gbV9pc05WSURJQTsgfQotICAgIGJv
b2wgaXNBTUQoKSBvdmVycmlkZSB7IHJldHVybiBtX2lzQU1EOyB9Ci0gICAgYm9vbCBpc0ludGVs
KCkgb3ZlcnJpZGUgeyByZXR1cm4gbV9pc0ludGVsOyB9Ci0gICAgYm9vbCBpc0ltYWdpbmF0aW9u
KCkgb3ZlcnJpZGUgeyByZXR1cm4gbV9pc0ltYWdpbmF0aW9uOyB9Ci0gICAgU3RyaW5nIHZlbmRv
cigpIG92ZXJyaWRlIHsgcmV0dXJuIG1fdmVuZG9yOyB9Ci0KLSAgICBib29sIHJlcXVpcmVzQnVp
bHRJbkZ1bmN0aW9uRW11bGF0aW9uKCkgb3ZlcnJpZGUgeyByZXR1cm4gbV9yZXF1aXJlc0J1aWx0
SW5GdW5jdGlvbkVtdWxhdGlvbjsgfQotICAgIGJvb2wgcmVxdWlyZXNSZXN0cmljdGVkTWF4aW11
bVRleHR1cmVTaXplKCkgb3ZlcnJpZGUgeyByZXR1cm4gbV9yZXF1aXJlc1Jlc3RyaWN0ZWRNYXhp
bXVtVGV4dHVyZVNpemU7IH0KLQogICAgIC8vIEdMX0FOR0xFX3JvYnVzdF9jbGllbnRfbWVtb3J5
CisjaWYgMAogICAgIHZvaWQgcmVhZFBpeGVsc1JvYnVzdEFOR0xFKEdDR0xpbnQgeCwgR0NHTGlu
dCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwg
R0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dM
c2l6ZWkgKmNvbHVtbnMsIEdDR0xzaXplaSAqcm93cywgdm9pZCAqcGl4ZWxzKSBvdmVycmlkZTsK
ICAgICB2b2lkIHRleFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dM
ZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xmbG9hdCAqcGFyYW1zKSBv
dmVycmlkZTsKICAgICB2b2lkIHRleFBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xpbnQgKnBh
cmFtcykgb3ZlcnJpZGU7CkBAIC05Nyw3ICs4MywxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBnZXRU
ZXhMZXZlbFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxl
dmVsLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3Ro
LCBHQ0dMZmxvYXQgKnBhcmFtcykgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGdldFBvaW50ZXJ2Um9i
dXN0QU5HTEVSb2J1c3RBTkdMRShHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdD
R0xzaXplaSAqbGVuZ3RoLCB2b2lkICoqcGFyYW1zKSBvdmVycmlkZTsKKyNlbmRpZgorCiAgICAg
dm9pZCByZWFkblBpeGVsc1JvYnVzdEFOR0xFKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6
ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlw
ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMc2l6ZWkgKmNvbHVt
bnMsIEdDR0xzaXplaSAqcm93cywgdm9pZCAqZGF0YSwgYm9vbCByZWFkaW5nVG9QaXhlbEJ1ZmZl
ck9iamVjdCkgb3ZlcnJpZGU7CisjaWYgMAogICAgIHZvaWQgZ2V0blVuaWZvcm1mdlJvYnVzdEFO
R0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXpl
LCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGZsb2F0ICpwYXJhbXMpIG92ZXJyaWRlOwogICAgIHZv
aWQgZ2V0blVuaWZvcm1pdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9j
YXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFy
YW1zKSBvdmVycmlkZTsKICAgICB2b2lkIGdldG5Vbmlmb3JtdWl2Um9idXN0QU5HTEUoR0NHTHVp
bnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXpl
aSAqbGVuZ3RoLCBHQ0dMdWludCAqcGFyYW1zKSBvdmVycmlkZTsKQEAgLTExMyw3ICsxMDIsNyBA
QCBwdWJsaWM6CiAgICAgdm9pZCBnZXRRdWVyeU9iamVjdGl2Um9idXN0QU5HTEUoR0NHTHVpbnQg
aWQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgs
IEdDR0xpbnQgKnBhcmFtcykgb3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRRdWVyeU9iamVjdGk2NHZS
b2J1c3RBTkdMRShHQ0dMdWludCBpZCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXpl
LCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludDY0ICpwYXJhbXMpIG92ZXJyaWRlOwogICAgIHZv
aWQgZ2V0UXVlcnlPYmplY3R1aTY0dlJvYnVzdEFOR0xFKEdDR0x1aW50IGlkLCBHQ0dMZW51bSBw
bmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMdWludDY0ICpw
YXJhbXMpIG92ZXJyaWRlOwotCisjZW5kaWYKICAgICAvLyBPbmx5IGZvciBub24tV2ViR0wgMi4w
IGNvbnRleHRzLgogICAgIEdDR0xlbnVtIGFkanVzdFdlYkdMMVRleHR1cmVJbnRlcm5hbEZvcm1h
dChHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBl
KTsKIApAQCAtMTI5LDE5ICsxMTgsNiBAQCBwcml2YXRlOgogCiAgICAgLy8gV2VhayBwb2ludGVy
IGJhY2sgdG8gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuCiAgICAgR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0wqIG1fY29udGV4dDsKLQotICAgIGJvb2wgbV9pc05WSURJQTsKLSAgICBib29sIG1faXNB
TUQ7Ci0gICAgYm9vbCBtX2lzSW50ZWw7Ci0gICAgYm9vbCBtX2lzSW1hZ2luYXRpb247Ci0gICAg
Ym9vbCBtX3JlcXVpcmVzQnVpbHRJbkZ1bmN0aW9uRW11bGF0aW9uOwotICAgIGJvb2wgbV9yZXF1
aXJlc1Jlc3RyaWN0ZWRNYXhpbXVtVGV4dHVyZVNpemU7Ci0KLSAgICBib29sIG1fdXNlSW5kZXhl
ZEdldFN0cmluZyB7IGZhbHNlIH07Ci0KLSAgICBTdHJpbmcgbV92ZW5kb3I7Ci0gICAgU3RyaW5n
IG1fcmVuZGVyZXI7Ci0KICAgICAvLyBXaGV0aGVyIHRoZSBXZWJHTCAxLjAtcmVsYXRlZCBmbG9h
dGluZy1wb2ludCByZW5kZXJhYmlsaXR5IGV4dGVuc2lvbnMgaGF2ZSBiZWVuIGVuYWJsZWQuCiAg
ICAgYm9vbCBtX3dlYmdsQ29sb3JCdWZmZXJGbG9hdFJHQiB7IGZhbHNlIH07CiAgICAgYm9vbCBt
X3dlYmdsQ29sb3JCdWZmZXJGbG9hdFJHQkEgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3Bl
bkdMLmNwcAppbmRleCA3ZWM4MWNmNGFlNTc3MmNhZTk3Mjg4YmM4MGUzNjU2NDZkNjI3YzdiLi43
NmRjMzJjMTc2YTRjYmIzMDc1ZDg4MGMwNGI5NDg5ZmNiNThmMzEwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9u
c0dMT3BlbkdMLmNwcApAQCAtNDcsMjMgKzQ3LDYgQEAgRXh0ZW5zaW9uc0dMT3BlbkdMOjpFeHRl
bnNpb25zR0xPcGVuR0woR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqIGNvbnRleHQsIGJvb2wgdXMK
IAogRXh0ZW5zaW9uc0dMT3BlbkdMOjp+RXh0ZW5zaW9uc0dMT3BlbkdMKCkgPSBkZWZhdWx0Owog
Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMOjpibGl0RnJhbWVidWZmZXIobG9uZyBzcmNYMCwg
bG9uZyBzcmNZMCwgbG9uZyBzcmNYMSwgbG9uZyBzcmNZMSwgbG9uZyBkc3RYMCwgbG9uZyBkc3RZ
MCwgbG9uZyBkc3RYMSwgbG9uZyBkc3RZMSwgdW5zaWduZWQgbG9uZyBtYXNrLCB1bnNpZ25lZCBs
b25nIGZpbHRlcikKLXsKLSAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkp
Ci0gICAgICAgIHJldHVybjsKLQotICAgIDo6Z2xCbGl0RnJhbWVidWZmZXJFWFQoc3JjWDAsIHNy
Y1kwLCBzcmNYMSwgc3JjWTEsIGRzdFgwLCBkc3RZMCwgZHN0WDEsIGRzdFkxLCBtYXNrLCBmaWx0
ZXIpOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTDo6cmVuZGVyYnVmZmVyU3RvcmFnZU11
bHRpc2FtcGxlKHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25nIHNhbXBsZXMsIHVu
c2lnbmVkIGxvbmcgaW50ZXJuYWxmb3JtYXQsIHVuc2lnbmVkIGxvbmcgd2lkdGgsIHVuc2lnbmVk
IGxvbmcgaGVpZ2h0KQotewotICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQo
KSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgOjpnbFJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNh
bXBsZUVYVCh0YXJnZXQsIHNhbXBsZXMsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0KTsK
LX0KLQogUGxhdGZvcm1HTE9iamVjdCBFeHRlbnNpb25zR0xPcGVuR0w6OmNyZWF0ZVZlcnRleEFy
cmF5T0VTKCkKIHsKICAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5z
aW9uc0dMT3BlbkdMLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wv
RXh0ZW5zaW9uc0dMT3BlbkdMLmgKaW5kZXggNDk2Mjg5Y2VhMGU2YTA5ZDZkYjczMWY4NjhiNTQ5
OTNhNDQ0NDlhOC4uN2MyYzBlMjI4MGZlZDNjYmY5MTI2YWUzMTY5NTAzMjU4MjFlM2Q3OSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lv
bnNHTE9wZW5HTC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5n
bC9FeHRlbnNpb25zR0xPcGVuR0wuaApAQCAtNDAsOSArNDAsNiBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCB+RXh0ZW5zaW9uc0dMT3BlbkdMKCk7CiAKICAgICAvLyBFeHRlbnNpb25zR0wgbWV0aG9k
cy4KLSAgICB2b2lkIGJsaXRGcmFtZWJ1ZmZlcihsb25nIHNyY1gwLCBsb25nIHNyY1kwLCBsb25n
IHNyY1gxLCBsb25nIHNyY1kxLCBsb25nIGRzdFgwLCBsb25nIGRzdFkwLCBsb25nIGRzdFgxLCBs
b25nIGRzdFkxLCB1bnNpZ25lZCBsb25nIG1hc2ssIHVuc2lnbmVkIGxvbmcgZmlsdGVyKSBvdmVy
cmlkZTsKLSAgICB2b2lkIHJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZSh1bnNpZ25lZCBs
b25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBzYW1wbGVzLCB1bnNpZ25lZCBsb25nIGludGVybmFs
Zm9ybWF0LCB1bnNpZ25lZCBsb25nIHdpZHRoLCB1bnNpZ25lZCBsb25nIGhlaWdodCkgb3ZlcnJp
ZGU7Ci0KICAgICBQbGF0Zm9ybUdMT2JqZWN0IGNyZWF0ZVZlcnRleEFycmF5T0VTKCkgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBkZWxldGVWZXJ0ZXhBcnJheU9FUyhQbGF0Zm9ybUdMT2JqZWN0KSBvdmVy
cmlkZTsKICAgICBHQ0dMYm9vbGVhbiBpc1ZlcnRleEFycmF5T0VTKFBsYXRmb3JtR0xPYmplY3Qp
IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
b3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmNwcAppbmRleCA0
M2I1MTYxZmJhNzc4ZjhmYjQzODRiMWJjMmRiMzhlY2Y2YzQ4M2ViLi5jODg1OWZkYjI2NGE0OGQw
N2EyMjdiZmJlODYzZTY1NGY2YTQyYzkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdM
Q29tbW9uLmNwcApAQCAtNjMsMzcgKzYzLDEwIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb24oR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0wqIGNvbnRleHQsIGJvb2wgdXNlSW5kZXhlZEdldFN0cmluZykKK0V4
dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uKEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMKiBjb250ZXh0KQogICAgIDogbV9pbml0aWFsaXplZEF2YWlsYWJsZUV4
dGVuc2lvbnMoZmFsc2UpCiAgICAgLCBtX2NvbnRleHQoY29udGV4dCkKLSAgICAsIG1faXNOVklE
SUEoZmFsc2UpCi0gICAgLCBtX2lzQU1EKGZhbHNlKQotICAgICwgbV9pc0ludGVsKGZhbHNlKQot
ICAgICwgbV9pc0ltYWdpbmF0aW9uKGZhbHNlKQotICAgICwgbV9yZXF1aXJlc0J1aWx0SW5GdW5j
dGlvbkVtdWxhdGlvbihmYWxzZSkKLSAgICAsIG1fcmVxdWlyZXNSZXN0cmljdGVkTWF4aW11bVRl
eHR1cmVTaXplKGZhbHNlKQotICAgICwgbV91c2VJbmRleGVkR2V0U3RyaW5nKHVzZUluZGV4ZWRH
ZXRTdHJpbmcpCi17Ci0gICAgbV92ZW5kb3IgPSBTdHJpbmcocmVpbnRlcnByZXRfY2FzdDxjb25z
dCBjaGFyKj4oOjpnbEdldFN0cmluZyhHTF9WRU5ET1IpKSk7Ci0gICAgbV9yZW5kZXJlciA9IFN0
cmluZyhyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPig6OmdsR2V0U3RyaW5nKEdMX1JFTkRF
UkVSKSkpOwotCi0gICAgVmVjdG9yPFN0cmluZz4gdmVuZG9yQ29tcG9uZW50cyA9IG1fdmVuZG9y
LmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCkuc3BsaXQoJyAnKTsKLSAgICBpZiAodmVuZG9yQ29t
cG9uZW50cy5jb250YWlucygibnZpZGlhIikpCi0gICAgICAgIG1faXNOVklESUEgPSB0cnVlOwot
ICAgIGlmICh2ZW5kb3JDb21wb25lbnRzLmNvbnRhaW5zKCJhdGkiKSB8fCB2ZW5kb3JDb21wb25l
bnRzLmNvbnRhaW5zKCJhbWQiKSkKLSAgICAgICAgbV9pc0FNRCA9IHRydWU7Ci0gICAgaWYgKHZl
bmRvckNvbXBvbmVudHMuY29udGFpbnMoImludGVsIikpCi0gICAgICAgIG1faXNJbnRlbCA9IHRy
dWU7Ci0gICAgaWYgKHZlbmRvckNvbXBvbmVudHMuY29udGFpbnMoImltYWdpbmF0aW9uIikpCi0g
ICAgICAgIG1faXNJbWFnaW5hdGlvbiA9IHRydWU7Ci0KLSNpZiBQTEFURk9STShNQUMpCi0gICAg
aWYgKG1faXNBTUQgfHwgbV9pc0ludGVsKQotICAgICAgICBtX3JlcXVpcmVzQnVpbHRJbkZ1bmN0
aW9uRW11bGF0aW9uID0gdHJ1ZTsKLQotICAgIC8vIEludGVsIEhEIDMwMDAgZGV2aWNlcyBoYXZl
IHByb2JsZW1zIHdpdGggbGFyZ2UgdGV4dHVyZXMuIDxyZGFyOi8vcHJvYmxlbS8xNjY0OTE0MD4K
LSAgICBtX3JlcXVpcmVzUmVzdHJpY3RlZE1heGltdW1UZXh0dXJlU2l6ZSA9IG1fcmVuZGVyZXIu
c3RhcnRzV2l0aCgiSW50ZWwgSEQgR3JhcGhpY3MgMzAwMCIpOwotI2VuZGlmCit7CiB9CiAKIEV4
dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6fkV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbigpID0gZGVm
YXVsdDsKQEAgLTE5Miw5ICsxNjUsNiBAQCBTdHJpbmcgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9u
OjpnZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUoUGxhdGZvcm1HTE9iamVjdAogICAgIFN0
cmluZyBzaGFkZXJJbmZvTG9nOwogICAgIEdDR0x1aW50NjQgZXh0cmFDb21waWxlT3B0aW9ucyA9
IFNIX0NMQU1QX0lORElSRUNUX0FSUkFZX0JPVU5EUyB8IFNIX1VORk9MRF9TSE9SVF9DSVJDVUlU
IHwgU0hfSU5JVF9PVVRQVVRfVkFSSUFCTEVTIHwgU0hfRU5GT1JDRV9QQUNLSU5HX1JFU1RSSUNU
SU9OUyB8IFNIX0xJTUlUX0VYUFJFU1NJT05fQ09NUExFWElUWSB8IFNIX0xJTUlUX0NBTExfU1RB
Q0tfREVQVEggfCBTSF9JTklUSUFMSVpFX1VOSU5JVElBTElaRURfTE9DQUxTOwogCi0gICAgaWYg
KG1fcmVxdWlyZXNCdWlsdEluRnVuY3Rpb25FbXVsYXRpb24pCi0gICAgICAgIGV4dHJhQ29tcGls
ZU9wdGlvbnMgfD0gU0hfRU1VTEFURV9BQlNfSU5UX0ZVTkNUSU9OOwotCiAgICAgVmVjdG9yPHN0
ZDo6cGFpcjxBTkdMRVNoYWRlclN5bWJvbFR5cGUsIHNoOjpTaGFkZXJWYXJpYWJsZT4+IHN5bWJv
bHM7CiAgICAgYm9vbCBpc1ZhbGlkID0gY29tcGlsZXIuY29tcGlsZVNoYWRlclNvdXJjZShlbnRy
eS5zb3VyY2UudXRmOCgpLmRhdGEoKSwgc2hhZGVyVHlwZSwgdHJhbnNsYXRlZFNoYWRlclNvdXJj
ZSwgc2hhZGVySW5mb0xvZywgc3ltYm9scywgZXh0cmFDb21waWxlT3B0aW9ucyk7CiAKQEAgLTIx
NCwyOCArMTg0LDkgQEAgU3RyaW5nIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0VHJhbnNs
YXRlZFNoYWRlclNvdXJjZUFOR0xFKFBsYXRmb3JtR0xPYmplY3QKIAogdm9pZCBFeHRlbnNpb25z
R0xPcGVuR0xDb21tb246OmluaXRpYWxpemVBdmFpbGFibGVFeHRlbnNpb25zKCkKIHsKLSNpZiBQ
TEFURk9STShHVEspICYmICFVU0UoT1BFTkdMX0VTKQotICAgIGlmIChtX3VzZUluZGV4ZWRHZXRT
dHJpbmcpIHsKLSAgICAgICAgR0xpbnQgbnVtRXh0ZW5zaW9ucyA9IDA7Ci0gICAgICAgIDo6Z2xH
ZXRJbnRlZ2VydihHTF9OVU1fRVhURU5TSU9OUywgJm51bUV4dGVuc2lvbnMpOwotICAgICAgICBm
b3IgKEdMaW50IGkgPSAwOyBpIDwgbnVtRXh0ZW5zaW9uczsgKytpKQotICAgICAgICAgICAgbV9h
dmFpbGFibGVFeHRlbnNpb25zLmFkZChnbEdldFN0cmluZ2koR0xfRVhURU5TSU9OUywgaSkpOwot
Ci0gICAgICAgIGlmICghbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9BUkJfdGV4
dHVyZV9zdG9yYWdlIl9zKSkgewotICAgICAgICAgICAgR0xpbnQgbWFqb3JWZXJzaW9uOwotICAg
ICAgICAgICAgZ2xHZXRJbnRlZ2VydihHTF9NQUpPUl9WRVJTSU9OLCAmbWFqb3JWZXJzaW9uKTsK
LSAgICAgICAgICAgIEdMaW50IG1pbm9yVmVyc2lvbjsKLSAgICAgICAgICAgIGdsR2V0SW50ZWdl
cnYoR0xfTUlOT1JfVkVSU0lPTiwgJm1pbm9yVmVyc2lvbik7Ci0gICAgICAgICAgICBpZiAobWFq
b3JWZXJzaW9uID4gNCB8fCAobWFqb3JWZXJzaW9uID09IDQgJiYgbWlub3JWZXJzaW9uID49IDIp
KQotICAgICAgICAgICAgICAgIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5hZGQoIkdMX0FSQl90ZXh0
dXJlX3N0b3JhZ2UiX3MpOwotICAgICAgICB9Ci0gICAgfSBlbHNlCi0jZW5kaWYKLSAgICB7Ci0g
ICAgICAgIFN0cmluZyBleHRlbnNpb25zU3RyaW5nID0gZ2V0RXh0ZW5zaW9ucygpOwotICAgICAg
ICBmb3IgKGF1dG8mIGV4dGVuc2lvbiA6IGV4dGVuc2lvbnNTdHJpbmcuc3BsaXQoJyAnKSkKLSAg
ICAgICAgICAgIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5hZGQoZXh0ZW5zaW9uKTsKLSAgICB9Cisg
ICAgU3RyaW5nIGV4dGVuc2lvbnNTdHJpbmcgPSBnZXRFeHRlbnNpb25zKCk7CisgICAgZm9yIChh
dXRvJiBleHRlbnNpb24gOiBleHRlbnNpb25zU3RyaW5nLnNwbGl0KCcgJykpCisgICAgICAgIG1f
YXZhaWxhYmxlRXh0ZW5zaW9ucy5hZGQoZXh0ZW5zaW9uKTsKICAgICBtX2luaXRpYWxpemVkQXZh
aWxhYmxlRXh0ZW5zaW9ucyA9IHRydWU7CiB9CiAKQEAgLTI1NCw2ICsyMDUsNyBAQCB2b2lkIEV4
dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0blVuaWZvcm1pdkVYVChHQ0dMdWludCwgaW50LCBH
Q0dMc2l6ZWksIEdDR0xpbgogICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5W
QUxJRF9PUEVSQVRJT04pOwogfQogCisjaWYgMAogdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21t
b246OnJlYWRQaXhlbHNSb2J1c3RBTkdMRShpbnQsIGludCwgR0NHTHNpemVpLCBHQ0dMc2l6ZWks
IEdDR0xlbnVtLCBHQ0dMZW51bSwgR0NHTHNpemVpLCBHQ0dMc2l6ZWkgKiwgR0NHTHNpemVpICos
IEdDR0xzaXplaSAqLCB2b2lkICopCiB7CiAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJv
cihHTF9JTlZBTElEX09QRVJBVElPTik7CkBAIC0zNjUsMTIgKzMxNywxNCBAQCB2b2lkIEV4dGVu
c2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0UG9pbnRlcnZSb2J1c3RBTkdMRVJvYnVzdEFOR0xFKEdD
R0xlbnVtLCBHQ0dMcwogewogICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5W
QUxJRF9PUEVSQVRJT04pOwogfQorI2VuZGlmCiAKIHZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29t
bW9uOjpyZWFkblBpeGVsc1JvYnVzdEFOR0xFKGludCwgaW50LCBHQ0dMc2l6ZWksIEdDR0xzaXpl
aSwgR0NHTGVudW0sIEdDR0xlbnVtLCBHQ0dMc2l6ZWksIEdDR0xzaXplaSAqLCBHQ0dMc2l6ZWkg
KiwgR0NHTHNpemVpICosIHZvaWQgKiwgYm9vbCkKIHsKICAgICBtX2NvbnRleHQtPnN5bnRoZXNp
emVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKIH0KIAorI2lmIDAKIHZvaWQgRXh0ZW5z
aW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRuVW5pZm9ybWZ2Um9idXN0QU5HTEUoR0NHTHVpbnQsIGlu
dCwgR0NHTHNpemVpLCBHQ0dMc2l6ZWkgKiwgR0NHTGZsb2F0ICopCiB7CiAgICAgbV9jb250ZXh0
LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CkBAIC00NDEsNyArMzk1
LDcgQEAgdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFF1ZXJ5T2JqZWN0dWk2NHZS
b2J1c3RBTkdMRShHQ0dMdWludCwgR0NHTGVudW0KIHsKICAgICBtX2NvbnRleHQtPnN5bnRoZXNp
emVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKIH0KLQorI2VuZGlmCiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5oCmluZGV4
IGJmZTQ1MjE1NDNmZjRiMjcyMTM3ZjM0NGNlZTRhMjJkOGZiMjhjNjQuLmExYTQ1OTAzZWUzZWQx
OWYzMzdjNWUwZmJlYzc5MTk3OTc1MzNhODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdM
Q29tbW9uLmgKQEAgLTU1LDIwICs1NSwxMiBAQCBwdWJsaWM6CiAgICAgU3RyaW5nIGdldFRyYW5z
bGF0ZWRTaGFkZXJTb3VyY2VBTkdMRShQbGF0Zm9ybUdMT2JqZWN0KSBvdmVycmlkZTsKIAogICAg
IC8vIEVYVCBSb2J1c3RuZXNzIC0gdXNlcyBnZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJCKCkKLSAg
ICB2b2lkIHJlYWRuUGl4ZWxzRVhUKGludCB4LCBpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dM
c2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBi
dWZTaXplLCB2b2lkICpkYXRhKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldG5Vbmlmb3JtZnZFWFQo
R0NHTHVpbnQgcHJvZ3JhbSwgaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgZmxvYXQg
KnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRuVW5pZm9ybWl2RVhUKEdDR0x1aW50IHBy
b2dyYW0sIGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIGludCAqcGFyYW1zKSBvdmVy
cmlkZTsKLQotICAgIGJvb2wgaXNOVklESUEoKSBvdmVycmlkZSB7IHJldHVybiBtX2lzTlZJRElB
OyB9Ci0gICAgYm9vbCBpc0FNRCgpIG92ZXJyaWRlIHsgcmV0dXJuIG1faXNBTUQ7IH0KLSAgICBi
b29sIGlzSW50ZWwoKSBvdmVycmlkZSB7IHJldHVybiBtX2lzSW50ZWw7IH0KLSAgICBib29sIGlz
SW1hZ2luYXRpb24oKSBvdmVycmlkZSB7IHJldHVybiBtX2lzSW1hZ2luYXRpb247IH0KLSAgICBT
dHJpbmcgdmVuZG9yKCkgb3ZlcnJpZGUgeyByZXR1cm4gbV92ZW5kb3I7IH0KLQotICAgIGJvb2wg
cmVxdWlyZXNCdWlsdEluRnVuY3Rpb25FbXVsYXRpb24oKSBvdmVycmlkZSB7IHJldHVybiBtX3Jl
cXVpcmVzQnVpbHRJbkZ1bmN0aW9uRW11bGF0aW9uOyB9Ci0gICAgYm9vbCByZXF1aXJlc1Jlc3Ry
aWN0ZWRNYXhpbXVtVGV4dHVyZVNpemUoKSBvdmVycmlkZSB7IHJldHVybiBtX3JlcXVpcmVzUmVz
dHJpY3RlZE1heGltdW1UZXh0dXJlU2l6ZTsgfQorICAgIHZvaWQgcmVhZG5QaXhlbHNFWFQoaW50
IHgsIGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZv
cm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIHZvaWQgKmRhdGEpOworICAg
IHZvaWQgZ2V0blVuaWZvcm1mdkVYVChHQ0dMdWludCBwcm9ncmFtLCBpbnQgbG9jYXRpb24sIEdD
R0xzaXplaSBidWZTaXplLCBmbG9hdCAqcGFyYW1zKTsKKyAgICB2b2lkIGdldG5Vbmlmb3JtaXZF
WFQoR0NHTHVpbnQgcHJvZ3JhbSwgaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgaW50
ICpwYXJhbXMpOwogCiAgICAgLy8gR0xfQU5HTEVfcm9idXN0X2NsaWVudF9tZW1vcnkKKyNpZiAw
CiAgICAgdm9pZCByZWFkUGl4ZWxzUm9idXN0QU5HTEUoaW50IHgsIGludCB5LCBHQ0dMc2l6ZWkg
d2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwg
R0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMc2l6ZWkgKmNvbHVtbnMs
IEdDR0xzaXplaSAqcm93cywgdm9pZCAqcGl4ZWxzKSBvdmVycmlkZTsKICAgICB2b2lkIHRleFBh
cmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NH
THNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xmbG9hdCAqcGFyYW1zKSBvdmVycmlkZTsKICAgICB2
b2lkIHRleFBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBw
bmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xpbnQgKnBhcmFtcykgb3ZlcnJpZGU7
CkBAIC05Myw3ICs4NSwxMSBAQCBwdWJsaWM6CiAgICAgdm9pZCBnZXRUZXhMZXZlbFBhcmFtZXRl
cmZ2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBpbnQgbGV2ZWwsIEdDR0xlbnVtIHBuYW1l
LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xmbG9hdCAqcGFyYW1z
KSBvdmVycmlkZTsKIAogICAgIHZvaWQgZ2V0UG9pbnRlcnZSb2J1c3RBTkdMRVJvYnVzdEFOR0xF
KEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIHZv
aWQgKipwYXJhbXMpIG92ZXJyaWRlOworI2VuZGlmCisKICAgICB2b2lkIHJlYWRuUGl4ZWxzUm9i
dXN0QU5HTEUoaW50IHgsIGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQs
IEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xz
aXplaSAqbGVuZ3RoLCBHQ0dMc2l6ZWkgKmNvbHVtbnMsIEdDR0xzaXplaSAqcm93cywgdm9pZCAq
ZGF0YSwgYm9vbCByZWFkaW5nVG9QaXhlbEJ1ZmZlck9iamVjdCkgb3ZlcnJpZGU7CisKKyNpZiAw
CiAgICAgdm9pZCBnZXRuVW5pZm9ybWZ2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgaW50
IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xmbG9h
dCAqcGFyYW1zKSBvdmVycmlkZTsKICAgICB2b2lkIGdldG5Vbmlmb3JtaXZSb2J1c3RBTkdMRShH
Q0dMdWludCBwcm9ncmFtLCBpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6
ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVycmlkZTsKICAgICB2b2lkIGdldG5Vbmlm
b3JtdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgaW50IGxvY2F0aW9uLCBHQ0dMc2l6
ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0x1aW50ICpwYXJhbXMpIG92ZXJyaWRl
OwpAQCAtMTA5LDEwICsxMDUsMTEgQEAgcHVibGljOgogICAgIHZvaWQgZ2V0UXVlcnlPYmplY3Rp
dlJvYnVzdEFOR0xFKEdDR0x1aW50IGlkLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNp
emUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJyaWRlOwogICAgIHZv
aWQgZ2V0UXVlcnlPYmplY3RpNjR2Um9idXN0QU5HTEUoR0NHTHVpbnQgaWQsIEdDR0xlbnVtIHBu
YW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQ2NCAqcGFy
YW1zKSBvdmVycmlkZTsKICAgICB2b2lkIGdldFF1ZXJ5T2JqZWN0dWk2NHZSb2J1c3RBTkdMRShH
Q0dMdWludCBpZCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkg
Kmxlbmd0aCwgR0NHTHVpbnQ2NCAqcGFyYW1zKSBvdmVycmlkZTsKKyNlbmRpZgogCiBwcm90ZWN0
ZWQ6CiAgICAgZnJpZW5kIGNsYXNzIEV4dGVuc2lvbnNHTE9wZW5HTEVTOwotICAgIEV4dGVuc2lv
bnNHTE9wZW5HTENvbW1vbihHcmFwaGljc0NvbnRleHRHTE9wZW5HTCosIGJvb2wgdXNlSW5kZXhl
ZEdldFN0cmluZyk7CisgICAgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uKEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMKik7CiAKICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNFeHRlbnNpb24oY29uc3Qg
U3RyaW5nJikgPSAwOwogICAgIHZpcnR1YWwgU3RyaW5nIGdldEV4dGVuc2lvbnMoKSA9IDA7CkBA
IC0xMjMsMTggKzEyMCw2IEBAIHByb3RlY3RlZDoKIAogICAgIC8vIFdlYWsgcG9pbnRlciBiYWNr
IHRvIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMCiAgICAgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wq
IG1fY29udGV4dDsKLQotICAgIGJvb2wgbV9pc05WSURJQTsKLSAgICBib29sIG1faXNBTUQ7Ci0g
ICAgYm9vbCBtX2lzSW50ZWw7Ci0gICAgYm9vbCBtX2lzSW1hZ2luYXRpb247Ci0gICAgYm9vbCBt
X3JlcXVpcmVzQnVpbHRJbkZ1bmN0aW9uRW11bGF0aW9uOwotICAgIGJvb2wgbV9yZXF1aXJlc1Jl
c3RyaWN0ZWRNYXhpbXVtVGV4dHVyZVNpemU7Ci0KLSAgICBib29sIG1fdXNlSW5kZXhlZEdldFN0
cmluZyB7IGZhbHNlIH07Ci0KLSAgICBTdHJpbmcgbV92ZW5kb3I7Ci0gICAgU3RyaW5nIG1fcmVu
ZGVyZXI7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMRVMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9w
ZW5HTEVTLmNwcAppbmRleCAzNmMzZWYzOGY5OGI5OWFmMDExNTA2OTkxNDI3YmFjZWZjYmI4YWMz
Li5hNzAxNjRmOTBjNjA0YWFhNTViZGY3NTVlMDc4NjgxZjkwMTVmZTgyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdM
RVMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRl
bnNpb25zR0xPcGVuR0xFUy5jcHAKQEAgLTEwMCwxMSArMTAwLDYgQEAgdm9pZCBFeHRlbnNpb25z
R0xPcGVuR0xFUzo6cmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlSU1HKHVuc2lnbmVkIGxv
bmcgdGFyZ2UKICAgICAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElE
X09QRVJBVElPTik7CiB9CiAKLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMRVM6OmJsaXRGcmFtZWJ1
ZmZlcihsb25nIC8qIHNyY1gwICovLCBsb25nIC8qIHNyY1kwICovLCBsb25nIC8qIHNyY1gxICov
LCBsb25nIC8qIHNyY1kxICovLCBsb25nIC8qIGRzdFgwICovLCBsb25nIC8qIGRzdFkwICovLCBs
b25nIC8qIGRzdFgxICovLCBsb25nIC8qIGRzdFkxICovLCB1bnNpZ25lZCBsb25nIC8qIG1hc2sg
Ki8sIHVuc2lnbmVkIGxvbmcgLyogZmlsdGVyICovKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7
Ci19Ci0KIHZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMRVM6OnJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0
aXNhbXBsZSh1bnNpZ25lZCBsb25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBzYW1wbGVzLCB1bnNp
Z25lZCBsb25nIGludGVybmFsZm9ybWF0LCB1bnNpZ25lZCBsb25nIHdpZHRoLCB1bnNpZ25lZCBs
b25nIGhlaWdodCkKIHsKICAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0
ZW5zaW9uc0dMT3BlbkdMRVMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29w
ZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xFUy5oCmluZGV4IDAxN2E0NWI3Mzk4ZDA5OTJlZDE0NzY3
ZjA3NjdlMDRiNDY0MTYyODMuLjdlZjk2YjIzYzU5ODY4MWQxZDgwYTE4NzZjMTg3YmQxM2ZhMjE3
NWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9F
eHRlbnNpb25zR0xPcGVuR0xFUy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xFUy5oCkBAIC03MiwxNCArNzIsMTAgQEAgcHVi
bGljOgogCiAgICAgdmlydHVhbCB2b2lkIGZyYW1lYnVmZmVyVGV4dHVyZTJETXVsdGlzYW1wbGVJ
TUcodW5zaWduZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgYXR0YWNobWVudCwgdW5zaWdu
ZWQgbG9uZyB0ZXh0YXJnZXQsIHVuc2lnbmVkIHRleHR1cmUsIGludCBsZXZlbCwgdW5zaWduZWQg
bG9uZyBzYW1wbGVzKTsKICAgICB2aXJ0dWFsIHZvaWQgcmVuZGVyYnVmZmVyU3RvcmFnZU11bHRp
c2FtcGxlSU1HKHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25nIHNhbXBsZXMsIHVu
c2lnbmVkIGxvbmcgaW50ZXJuYWxmb3JtYXQsIHVuc2lnbmVkIGxvbmcgd2lkdGgsIHVuc2lnbmVk
IGxvbmcgaGVpZ2h0KTsKKyAgICB2b2lkIHJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZSh1
bnNpZ25lZCBsb25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBzYW1wbGVzLCB1bnNpZ25lZCBsb25n
IGludGVybmFsZm9ybWF0LCB1bnNpZ25lZCBsb25nIHdpZHRoLCB1bnNpZ25lZCBsb25nIGhlaWdo
dCk7CiAKICAgICAvLyBFeHRlbnNpb24zRCBtZXRob2RzCiAgICAgYm9vbCBpc0VuYWJsZWQoY29u
c3QgU3RyaW5nJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBibGl0RnJhbWVidWZmZXIobG9uZyBzcmNY
MCwgbG9uZyBzcmNZMCwgbG9uZyBzcmNYMSwgbG9uZyBzcmNZMSwgbG9uZyBkc3RYMCwgbG9uZyBk
c3RZMCwgbG9uZyBkc3RYMSwgbG9uZyBkc3RZMSwgdW5zaWduZWQgbG9uZyBtYXNrLCB1bnNpZ25l
ZCBsb25nIGZpbHRlcikgb3ZlcnJpZGU7Ci0gICAgdm9pZCByZW5kZXJidWZmZXJTdG9yYWdlTXVs
dGlzYW1wbGUodW5zaWduZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgc2FtcGxlcywgdW5z
aWduZWQgbG9uZyBpbnRlcm5hbGZvcm1hdCwgdW5zaWduZWQgbG9uZyB3aWR0aCwgdW5zaWduZWQg
bG9uZyBoZWlnaHQpIG92ZXJyaWRlOwotICAgIHZvaWQgaW5zZXJ0RXZlbnRNYXJrZXJFWFQoY29u
c3QgU3RyaW5nJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBwdXNoR3JvdXBNYXJrZXJFWFQoY29uc3Qg
U3RyaW5nJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBwb3BHcm91cE1hcmtlckVYVCh2b2lkKSBvdmVy
cmlkZTsKIAogICAgIFBsYXRmb3JtR0xPYmplY3QgY3JlYXRlVmVydGV4QXJyYXlPRVMoKSBvdmVy
cmlkZTsKICAgICB2b2lkIGRlbGV0ZVZlcnRleEFycmF5T0VTKFBsYXRmb3JtR0xPYmplY3QpIG92
ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Bl
bmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMRVMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMRVMuY3BwCmluZGV4IDIz
ZDc0ZmE4MGQ3MDc5MWJlNjAwZGY1OGU3NTYxNzMzOTZhYTU1MDUuLmU3YjhjYzViYjhlMDMyYTZj
ZDE0YjA0MGIzZjViMmU4YzEyMmVjMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEVTLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0xFUy5jcHAKQEAgLTExOSw3ICsxMTksNyBAQCBib29sIEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjpyZXNoYXBlRkJPcyhjb25zdCBJbnRTaXplJiBzaXplKQogI2VuZGlmCiAKICAgICBFeHRl
bnNpb25zR0xPcGVuR0xFUyYgZXh0ZW5zaW9ucyA9IHN0YXRpY19jYXN0PEV4dGVuc2lvbnNHTE9w
ZW5HTEVTJj4oZ2V0RXh0ZW5zaW9ucygpKTsKLSAgICBpZiAoZXh0ZW5zaW9ucy5pc0ltYWdpbmF0
aW9uKCkgJiYgYXR0cmlidXRlcy5hbnRpYWxpYXMpIHsKKyAgICBpZiAoYXR0cmlidXRlcy5hbnRp
YWxpYXMpIHsKICAgICAgICAgR0xpbnQgbWF4U2FtcGxlQ291bnQ7CiAgICAgICAgIDo6Z2xHZXRJ
bnRlZ2VydihFeHRlbnNpb25zR0w6Ok1BWF9TQU1QTEVTX0lNRywgJm1heFNhbXBsZUNvdW50KTsg
CiAgICAgICAgIEdMaW50IHNhbXBsZUNvdW50ID0gc3RkOjptaW4oOCwgbWF4U2FtcGxlQ291bnQp
Owo=
</data>
<flag name="commit-queue"
          id="432299"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>415165</attachid>
            <date>2020-12-01 14:30:38 -0800</date>
            <delta_ts>2020-12-01 15:31:54 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-218896-20201201143037.patch</filename>
            <type>text/plain</type>
            <size>37956</size>
            <attacher name="Rini Patel">rini_patel</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwMjU1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTg2NmY3ODkzZWY2Njhh
Y2ZhOWQ1M2Q1YmEzMGE2ZjMxOGFlMDM3Ny4uYWQ1Mjc0ZmU5Mjk4MTcyMTc4M2YzZTIyYTJmNjM2
Yzg3OTJiMTcxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDIwLTExLTMwICBSaW5p
IFBhdGVsICA8cmluaV9wYXRlbEBhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3ZlIHVudXNlZCBm
dW5jdGlvbnMgZnJvbSBHcmFwaGljc0NvbnRleHRHTCBhbmQgRXh0ZW5zaW9uc0dMCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTg4OTYKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW1vdmUgdW51c2VkIGZ1
bmN0aW9ucyBmcm9tIEdyYXBoaWNzQ29udGV4dEdMIGFuZCBFeHRlbnNpb25zR0wKKyAgICAgICAg
VGhleSdyZSBkZWFkIGNvZGUgYW5kIG1ha2UgaXQgaGFyZGVyIHRvIGltcGxlbWVudCB0aGUgR1BV
IFByb2Nlc3MgdmVyc2lvbi4KKworICAgICAgICAtIElmIHRoZSBmdW5jdGlvbiBpcyB1bnVzZWQs
IHJlbW92ZSBpdCBmdWxseQorICAgICAgICAtIElmIHRoZSBmdW5jdGlvbiBpcyB1bnVzZWQgaW4g
VVNFKEFOR0xFKSBXZWJHTCBwYXJ0LCByZW1vdmUgdGhlIGZ1bmN0aW9uIGZyb20gR3JhcGhpY3ND
b250ZXh0R0wgYW5kIEFOR0xFIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMCisKKyAgICAgICAgKiBo
dG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvRXh0ZW5zaW9uc0dMLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
YW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9u
c0dMQU5HTEU6OkV4dGVuc2lvbnNHTEFOR0xFKToKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lv
bnNHTEFOR0xFOjppbml0aWFsaXplQXZhaWxhYmxlRXh0ZW5zaW9ucyk6CisgICAgICAgIChXZWJD
b3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6YmxpdEZyYW1lYnVmZmVyKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpyZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlz
YW1wbGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6Omlu
c2VydEV2ZW50TWFya2VyRVhUKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lv
bnNHTEFOR0xFOjpwdXNoR3JvdXBNYXJrZXJFWFQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OnBvcEdyb3VwTWFya2VyRVhUKTogRGVsZXRlZC4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRlbnNpb25zR0xBTkdMRS5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMOjpibGl0RnJhbWVidWZmZXIpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMOjpyZW5kZXJidWZmZXJT
dG9yYWdlTXVsdGlzYW1wbGUpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMRVMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXh0
ZW5zaW9uc0dMT3BlbkdMRVM6OmJsaXRGcmFtZWJ1ZmZlcik6IERlbGV0ZWQuCisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVTLmg6CisKIDIwMjAt
MTEtMzAgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIE1pc3Np
bmcgV2ViUlRDIE1ldHJpY3MgaW4gaU9TIDE0IEJldGEgNQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcAppbmRleCA1
NTc4NGUxYTMzZWMwNWI0MDI5NTMxMGY2ZWIwZTdjZTBhNWU5OGRkLi4yYWVjZWI4YTk1MDNlZDM5
MmViNzE1ZDM2ODJjZmI5YTU1ZWI0NTM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcApAQCAtNzQxLDEwICs3
NDEsNiBAQCBzdGQ6OnVuaXF1ZV9wdHI8V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZT4gV2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZTo6Y3JlYXRlKENhbgogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
ICAgICB9CiAKLSAgICBhdXRvJiBleHRlbnNpb25zID0gY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygp
OwotICAgIGlmIChleHRlbnNpb25zLnN1cHBvcnRzKCJHTF9FWFRfZGVidWdfbWFya2VyIl9zKSkK
LSAgICAgICAgZXh0ZW5zaW9ucy5wdXNoR3JvdXBNYXJrZXJFWFQoIldlYkdMUmVuZGVyaW5nQ29u
dGV4dCJfcyk7Ci0KICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZT4gcmVuZGVyaW5nQ29udGV4dDsKICNpZiBFTkFCTEUoV0VCR0wyKQogICAgIGlmICh0eXBlID09
ICJ3ZWJnbDIiKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
RXh0ZW5zaW9uc0dMLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9FeHRlbnNp
b25zR0wuaAppbmRleCAwNmMxMjExMjdlMjJkMTNlNmJlMzg2YjhlYmJhNzZjNjcxMTZhMTNkLi4w
MzNkZjE1ZjQxMTE1MjQ4MjQ5ZDM4MmU2MGFmODMyNDVhZGU0MDk3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9FeHRlbnNpb25zR0wuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9FeHRlbnNpb25zR0wuaApAQCAtMjc1LDEyICsyNzUs
NiBAQCBwdWJsaWM6CiAgICAgLy8gZXh0ZXJuYWxseS4KICAgICB2aXJ0dWFsIEdDR0xpbnQgZ2V0
R3JhcGhpY3NSZXNldFN0YXR1c0FSQigpID0gMDsKIAotICAgIC8vIEdMX0FOR0xFX2ZyYW1lYnVm
ZmVyX2JsaXQKLSAgICB2aXJ0dWFsIHZvaWQgYmxpdEZyYW1lYnVmZmVyKGxvbmcgc3JjWDAsIGxv
bmcgc3JjWTAsIGxvbmcgc3JjWDEsIGxvbmcgc3JjWTEsIGxvbmcgZHN0WDAsIGxvbmcgZHN0WTAs
IGxvbmcgZHN0WDEsIGxvbmcgZHN0WTEsIHVuc2lnbmVkIGxvbmcgbWFzaywgdW5zaWduZWQgbG9u
ZyBmaWx0ZXIpID0gMDsKLQotICAgIC8vIEdMX0FOR0xFX2ZyYW1lYnVmZmVyX211bHRpc2FtcGxl
Ci0gICAgdmlydHVhbCB2b2lkIHJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZSh1bnNpZ25l
ZCBsb25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBzYW1wbGVzLCB1bnNpZ25lZCBsb25nIGludGVy
bmFsZm9ybWF0LCB1bnNpZ25lZCBsb25nIHdpZHRoLCB1bnNpZ25lZCBsb25nIGhlaWdodCkgPSAw
OwotCiAgICAgLy8gR0xfT0VTX3ZlcnRleF9hcnJheV9vYmplY3QKICAgICB2aXJ0dWFsIFBsYXRm
b3JtR0xPYmplY3QgY3JlYXRlVmVydGV4QXJyYXlPRVMoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lk
IGRlbGV0ZVZlcnRleEFycmF5T0VTKFBsYXRmb3JtR0xPYmplY3QpID0gMDsKQEAgLTI5MCwxMSAr
Mjg0LDYgQEAgcHVibGljOgogICAgIC8vIEdMX0FOR0xFX3RyYW5zbGF0ZWRfc2hhZGVyX3NvdXJj
ZQogICAgIHZpcnR1YWwgU3RyaW5nIGdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRShQbGF0
Zm9ybUdMT2JqZWN0KSA9IDA7CiAKLSAgICAvLyBHTF9FWFRfZGVidWdfbWFya2VyCi0gICAgdmly
dHVhbCB2b2lkIGluc2VydEV2ZW50TWFya2VyRVhUKGNvbnN0IFN0cmluZyYpID0gMDsKLSAgICB2
aXJ0dWFsIHZvaWQgcHVzaEdyb3VwTWFya2VyRVhUKGNvbnN0IFN0cmluZyYpID0gMDsKLSAgICB2
aXJ0dWFsIHZvaWQgcG9wR3JvdXBNYXJrZXJFWFQodm9pZCkgPSAwOwotCiAgICAgLy8gR0xfQVJC
X2RyYXdfYnVmZmVycyAvIEdMX0VYVF9kcmF3X2J1ZmZlcnMKICAgICB2aXJ0dWFsIHZvaWQgZHJh
d0J1ZmZlcnNFWFQoR0NHTFNwYW48Y29uc3QgR0NHTGVudW0+IGJ1ZnMpID0gMDsKIApAQCAtMzAz
LDQ4ICsyOTIsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRyYXdFbGVtZW50c0luc3Rh
bmNlZChHQ0dMZW51bSBtb2RlLCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xlbnVtIHR5cGUsIGxvbmcg
bG9uZyBvZmZzZXQsIEdDR0xzaXplaSBwcmltY291bnQpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
dmVydGV4QXR0cmliRGl2aXNvcihHQ0dMdWludCBpbmRleCwgR0NHTHVpbnQgZGl2aXNvcikgPSAw
OwogCi0gICAgLy8gR0xfQU5HTEVfcm9idXN0X2NsaWVudF9tZW1vcnkKLSAgICB2aXJ0dWFsIHZv
aWQgcmVhZFBpeGVsc1JvYnVzdEFOR0xFKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkg
d2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwg
R0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMc2l6ZWkqIGNvbHVtbnMs
IEdDR0xzaXplaSogcm93cywgR0NHTHZvaWQqIHBpeGVscykgPSAwOwotICAgIHZpcnR1YWwgdm9p
ZCB0ZXhQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5h
bWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMZmxvYXQqIHBhcmFtcykgPSAwOwotICAg
IHZpcnR1YWwgdm9pZCB0ZXhQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwg
R0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMaW50KiBwYXJhbXMp
ID0gMDsKLQotICAgIHZpcnR1YWwgdm9pZCBnZXRRdWVyeWl2Um9idXN0QU5HTEUoR0NHTGVudW0g
dGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVu
Z3RoLCBHQ0dMaW50KiBwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0UXVlcnlPYmpl
Y3R1aXZSb2J1c3RBTkdMRShHQ0dMdWludCBpZCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBi
dWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHVpbnQqIHBhcmFtcykgPSAwOwotICAgIHZp
cnR1YWwgdm9pZCBnZXRCdWZmZXJQb2ludGVydlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwg
R0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NH
THZvaWQqKiBwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0SW50ZXJuYWxmb3JtYXRp
dlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdD
R0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xp
bnQqIHBhcmFtcykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJJaXZSb2J1
c3RBTkdMRShHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXpl
LCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2
b2lkIGdldFZlcnRleEF0dHJpYkl1aXZSb2J1c3RBTkdMRShHQ0dMdWludCBpbmRleCwgR0NHTGVu
dW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHVpbnQq
IHBhcmFtcykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRVbmlmb3JtdWl2Um9idXN0QU5HTEUo
R0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdD
R0xzaXplaSogbGVuZ3RoLCBHQ0dMdWludCogcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lk
IGdldEJ1ZmZlclBhcmFtZXRlcmk2NHZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xl
bnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQ2
NCogcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHNhbXBsZXJQYXJhbWV0ZXJpdlJvYnVz
dEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6
ZSwgY29uc3QgR0NHTGludCogcGFyYW0pID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgc2FtcGxlclBh
cmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdD
R0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMZmxvYXQqIHBhcmFtKSA9IDA7Ci0gICAgdmlydHVh
bCB2b2lkIGdldFNhbXBsZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIs
IEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdD
R0xpbnQqIHBhcmFtcykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRTYW1wbGVyUGFyYW1ldGVy
ZnZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVp
IGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMZmxvYXQqIHBhcmFtcykgPSAwOwotCi0g
ICAgdmlydHVhbCB2b2lkIGdldEZyYW1lYnVmZmVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVp
KiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRQcm9n
cmFtSW50ZXJmYWNlaXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMZW51bSBwcm9n
cmFtSW50ZXJmYWNlLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXpl
aSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0Qm9v
bGVhbmlfdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTHVpbnQgaW5kZXgsIEdDR0xz
aXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGJvb2xlYW4qIGRhdGEpID0gMDsg
Ly8gTk9MSU5UCi0gICAgdmlydHVhbCB2b2lkIGdldE11bHRpc2FtcGxlZnZSb2J1c3RBTkdMRShH
Q0dMZW51bSBwbmFtZSwgR0NHTHVpbnQgaW5kZXgsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6
ZWkqIGxlbmd0aCwgR0NHTGZsb2F0KiB2YWwpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0VGV4
TGV2ZWxQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZl
bCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwg
R0NHTGludCogcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldFRleExldmVsUGFyYW1l
dGVyZnZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVt
IHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xmbG9hdCog
cGFyYW1zKSA9IDA7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgZ2V0UG9pbnRlcnZSb2J1c3RBTkdMRVJv
YnVzdEFOR0xFKEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBs
ZW5ndGgsIEdDR0x2b2lkKiogcGFyYW1zKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHJlYWRuUGl4
ZWxzUm9idXN0QU5HTEUoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NH
THNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkg
YnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xzaXplaSogY29sdW1ucywgR0NHTHNpemVp
KiByb3dzLCBHQ0dMdm9pZCogZGF0YSwgYm9vbCByZWFkaW5nVG9QaXhlbEJ1ZmZlck9iamVjdCkg
PSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRuVW5pZm9ybWZ2Um9idXN0QU5HTEUoR0NHTHVpbnQg
cHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSog
bGVuZ3RoLCBHQ0dMZmxvYXQqIHBhcmFtcykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRuVW5p
Zm9ybWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NH
THNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpID0gMDsK
LSAgICB2aXJ0dWFsIHZvaWQgZ2V0blVuaWZvcm11aXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9n
cmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5n
dGgsIEdDR0x1aW50KiBwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgdGV4UGFyYW1ldGVy
SWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVp
IGJ1ZlNpemUsIGNvbnN0IEdDR0xpbnQqIHBhcmFtcykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCB0
ZXhQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFt
ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0x1aW50KiBwYXJhbXMpID0gMDsKLSAgICB2
aXJ0dWFsIHZvaWQgZ2V0VGV4UGFyYW1ldGVySWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBH
Q0dMaW50KiBwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0VGV4UGFyYW1ldGVySXVp
dlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBi
dWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHVpbnQqIHBhcmFtcykgPSAwOwotICAgIHZp
cnR1YWwgdm9pZCBzYW1wbGVyUGFyYW1ldGVySWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxl
ciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMaW50KiBwYXJh
bSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBzYW1wbGVyUGFyYW1ldGVySXVpdlJvYnVzdEFOR0xF
KEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29u
c3QgR0NHTHVpbnQqIHBhcmFtKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldFNhbXBsZXJQYXJh
bWV0ZXJJaXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NH
THNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpID0gMDsK
LSAgICB2aXJ0dWFsIHZvaWQgZ2V0U2FtcGxlclBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRShHQ0dM
dWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXpl
aSogbGVuZ3RoLCBHQ0dMdWludCogcGFyYW1zKSA9IDA7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgZ2V0
UXVlcnlPYmplY3RpdlJvYnVzdEFOR0xFKEdDR0x1aW50IGlkLCBHQ0dMZW51bSBwbmFtZSwgR0NH
THNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpID0gMDsK
LSAgICB2aXJ0dWFsIHZvaWQgZ2V0UXVlcnlPYmplY3RpNjR2Um9idXN0QU5HTEUoR0NHTHVpbnQg
aWQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgs
IEdDR0xpbnQ2NCogcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldFF1ZXJ5T2JqZWN0
dWk2NHZSb2J1c3RBTkdMRShHQ0dMdWludCBpZCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBi
dWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHVpbnQ2NCogcGFyYW1zKSA9IDA7CiAKICAg
ICAvLyBPdGhlciBmdW5jdGlvbnMuCiAjaWYgIVVTRShBTkdMRSkKQEAgLTM1MywxOCArMzAxLDYg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBnZXRuVW5pZm9ybWZ2RVhUKEdDR0x1aW50IHBy
b2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMZmxvYXQqIHBh
cmFtcykgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBnZXRuVW5pZm9ybWl2RVhUKEdDR0x1aW50IHBy
b2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMaW50KiBwYXJh
bXMpID0gMDsKICNlbmRpZgotCi0gICAgdmlydHVhbCBib29sIGlzTlZJRElBKCkgPSAwOwotICAg
IHZpcnR1YWwgYm9vbCBpc0FNRCgpID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgaXNJbnRlbCgpID0g
MDsKLSAgICB2aXJ0dWFsIGJvb2wgaXNJbWFnaW5hdGlvbigpID0gMDsKLSAgICB2aXJ0dWFsIFN0
cmluZyB2ZW5kb3IoKSA9IDA7Ci0KLSAgICAvLyBTb21lIGNvbmZpZ3VyYXRpb25zIGhhdmUgYnVn
cyByZWdhcmRpbmcgYnVpbHQtaW4gZnVuY3Rpb25zIGluIHRoZWlyIE9wZW5HTCBkcml2ZXJzCi0g
ICAgLy8gdGhhdCBtdXN0IGJlIGF2b2lkZWQuIFBvcnRzIHNob3VsZCBpbXBsZW1lbnQgdGhlc2Ug
ZmxhZ3Mgb24gc3VjaCBjb25maWd1cmF0aW9ucy4KLSAgICB2aXJ0dWFsIGJvb2wgcmVxdWlyZXNC
dWlsdEluRnVuY3Rpb25FbXVsYXRpb24oKSA9IDA7Ci0gICAgdmlydHVhbCBib29sIHJlcXVpcmVz
UmVzdHJpY3RlZE1heGltdW1UZXh0dXJlU2l6ZSgpID0gMDsKLQogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUuY3BwCmluZGV4IDI4M2RhODJjNmE2MDJlYTRi
NTU3YzY4NmNmZDgyM2QwODFjNTVlNGEuLjFkYTg0MmNmZDcyOGY4YmQzYmQ3Y2JhNGM2MjhhNjYz
OGUyZTZkOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Fu
Z2xlL0V4dGVuc2lvbnNHTEFOR0xFLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hbmdsZS9FeHRlbnNpb25zR0xBTkdMRS5jcHAKQEAgLTQzLDMxICs0MywxMCBAQCB0
eXBlZGVmIHZvaWQqIEdMZWdsQ29udGV4dDsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1FeHRl
bnNpb25zR0xBTkdMRTo6RXh0ZW5zaW9uc0dMQU5HTEUoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wq
IGNvbnRleHQsIGJvb2wgdXNlSW5kZXhlZEdldFN0cmluZykKK0V4dGVuc2lvbnNHTEFOR0xFOjpF
eHRlbnNpb25zR0xBTkdMRShHcmFwaGljc0NvbnRleHRHTE9wZW5HTCogY29udGV4dCkKICAgICA6
IG1faW5pdGlhbGl6ZWRBdmFpbGFibGVFeHRlbnNpb25zKGZhbHNlKQogICAgICwgbV9jb250ZXh0
KGNvbnRleHQpCi0gICAgLCBtX2lzTlZJRElBKGZhbHNlKQotICAgICwgbV9pc0FNRChmYWxzZSkK
LSAgICAsIG1faXNJbnRlbChmYWxzZSkKLSAgICAsIG1faXNJbWFnaW5hdGlvbihmYWxzZSkKLSAg
ICAsIG1fcmVxdWlyZXNCdWlsdEluRnVuY3Rpb25FbXVsYXRpb24oZmFsc2UpCi0gICAgLCBtX3Jl
cXVpcmVzUmVzdHJpY3RlZE1heGltdW1UZXh0dXJlU2l6ZShmYWxzZSkKLSAgICAsIG1fdXNlSW5k
ZXhlZEdldFN0cmluZyh1c2VJbmRleGVkR2V0U3RyaW5nKQotewotICAgIC8vIEZJWE1FOiBpZGVh
bGx5LCByZW1vdmUgdGhpcyBpbml0aWFsaXphdGlvbiBhbHRvZ2V0aGVyLiBBTkdMRQotICAgIC8v
IHN1YnN1bWVzIHRoZSByZXNwb25zaWJpbGl0eSBmb3IgZ3JhcGhpY3MgZHJpdmVyIHdvcmthcm91
bmRzLgotICAgIG1fdmVuZG9yID0gU3RyaW5nKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+
KGdsOjpHZXRTdHJpbmcoR0xfVkVORE9SKSkpOwotICAgIG1fcmVuZGVyZXIgPSBTdHJpbmcocmVp
bnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZ2w6OkdldFN0cmluZyhHTF9SRU5ERVJFUikpKTsK
LQotICAgIFZlY3RvcjxTdHJpbmc+IHZlbmRvckNvbXBvbmVudHMgPSBtX3ZlbmRvci5jb252ZXJ0
VG9BU0NJSUxvd2VyY2FzZSgpLnNwbGl0KCcgJyk7Ci0gICAgaWYgKHZlbmRvckNvbXBvbmVudHMu
Y29udGFpbnMoIm52aWRpYSIpKQotICAgICAgICBtX2lzTlZJRElBID0gdHJ1ZTsKLSAgICBpZiAo
dmVuZG9yQ29tcG9uZW50cy5jb250YWlucygiYXRpIikgfHwgdmVuZG9yQ29tcG9uZW50cy5jb250
YWlucygiYW1kIikpCi0gICAgICAgIG1faXNBTUQgPSB0cnVlOwotICAgIGlmICh2ZW5kb3JDb21w
b25lbnRzLmNvbnRhaW5zKCJpbnRlbCIpKQotICAgICAgICBtX2lzSW50ZWwgPSB0cnVlOwotICAg
IGlmICh2ZW5kb3JDb21wb25lbnRzLmNvbnRhaW5zKCJpbWFnaW5hdGlvbiIpKQotICAgICAgICBt
X2lzSW1hZ2luYXRpb24gPSB0cnVlOworewogfQogCiBFeHRlbnNpb25zR0xBTkdMRTo6fkV4dGVu
c2lvbnNHTEFOR0xFKCkgPSBkZWZhdWx0OwpAQCAtMTI4LDQyICsxMDcsMTUgQEAgU3RyaW5nIEV4
dGVuc2lvbnNHTEFOR0xFOjpnZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUoUGxhdGZvcm1H
TE9iamVjdCBzaGFkZXIKIAogdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6aW5pdGlhbGl6ZUF2YWls
YWJsZUV4dGVuc2lvbnMoKQogewotICAgIGlmIChtX3VzZUluZGV4ZWRHZXRTdHJpbmcpIHsKLSAg
ICAgICAgR0xpbnQgbnVtRXh0ZW5zaW9ucyA9IDA7Ci0gICAgICAgIGdsOjpHZXRJbnRlZ2VydihH
TF9OVU1fRVhURU5TSU9OUywgJm51bUV4dGVuc2lvbnMpOwotICAgICAgICBmb3IgKEdMaW50IGkg
PSAwOyBpIDwgbnVtRXh0ZW5zaW9uczsgKytpKQotICAgICAgICAgICAgbV9hdmFpbGFibGVFeHRl
bnNpb25zLmFkZChnbDo6R2V0U3RyaW5naShHTF9FWFRFTlNJT05TLCBpKSk7Ci0gICAgICAgIGds
OjpHZXRJbnRlZ2VydihHTF9OVU1fUkVRVUVTVEFCTEVfRVhURU5TSU9OU19BTkdMRSwgJm51bUV4
dGVuc2lvbnMpOwotICAgICAgICBmb3IgKEdMaW50IGkgPSAwOyBpIDwgbnVtRXh0ZW5zaW9uczsg
KytpKQotICAgICAgICAgICAgbV9yZXF1ZXN0YWJsZUV4dGVuc2lvbnMuYWRkKGdsOjpHZXRTdHJp
bmdpKEdMX1JFUVVFU1RBQkxFX0VYVEVOU0lPTlNfQU5HTEUsIGkpKTsKLSAgICB9IGVsc2Ugewot
ICAgICAgICBTdHJpbmcgZXh0ZW5zaW9uc1N0cmluZyA9IGdldEV4dGVuc2lvbnMoKTsKLSAgICAg
ICAgZm9yIChhdXRvJiBleHRlbnNpb24gOiBleHRlbnNpb25zU3RyaW5nLnNwbGl0KCcgJykpCi0g
ICAgICAgICAgICBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuYWRkKGV4dGVuc2lvbik7Ci0gICAgICAg
IGV4dGVuc2lvbnNTdHJpbmcgPSBTdHJpbmcocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4o
Z2w6OkdldFN0cmluZyhHTF9SRVFVRVNUQUJMRV9FWFRFTlNJT05TX0FOR0xFKSkpOwotICAgICAg
ICBmb3IgKGF1dG8mIGV4dGVuc2lvbiA6IGV4dGVuc2lvbnNTdHJpbmcuc3BsaXQoJyAnKSkKLSAg
ICAgICAgICAgIG1fcmVxdWVzdGFibGVFeHRlbnNpb25zLmFkZChleHRlbnNpb24pOwotICAgIH0K
KyAgICBTdHJpbmcgZXh0ZW5zaW9uc1N0cmluZyA9IGdldEV4dGVuc2lvbnMoKTsKKyAgICBmb3Ig
KGF1dG8mIGV4dGVuc2lvbiA6IGV4dGVuc2lvbnNTdHJpbmcuc3BsaXQoJyAnKSkKKyAgICAgICAg
bV9hdmFpbGFibGVFeHRlbnNpb25zLmFkZChleHRlbnNpb24pOworICAgIGV4dGVuc2lvbnNTdHJp
bmcgPSBTdHJpbmcocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZ2w6OkdldFN0cmluZyhH
TF9SRVFVRVNUQUJMRV9FWFRFTlNJT05TX0FOR0xFKSkpOworICAgIGZvciAoYXV0byYgZXh0ZW5z
aW9uIDogZXh0ZW5zaW9uc1N0cmluZy5zcGxpdCgnICcpKQorICAgICAgICBtX3JlcXVlc3RhYmxl
RXh0ZW5zaW9ucy5hZGQoZXh0ZW5zaW9uKTsKICAgICBtX2luaXRpYWxpemVkQXZhaWxhYmxlRXh0
ZW5zaW9ucyA9IHRydWU7CiB9CiAKLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmJsaXRGcmFtZWJ1
ZmZlcihsb25nIHNyY1gwLCBsb25nIHNyY1kwLCBsb25nIHNyY1gxLCBsb25nIHNyY1kxLCBsb25n
IGRzdFgwLCBsb25nIGRzdFkwLCBsb25nIGRzdFgxLCBsb25nIGRzdFkxLCB1bnNpZ25lZCBsb25n
IG1hc2ssIHVuc2lnbmVkIGxvbmcgZmlsdGVyKQotewotICAgIC8vIEZJWE1FOiBjb25zaWRlciBh
ZGRpbmcgc3VwcG9ydCBmb3IgQVBQTEVfZnJhbWVidWZmZXJfbXVsdGlzYW1wbGUuCi0gICAgaWYg
KCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAg
ICBnbDo6QmxpdEZyYW1lYnVmZmVyQU5HTEUoc3JjWDAsIHNyY1kwLCBzcmNYMSwgc3JjWTEsIGRz
dFgwLCBkc3RZMCwgZHN0WDEsIGRzdFkxLCBtYXNrLCBmaWx0ZXIpOwotfQotCi12b2lkIEV4dGVu
c2lvbnNHTEFOR0xFOjpyZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUodW5zaWduZWQgbG9u
ZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgc2FtcGxlcywgdW5zaWduZWQgbG9uZyBpbnRlcm5hbGZv
cm1hdCwgdW5zaWduZWQgbG9uZyB3aWR0aCwgdW5zaWduZWQgbG9uZyBoZWlnaHQpCi17Ci0gICAg
aWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0K
LSAgICBnbDo6UmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5HTEUodGFyZ2V0LCBzYW1w
bGVzLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCk7Ci19Ci0KIFBsYXRmb3JtR0xPYmpl
Y3QgRXh0ZW5zaW9uc0dMQU5HTEU6OmNyZWF0ZVZlcnRleEFycmF5T0VTKCkKIHsKICAgICBpZiAo
IW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCkBAIC0yMDQsMjQgKzE1Niw2IEBAIHZv
aWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmJpbmRWZXJ0ZXhBcnJheU9FUyhQbGF0Zm9ybUdMT2JqZWN0
IGFycmF5KQogICAgIGdsOjpCaW5kVmVydGV4QXJyYXlPRVMoYXJyYXkpOwogfQogCi12b2lkIEV4
dGVuc2lvbnNHTEFOR0xFOjppbnNlcnRFdmVudE1hcmtlckVYVChjb25zdCBTdHJpbmcmKQotewot
ICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQgdGhpcyBmdW5jdGlvbiBhbmQgYWRkIEdMX0VYVF9kZWJ1
Z19tYXJrZXIgaW4gc3VwcG9ydHMoKS4KLSAgICByZXR1cm47Ci19Ci0KLXZvaWQgRXh0ZW5zaW9u
c0dMQU5HTEU6OnB1c2hHcm91cE1hcmtlckVYVChjb25zdCBTdHJpbmcmKQotewotICAgIC8vIEZJ
WE1FOiBpbXBsZW1lbnQgdGhpcyBmdW5jdGlvbiBhbmQgYWRkIEdMX0VYVF9kZWJ1Z19tYXJrZXIg
aW4gc3VwcG9ydHMoKS4KLSAgICByZXR1cm47Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6
OnBvcEdyb3VwTWFya2VyRVhUKHZvaWQpCi17Ci0gICAgLy8gRklYTUU6IGltcGxlbWVudCB0aGlz
IGZ1bmN0aW9uIGFuZCBhZGQgR0xfRVhUX2RlYnVnX21hcmtlciBpbiBzdXBwb3J0cygpLgotICAg
IHJldHVybjsKLX0KLQogYm9vbCBFeHRlbnNpb25zR0xBTkdMRTo6c3VwcG9ydHNFeHRlbnNpb24o
Y29uc3QgU3RyaW5nJiBuYW1lKQogewogICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMu
Y29udGFpbnMobmFtZSkgfHwgbV9yZXF1ZXN0YWJsZUV4dGVuc2lvbnMuY29udGFpbnMobmFtZSk7
CkBAIC0yNzgsNiArMjEyLDcgQEAgR0NHTGVudW0gRXh0ZW5zaW9uc0dMQU5HTEU6OmFkanVzdFdl
YkdMMVRleHR1cmVJbnRlcm5hbEZvcm1hdChHQ0dMZW51bSBpbnRlcm5hbGYKIH0KIAogLy8gR0xf
QU5HTEVfcm9idXN0X2NsaWVudF9tZW1vcnkKKyNpZiAwCiB2b2lkIEV4dGVuc2lvbnNHTEFOR0xF
OjpyZWFkUGl4ZWxzUm9idXN0QU5HTEUoaW50IHgsIGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdD
R0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVp
IGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMc2l6ZWkgKmNvbHVtbnMsIEdDR0xzaXpl
aSAqcm93cywgdm9pZCAqcGl4ZWxzKQogewogICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4
dEN1cnJlbnQoKSkKQEAgLTQ1NSw2ICszOTAsNyBAQCB2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpn
ZXRQb2ludGVydlJvYnVzdEFOR0xFUm9idXN0QU5HTEUoR0NHTGVudW0gcG5hbWUsIEdDR0xzaQog
CiAgICAgZ2w6OkdldFBvaW50ZXJ2Um9idXN0QU5HTEVSb2J1c3RBTkdMRShwbmFtZSwgYnVmU2l6
ZSwgbGVuZ3RoLCBwYXJhbXMpOwogfQorI2VuZGlmCiAKICNpZiBQTEFURk9STShNQUMpIHx8IFBM
QVRGT1JNKElPU19GQU1JTFkpCiBzdGF0aWMgdm9pZCB3aXBlQWxwaGFDaGFubmVsRnJvbVBpeGVs
cyhpbnQgd2lkdGgsIGludCBoZWlnaHQsIHVuc2lnbmVkIGNoYXIqIHBpeGVscykKQEAgLTUwMyw3
ICs0MzksNyBAQCB2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpyZWFkblBpeGVsc1JvYnVzdEFOR0xF
KGludCB4LCBpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQwogICAgIFVOVVNFRF9QQVJBTShyZWFk
aW5nVG9QaXhlbEJ1ZmZlck9iamVjdCk7CiAjZW5kaWYKIH0KLQorI2lmIDAKIHZvaWQgRXh0ZW5z
aW9uc0dMQU5HTEU6OmdldG5Vbmlmb3JtZnZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBp
bnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGZs
b2F0ICpwYXJhbXMpCiB7CiAgICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgp
KQpAQCAtNjE2LDcgKzU1Miw3IEBAIHZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldFF1ZXJ5T2Jq
ZWN0dWk2NHZSb2J1c3RBTkdMRShHQ0dMdWludCBpZCwgR0NHTGVudW0gcG5hCiAKICAgICBnbDo6
R2V0UXVlcnlPYmplY3R1aTY0dlJvYnVzdEFOR0xFKGlkLCBwbmFtZSwgYnVmU2l6ZSwgbGVuZ3Ro
LCByZWludGVycHJldF9jYXN0PEdMdWludDY0Kj4ocGFyYW1zKSk7CiB9Ci0KKyNlbmRpZgogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRlbnNpb25zR0xBTkdMRS5oCmluZGV4IGE3NzMxZGZk
MjBjNWYwM2EzMzU5MDNmYWE2ZTM4ZmY3MmY0YjIzMjMuLmI1NGUzNDg3NjVlOGI5YzY3YmNkODVj
NmJhMzczOGNhMzA5NDQ0ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUuaApAQCAtMzYsNyArMzYsNyBA
QCBjbGFzcyBFeHRlbnNpb25zR0xBTkdMRSA6IHB1YmxpYyBFeHRlbnNpb25zR0wgewogICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIC8vIFRoaXMgY2xhc3Mgb25seSBu
ZWVkcyB0byBiZSBpbnN0YW50aWF0ZWQgYnkgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wgaW1wbGVt
ZW50YXRpb25zLgotICAgIEV4dGVuc2lvbnNHTEFOR0xFKEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
KiwgYm9vbCB1c2VJbmRleGVkR2V0U3RyaW5nID0gZmFsc2UpOworICAgIEV4dGVuc2lvbnNHTEFO
R0xFKEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKik7CiAgICAgdmlydHVhbCB+RXh0ZW5zaW9uc0dM
QU5HTEUoKTsKIAogICAgIC8vIEV4dGVuc2lvbnNHTCBtZXRob2RzLgpAQCAtNDksMzAgKzQ5LDE2
IEBAIHB1YmxpYzoKICAgICB2b2lkIGRlbGV0ZVZlcnRleEFycmF5T0VTKFBsYXRmb3JtR0xPYmpl
Y3QpIG92ZXJyaWRlOwogICAgIEdDR0xib29sZWFuIGlzVmVydGV4QXJyYXlPRVMoUGxhdGZvcm1H
TE9iamVjdCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBiaW5kVmVydGV4QXJyYXlPRVMoUGxhdGZvcm1H
TE9iamVjdCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBpbnNlcnRFdmVudE1hcmtlckVYVChjb25zdCBT
dHJpbmcmKSBvdmVycmlkZTsKLSAgICB2b2lkIHB1c2hHcm91cE1hcmtlckVYVChjb25zdCBTdHJp
bmcmKSBvdmVycmlkZTsKLSAgICB2b2lkIHBvcEdyb3VwTWFya2VyRVhUKHZvaWQpIG92ZXJyaWRl
OwogICAgIHZvaWQgZHJhd0J1ZmZlcnNFWFQoR0NHTFNwYW48Y29uc3QgR0NHTGVudW0+KSBvdmVy
cmlkZTsKIAogICAgIFN0cmluZyBnZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUoUGxhdGZv
cm1HTE9iamVjdCkgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIGJsaXRGcmFtZWJ1ZmZlcihsb25nIHNy
Y1gwLCBsb25nIHNyY1kwLCBsb25nIHNyY1gxLCBsb25nIHNyY1kxLCBsb25nIGRzdFgwLCBsb25n
IGRzdFkwLCBsb25nIGRzdFgxLCBsb25nIGRzdFkxLCB1bnNpZ25lZCBsb25nIG1hc2ssIHVuc2ln
bmVkIGxvbmcgZmlsdGVyKSBvdmVycmlkZTsKLSAgICB2b2lkIHJlbmRlcmJ1ZmZlclN0b3JhZ2VN
dWx0aXNhbXBsZSh1bnNpZ25lZCBsb25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBzYW1wbGVzLCB1
bnNpZ25lZCBsb25nIGludGVybmFsZm9ybWF0LCB1bnNpZ25lZCBsb25nIHdpZHRoLCB1bnNpZ25l
ZCBsb25nIGhlaWdodCkgb3ZlcnJpZGU7Ci0KICAgICB2b2lkIGRyYXdBcnJheXNJbnN0YW5jZWQo
R0NHTGVudW0gbW9kZSwgR0NHTGludCBmaXJzdCwgR0NHTHNpemVpIGNvdW50LCBHQ0dMc2l6ZWkg
cHJpbWNvdW50KSBvdmVycmlkZTsKICAgICB2b2lkIGRyYXdFbGVtZW50c0luc3RhbmNlZChHQ0dM
ZW51bSBtb2RlLCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xlbnVtIHR5cGUsIGxvbmcgbG9uZyBvZmZz
ZXQsIEdDR0xzaXplaSBwcmltY291bnQpIG92ZXJyaWRlOwogICAgIHZvaWQgdmVydGV4QXR0cmli
RGl2aXNvcihHQ0dMdWludCBpbmRleCwgR0NHTHVpbnQgZGl2aXNvcikgb3ZlcnJpZGU7CiAKLSAg
ICBib29sIGlzTlZJRElBKCkgb3ZlcnJpZGUgeyByZXR1cm4gbV9pc05WSURJQTsgfQotICAgIGJv
b2wgaXNBTUQoKSBvdmVycmlkZSB7IHJldHVybiBtX2lzQU1EOyB9Ci0gICAgYm9vbCBpc0ludGVs
KCkgb3ZlcnJpZGUgeyByZXR1cm4gbV9pc0ludGVsOyB9Ci0gICAgYm9vbCBpc0ltYWdpbmF0aW9u
KCkgb3ZlcnJpZGUgeyByZXR1cm4gbV9pc0ltYWdpbmF0aW9uOyB9Ci0gICAgU3RyaW5nIHZlbmRv
cigpIG92ZXJyaWRlIHsgcmV0dXJuIG1fdmVuZG9yOyB9Ci0KLSAgICBib29sIHJlcXVpcmVzQnVp
bHRJbkZ1bmN0aW9uRW11bGF0aW9uKCkgb3ZlcnJpZGUgeyByZXR1cm4gbV9yZXF1aXJlc0J1aWx0
SW5GdW5jdGlvbkVtdWxhdGlvbjsgfQotICAgIGJvb2wgcmVxdWlyZXNSZXN0cmljdGVkTWF4aW11
bVRleHR1cmVTaXplKCkgb3ZlcnJpZGUgeyByZXR1cm4gbV9yZXF1aXJlc1Jlc3RyaWN0ZWRNYXhp
bXVtVGV4dHVyZVNpemU7IH0KLQogICAgIC8vIEdMX0FOR0xFX3JvYnVzdF9jbGllbnRfbWVtb3J5
CisjaWYgMAogICAgIHZvaWQgcmVhZFBpeGVsc1JvYnVzdEFOR0xFKEdDR0xpbnQgeCwgR0NHTGlu
dCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwg
R0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dM
c2l6ZWkgKmNvbHVtbnMsIEdDR0xzaXplaSAqcm93cywgdm9pZCAqcGl4ZWxzKSBvdmVycmlkZTsK
ICAgICB2b2lkIHRleFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dM
ZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xmbG9hdCAqcGFyYW1zKSBv
dmVycmlkZTsKICAgICB2b2lkIHRleFBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xpbnQgKnBh
cmFtcykgb3ZlcnJpZGU7CkBAIC05Nyw3ICs4MywxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBnZXRU
ZXhMZXZlbFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxl
dmVsLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3Ro
LCBHQ0dMZmxvYXQgKnBhcmFtcykgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGdldFBvaW50ZXJ2Um9i
dXN0QU5HTEVSb2J1c3RBTkdMRShHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdD
R0xzaXplaSAqbGVuZ3RoLCB2b2lkICoqcGFyYW1zKSBvdmVycmlkZTsKKyNlbmRpZgorCiAgICAg
dm9pZCByZWFkblBpeGVsc1JvYnVzdEFOR0xFKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6
ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlw
ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMc2l6ZWkgKmNvbHVt
bnMsIEdDR0xzaXplaSAqcm93cywgdm9pZCAqZGF0YSwgYm9vbCByZWFkaW5nVG9QaXhlbEJ1ZmZl
ck9iamVjdCkgb3ZlcnJpZGU7CisjaWYgMAogICAgIHZvaWQgZ2V0blVuaWZvcm1mdlJvYnVzdEFO
R0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXpl
LCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGZsb2F0ICpwYXJhbXMpIG92ZXJyaWRlOwogICAgIHZv
aWQgZ2V0blVuaWZvcm1pdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9j
YXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFy
YW1zKSBvdmVycmlkZTsKICAgICB2b2lkIGdldG5Vbmlmb3JtdWl2Um9idXN0QU5HTEUoR0NHTHVp
bnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXpl
aSAqbGVuZ3RoLCBHQ0dMdWludCAqcGFyYW1zKSBvdmVycmlkZTsKQEAgLTExMyw3ICsxMDIsNyBA
QCBwdWJsaWM6CiAgICAgdm9pZCBnZXRRdWVyeU9iamVjdGl2Um9idXN0QU5HTEUoR0NHTHVpbnQg
aWQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgs
IEdDR0xpbnQgKnBhcmFtcykgb3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRRdWVyeU9iamVjdGk2NHZS
b2J1c3RBTkdMRShHQ0dMdWludCBpZCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXpl
LCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludDY0ICpwYXJhbXMpIG92ZXJyaWRlOwogICAgIHZv
aWQgZ2V0UXVlcnlPYmplY3R1aTY0dlJvYnVzdEFOR0xFKEdDR0x1aW50IGlkLCBHQ0dMZW51bSBw
bmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMdWludDY0ICpw
YXJhbXMpIG92ZXJyaWRlOwotCisjZW5kaWYKICAgICAvLyBPbmx5IGZvciBub24tV2ViR0wgMi4w
IGNvbnRleHRzLgogICAgIEdDR0xlbnVtIGFkanVzdFdlYkdMMVRleHR1cmVJbnRlcm5hbEZvcm1h
dChHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBl
KTsKIApAQCAtMTI5LDE5ICsxMTgsNiBAQCBwcml2YXRlOgogCiAgICAgLy8gV2VhayBwb2ludGVy
IGJhY2sgdG8gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuCiAgICAgR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0wqIG1fY29udGV4dDsKLQotICAgIGJvb2wgbV9pc05WSURJQTsKLSAgICBib29sIG1faXNB
TUQ7Ci0gICAgYm9vbCBtX2lzSW50ZWw7Ci0gICAgYm9vbCBtX2lzSW1hZ2luYXRpb247Ci0gICAg
Ym9vbCBtX3JlcXVpcmVzQnVpbHRJbkZ1bmN0aW9uRW11bGF0aW9uOwotICAgIGJvb2wgbV9yZXF1
aXJlc1Jlc3RyaWN0ZWRNYXhpbXVtVGV4dHVyZVNpemU7Ci0KLSAgICBib29sIG1fdXNlSW5kZXhl
ZEdldFN0cmluZyB7IGZhbHNlIH07Ci0KLSAgICBTdHJpbmcgbV92ZW5kb3I7Ci0gICAgU3RyaW5n
IG1fcmVuZGVyZXI7Ci0KICAgICAvLyBXaGV0aGVyIHRoZSBXZWJHTCAxLjAtcmVsYXRlZCBmbG9h
dGluZy1wb2ludCByZW5kZXJhYmlsaXR5IGV4dGVuc2lvbnMgaGF2ZSBiZWVuIGVuYWJsZWQuCiAg
ICAgYm9vbCBtX3dlYmdsQ29sb3JCdWZmZXJGbG9hdFJHQiB7IGZhbHNlIH07CiAgICAgYm9vbCBt
X3dlYmdsQ29sb3JCdWZmZXJGbG9hdFJHQkEgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3Bl
bkdMLmNwcAppbmRleCA3ZWM4MWNmNGFlNTc3MmNhZTk3Mjg4YmM4MGUzNjU2NDZkNjI3YzdiLi43
NmRjMzJjMTc2YTRjYmIzMDc1ZDg4MGMwNGI5NDg5ZmNiNThmMzEwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9u
c0dMT3BlbkdMLmNwcApAQCAtNDcsMjMgKzQ3LDYgQEAgRXh0ZW5zaW9uc0dMT3BlbkdMOjpFeHRl
bnNpb25zR0xPcGVuR0woR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqIGNvbnRleHQsIGJvb2wgdXMK
IAogRXh0ZW5zaW9uc0dMT3BlbkdMOjp+RXh0ZW5zaW9uc0dMT3BlbkdMKCkgPSBkZWZhdWx0Owog
Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMOjpibGl0RnJhbWVidWZmZXIobG9uZyBzcmNYMCwg
bG9uZyBzcmNZMCwgbG9uZyBzcmNYMSwgbG9uZyBzcmNZMSwgbG9uZyBkc3RYMCwgbG9uZyBkc3RZ
MCwgbG9uZyBkc3RYMSwgbG9uZyBkc3RZMSwgdW5zaWduZWQgbG9uZyBtYXNrLCB1bnNpZ25lZCBs
b25nIGZpbHRlcikKLXsKLSAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkp
Ci0gICAgICAgIHJldHVybjsKLQotICAgIDo6Z2xCbGl0RnJhbWVidWZmZXJFWFQoc3JjWDAsIHNy
Y1kwLCBzcmNYMSwgc3JjWTEsIGRzdFgwLCBkc3RZMCwgZHN0WDEsIGRzdFkxLCBtYXNrLCBmaWx0
ZXIpOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTDo6cmVuZGVyYnVmZmVyU3RvcmFnZU11
bHRpc2FtcGxlKHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25nIHNhbXBsZXMsIHVu
c2lnbmVkIGxvbmcgaW50ZXJuYWxmb3JtYXQsIHVuc2lnbmVkIGxvbmcgd2lkdGgsIHVuc2lnbmVk
IGxvbmcgaGVpZ2h0KQotewotICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQo
KSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgOjpnbFJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNh
bXBsZUVYVCh0YXJnZXQsIHNhbXBsZXMsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0KTsK
LX0KLQogUGxhdGZvcm1HTE9iamVjdCBFeHRlbnNpb25zR0xPcGVuR0w6OmNyZWF0ZVZlcnRleEFy
cmF5T0VTKCkKIHsKICAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5z
aW9uc0dMT3BlbkdMLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wv
RXh0ZW5zaW9uc0dMT3BlbkdMLmgKaW5kZXggNDk2Mjg5Y2VhMGU2YTA5ZDZkYjczMWY4NjhiNTQ5
OTNhNDQ0NDlhOC4uN2MyYzBlMjI4MGZlZDNjYmY5MTI2YWUzMTY5NTAzMjU4MjFlM2Q3OSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lv
bnNHTE9wZW5HTC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5n
bC9FeHRlbnNpb25zR0xPcGVuR0wuaApAQCAtNDAsOSArNDAsNiBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCB+RXh0ZW5zaW9uc0dMT3BlbkdMKCk7CiAKICAgICAvLyBFeHRlbnNpb25zR0wgbWV0aG9k
cy4KLSAgICB2b2lkIGJsaXRGcmFtZWJ1ZmZlcihsb25nIHNyY1gwLCBsb25nIHNyY1kwLCBsb25n
IHNyY1gxLCBsb25nIHNyY1kxLCBsb25nIGRzdFgwLCBsb25nIGRzdFkwLCBsb25nIGRzdFgxLCBs
b25nIGRzdFkxLCB1bnNpZ25lZCBsb25nIG1hc2ssIHVuc2lnbmVkIGxvbmcgZmlsdGVyKSBvdmVy
cmlkZTsKLSAgICB2b2lkIHJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZSh1bnNpZ25lZCBs
b25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBzYW1wbGVzLCB1bnNpZ25lZCBsb25nIGludGVybmFs
Zm9ybWF0LCB1bnNpZ25lZCBsb25nIHdpZHRoLCB1bnNpZ25lZCBsb25nIGhlaWdodCkgb3ZlcnJp
ZGU7Ci0KICAgICBQbGF0Zm9ybUdMT2JqZWN0IGNyZWF0ZVZlcnRleEFycmF5T0VTKCkgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBkZWxldGVWZXJ0ZXhBcnJheU9FUyhQbGF0Zm9ybUdMT2JqZWN0KSBvdmVy
cmlkZTsKICAgICBHQ0dMYm9vbGVhbiBpc1ZlcnRleEFycmF5T0VTKFBsYXRmb3JtR0xPYmplY3Qp
IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
b3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmNwcAppbmRleCA0
M2I1MTYxZmJhNzc4ZjhmYjQzODRiMWJjMmRiMzhlY2Y2YzQ4M2ViLi5jODg1OWZkYjI2NGE0OGQw
N2EyMjdiZmJlODYzZTY1NGY2YTQyYzkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdM
Q29tbW9uLmNwcApAQCAtNjMsMzcgKzYzLDEwIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb24oR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0wqIGNvbnRleHQsIGJvb2wgdXNlSW5kZXhlZEdldFN0cmluZykKK0V4
dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uKEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMKiBjb250ZXh0KQogICAgIDogbV9pbml0aWFsaXplZEF2YWlsYWJsZUV4
dGVuc2lvbnMoZmFsc2UpCiAgICAgLCBtX2NvbnRleHQoY29udGV4dCkKLSAgICAsIG1faXNOVklE
SUEoZmFsc2UpCi0gICAgLCBtX2lzQU1EKGZhbHNlKQotICAgICwgbV9pc0ludGVsKGZhbHNlKQot
ICAgICwgbV9pc0ltYWdpbmF0aW9uKGZhbHNlKQotICAgICwgbV9yZXF1aXJlc0J1aWx0SW5GdW5j
dGlvbkVtdWxhdGlvbihmYWxzZSkKLSAgICAsIG1fcmVxdWlyZXNSZXN0cmljdGVkTWF4aW11bVRl
eHR1cmVTaXplKGZhbHNlKQotICAgICwgbV91c2VJbmRleGVkR2V0U3RyaW5nKHVzZUluZGV4ZWRH
ZXRTdHJpbmcpCi17Ci0gICAgbV92ZW5kb3IgPSBTdHJpbmcocmVpbnRlcnByZXRfY2FzdDxjb25z
dCBjaGFyKj4oOjpnbEdldFN0cmluZyhHTF9WRU5ET1IpKSk7Ci0gICAgbV9yZW5kZXJlciA9IFN0
cmluZyhyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPig6OmdsR2V0U3RyaW5nKEdMX1JFTkRF
UkVSKSkpOwotCi0gICAgVmVjdG9yPFN0cmluZz4gdmVuZG9yQ29tcG9uZW50cyA9IG1fdmVuZG9y
LmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCkuc3BsaXQoJyAnKTsKLSAgICBpZiAodmVuZG9yQ29t
cG9uZW50cy5jb250YWlucygibnZpZGlhIikpCi0gICAgICAgIG1faXNOVklESUEgPSB0cnVlOwot
ICAgIGlmICh2ZW5kb3JDb21wb25lbnRzLmNvbnRhaW5zKCJhdGkiKSB8fCB2ZW5kb3JDb21wb25l
bnRzLmNvbnRhaW5zKCJhbWQiKSkKLSAgICAgICAgbV9pc0FNRCA9IHRydWU7Ci0gICAgaWYgKHZl
bmRvckNvbXBvbmVudHMuY29udGFpbnMoImludGVsIikpCi0gICAgICAgIG1faXNJbnRlbCA9IHRy
dWU7Ci0gICAgaWYgKHZlbmRvckNvbXBvbmVudHMuY29udGFpbnMoImltYWdpbmF0aW9uIikpCi0g
ICAgICAgIG1faXNJbWFnaW5hdGlvbiA9IHRydWU7Ci0KLSNpZiBQTEFURk9STShNQUMpCi0gICAg
aWYgKG1faXNBTUQgfHwgbV9pc0ludGVsKQotICAgICAgICBtX3JlcXVpcmVzQnVpbHRJbkZ1bmN0
aW9uRW11bGF0aW9uID0gdHJ1ZTsKLQotICAgIC8vIEludGVsIEhEIDMwMDAgZGV2aWNlcyBoYXZl
IHByb2JsZW1zIHdpdGggbGFyZ2UgdGV4dHVyZXMuIDxyZGFyOi8vcHJvYmxlbS8xNjY0OTE0MD4K
LSAgICBtX3JlcXVpcmVzUmVzdHJpY3RlZE1heGltdW1UZXh0dXJlU2l6ZSA9IG1fcmVuZGVyZXIu
c3RhcnRzV2l0aCgiSW50ZWwgSEQgR3JhcGhpY3MgMzAwMCIpOwotI2VuZGlmCit7CiB9CiAKIEV4
dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6fkV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbigpID0gZGVm
YXVsdDsKQEAgLTE5Miw5ICsxNjUsNiBAQCBTdHJpbmcgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9u
OjpnZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUoUGxhdGZvcm1HTE9iamVjdAogICAgIFN0
cmluZyBzaGFkZXJJbmZvTG9nOwogICAgIEdDR0x1aW50NjQgZXh0cmFDb21waWxlT3B0aW9ucyA9
IFNIX0NMQU1QX0lORElSRUNUX0FSUkFZX0JPVU5EUyB8IFNIX1VORk9MRF9TSE9SVF9DSVJDVUlU
IHwgU0hfSU5JVF9PVVRQVVRfVkFSSUFCTEVTIHwgU0hfRU5GT1JDRV9QQUNLSU5HX1JFU1RSSUNU
SU9OUyB8IFNIX0xJTUlUX0VYUFJFU1NJT05fQ09NUExFWElUWSB8IFNIX0xJTUlUX0NBTExfU1RB
Q0tfREVQVEggfCBTSF9JTklUSUFMSVpFX1VOSU5JVElBTElaRURfTE9DQUxTOwogCi0gICAgaWYg
KG1fcmVxdWlyZXNCdWlsdEluRnVuY3Rpb25FbXVsYXRpb24pCi0gICAgICAgIGV4dHJhQ29tcGls
ZU9wdGlvbnMgfD0gU0hfRU1VTEFURV9BQlNfSU5UX0ZVTkNUSU9OOwotCiAgICAgVmVjdG9yPHN0
ZDo6cGFpcjxBTkdMRVNoYWRlclN5bWJvbFR5cGUsIHNoOjpTaGFkZXJWYXJpYWJsZT4+IHN5bWJv
bHM7CiAgICAgYm9vbCBpc1ZhbGlkID0gY29tcGlsZXIuY29tcGlsZVNoYWRlclNvdXJjZShlbnRy
eS5zb3VyY2UudXRmOCgpLmRhdGEoKSwgc2hhZGVyVHlwZSwgdHJhbnNsYXRlZFNoYWRlclNvdXJj
ZSwgc2hhZGVySW5mb0xvZywgc3ltYm9scywgZXh0cmFDb21waWxlT3B0aW9ucyk7CiAKQEAgLTIx
NCwyOCArMTg0LDkgQEAgU3RyaW5nIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0VHJhbnNs
YXRlZFNoYWRlclNvdXJjZUFOR0xFKFBsYXRmb3JtR0xPYmplY3QKIAogdm9pZCBFeHRlbnNpb25z
R0xPcGVuR0xDb21tb246OmluaXRpYWxpemVBdmFpbGFibGVFeHRlbnNpb25zKCkKIHsKLSNpZiBQ
TEFURk9STShHVEspICYmICFVU0UoT1BFTkdMX0VTKQotICAgIGlmIChtX3VzZUluZGV4ZWRHZXRT
dHJpbmcpIHsKLSAgICAgICAgR0xpbnQgbnVtRXh0ZW5zaW9ucyA9IDA7Ci0gICAgICAgIDo6Z2xH
ZXRJbnRlZ2VydihHTF9OVU1fRVhURU5TSU9OUywgJm51bUV4dGVuc2lvbnMpOwotICAgICAgICBm
b3IgKEdMaW50IGkgPSAwOyBpIDwgbnVtRXh0ZW5zaW9uczsgKytpKQotICAgICAgICAgICAgbV9h
dmFpbGFibGVFeHRlbnNpb25zLmFkZChnbEdldFN0cmluZ2koR0xfRVhURU5TSU9OUywgaSkpOwot
Ci0gICAgICAgIGlmICghbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9BUkJfdGV4
dHVyZV9zdG9yYWdlIl9zKSkgewotICAgICAgICAgICAgR0xpbnQgbWFqb3JWZXJzaW9uOwotICAg
ICAgICAgICAgZ2xHZXRJbnRlZ2VydihHTF9NQUpPUl9WRVJTSU9OLCAmbWFqb3JWZXJzaW9uKTsK
LSAgICAgICAgICAgIEdMaW50IG1pbm9yVmVyc2lvbjsKLSAgICAgICAgICAgIGdsR2V0SW50ZWdl
cnYoR0xfTUlOT1JfVkVSU0lPTiwgJm1pbm9yVmVyc2lvbik7Ci0gICAgICAgICAgICBpZiAobWFq
b3JWZXJzaW9uID4gNCB8fCAobWFqb3JWZXJzaW9uID09IDQgJiYgbWlub3JWZXJzaW9uID49IDIp
KQotICAgICAgICAgICAgICAgIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5hZGQoIkdMX0FSQl90ZXh0
dXJlX3N0b3JhZ2UiX3MpOwotICAgICAgICB9Ci0gICAgfSBlbHNlCi0jZW5kaWYKLSAgICB7Ci0g
ICAgICAgIFN0cmluZyBleHRlbnNpb25zU3RyaW5nID0gZ2V0RXh0ZW5zaW9ucygpOwotICAgICAg
ICBmb3IgKGF1dG8mIGV4dGVuc2lvbiA6IGV4dGVuc2lvbnNTdHJpbmcuc3BsaXQoJyAnKSkKLSAg
ICAgICAgICAgIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5hZGQoZXh0ZW5zaW9uKTsKLSAgICB9Cisg
ICAgU3RyaW5nIGV4dGVuc2lvbnNTdHJpbmcgPSBnZXRFeHRlbnNpb25zKCk7CisgICAgZm9yIChh
dXRvJiBleHRlbnNpb24gOiBleHRlbnNpb25zU3RyaW5nLnNwbGl0KCcgJykpCisgICAgICAgIG1f
YXZhaWxhYmxlRXh0ZW5zaW9ucy5hZGQoZXh0ZW5zaW9uKTsKICAgICBtX2luaXRpYWxpemVkQXZh
aWxhYmxlRXh0ZW5zaW9ucyA9IHRydWU7CiB9CiAKQEAgLTI1NCw2ICsyMDUsNyBAQCB2b2lkIEV4
dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0blVuaWZvcm1pdkVYVChHQ0dMdWludCwgaW50LCBH
Q0dMc2l6ZWksIEdDR0xpbgogICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5W
QUxJRF9PUEVSQVRJT04pOwogfQogCisjaWYgMAogdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21t
b246OnJlYWRQaXhlbHNSb2J1c3RBTkdMRShpbnQsIGludCwgR0NHTHNpemVpLCBHQ0dMc2l6ZWks
IEdDR0xlbnVtLCBHQ0dMZW51bSwgR0NHTHNpemVpLCBHQ0dMc2l6ZWkgKiwgR0NHTHNpemVpICos
IEdDR0xzaXplaSAqLCB2b2lkICopCiB7CiAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJv
cihHTF9JTlZBTElEX09QRVJBVElPTik7CkBAIC0zNjUsMTIgKzMxNywxNCBAQCB2b2lkIEV4dGVu
c2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0UG9pbnRlcnZSb2J1c3RBTkdMRVJvYnVzdEFOR0xFKEdD
R0xlbnVtLCBHQ0dMcwogewogICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5W
QUxJRF9PUEVSQVRJT04pOwogfQorI2VuZGlmCiAKIHZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29t
bW9uOjpyZWFkblBpeGVsc1JvYnVzdEFOR0xFKGludCwgaW50LCBHQ0dMc2l6ZWksIEdDR0xzaXpl
aSwgR0NHTGVudW0sIEdDR0xlbnVtLCBHQ0dMc2l6ZWksIEdDR0xzaXplaSAqLCBHQ0dMc2l6ZWkg
KiwgR0NHTHNpemVpICosIHZvaWQgKiwgYm9vbCkKIHsKICAgICBtX2NvbnRleHQtPnN5bnRoZXNp
emVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKIH0KIAorI2lmIDAKIHZvaWQgRXh0ZW5z
aW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRuVW5pZm9ybWZ2Um9idXN0QU5HTEUoR0NHTHVpbnQsIGlu
dCwgR0NHTHNpemVpLCBHQ0dMc2l6ZWkgKiwgR0NHTGZsb2F0ICopCiB7CiAgICAgbV9jb250ZXh0
LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CkBAIC00NDEsNyArMzk1
LDcgQEAgdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFF1ZXJ5T2JqZWN0dWk2NHZS
b2J1c3RBTkdMRShHQ0dMdWludCwgR0NHTGVudW0KIHsKICAgICBtX2NvbnRleHQtPnN5bnRoZXNp
emVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKIH0KLQorI2VuZGlmCiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5oCmluZGV4
IGJmZTQ1MjE1NDNmZjRiMjcyMTM3ZjM0NGNlZTRhMjJkOGZiMjhjNjQuLmExYTQ1OTAzZWUzZWQx
OWYzMzdjNWUwZmJlYzc5MTk3OTc1MzNhODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdM
Q29tbW9uLmgKQEAgLTU1LDIwICs1NSwxMiBAQCBwdWJsaWM6CiAgICAgU3RyaW5nIGdldFRyYW5z
bGF0ZWRTaGFkZXJTb3VyY2VBTkdMRShQbGF0Zm9ybUdMT2JqZWN0KSBvdmVycmlkZTsKIAogICAg
IC8vIEVYVCBSb2J1c3RuZXNzIC0gdXNlcyBnZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJCKCkKLSAg
ICB2b2lkIHJlYWRuUGl4ZWxzRVhUKGludCB4LCBpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dM
c2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBi
dWZTaXplLCB2b2lkICpkYXRhKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldG5Vbmlmb3JtZnZFWFQo
R0NHTHVpbnQgcHJvZ3JhbSwgaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgZmxvYXQg
KnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRuVW5pZm9ybWl2RVhUKEdDR0x1aW50IHBy
b2dyYW0sIGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIGludCAqcGFyYW1zKSBvdmVy
cmlkZTsKLQotICAgIGJvb2wgaXNOVklESUEoKSBvdmVycmlkZSB7IHJldHVybiBtX2lzTlZJRElB
OyB9Ci0gICAgYm9vbCBpc0FNRCgpIG92ZXJyaWRlIHsgcmV0dXJuIG1faXNBTUQ7IH0KLSAgICBi
b29sIGlzSW50ZWwoKSBvdmVycmlkZSB7IHJldHVybiBtX2lzSW50ZWw7IH0KLSAgICBib29sIGlz
SW1hZ2luYXRpb24oKSBvdmVycmlkZSB7IHJldHVybiBtX2lzSW1hZ2luYXRpb247IH0KLSAgICBT
dHJpbmcgdmVuZG9yKCkgb3ZlcnJpZGUgeyByZXR1cm4gbV92ZW5kb3I7IH0KLQotICAgIGJvb2wg
cmVxdWlyZXNCdWlsdEluRnVuY3Rpb25FbXVsYXRpb24oKSBvdmVycmlkZSB7IHJldHVybiBtX3Jl
cXVpcmVzQnVpbHRJbkZ1bmN0aW9uRW11bGF0aW9uOyB9Ci0gICAgYm9vbCByZXF1aXJlc1Jlc3Ry
aWN0ZWRNYXhpbXVtVGV4dHVyZVNpemUoKSBvdmVycmlkZSB7IHJldHVybiBtX3JlcXVpcmVzUmVz
dHJpY3RlZE1heGltdW1UZXh0dXJlU2l6ZTsgfQorICAgIHZvaWQgcmVhZG5QaXhlbHNFWFQoaW50
IHgsIGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZv
cm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIHZvaWQgKmRhdGEpOworICAg
IHZvaWQgZ2V0blVuaWZvcm1mdkVYVChHQ0dMdWludCBwcm9ncmFtLCBpbnQgbG9jYXRpb24sIEdD
R0xzaXplaSBidWZTaXplLCBmbG9hdCAqcGFyYW1zKTsKKyAgICB2b2lkIGdldG5Vbmlmb3JtaXZF
WFQoR0NHTHVpbnQgcHJvZ3JhbSwgaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgaW50
ICpwYXJhbXMpOwogCiAgICAgLy8gR0xfQU5HTEVfcm9idXN0X2NsaWVudF9tZW1vcnkKKyNpZiAw
CiAgICAgdm9pZCByZWFkUGl4ZWxzUm9idXN0QU5HTEUoaW50IHgsIGludCB5LCBHQ0dMc2l6ZWkg
d2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwg
R0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMc2l6ZWkgKmNvbHVtbnMs
IEdDR0xzaXplaSAqcm93cywgdm9pZCAqcGl4ZWxzKSBvdmVycmlkZTsKICAgICB2b2lkIHRleFBh
cmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NH
THNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xmbG9hdCAqcGFyYW1zKSBvdmVycmlkZTsKICAgICB2
b2lkIHRleFBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBw
bmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xpbnQgKnBhcmFtcykgb3ZlcnJpZGU7
CkBAIC05Myw3ICs4NSwxMSBAQCBwdWJsaWM6CiAgICAgdm9pZCBnZXRUZXhMZXZlbFBhcmFtZXRl
cmZ2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBpbnQgbGV2ZWwsIEdDR0xlbnVtIHBuYW1l
LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xmbG9hdCAqcGFyYW1z
KSBvdmVycmlkZTsKIAogICAgIHZvaWQgZ2V0UG9pbnRlcnZSb2J1c3RBTkdMRVJvYnVzdEFOR0xF
KEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIHZv
aWQgKipwYXJhbXMpIG92ZXJyaWRlOworI2VuZGlmCisKICAgICB2b2lkIHJlYWRuUGl4ZWxzUm9i
dXN0QU5HTEUoaW50IHgsIGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQs
IEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xz
aXplaSAqbGVuZ3RoLCBHQ0dMc2l6ZWkgKmNvbHVtbnMsIEdDR0xzaXplaSAqcm93cywgdm9pZCAq
ZGF0YSwgYm9vbCByZWFkaW5nVG9QaXhlbEJ1ZmZlck9iamVjdCkgb3ZlcnJpZGU7CisKKyNpZiAw
CiAgICAgdm9pZCBnZXRuVW5pZm9ybWZ2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgaW50
IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xmbG9h
dCAqcGFyYW1zKSBvdmVycmlkZTsKICAgICB2b2lkIGdldG5Vbmlmb3JtaXZSb2J1c3RBTkdMRShH
Q0dMdWludCBwcm9ncmFtLCBpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6
ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVycmlkZTsKICAgICB2b2lkIGdldG5Vbmlm
b3JtdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgaW50IGxvY2F0aW9uLCBHQ0dMc2l6
ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0x1aW50ICpwYXJhbXMpIG92ZXJyaWRl
OwpAQCAtMTA5LDEwICsxMDUsMTEgQEAgcHVibGljOgogICAgIHZvaWQgZ2V0UXVlcnlPYmplY3Rp
dlJvYnVzdEFOR0xFKEdDR0x1aW50IGlkLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNp
emUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJyaWRlOwogICAgIHZv
aWQgZ2V0UXVlcnlPYmplY3RpNjR2Um9idXN0QU5HTEUoR0NHTHVpbnQgaWQsIEdDR0xlbnVtIHBu
YW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQ2NCAqcGFy
YW1zKSBvdmVycmlkZTsKICAgICB2b2lkIGdldFF1ZXJ5T2JqZWN0dWk2NHZSb2J1c3RBTkdMRShH
Q0dMdWludCBpZCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkg
Kmxlbmd0aCwgR0NHTHVpbnQ2NCAqcGFyYW1zKSBvdmVycmlkZTsKKyNlbmRpZgogCiBwcm90ZWN0
ZWQ6CiAgICAgZnJpZW5kIGNsYXNzIEV4dGVuc2lvbnNHTE9wZW5HTEVTOwotICAgIEV4dGVuc2lv
bnNHTE9wZW5HTENvbW1vbihHcmFwaGljc0NvbnRleHRHTE9wZW5HTCosIGJvb2wgdXNlSW5kZXhl
ZEdldFN0cmluZyk7CisgICAgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uKEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMKik7CiAKICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNFeHRlbnNpb24oY29uc3Qg
U3RyaW5nJikgPSAwOwogICAgIHZpcnR1YWwgU3RyaW5nIGdldEV4dGVuc2lvbnMoKSA9IDA7CkBA
IC0xMjMsMTggKzEyMCw2IEBAIHByb3RlY3RlZDoKIAogICAgIC8vIFdlYWsgcG9pbnRlciBiYWNr
IHRvIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMCiAgICAgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wq
IG1fY29udGV4dDsKLQotICAgIGJvb2wgbV9pc05WSURJQTsKLSAgICBib29sIG1faXNBTUQ7Ci0g
ICAgYm9vbCBtX2lzSW50ZWw7Ci0gICAgYm9vbCBtX2lzSW1hZ2luYXRpb247Ci0gICAgYm9vbCBt
X3JlcXVpcmVzQnVpbHRJbkZ1bmN0aW9uRW11bGF0aW9uOwotICAgIGJvb2wgbV9yZXF1aXJlc1Jl
c3RyaWN0ZWRNYXhpbXVtVGV4dHVyZVNpemU7Ci0KLSAgICBib29sIG1fdXNlSW5kZXhlZEdldFN0
cmluZyB7IGZhbHNlIH07Ci0KLSAgICBTdHJpbmcgbV92ZW5kb3I7Ci0gICAgU3RyaW5nIG1fcmVu
ZGVyZXI7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMRVMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9w
ZW5HTEVTLmNwcAppbmRleCAzNmMzZWYzOGY5OGI5OWFmMDExNTA2OTkxNDI3YmFjZWZjYmI4YWMz
Li5hYWI5Njg3NDM4N2Q3NTI5N2IwN2I3MGQ4OTI3NWIxY2QzZTA4MDg4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdM
RVMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRl
bnNpb25zR0xPcGVuR0xFUy5jcHAKQEAgLTEwMCwxMSArMTAwLDYgQEAgdm9pZCBFeHRlbnNpb25z
R0xPcGVuR0xFUzo6cmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlSU1HKHVuc2lnbmVkIGxv
bmcgdGFyZ2UKICAgICAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElE
X09QRVJBVElPTik7CiB9CiAKLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMRVM6OmJsaXRGcmFtZWJ1
ZmZlcihsb25nIC8qIHNyY1gwICovLCBsb25nIC8qIHNyY1kwICovLCBsb25nIC8qIHNyY1gxICov
LCBsb25nIC8qIHNyY1kxICovLCBsb25nIC8qIGRzdFgwICovLCBsb25nIC8qIGRzdFkwICovLCBs
b25nIC8qIGRzdFgxICovLCBsb25nIC8qIGRzdFkxICovLCB1bnNpZ25lZCBsb25nIC8qIG1hc2sg
Ki8sIHVuc2lnbmVkIGxvbmcgLyogZmlsdGVyICovKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7
Ci19Ci0KIHZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMRVM6OnJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0
aXNhbXBsZSh1bnNpZ25lZCBsb25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBzYW1wbGVzLCB1bnNp
Z25lZCBsb25nIGludGVybmFsZm9ybWF0LCB1bnNpZ25lZCBsb25nIHdpZHRoLCB1bnNpZ25lZCBs
b25nIGhlaWdodCkKIHsKICAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkp
CkBAIC0xMTUsMjEgKzExMCw2IEBAIHZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMRVM6OnJlbmRlcmJ1
ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZSh1bnNpZ25lZCBsb25nIHRhcmdldCwKICAgICAgICAgbm90
SW1wbGVtZW50ZWQoKTsKIH0KIAotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xFUzo6aW5zZXJ0RXZl
bnRNYXJrZXJFWFQoY29uc3QgU3RyaW5nJikKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQot
Ci12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTEVTOjpwdXNoR3JvdXBNYXJrZXJFWFQoY29uc3QgU3Ry
aW5nJikKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9w
ZW5HTEVTOjpwb3BHcm91cE1hcmtlckVYVCh2b2lkKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7
Ci19Ci0KIFBsYXRmb3JtR0xPYmplY3QgRXh0ZW5zaW9uc0dMT3BlbkdMRVM6OmNyZWF0ZVZlcnRl
eEFycmF5T0VTKCkKIHsKICAgICBpZiAobV9nbEdlblZlcnRleEFycmF5c09FUykgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNH
TE9wZW5HTEVTLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0
ZW5zaW9uc0dMT3BlbkdMRVMuaAppbmRleCAwMTdhNDViNzM5OGQwOTkyZWQxNDc2N2YwNzY3ZTA0
YjQ2NDE2MjgzLi43ZWY5NmIyM2M1OTg2ODFkMWQ4MGExODc2YzE4N2JkMTNmYTIxNzVlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9u
c0dMT3BlbkdMRVMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVu
Z2wvRXh0ZW5zaW9uc0dMT3BlbkdMRVMuaApAQCAtNzIsMTQgKzcyLDEwIEBAIHB1YmxpYzoKIAog
ICAgIHZpcnR1YWwgdm9pZCBmcmFtZWJ1ZmZlclRleHR1cmUyRE11bHRpc2FtcGxlSU1HKHVuc2ln
bmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25nIGF0dGFjaG1lbnQsIHVuc2lnbmVkIGxvbmcg
dGV4dGFyZ2V0LCB1bnNpZ25lZCB0ZXh0dXJlLCBpbnQgbGV2ZWwsIHVuc2lnbmVkIGxvbmcgc2Ft
cGxlcyk7CiAgICAgdmlydHVhbCB2b2lkIHJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUlN
Ryh1bnNpZ25lZCBsb25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBzYW1wbGVzLCB1bnNpZ25lZCBs
b25nIGludGVybmFsZm9ybWF0LCB1bnNpZ25lZCBsb25nIHdpZHRoLCB1bnNpZ25lZCBsb25nIGhl
aWdodCk7CisgICAgdm9pZCByZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUodW5zaWduZWQg
bG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgc2FtcGxlcywgdW5zaWduZWQgbG9uZyBpbnRlcm5h
bGZvcm1hdCwgdW5zaWduZWQgbG9uZyB3aWR0aCwgdW5zaWduZWQgbG9uZyBoZWlnaHQpOwogCiAg
ICAgLy8gRXh0ZW5zaW9uM0QgbWV0aG9kcwogICAgIGJvb2wgaXNFbmFibGVkKGNvbnN0IFN0cmlu
ZyYpIG92ZXJyaWRlOwotICAgIHZvaWQgYmxpdEZyYW1lYnVmZmVyKGxvbmcgc3JjWDAsIGxvbmcg
c3JjWTAsIGxvbmcgc3JjWDEsIGxvbmcgc3JjWTEsIGxvbmcgZHN0WDAsIGxvbmcgZHN0WTAsIGxv
bmcgZHN0WDEsIGxvbmcgZHN0WTEsIHVuc2lnbmVkIGxvbmcgbWFzaywgdW5zaWduZWQgbG9uZyBm
aWx0ZXIpIG92ZXJyaWRlOwotICAgIHZvaWQgcmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxl
KHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25nIHNhbXBsZXMsIHVuc2lnbmVkIGxv
bmcgaW50ZXJuYWxmb3JtYXQsIHVuc2lnbmVkIGxvbmcgd2lkdGgsIHVuc2lnbmVkIGxvbmcgaGVp
Z2h0KSBvdmVycmlkZTsKLSAgICB2b2lkIGluc2VydEV2ZW50TWFya2VyRVhUKGNvbnN0IFN0cmlu
ZyYpIG92ZXJyaWRlOwotICAgIHZvaWQgcHVzaEdyb3VwTWFya2VyRVhUKGNvbnN0IFN0cmluZyYp
IG92ZXJyaWRlOwotICAgIHZvaWQgcG9wR3JvdXBNYXJrZXJFWFQodm9pZCkgb3ZlcnJpZGU7CiAK
ICAgICBQbGF0Zm9ybUdMT2JqZWN0IGNyZWF0ZVZlcnRleEFycmF5T0VTKCkgb3ZlcnJpZGU7CiAg
ICAgdm9pZCBkZWxldGVWZXJ0ZXhBcnJheU9FUyhQbGF0Zm9ybUdMT2JqZWN0KSBvdmVycmlkZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFw
aGljc0NvbnRleHRHTE9wZW5HTEVTLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEVTLmNwcAppbmRleCAyM2Q3NGZhODBk
NzA3OTFiZTYwMGRmNThlNzU2MTczMzk2YWE1NTA1Li5lN2I4Y2M1YmI4ZTAzMmE2Y2QxNGIwNDBi
M2Y1YjJlOGMxMjJlYzIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xFUy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMRVMu
Y3BwCkBAIC0xMTksNyArMTE5LDcgQEAgYm9vbCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVz
aGFwZUZCT3MoY29uc3QgSW50U2l6ZSYgc2l6ZSkKICNlbmRpZgogCiAgICAgRXh0ZW5zaW9uc0dM
T3BlbkdMRVMmIGV4dGVuc2lvbnMgPSBzdGF0aWNfY2FzdDxFeHRlbnNpb25zR0xPcGVuR0xFUyY+
KGdldEV4dGVuc2lvbnMoKSk7Ci0gICAgaWYgKGV4dGVuc2lvbnMuaXNJbWFnaW5hdGlvbigpICYm
IGF0dHJpYnV0ZXMuYW50aWFsaWFzKSB7CisgICAgaWYgKGF0dHJpYnV0ZXMuYW50aWFsaWFzKSB7
CiAgICAgICAgIEdMaW50IG1heFNhbXBsZUNvdW50OwogICAgICAgICA6OmdsR2V0SW50ZWdlcnYo
RXh0ZW5zaW9uc0dMOjpNQVhfU0FNUExFU19JTUcsICZtYXhTYW1wbGVDb3VudCk7IAogICAgICAg
ICBHTGludCBzYW1wbGVDb3VudCA9IHN0ZDo6bWluKDgsIG1heFNhbXBsZUNvdW50KTsK
</data>
<flag name="commit-queue"
          id="432304"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>415167</attachid>
            <date>2020-12-01 15:02:43 -0800</date>
            <delta_ts>2020-12-02 10:11:42 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-218896-20201201150242.patch</filename>
            <type>text/plain</type>
            <size>42607</size>
            <attacher name="Rini Patel">rini_patel</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwMjU1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTg2NmY3ODkzZWY2Njhh
Y2ZhOWQ1M2Q1YmEzMGE2ZjMxOGFlMDM3Ny4uYWQ1Mjc0ZmU5Mjk4MTcyMTc4M2YzZTIyYTJmNjM2
Yzg3OTJiMTcxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDIwLTExLTMwICBSaW5p
IFBhdGVsICA8cmluaV9wYXRlbEBhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3ZlIHVudXNlZCBm
dW5jdGlvbnMgZnJvbSBHcmFwaGljc0NvbnRleHRHTCBhbmQgRXh0ZW5zaW9uc0dMCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTg4OTYKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW1vdmUgdW51c2VkIGZ1
bmN0aW9ucyBmcm9tIEdyYXBoaWNzQ29udGV4dEdMIGFuZCBFeHRlbnNpb25zR0wKKyAgICAgICAg
VGhleSdyZSBkZWFkIGNvZGUgYW5kIG1ha2UgaXQgaGFyZGVyIHRvIGltcGxlbWVudCB0aGUgR1BV
IFByb2Nlc3MgdmVyc2lvbi4KKworICAgICAgICAtIElmIHRoZSBmdW5jdGlvbiBpcyB1bnVzZWQs
IHJlbW92ZSBpdCBmdWxseQorICAgICAgICAtIElmIHRoZSBmdW5jdGlvbiBpcyB1bnVzZWQgaW4g
VVNFKEFOR0xFKSBXZWJHTCBwYXJ0LCByZW1vdmUgdGhlIGZ1bmN0aW9uIGZyb20gR3JhcGhpY3ND
b250ZXh0R0wgYW5kIEFOR0xFIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMCisKKyAgICAgICAgKiBo
dG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvRXh0ZW5zaW9uc0dMLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
YW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9u
c0dMQU5HTEU6OkV4dGVuc2lvbnNHTEFOR0xFKToKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lv
bnNHTEFOR0xFOjppbml0aWFsaXplQXZhaWxhYmxlRXh0ZW5zaW9ucyk6CisgICAgICAgIChXZWJD
b3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6YmxpdEZyYW1lYnVmZmVyKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpyZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlz
YW1wbGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6Omlu
c2VydEV2ZW50TWFya2VyRVhUKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lv
bnNHTEFOR0xFOjpwdXNoR3JvdXBNYXJrZXJFWFQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OnBvcEdyb3VwTWFya2VyRVhUKTogRGVsZXRlZC4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRlbnNpb25zR0xBTkdMRS5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMOjpibGl0RnJhbWVidWZmZXIpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMOjpyZW5kZXJidWZmZXJT
dG9yYWdlTXVsdGlzYW1wbGUpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMRVMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXh0
ZW5zaW9uc0dMT3BlbkdMRVM6OmJsaXRGcmFtZWJ1ZmZlcik6IERlbGV0ZWQuCisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVTLmg6CisKIDIwMjAt
MTEtMzAgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIE1pc3Np
bmcgV2ViUlRDIE1ldHJpY3MgaW4gaU9TIDE0IEJldGEgNQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcAppbmRleCA1
NTc4NGUxYTMzZWMwNWI0MDI5NTMxMGY2ZWIwZTdjZTBhNWU5OGRkLi4yYWVjZWI4YTk1MDNlZDM5
MmViNzE1ZDM2ODJjZmI5YTU1ZWI0NTM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcApAQCAtNzQxLDEwICs3
NDEsNiBAQCBzdGQ6OnVuaXF1ZV9wdHI8V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZT4gV2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZTo6Y3JlYXRlKENhbgogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
ICAgICB9CiAKLSAgICBhdXRvJiBleHRlbnNpb25zID0gY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygp
OwotICAgIGlmIChleHRlbnNpb25zLnN1cHBvcnRzKCJHTF9FWFRfZGVidWdfbWFya2VyIl9zKSkK
LSAgICAgICAgZXh0ZW5zaW9ucy5wdXNoR3JvdXBNYXJrZXJFWFQoIldlYkdMUmVuZGVyaW5nQ29u
dGV4dCJfcyk7Ci0KICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZT4gcmVuZGVyaW5nQ29udGV4dDsKICNpZiBFTkFCTEUoV0VCR0wyKQogICAgIGlmICh0eXBlID09
ICJ3ZWJnbDIiKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
RXh0ZW5zaW9uc0dMLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9FeHRlbnNp
b25zR0wuaAppbmRleCAwNmMxMjExMjdlMjJkMTNlNmJlMzg2YjhlYmJhNzZjNjcxMTZhMTNkLi4w
MzNkZjE1ZjQxMTE1MjQ4MjQ5ZDM4MmU2MGFmODMyNDVhZGU0MDk3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9FeHRlbnNpb25zR0wuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9FeHRlbnNpb25zR0wuaApAQCAtMjc1LDEyICsyNzUs
NiBAQCBwdWJsaWM6CiAgICAgLy8gZXh0ZXJuYWxseS4KICAgICB2aXJ0dWFsIEdDR0xpbnQgZ2V0
R3JhcGhpY3NSZXNldFN0YXR1c0FSQigpID0gMDsKIAotICAgIC8vIEdMX0FOR0xFX2ZyYW1lYnVm
ZmVyX2JsaXQKLSAgICB2aXJ0dWFsIHZvaWQgYmxpdEZyYW1lYnVmZmVyKGxvbmcgc3JjWDAsIGxv
bmcgc3JjWTAsIGxvbmcgc3JjWDEsIGxvbmcgc3JjWTEsIGxvbmcgZHN0WDAsIGxvbmcgZHN0WTAs
IGxvbmcgZHN0WDEsIGxvbmcgZHN0WTEsIHVuc2lnbmVkIGxvbmcgbWFzaywgdW5zaWduZWQgbG9u
ZyBmaWx0ZXIpID0gMDsKLQotICAgIC8vIEdMX0FOR0xFX2ZyYW1lYnVmZmVyX211bHRpc2FtcGxl
Ci0gICAgdmlydHVhbCB2b2lkIHJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZSh1bnNpZ25l
ZCBsb25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBzYW1wbGVzLCB1bnNpZ25lZCBsb25nIGludGVy
bmFsZm9ybWF0LCB1bnNpZ25lZCBsb25nIHdpZHRoLCB1bnNpZ25lZCBsb25nIGhlaWdodCkgPSAw
OwotCiAgICAgLy8gR0xfT0VTX3ZlcnRleF9hcnJheV9vYmplY3QKICAgICB2aXJ0dWFsIFBsYXRm
b3JtR0xPYmplY3QgY3JlYXRlVmVydGV4QXJyYXlPRVMoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lk
IGRlbGV0ZVZlcnRleEFycmF5T0VTKFBsYXRmb3JtR0xPYmplY3QpID0gMDsKQEAgLTI5MCwxMSAr
Mjg0LDYgQEAgcHVibGljOgogICAgIC8vIEdMX0FOR0xFX3RyYW5zbGF0ZWRfc2hhZGVyX3NvdXJj
ZQogICAgIHZpcnR1YWwgU3RyaW5nIGdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRShQbGF0
Zm9ybUdMT2JqZWN0KSA9IDA7CiAKLSAgICAvLyBHTF9FWFRfZGVidWdfbWFya2VyCi0gICAgdmly
dHVhbCB2b2lkIGluc2VydEV2ZW50TWFya2VyRVhUKGNvbnN0IFN0cmluZyYpID0gMDsKLSAgICB2
aXJ0dWFsIHZvaWQgcHVzaEdyb3VwTWFya2VyRVhUKGNvbnN0IFN0cmluZyYpID0gMDsKLSAgICB2
aXJ0dWFsIHZvaWQgcG9wR3JvdXBNYXJrZXJFWFQodm9pZCkgPSAwOwotCiAgICAgLy8gR0xfQVJC
X2RyYXdfYnVmZmVycyAvIEdMX0VYVF9kcmF3X2J1ZmZlcnMKICAgICB2aXJ0dWFsIHZvaWQgZHJh
d0J1ZmZlcnNFWFQoR0NHTFNwYW48Y29uc3QgR0NHTGVudW0+IGJ1ZnMpID0gMDsKIApAQCAtMzAz
LDQ4ICsyOTIsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRyYXdFbGVtZW50c0luc3Rh
bmNlZChHQ0dMZW51bSBtb2RlLCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xlbnVtIHR5cGUsIGxvbmcg
bG9uZyBvZmZzZXQsIEdDR0xzaXplaSBwcmltY291bnQpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
dmVydGV4QXR0cmliRGl2aXNvcihHQ0dMdWludCBpbmRleCwgR0NHTHVpbnQgZGl2aXNvcikgPSAw
OwogCi0gICAgLy8gR0xfQU5HTEVfcm9idXN0X2NsaWVudF9tZW1vcnkKLSAgICB2aXJ0dWFsIHZv
aWQgcmVhZFBpeGVsc1JvYnVzdEFOR0xFKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkg
d2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwg
R0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMc2l6ZWkqIGNvbHVtbnMs
IEdDR0xzaXplaSogcm93cywgR0NHTHZvaWQqIHBpeGVscykgPSAwOwotICAgIHZpcnR1YWwgdm9p
ZCB0ZXhQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5h
bWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMZmxvYXQqIHBhcmFtcykgPSAwOwotICAg
IHZpcnR1YWwgdm9pZCB0ZXhQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwg
R0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMaW50KiBwYXJhbXMp
ID0gMDsKLQotICAgIHZpcnR1YWwgdm9pZCBnZXRRdWVyeWl2Um9idXN0QU5HTEUoR0NHTGVudW0g
dGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVu
Z3RoLCBHQ0dMaW50KiBwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0UXVlcnlPYmpl
Y3R1aXZSb2J1c3RBTkdMRShHQ0dMdWludCBpZCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBi
dWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHVpbnQqIHBhcmFtcykgPSAwOwotICAgIHZp
cnR1YWwgdm9pZCBnZXRCdWZmZXJQb2ludGVydlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwg
R0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NH
THZvaWQqKiBwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0SW50ZXJuYWxmb3JtYXRp
dlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdD
R0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xp
bnQqIHBhcmFtcykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJJaXZSb2J1
c3RBTkdMRShHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXpl
LCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2
b2lkIGdldFZlcnRleEF0dHJpYkl1aXZSb2J1c3RBTkdMRShHQ0dMdWludCBpbmRleCwgR0NHTGVu
dW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHVpbnQq
IHBhcmFtcykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRVbmlmb3JtdWl2Um9idXN0QU5HTEUo
R0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdD
R0xzaXplaSogbGVuZ3RoLCBHQ0dMdWludCogcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lk
IGdldEJ1ZmZlclBhcmFtZXRlcmk2NHZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xl
bnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQ2
NCogcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHNhbXBsZXJQYXJhbWV0ZXJpdlJvYnVz
dEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6
ZSwgY29uc3QgR0NHTGludCogcGFyYW0pID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgc2FtcGxlclBh
cmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdD
R0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMZmxvYXQqIHBhcmFtKSA9IDA7Ci0gICAgdmlydHVh
bCB2b2lkIGdldFNhbXBsZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIs
IEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdD
R0xpbnQqIHBhcmFtcykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRTYW1wbGVyUGFyYW1ldGVy
ZnZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVp
IGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMZmxvYXQqIHBhcmFtcykgPSAwOwotCi0g
ICAgdmlydHVhbCB2b2lkIGdldEZyYW1lYnVmZmVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVp
KiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRQcm9n
cmFtSW50ZXJmYWNlaXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMZW51bSBwcm9n
cmFtSW50ZXJmYWNlLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXpl
aSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0Qm9v
bGVhbmlfdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTHVpbnQgaW5kZXgsIEdDR0xz
aXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGJvb2xlYW4qIGRhdGEpID0gMDsg
Ly8gTk9MSU5UCi0gICAgdmlydHVhbCB2b2lkIGdldE11bHRpc2FtcGxlZnZSb2J1c3RBTkdMRShH
Q0dMZW51bSBwbmFtZSwgR0NHTHVpbnQgaW5kZXgsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6
ZWkqIGxlbmd0aCwgR0NHTGZsb2F0KiB2YWwpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0VGV4
TGV2ZWxQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZl
bCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwg
R0NHTGludCogcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldFRleExldmVsUGFyYW1l
dGVyZnZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVt
IHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xmbG9hdCog
cGFyYW1zKSA9IDA7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgZ2V0UG9pbnRlcnZSb2J1c3RBTkdMRVJv
YnVzdEFOR0xFKEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBs
ZW5ndGgsIEdDR0x2b2lkKiogcGFyYW1zKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHJlYWRuUGl4
ZWxzUm9idXN0QU5HTEUoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NH
THNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkg
YnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xzaXplaSogY29sdW1ucywgR0NHTHNpemVp
KiByb3dzLCBHQ0dMdm9pZCogZGF0YSwgYm9vbCByZWFkaW5nVG9QaXhlbEJ1ZmZlck9iamVjdCkg
PSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRuVW5pZm9ybWZ2Um9idXN0QU5HTEUoR0NHTHVpbnQg
cHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSog
bGVuZ3RoLCBHQ0dMZmxvYXQqIHBhcmFtcykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRuVW5p
Zm9ybWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NH
THNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpID0gMDsK
LSAgICB2aXJ0dWFsIHZvaWQgZ2V0blVuaWZvcm11aXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9n
cmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5n
dGgsIEdDR0x1aW50KiBwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgdGV4UGFyYW1ldGVy
SWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVp
IGJ1ZlNpemUsIGNvbnN0IEdDR0xpbnQqIHBhcmFtcykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCB0
ZXhQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFt
ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0x1aW50KiBwYXJhbXMpID0gMDsKLSAgICB2
aXJ0dWFsIHZvaWQgZ2V0VGV4UGFyYW1ldGVySWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBH
Q0dMaW50KiBwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0VGV4UGFyYW1ldGVySXVp
dlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBi
dWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHVpbnQqIHBhcmFtcykgPSAwOwotICAgIHZp
cnR1YWwgdm9pZCBzYW1wbGVyUGFyYW1ldGVySWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxl
ciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMaW50KiBwYXJh
bSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBzYW1wbGVyUGFyYW1ldGVySXVpdlJvYnVzdEFOR0xF
KEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29u
c3QgR0NHTHVpbnQqIHBhcmFtKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldFNhbXBsZXJQYXJh
bWV0ZXJJaXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NH
THNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpID0gMDsK
LSAgICB2aXJ0dWFsIHZvaWQgZ2V0U2FtcGxlclBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRShHQ0dM
dWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXpl
aSogbGVuZ3RoLCBHQ0dMdWludCogcGFyYW1zKSA9IDA7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgZ2V0
UXVlcnlPYmplY3RpdlJvYnVzdEFOR0xFKEdDR0x1aW50IGlkLCBHQ0dMZW51bSBwbmFtZSwgR0NH
THNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpID0gMDsK
LSAgICB2aXJ0dWFsIHZvaWQgZ2V0UXVlcnlPYmplY3RpNjR2Um9idXN0QU5HTEUoR0NHTHVpbnQg
aWQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgs
IEdDR0xpbnQ2NCogcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldFF1ZXJ5T2JqZWN0
dWk2NHZSb2J1c3RBTkdMRShHQ0dMdWludCBpZCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBi
dWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHVpbnQ2NCogcGFyYW1zKSA9IDA7CiAKICAg
ICAvLyBPdGhlciBmdW5jdGlvbnMuCiAjaWYgIVVTRShBTkdMRSkKQEAgLTM1MywxOCArMzAxLDYg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBnZXRuVW5pZm9ybWZ2RVhUKEdDR0x1aW50IHBy
b2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMZmxvYXQqIHBh
cmFtcykgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBnZXRuVW5pZm9ybWl2RVhUKEdDR0x1aW50IHBy
b2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMaW50KiBwYXJh
bXMpID0gMDsKICNlbmRpZgotCi0gICAgdmlydHVhbCBib29sIGlzTlZJRElBKCkgPSAwOwotICAg
IHZpcnR1YWwgYm9vbCBpc0FNRCgpID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgaXNJbnRlbCgpID0g
MDsKLSAgICB2aXJ0dWFsIGJvb2wgaXNJbWFnaW5hdGlvbigpID0gMDsKLSAgICB2aXJ0dWFsIFN0
cmluZyB2ZW5kb3IoKSA9IDA7Ci0KLSAgICAvLyBTb21lIGNvbmZpZ3VyYXRpb25zIGhhdmUgYnVn
cyByZWdhcmRpbmcgYnVpbHQtaW4gZnVuY3Rpb25zIGluIHRoZWlyIE9wZW5HTCBkcml2ZXJzCi0g
ICAgLy8gdGhhdCBtdXN0IGJlIGF2b2lkZWQuIFBvcnRzIHNob3VsZCBpbXBsZW1lbnQgdGhlc2Ug
ZmxhZ3Mgb24gc3VjaCBjb25maWd1cmF0aW9ucy4KLSAgICB2aXJ0dWFsIGJvb2wgcmVxdWlyZXNC
dWlsdEluRnVuY3Rpb25FbXVsYXRpb24oKSA9IDA7Ci0gICAgdmlydHVhbCBib29sIHJlcXVpcmVz
UmVzdHJpY3RlZE1heGltdW1UZXh0dXJlU2l6ZSgpID0gMDsKLQogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUuY3BwCmluZGV4IDI4M2RhODJjNmE2MDJlYTRi
NTU3YzY4NmNmZDgyM2QwODFjNTVlNGEuLjFkYTg0MmNmZDcyOGY4YmQzYmQ3Y2JhNGM2MjhhNjYz
OGUyZTZkOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Fu
Z2xlL0V4dGVuc2lvbnNHTEFOR0xFLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hbmdsZS9FeHRlbnNpb25zR0xBTkdMRS5jcHAKQEAgLTQzLDMxICs0MywxMCBAQCB0
eXBlZGVmIHZvaWQqIEdMZWdsQ29udGV4dDsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1FeHRl
bnNpb25zR0xBTkdMRTo6RXh0ZW5zaW9uc0dMQU5HTEUoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wq
IGNvbnRleHQsIGJvb2wgdXNlSW5kZXhlZEdldFN0cmluZykKK0V4dGVuc2lvbnNHTEFOR0xFOjpF
eHRlbnNpb25zR0xBTkdMRShHcmFwaGljc0NvbnRleHRHTE9wZW5HTCogY29udGV4dCkKICAgICA6
IG1faW5pdGlhbGl6ZWRBdmFpbGFibGVFeHRlbnNpb25zKGZhbHNlKQogICAgICwgbV9jb250ZXh0
KGNvbnRleHQpCi0gICAgLCBtX2lzTlZJRElBKGZhbHNlKQotICAgICwgbV9pc0FNRChmYWxzZSkK
LSAgICAsIG1faXNJbnRlbChmYWxzZSkKLSAgICAsIG1faXNJbWFnaW5hdGlvbihmYWxzZSkKLSAg
ICAsIG1fcmVxdWlyZXNCdWlsdEluRnVuY3Rpb25FbXVsYXRpb24oZmFsc2UpCi0gICAgLCBtX3Jl
cXVpcmVzUmVzdHJpY3RlZE1heGltdW1UZXh0dXJlU2l6ZShmYWxzZSkKLSAgICAsIG1fdXNlSW5k
ZXhlZEdldFN0cmluZyh1c2VJbmRleGVkR2V0U3RyaW5nKQotewotICAgIC8vIEZJWE1FOiBpZGVh
bGx5LCByZW1vdmUgdGhpcyBpbml0aWFsaXphdGlvbiBhbHRvZ2V0aGVyLiBBTkdMRQotICAgIC8v
IHN1YnN1bWVzIHRoZSByZXNwb25zaWJpbGl0eSBmb3IgZ3JhcGhpY3MgZHJpdmVyIHdvcmthcm91
bmRzLgotICAgIG1fdmVuZG9yID0gU3RyaW5nKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+
KGdsOjpHZXRTdHJpbmcoR0xfVkVORE9SKSkpOwotICAgIG1fcmVuZGVyZXIgPSBTdHJpbmcocmVp
bnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZ2w6OkdldFN0cmluZyhHTF9SRU5ERVJFUikpKTsK
LQotICAgIFZlY3RvcjxTdHJpbmc+IHZlbmRvckNvbXBvbmVudHMgPSBtX3ZlbmRvci5jb252ZXJ0
VG9BU0NJSUxvd2VyY2FzZSgpLnNwbGl0KCcgJyk7Ci0gICAgaWYgKHZlbmRvckNvbXBvbmVudHMu
Y29udGFpbnMoIm52aWRpYSIpKQotICAgICAgICBtX2lzTlZJRElBID0gdHJ1ZTsKLSAgICBpZiAo
dmVuZG9yQ29tcG9uZW50cy5jb250YWlucygiYXRpIikgfHwgdmVuZG9yQ29tcG9uZW50cy5jb250
YWlucygiYW1kIikpCi0gICAgICAgIG1faXNBTUQgPSB0cnVlOwotICAgIGlmICh2ZW5kb3JDb21w
b25lbnRzLmNvbnRhaW5zKCJpbnRlbCIpKQotICAgICAgICBtX2lzSW50ZWwgPSB0cnVlOwotICAg
IGlmICh2ZW5kb3JDb21wb25lbnRzLmNvbnRhaW5zKCJpbWFnaW5hdGlvbiIpKQotICAgICAgICBt
X2lzSW1hZ2luYXRpb24gPSB0cnVlOworewogfQogCiBFeHRlbnNpb25zR0xBTkdMRTo6fkV4dGVu
c2lvbnNHTEFOR0xFKCkgPSBkZWZhdWx0OwpAQCAtMTI4LDQyICsxMDcsMTUgQEAgU3RyaW5nIEV4
dGVuc2lvbnNHTEFOR0xFOjpnZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUoUGxhdGZvcm1H
TE9iamVjdCBzaGFkZXIKIAogdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6aW5pdGlhbGl6ZUF2YWls
YWJsZUV4dGVuc2lvbnMoKQogewotICAgIGlmIChtX3VzZUluZGV4ZWRHZXRTdHJpbmcpIHsKLSAg
ICAgICAgR0xpbnQgbnVtRXh0ZW5zaW9ucyA9IDA7Ci0gICAgICAgIGdsOjpHZXRJbnRlZ2VydihH
TF9OVU1fRVhURU5TSU9OUywgJm51bUV4dGVuc2lvbnMpOwotICAgICAgICBmb3IgKEdMaW50IGkg
PSAwOyBpIDwgbnVtRXh0ZW5zaW9uczsgKytpKQotICAgICAgICAgICAgbV9hdmFpbGFibGVFeHRl
bnNpb25zLmFkZChnbDo6R2V0U3RyaW5naShHTF9FWFRFTlNJT05TLCBpKSk7Ci0gICAgICAgIGds
OjpHZXRJbnRlZ2VydihHTF9OVU1fUkVRVUVTVEFCTEVfRVhURU5TSU9OU19BTkdMRSwgJm51bUV4
dGVuc2lvbnMpOwotICAgICAgICBmb3IgKEdMaW50IGkgPSAwOyBpIDwgbnVtRXh0ZW5zaW9uczsg
KytpKQotICAgICAgICAgICAgbV9yZXF1ZXN0YWJsZUV4dGVuc2lvbnMuYWRkKGdsOjpHZXRTdHJp
bmdpKEdMX1JFUVVFU1RBQkxFX0VYVEVOU0lPTlNfQU5HTEUsIGkpKTsKLSAgICB9IGVsc2Ugewot
ICAgICAgICBTdHJpbmcgZXh0ZW5zaW9uc1N0cmluZyA9IGdldEV4dGVuc2lvbnMoKTsKLSAgICAg
ICAgZm9yIChhdXRvJiBleHRlbnNpb24gOiBleHRlbnNpb25zU3RyaW5nLnNwbGl0KCcgJykpCi0g
ICAgICAgICAgICBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuYWRkKGV4dGVuc2lvbik7Ci0gICAgICAg
IGV4dGVuc2lvbnNTdHJpbmcgPSBTdHJpbmcocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4o
Z2w6OkdldFN0cmluZyhHTF9SRVFVRVNUQUJMRV9FWFRFTlNJT05TX0FOR0xFKSkpOwotICAgICAg
ICBmb3IgKGF1dG8mIGV4dGVuc2lvbiA6IGV4dGVuc2lvbnNTdHJpbmcuc3BsaXQoJyAnKSkKLSAg
ICAgICAgICAgIG1fcmVxdWVzdGFibGVFeHRlbnNpb25zLmFkZChleHRlbnNpb24pOwotICAgIH0K
KyAgICBTdHJpbmcgZXh0ZW5zaW9uc1N0cmluZyA9IGdldEV4dGVuc2lvbnMoKTsKKyAgICBmb3Ig
KGF1dG8mIGV4dGVuc2lvbiA6IGV4dGVuc2lvbnNTdHJpbmcuc3BsaXQoJyAnKSkKKyAgICAgICAg
bV9hdmFpbGFibGVFeHRlbnNpb25zLmFkZChleHRlbnNpb24pOworICAgIGV4dGVuc2lvbnNTdHJp
bmcgPSBTdHJpbmcocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZ2w6OkdldFN0cmluZyhH
TF9SRVFVRVNUQUJMRV9FWFRFTlNJT05TX0FOR0xFKSkpOworICAgIGZvciAoYXV0byYgZXh0ZW5z
aW9uIDogZXh0ZW5zaW9uc1N0cmluZy5zcGxpdCgnICcpKQorICAgICAgICBtX3JlcXVlc3RhYmxl
RXh0ZW5zaW9ucy5hZGQoZXh0ZW5zaW9uKTsKICAgICBtX2luaXRpYWxpemVkQXZhaWxhYmxlRXh0
ZW5zaW9ucyA9IHRydWU7CiB9CiAKLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmJsaXRGcmFtZWJ1
ZmZlcihsb25nIHNyY1gwLCBsb25nIHNyY1kwLCBsb25nIHNyY1gxLCBsb25nIHNyY1kxLCBsb25n
IGRzdFgwLCBsb25nIGRzdFkwLCBsb25nIGRzdFgxLCBsb25nIGRzdFkxLCB1bnNpZ25lZCBsb25n
IG1hc2ssIHVuc2lnbmVkIGxvbmcgZmlsdGVyKQotewotICAgIC8vIEZJWE1FOiBjb25zaWRlciBh
ZGRpbmcgc3VwcG9ydCBmb3IgQVBQTEVfZnJhbWVidWZmZXJfbXVsdGlzYW1wbGUuCi0gICAgaWYg
KCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAg
ICBnbDo6QmxpdEZyYW1lYnVmZmVyQU5HTEUoc3JjWDAsIHNyY1kwLCBzcmNYMSwgc3JjWTEsIGRz
dFgwLCBkc3RZMCwgZHN0WDEsIGRzdFkxLCBtYXNrLCBmaWx0ZXIpOwotfQotCi12b2lkIEV4dGVu
c2lvbnNHTEFOR0xFOjpyZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUodW5zaWduZWQgbG9u
ZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgc2FtcGxlcywgdW5zaWduZWQgbG9uZyBpbnRlcm5hbGZv
cm1hdCwgdW5zaWduZWQgbG9uZyB3aWR0aCwgdW5zaWduZWQgbG9uZyBoZWlnaHQpCi17Ci0gICAg
aWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0K
LSAgICBnbDo6UmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5HTEUodGFyZ2V0LCBzYW1w
bGVzLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCk7Ci19Ci0KIFBsYXRmb3JtR0xPYmpl
Y3QgRXh0ZW5zaW9uc0dMQU5HTEU6OmNyZWF0ZVZlcnRleEFycmF5T0VTKCkKIHsKICAgICBpZiAo
IW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCkBAIC0yMDQsMjQgKzE1Niw2IEBAIHZv
aWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmJpbmRWZXJ0ZXhBcnJheU9FUyhQbGF0Zm9ybUdMT2JqZWN0
IGFycmF5KQogICAgIGdsOjpCaW5kVmVydGV4QXJyYXlPRVMoYXJyYXkpOwogfQogCi12b2lkIEV4
dGVuc2lvbnNHTEFOR0xFOjppbnNlcnRFdmVudE1hcmtlckVYVChjb25zdCBTdHJpbmcmKQotewot
ICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQgdGhpcyBmdW5jdGlvbiBhbmQgYWRkIEdMX0VYVF9kZWJ1
Z19tYXJrZXIgaW4gc3VwcG9ydHMoKS4KLSAgICByZXR1cm47Ci19Ci0KLXZvaWQgRXh0ZW5zaW9u
c0dMQU5HTEU6OnB1c2hHcm91cE1hcmtlckVYVChjb25zdCBTdHJpbmcmKQotewotICAgIC8vIEZJ
WE1FOiBpbXBsZW1lbnQgdGhpcyBmdW5jdGlvbiBhbmQgYWRkIEdMX0VYVF9kZWJ1Z19tYXJrZXIg
aW4gc3VwcG9ydHMoKS4KLSAgICByZXR1cm47Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6
OnBvcEdyb3VwTWFya2VyRVhUKHZvaWQpCi17Ci0gICAgLy8gRklYTUU6IGltcGxlbWVudCB0aGlz
IGZ1bmN0aW9uIGFuZCBhZGQgR0xfRVhUX2RlYnVnX21hcmtlciBpbiBzdXBwb3J0cygpLgotICAg
IHJldHVybjsKLX0KLQogYm9vbCBFeHRlbnNpb25zR0xBTkdMRTo6c3VwcG9ydHNFeHRlbnNpb24o
Y29uc3QgU3RyaW5nJiBuYW1lKQogewogICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMu
Y29udGFpbnMobmFtZSkgfHwgbV9yZXF1ZXN0YWJsZUV4dGVuc2lvbnMuY29udGFpbnMobmFtZSk7
CkBAIC0yNzgsNiArMjEyLDcgQEAgR0NHTGVudW0gRXh0ZW5zaW9uc0dMQU5HTEU6OmFkanVzdFdl
YkdMMVRleHR1cmVJbnRlcm5hbEZvcm1hdChHQ0dMZW51bSBpbnRlcm5hbGYKIH0KIAogLy8gR0xf
QU5HTEVfcm9idXN0X2NsaWVudF9tZW1vcnkKKyNpZiAwCiB2b2lkIEV4dGVuc2lvbnNHTEFOR0xF
OjpyZWFkUGl4ZWxzUm9idXN0QU5HTEUoaW50IHgsIGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdD
R0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVp
IGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMc2l6ZWkgKmNvbHVtbnMsIEdDR0xzaXpl
aSAqcm93cywgdm9pZCAqcGl4ZWxzKQogewogICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4
dEN1cnJlbnQoKSkKQEAgLTQ1NSw2ICszOTAsNyBAQCB2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpn
ZXRQb2ludGVydlJvYnVzdEFOR0xFUm9idXN0QU5HTEUoR0NHTGVudW0gcG5hbWUsIEdDR0xzaQog
CiAgICAgZ2w6OkdldFBvaW50ZXJ2Um9idXN0QU5HTEVSb2J1c3RBTkdMRShwbmFtZSwgYnVmU2l6
ZSwgbGVuZ3RoLCBwYXJhbXMpOwogfQorI2VuZGlmCiAKICNpZiBQTEFURk9STShNQUMpIHx8IFBM
QVRGT1JNKElPU19GQU1JTFkpCiBzdGF0aWMgdm9pZCB3aXBlQWxwaGFDaGFubmVsRnJvbVBpeGVs
cyhpbnQgd2lkdGgsIGludCBoZWlnaHQsIHVuc2lnbmVkIGNoYXIqIHBpeGVscykKQEAgLTUwMyw3
ICs0MzksNyBAQCB2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpyZWFkblBpeGVsc1JvYnVzdEFOR0xF
KGludCB4LCBpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQwogICAgIFVOVVNFRF9QQVJBTShyZWFk
aW5nVG9QaXhlbEJ1ZmZlck9iamVjdCk7CiAjZW5kaWYKIH0KLQorI2lmIDAKIHZvaWQgRXh0ZW5z
aW9uc0dMQU5HTEU6OmdldG5Vbmlmb3JtZnZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBp
bnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGZs
b2F0ICpwYXJhbXMpCiB7CiAgICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgp
KQpAQCAtNjE2LDcgKzU1Miw3IEBAIHZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldFF1ZXJ5T2Jq
ZWN0dWk2NHZSb2J1c3RBTkdMRShHQ0dMdWludCBpZCwgR0NHTGVudW0gcG5hCiAKICAgICBnbDo6
R2V0UXVlcnlPYmplY3R1aTY0dlJvYnVzdEFOR0xFKGlkLCBwbmFtZSwgYnVmU2l6ZSwgbGVuZ3Ro
LCByZWludGVycHJldF9jYXN0PEdMdWludDY0Kj4ocGFyYW1zKSk7CiB9Ci0KKyNlbmRpZgogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRlbnNpb25zR0xBTkdMRS5oCmluZGV4IGE3NzMxZGZk
MjBjNWYwM2EzMzU5MDNmYWE2ZTM4ZmY3MmY0YjIzMjMuLmI1NGUzNDg3NjVlOGI5YzY3YmNkODVj
NmJhMzczOGNhMzA5NDQ0ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUuaApAQCAtMzYsNyArMzYsNyBA
QCBjbGFzcyBFeHRlbnNpb25zR0xBTkdMRSA6IHB1YmxpYyBFeHRlbnNpb25zR0wgewogICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIC8vIFRoaXMgY2xhc3Mgb25seSBu
ZWVkcyB0byBiZSBpbnN0YW50aWF0ZWQgYnkgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wgaW1wbGVt
ZW50YXRpb25zLgotICAgIEV4dGVuc2lvbnNHTEFOR0xFKEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
KiwgYm9vbCB1c2VJbmRleGVkR2V0U3RyaW5nID0gZmFsc2UpOworICAgIEV4dGVuc2lvbnNHTEFO
R0xFKEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKik7CiAgICAgdmlydHVhbCB+RXh0ZW5zaW9uc0dM
QU5HTEUoKTsKIAogICAgIC8vIEV4dGVuc2lvbnNHTCBtZXRob2RzLgpAQCAtNDksMzAgKzQ5LDE2
IEBAIHB1YmxpYzoKICAgICB2b2lkIGRlbGV0ZVZlcnRleEFycmF5T0VTKFBsYXRmb3JtR0xPYmpl
Y3QpIG92ZXJyaWRlOwogICAgIEdDR0xib29sZWFuIGlzVmVydGV4QXJyYXlPRVMoUGxhdGZvcm1H
TE9iamVjdCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBiaW5kVmVydGV4QXJyYXlPRVMoUGxhdGZvcm1H
TE9iamVjdCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBpbnNlcnRFdmVudE1hcmtlckVYVChjb25zdCBT
dHJpbmcmKSBvdmVycmlkZTsKLSAgICB2b2lkIHB1c2hHcm91cE1hcmtlckVYVChjb25zdCBTdHJp
bmcmKSBvdmVycmlkZTsKLSAgICB2b2lkIHBvcEdyb3VwTWFya2VyRVhUKHZvaWQpIG92ZXJyaWRl
OwogICAgIHZvaWQgZHJhd0J1ZmZlcnNFWFQoR0NHTFNwYW48Y29uc3QgR0NHTGVudW0+KSBvdmVy
cmlkZTsKIAogICAgIFN0cmluZyBnZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUoUGxhdGZv
cm1HTE9iamVjdCkgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIGJsaXRGcmFtZWJ1ZmZlcihsb25nIHNy
Y1gwLCBsb25nIHNyY1kwLCBsb25nIHNyY1gxLCBsb25nIHNyY1kxLCBsb25nIGRzdFgwLCBsb25n
IGRzdFkwLCBsb25nIGRzdFgxLCBsb25nIGRzdFkxLCB1bnNpZ25lZCBsb25nIG1hc2ssIHVuc2ln
bmVkIGxvbmcgZmlsdGVyKSBvdmVycmlkZTsKLSAgICB2b2lkIHJlbmRlcmJ1ZmZlclN0b3JhZ2VN
dWx0aXNhbXBsZSh1bnNpZ25lZCBsb25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBzYW1wbGVzLCB1
bnNpZ25lZCBsb25nIGludGVybmFsZm9ybWF0LCB1bnNpZ25lZCBsb25nIHdpZHRoLCB1bnNpZ25l
ZCBsb25nIGhlaWdodCkgb3ZlcnJpZGU7Ci0KICAgICB2b2lkIGRyYXdBcnJheXNJbnN0YW5jZWQo
R0NHTGVudW0gbW9kZSwgR0NHTGludCBmaXJzdCwgR0NHTHNpemVpIGNvdW50LCBHQ0dMc2l6ZWkg
cHJpbWNvdW50KSBvdmVycmlkZTsKICAgICB2b2lkIGRyYXdFbGVtZW50c0luc3RhbmNlZChHQ0dM
ZW51bSBtb2RlLCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xlbnVtIHR5cGUsIGxvbmcgbG9uZyBvZmZz
ZXQsIEdDR0xzaXplaSBwcmltY291bnQpIG92ZXJyaWRlOwogICAgIHZvaWQgdmVydGV4QXR0cmli
RGl2aXNvcihHQ0dMdWludCBpbmRleCwgR0NHTHVpbnQgZGl2aXNvcikgb3ZlcnJpZGU7CiAKLSAg
ICBib29sIGlzTlZJRElBKCkgb3ZlcnJpZGUgeyByZXR1cm4gbV9pc05WSURJQTsgfQotICAgIGJv
b2wgaXNBTUQoKSBvdmVycmlkZSB7IHJldHVybiBtX2lzQU1EOyB9Ci0gICAgYm9vbCBpc0ludGVs
KCkgb3ZlcnJpZGUgeyByZXR1cm4gbV9pc0ludGVsOyB9Ci0gICAgYm9vbCBpc0ltYWdpbmF0aW9u
KCkgb3ZlcnJpZGUgeyByZXR1cm4gbV9pc0ltYWdpbmF0aW9uOyB9Ci0gICAgU3RyaW5nIHZlbmRv
cigpIG92ZXJyaWRlIHsgcmV0dXJuIG1fdmVuZG9yOyB9Ci0KLSAgICBib29sIHJlcXVpcmVzQnVp
bHRJbkZ1bmN0aW9uRW11bGF0aW9uKCkgb3ZlcnJpZGUgeyByZXR1cm4gbV9yZXF1aXJlc0J1aWx0
SW5GdW5jdGlvbkVtdWxhdGlvbjsgfQotICAgIGJvb2wgcmVxdWlyZXNSZXN0cmljdGVkTWF4aW11
bVRleHR1cmVTaXplKCkgb3ZlcnJpZGUgeyByZXR1cm4gbV9yZXF1aXJlc1Jlc3RyaWN0ZWRNYXhp
bXVtVGV4dHVyZVNpemU7IH0KLQogICAgIC8vIEdMX0FOR0xFX3JvYnVzdF9jbGllbnRfbWVtb3J5
CisjaWYgMAogICAgIHZvaWQgcmVhZFBpeGVsc1JvYnVzdEFOR0xFKEdDR0xpbnQgeCwgR0NHTGlu
dCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwg
R0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dM
c2l6ZWkgKmNvbHVtbnMsIEdDR0xzaXplaSAqcm93cywgdm9pZCAqcGl4ZWxzKSBvdmVycmlkZTsK
ICAgICB2b2lkIHRleFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dM
ZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xmbG9hdCAqcGFyYW1zKSBv
dmVycmlkZTsKICAgICB2b2lkIHRleFBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xpbnQgKnBh
cmFtcykgb3ZlcnJpZGU7CkBAIC05Nyw3ICs4MywxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBnZXRU
ZXhMZXZlbFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxl
dmVsLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3Ro
LCBHQ0dMZmxvYXQgKnBhcmFtcykgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGdldFBvaW50ZXJ2Um9i
dXN0QU5HTEVSb2J1c3RBTkdMRShHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdD
R0xzaXplaSAqbGVuZ3RoLCB2b2lkICoqcGFyYW1zKSBvdmVycmlkZTsKKyNlbmRpZgorCiAgICAg
dm9pZCByZWFkblBpeGVsc1JvYnVzdEFOR0xFKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6
ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlw
ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMc2l6ZWkgKmNvbHVt
bnMsIEdDR0xzaXplaSAqcm93cywgdm9pZCAqZGF0YSwgYm9vbCByZWFkaW5nVG9QaXhlbEJ1ZmZl
ck9iamVjdCkgb3ZlcnJpZGU7CisjaWYgMAogICAgIHZvaWQgZ2V0blVuaWZvcm1mdlJvYnVzdEFO
R0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXpl
LCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGZsb2F0ICpwYXJhbXMpIG92ZXJyaWRlOwogICAgIHZv
aWQgZ2V0blVuaWZvcm1pdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9j
YXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFy
YW1zKSBvdmVycmlkZTsKICAgICB2b2lkIGdldG5Vbmlmb3JtdWl2Um9idXN0QU5HTEUoR0NHTHVp
bnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXpl
aSAqbGVuZ3RoLCBHQ0dMdWludCAqcGFyYW1zKSBvdmVycmlkZTsKQEAgLTExMyw3ICsxMDIsNyBA
QCBwdWJsaWM6CiAgICAgdm9pZCBnZXRRdWVyeU9iamVjdGl2Um9idXN0QU5HTEUoR0NHTHVpbnQg
aWQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgs
IEdDR0xpbnQgKnBhcmFtcykgb3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRRdWVyeU9iamVjdGk2NHZS
b2J1c3RBTkdMRShHQ0dMdWludCBpZCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXpl
LCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludDY0ICpwYXJhbXMpIG92ZXJyaWRlOwogICAgIHZv
aWQgZ2V0UXVlcnlPYmplY3R1aTY0dlJvYnVzdEFOR0xFKEdDR0x1aW50IGlkLCBHQ0dMZW51bSBw
bmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMdWludDY0ICpw
YXJhbXMpIG92ZXJyaWRlOwotCisjZW5kaWYKICAgICAvLyBPbmx5IGZvciBub24tV2ViR0wgMi4w
IGNvbnRleHRzLgogICAgIEdDR0xlbnVtIGFkanVzdFdlYkdMMVRleHR1cmVJbnRlcm5hbEZvcm1h
dChHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBl
KTsKIApAQCAtMTI5LDE5ICsxMTgsNiBAQCBwcml2YXRlOgogCiAgICAgLy8gV2VhayBwb2ludGVy
IGJhY2sgdG8gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuCiAgICAgR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0wqIG1fY29udGV4dDsKLQotICAgIGJvb2wgbV9pc05WSURJQTsKLSAgICBib29sIG1faXNB
TUQ7Ci0gICAgYm9vbCBtX2lzSW50ZWw7Ci0gICAgYm9vbCBtX2lzSW1hZ2luYXRpb247Ci0gICAg
Ym9vbCBtX3JlcXVpcmVzQnVpbHRJbkZ1bmN0aW9uRW11bGF0aW9uOwotICAgIGJvb2wgbV9yZXF1
aXJlc1Jlc3RyaWN0ZWRNYXhpbXVtVGV4dHVyZVNpemU7Ci0KLSAgICBib29sIG1fdXNlSW5kZXhl
ZEdldFN0cmluZyB7IGZhbHNlIH07Ci0KLSAgICBTdHJpbmcgbV92ZW5kb3I7Ci0gICAgU3RyaW5n
IG1fcmVuZGVyZXI7Ci0KICAgICAvLyBXaGV0aGVyIHRoZSBXZWJHTCAxLjAtcmVsYXRlZCBmbG9h
dGluZy1wb2ludCByZW5kZXJhYmlsaXR5IGV4dGVuc2lvbnMgaGF2ZSBiZWVuIGVuYWJsZWQuCiAg
ICAgYm9vbCBtX3dlYmdsQ29sb3JCdWZmZXJGbG9hdFJHQiB7IGZhbHNlIH07CiAgICAgYm9vbCBt
X3dlYmdsQ29sb3JCdWZmZXJGbG9hdFJHQkEgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3Bl
bkdMLmNwcAppbmRleCA3ZWM4MWNmNGFlNTc3MmNhZTk3Mjg4YmM4MGUzNjU2NDZkNjI3YzdiLi5h
Njg5MTQ3ZDcxZTE2YTJiNzExZjcyYzAwYTk4MmMzNjExZGZlMGJmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9u
c0dMT3BlbkdMLmNwcApAQCAtNDAsMzAgKzQwLDEzIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotRXh0ZW5zaW9uc0dMT3BlbkdMOjpFeHRlbnNpb25zR0xPcGVuR0woR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0wqIGNvbnRleHQsIGJvb2wgdXNlSW5kZXhlZEdldFN0cmluZykKLSAgICA6IEV4dGVu
c2lvbnNHTE9wZW5HTENvbW1vbihjb250ZXh0LCB1c2VJbmRleGVkR2V0U3RyaW5nKQorRXh0ZW5z
aW9uc0dMT3BlbkdMOjpFeHRlbnNpb25zR0xPcGVuR0woR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wq
IGNvbnRleHQpCisgICAgOiBFeHRlbnNpb25zR0xPcGVuR0xDb21tb24oY29udGV4dCkKIHsKIH0K
IAogRXh0ZW5zaW9uc0dMT3BlbkdMOjp+RXh0ZW5zaW9uc0dMT3BlbkdMKCkgPSBkZWZhdWx0Owog
Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMOjpibGl0RnJhbWVidWZmZXIobG9uZyBzcmNYMCwg
bG9uZyBzcmNZMCwgbG9uZyBzcmNYMSwgbG9uZyBzcmNZMSwgbG9uZyBkc3RYMCwgbG9uZyBkc3RZ
MCwgbG9uZyBkc3RYMSwgbG9uZyBkc3RZMSwgdW5zaWduZWQgbG9uZyBtYXNrLCB1bnNpZ25lZCBs
b25nIGZpbHRlcikKLXsKLSAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkp
Ci0gICAgICAgIHJldHVybjsKLQotICAgIDo6Z2xCbGl0RnJhbWVidWZmZXJFWFQoc3JjWDAsIHNy
Y1kwLCBzcmNYMSwgc3JjWTEsIGRzdFgwLCBkc3RZMCwgZHN0WDEsIGRzdFkxLCBtYXNrLCBmaWx0
ZXIpOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTDo6cmVuZGVyYnVmZmVyU3RvcmFnZU11
bHRpc2FtcGxlKHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25nIHNhbXBsZXMsIHVu
c2lnbmVkIGxvbmcgaW50ZXJuYWxmb3JtYXQsIHVuc2lnbmVkIGxvbmcgd2lkdGgsIHVuc2lnbmVk
IGxvbmcgaGVpZ2h0KQotewotICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQo
KSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgOjpnbFJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNh
bXBsZUVYVCh0YXJnZXQsIHNhbXBsZXMsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0KTsK
LX0KLQogUGxhdGZvcm1HTE9iamVjdCBFeHRlbnNpb25zR0xPcGVuR0w6OmNyZWF0ZVZlcnRleEFy
cmF5T0VTKCkKIHsKICAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCkBA
IC0xMjcsMjQgKzExMCw2IEBAIHZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMOjpiaW5kVmVydGV4QXJy
YXlPRVMoUGxhdGZvcm1HTE9iamVjdCBhcnJheSkKICNlbmRpZgogfQogCi12b2lkIEV4dGVuc2lv
bnNHTE9wZW5HTDo6aW5zZXJ0RXZlbnRNYXJrZXJFWFQoY29uc3QgU3RyaW5nJikKLXsKLSAgICAv
LyBGSVhNRTogaW1wbGVtZW50IHRoaXMgZnVuY3Rpb24gYW5kIGFkZCBHTF9FWFRfZGVidWdfbWFy
a2VyIGluIHN1cHBvcnRzKCkuCi0gICAgcmV0dXJuOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9w
ZW5HTDo6cHVzaEdyb3VwTWFya2VyRVhUKGNvbnN0IFN0cmluZyYpCi17Ci0gICAgLy8gRklYTUU6
IGltcGxlbWVudCB0aGlzIGZ1bmN0aW9uIGFuZCBhZGQgR0xfRVhUX2RlYnVnX21hcmtlciBpbiBz
dXBwb3J0cygpLgotICAgIHJldHVybjsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0w6OnBv
cEdyb3VwTWFya2VyRVhUKHZvaWQpCi17Ci0gICAgLy8gRklYTUU6IGltcGxlbWVudCB0aGlzIGZ1
bmN0aW9uIGFuZCBhZGQgR0xfRVhUX2RlYnVnX21hcmtlciBpbiBzdXBwb3J0cygpLgotICAgIHJl
dHVybjsKLX0KLQogYm9vbCBFeHRlbnNpb25zR0xPcGVuR0w6OnN1cHBvcnRzRXh0ZW5zaW9uKGNv
bnN0IFN0cmluZyYgbmFtZSkKIHsKICAgICAvLyBHTF9BTkdMRV9mcmFtZWJ1ZmZlcl9ibGl0IGFu
ZCBHTF9BTkdMRV9mcmFtZWJ1ZmZlcl9tdWx0aXNhbXBsZSBhcmUgImZha2UiLiBUaGV5IGFyZSBp
bXBsZW1lbnRlZCB1c2luZyBvdGhlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTC5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTC5oCmluZGV4IDQ5NjI4
OWNlYTBlNmEwOWQ2ZGI3MzFmODY4YjU0OTkzYTQ0NDQ5YTguLjE3Mjc1ZGJlMTBlODI3MzRlOGYw
MTkzNTU4NWUxZThjYTVhNzE2YjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMLmgKQEAgLTM2LDIw
ICszNiwxNCBAQCBjbGFzcyBFeHRlbnNpb25zR0xPcGVuR0wgOiBwdWJsaWMgRXh0ZW5zaW9uc0dM
T3BlbkdMQ29tbW9uIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAg
ICAvLyBUaGlzIGNsYXNzIG9ubHkgbmVlZHMgdG8gYmUgaW5zdGFudGlhdGVkIGJ5IEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMIGltcGxlbWVudGF0aW9ucy4KLSAgICBFeHRlbnNpb25zR0xPcGVuR0wo
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqLCBib29sIHVzZUluZGV4ZWRHZXRTdHJpbmcpOworICAg
IEV4dGVuc2lvbnNHTE9wZW5HTChHcmFwaGljc0NvbnRleHRHTE9wZW5HTCopOwogICAgIHZpcnR1
YWwgfkV4dGVuc2lvbnNHTE9wZW5HTCgpOwogCiAgICAgLy8gRXh0ZW5zaW9uc0dMIG1ldGhvZHMu
Ci0gICAgdm9pZCBibGl0RnJhbWVidWZmZXIobG9uZyBzcmNYMCwgbG9uZyBzcmNZMCwgbG9uZyBz
cmNYMSwgbG9uZyBzcmNZMSwgbG9uZyBkc3RYMCwgbG9uZyBkc3RZMCwgbG9uZyBkc3RYMSwgbG9u
ZyBkc3RZMSwgdW5zaWduZWQgbG9uZyBtYXNrLCB1bnNpZ25lZCBsb25nIGZpbHRlcikgb3ZlcnJp
ZGU7Ci0gICAgdm9pZCByZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUodW5zaWduZWQgbG9u
ZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgc2FtcGxlcywgdW5zaWduZWQgbG9uZyBpbnRlcm5hbGZv
cm1hdCwgdW5zaWduZWQgbG9uZyB3aWR0aCwgdW5zaWduZWQgbG9uZyBoZWlnaHQpIG92ZXJyaWRl
OwotCiAgICAgUGxhdGZvcm1HTE9iamVjdCBjcmVhdGVWZXJ0ZXhBcnJheU9FUygpIG92ZXJyaWRl
OwogICAgIHZvaWQgZGVsZXRlVmVydGV4QXJyYXlPRVMoUGxhdGZvcm1HTE9iamVjdCkgb3ZlcnJp
ZGU7CiAgICAgR0NHTGJvb2xlYW4gaXNWZXJ0ZXhBcnJheU9FUyhQbGF0Zm9ybUdMT2JqZWN0KSBv
dmVycmlkZTsKICAgICB2b2lkIGJpbmRWZXJ0ZXhBcnJheU9FUyhQbGF0Zm9ybUdMT2JqZWN0KSBv
dmVycmlkZTsKLSAgICB2b2lkIGluc2VydEV2ZW50TWFya2VyRVhUKGNvbnN0IFN0cmluZyYpIG92
ZXJyaWRlOwotICAgIHZvaWQgcHVzaEdyb3VwTWFya2VyRVhUKGNvbnN0IFN0cmluZyYpIG92ZXJy
aWRlOwotICAgIHZvaWQgcG9wR3JvdXBNYXJrZXJFWFQodm9pZCkgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBkcmF3QnVmZmVyc0VYVChHQ0dMU3Bhbjxjb25zdCBHQ0dMZW51bT4pIG92ZXJyaWRlOwogCiAg
ICAgdm9pZCBkcmF3QXJyYXlzSW5zdGFuY2VkKEdDR0xlbnVtIG1vZGUsIEdDR0xpbnQgZmlyc3Qs
IEdDR0xzaXplaSBjb3VudCwgR0NHTHNpemVpIHByaW1jb3VudCkgb3ZlcnJpZGU7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dM
T3BlbkdMQ29tbW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5n
bC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uY3BwCmluZGV4IDQzYjUxNjFmYmE3NzhmOGZiNDM4
NGIxYmMyZGIzOGVjZjZjNDgzZWIuLmM4ODU5ZmRiMjY0YTQ4ZDA3YTIyN2JmYmU4NjNlNjU0ZjZh
NDJjOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5n
bC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uY3BwCkBAIC02Mywz
NyArNjMsMTAgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1FeHRlbnNpb25zR0xPcGVuR0xD
b21tb246OkV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbihHcmFwaGljc0NvbnRleHRHTE9wZW5HTCog
Y29udGV4dCwgYm9vbCB1c2VJbmRleGVkR2V0U3RyaW5nKQorRXh0ZW5zaW9uc0dMT3BlbkdMQ29t
bW9uOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb24oR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqIGNv
bnRleHQpCiAgICAgOiBtX2luaXRpYWxpemVkQXZhaWxhYmxlRXh0ZW5zaW9ucyhmYWxzZSkKICAg
ICAsIG1fY29udGV4dChjb250ZXh0KQotICAgICwgbV9pc05WSURJQShmYWxzZSkKLSAgICAsIG1f
aXNBTUQoZmFsc2UpCi0gICAgLCBtX2lzSW50ZWwoZmFsc2UpCi0gICAgLCBtX2lzSW1hZ2luYXRp
b24oZmFsc2UpCi0gICAgLCBtX3JlcXVpcmVzQnVpbHRJbkZ1bmN0aW9uRW11bGF0aW9uKGZhbHNl
KQotICAgICwgbV9yZXF1aXJlc1Jlc3RyaWN0ZWRNYXhpbXVtVGV4dHVyZVNpemUoZmFsc2UpCi0g
ICAgLCBtX3VzZUluZGV4ZWRHZXRTdHJpbmcodXNlSW5kZXhlZEdldFN0cmluZykKLXsKLSAgICBt
X3ZlbmRvciA9IFN0cmluZyhyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPig6OmdsR2V0U3Ry
aW5nKEdMX1ZFTkRPUikpKTsKLSAgICBtX3JlbmRlcmVyID0gU3RyaW5nKHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgY2hhcio+KDo6Z2xHZXRTdHJpbmcoR0xfUkVOREVSRVIpKSk7Ci0KLSAgICBWZWN0
b3I8U3RyaW5nPiB2ZW5kb3JDb21wb25lbnRzID0gbV92ZW5kb3IuY29udmVydFRvQVNDSUlMb3dl
cmNhc2UoKS5zcGxpdCgnICcpOwotICAgIGlmICh2ZW5kb3JDb21wb25lbnRzLmNvbnRhaW5zKCJu
dmlkaWEiKSkKLSAgICAgICAgbV9pc05WSURJQSA9IHRydWU7Ci0gICAgaWYgKHZlbmRvckNvbXBv
bmVudHMuY29udGFpbnMoImF0aSIpIHx8IHZlbmRvckNvbXBvbmVudHMuY29udGFpbnMoImFtZCIp
KQotICAgICAgICBtX2lzQU1EID0gdHJ1ZTsKLSAgICBpZiAodmVuZG9yQ29tcG9uZW50cy5jb250
YWlucygiaW50ZWwiKSkKLSAgICAgICAgbV9pc0ludGVsID0gdHJ1ZTsKLSAgICBpZiAodmVuZG9y
Q29tcG9uZW50cy5jb250YWlucygiaW1hZ2luYXRpb24iKSkKLSAgICAgICAgbV9pc0ltYWdpbmF0
aW9uID0gdHJ1ZTsKLQotI2lmIFBMQVRGT1JNKE1BQykKLSAgICBpZiAobV9pc0FNRCB8fCBtX2lz
SW50ZWwpCi0gICAgICAgIG1fcmVxdWlyZXNCdWlsdEluRnVuY3Rpb25FbXVsYXRpb24gPSB0cnVl
OwotCi0gICAgLy8gSW50ZWwgSEQgMzAwMCBkZXZpY2VzIGhhdmUgcHJvYmxlbXMgd2l0aCBsYXJn
ZSB0ZXh0dXJlcy4gPHJkYXI6Ly9wcm9ibGVtLzE2NjQ5MTQwPgotICAgIG1fcmVxdWlyZXNSZXN0
cmljdGVkTWF4aW11bVRleHR1cmVTaXplID0gbV9yZW5kZXJlci5zdGFydHNXaXRoKCJJbnRlbCBI
RCBHcmFwaGljcyAzMDAwIik7Ci0jZW5kaWYKK3sKIH0KIAogRXh0ZW5zaW9uc0dMT3BlbkdMQ29t
bW9uOjp+RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uKCkgPSBkZWZhdWx0OwpAQCAtMTkyLDkgKzE2
NSw2IEBAIFN0cmluZyBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFRyYW5zbGF0ZWRTaGFk
ZXJTb3VyY2VBTkdMRShQbGF0Zm9ybUdMT2JqZWN0CiAgICAgU3RyaW5nIHNoYWRlckluZm9Mb2c7
CiAgICAgR0NHTHVpbnQ2NCBleHRyYUNvbXBpbGVPcHRpb25zID0gU0hfQ0xBTVBfSU5ESVJFQ1Rf
QVJSQVlfQk9VTkRTIHwgU0hfVU5GT0xEX1NIT1JUX0NJUkNVSVQgfCBTSF9JTklUX09VVFBVVF9W
QVJJQUJMRVMgfCBTSF9FTkZPUkNFX1BBQ0tJTkdfUkVTVFJJQ1RJT05TIHwgU0hfTElNSVRfRVhQ
UkVTU0lPTl9DT01QTEVYSVRZIHwgU0hfTElNSVRfQ0FMTF9TVEFDS19ERVBUSCB8IFNIX0lOSVRJ
QUxJWkVfVU5JTklUSUFMSVpFRF9MT0NBTFM7CiAKLSAgICBpZiAobV9yZXF1aXJlc0J1aWx0SW5G
dW5jdGlvbkVtdWxhdGlvbikKLSAgICAgICAgZXh0cmFDb21waWxlT3B0aW9ucyB8PSBTSF9FTVVM
QVRFX0FCU19JTlRfRlVOQ1RJT047Ci0KICAgICBWZWN0b3I8c3RkOjpwYWlyPEFOR0xFU2hhZGVy
U3ltYm9sVHlwZSwgc2g6OlNoYWRlclZhcmlhYmxlPj4gc3ltYm9sczsKICAgICBib29sIGlzVmFs
aWQgPSBjb21waWxlci5jb21waWxlU2hhZGVyU291cmNlKGVudHJ5LnNvdXJjZS51dGY4KCkuZGF0
YSgpLCBzaGFkZXJUeXBlLCB0cmFuc2xhdGVkU2hhZGVyU291cmNlLCBzaGFkZXJJbmZvTG9nLCBz
eW1ib2xzLCBleHRyYUNvbXBpbGVPcHRpb25zKTsKIApAQCAtMjE0LDI4ICsxODQsOSBAQCBTdHJp
bmcgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5H
TEUoUGxhdGZvcm1HTE9iamVjdAogCiB2b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6aW5p
dGlhbGl6ZUF2YWlsYWJsZUV4dGVuc2lvbnMoKQogewotI2lmIFBMQVRGT1JNKEdUSykgJiYgIVVT
RShPUEVOR0xfRVMpCi0gICAgaWYgKG1fdXNlSW5kZXhlZEdldFN0cmluZykgewotICAgICAgICBH
TGludCBudW1FeHRlbnNpb25zID0gMDsKLSAgICAgICAgOjpnbEdldEludGVnZXJ2KEdMX05VTV9F
WFRFTlNJT05TLCAmbnVtRXh0ZW5zaW9ucyk7Ci0gICAgICAgIGZvciAoR0xpbnQgaSA9IDA7IGkg
PCBudW1FeHRlbnNpb25zOyArK2kpCi0gICAgICAgICAgICBtX2F2YWlsYWJsZUV4dGVuc2lvbnMu
YWRkKGdsR2V0U3RyaW5naShHTF9FWFRFTlNJT05TLCBpKSk7Ci0KLSAgICAgICAgaWYgKCFtX2F2
YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0FSQl90ZXh0dXJlX3N0b3JhZ2UiX3MpKSB7
Ci0gICAgICAgICAgICBHTGludCBtYWpvclZlcnNpb247Ci0gICAgICAgICAgICBnbEdldEludGVn
ZXJ2KEdMX01BSk9SX1ZFUlNJT04sICZtYWpvclZlcnNpb24pOwotICAgICAgICAgICAgR0xpbnQg
bWlub3JWZXJzaW9uOwotICAgICAgICAgICAgZ2xHZXRJbnRlZ2VydihHTF9NSU5PUl9WRVJTSU9O
LCAmbWlub3JWZXJzaW9uKTsKLSAgICAgICAgICAgIGlmIChtYWpvclZlcnNpb24gPiA0IHx8ICht
YWpvclZlcnNpb24gPT0gNCAmJiBtaW5vclZlcnNpb24gPj0gMikpCi0gICAgICAgICAgICAgICAg
bV9hdmFpbGFibGVFeHRlbnNpb25zLmFkZCgiR0xfQVJCX3RleHR1cmVfc3RvcmFnZSJfcyk7Ci0g
ICAgICAgIH0KLSAgICB9IGVsc2UKLSNlbmRpZgotICAgIHsKLSAgICAgICAgU3RyaW5nIGV4dGVu
c2lvbnNTdHJpbmcgPSBnZXRFeHRlbnNpb25zKCk7Ci0gICAgICAgIGZvciAoYXV0byYgZXh0ZW5z
aW9uIDogZXh0ZW5zaW9uc1N0cmluZy5zcGxpdCgnICcpKQotICAgICAgICAgICAgbV9hdmFpbGFi
bGVFeHRlbnNpb25zLmFkZChleHRlbnNpb24pOwotICAgIH0KKyAgICBTdHJpbmcgZXh0ZW5zaW9u
c1N0cmluZyA9IGdldEV4dGVuc2lvbnMoKTsKKyAgICBmb3IgKGF1dG8mIGV4dGVuc2lvbiA6IGV4
dGVuc2lvbnNTdHJpbmcuc3BsaXQoJyAnKSkKKyAgICAgICAgbV9hdmFpbGFibGVFeHRlbnNpb25z
LmFkZChleHRlbnNpb24pOwogICAgIG1faW5pdGlhbGl6ZWRBdmFpbGFibGVFeHRlbnNpb25zID0g
dHJ1ZTsKIH0KIApAQCAtMjU0LDYgKzIwNSw3IEBAIHZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29t
bW9uOjpnZXRuVW5pZm9ybWl2RVhUKEdDR0x1aW50LCBpbnQsIEdDR0xzaXplaSwgR0NHTGluCiAg
ICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CiB9
CiAKKyNpZiAwCiB2b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6cmVhZFBpeGVsc1JvYnVz
dEFOR0xFKGludCwgaW50LCBHQ0dMc2l6ZWksIEdDR0xzaXplaSwgR0NHTGVudW0sIEdDR0xlbnVt
LCBHQ0dMc2l6ZWksIEdDR0xzaXplaSAqLCBHQ0dMc2l6ZWkgKiwgR0NHTHNpemVpICosIHZvaWQg
KikKIHsKICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFU
SU9OKTsKQEAgLTM2NSwxMiArMzE3LDE0IEBAIHZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9u
OjpnZXRQb2ludGVydlJvYnVzdEFOR0xFUm9idXN0QU5HTEUoR0NHTGVudW0sIEdDR0xzCiB7CiAg
ICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CiB9
CisjZW5kaWYKIAogdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OnJlYWRuUGl4ZWxzUm9i
dXN0QU5HTEUoaW50LCBpbnQsIEdDR0xzaXplaSwgR0NHTHNpemVpLCBHQ0dMZW51bSwgR0NHTGVu
dW0sIEdDR0xzaXplaSwgR0NHTHNpemVpICosIEdDR0xzaXplaSAqLCBHQ0dMc2l6ZWkgKiwgdm9p
ZCAqLCBib29sKQogewogICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJ
RF9PUEVSQVRJT04pOwogfQogCisjaWYgMAogdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246
OmdldG5Vbmlmb3JtZnZSb2J1c3RBTkdMRShHQ0dMdWludCwgaW50LCBHQ0dMc2l6ZWksIEdDR0xz
aXplaSAqLCBHQ0dMZmxvYXQgKikKIHsKICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9y
KEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKQEAgLTQ0MSw3ICszOTUsNyBAQCB2b2lkIEV4dGVuc2lv
bnNHTE9wZW5HTENvbW1vbjo6Z2V0UXVlcnlPYmplY3R1aTY0dlJvYnVzdEFOR0xFKEdDR0x1aW50
LCBHQ0dMZW51bQogewogICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJ
RF9PUEVSQVRJT04pOwogfQotCisjZW5kaWYKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5z
aW9uc0dMT3BlbkdMQ29tbW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9v
cGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmgKaW5kZXggYmZlNDUyMTU0M2ZmNGIyNzIx
MzdmMzQ0Y2VlNGEyMmQ4ZmIyOGM2NC4uYTFhNDU5MDNlZTNlZDE5ZjMzN2M1ZTBmYmVjNzkxOTc5
NzUzM2E4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Bl
bmdsL0V4dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uaApAQCAtNTUsMjAg
KzU1LDEyIEBAIHB1YmxpYzoKICAgICBTdHJpbmcgZ2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFO
R0xFKFBsYXRmb3JtR0xPYmplY3QpIG92ZXJyaWRlOwogCiAgICAgLy8gRVhUIFJvYnVzdG5lc3Mg
LSB1c2VzIGdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIoKQotICAgIHZvaWQgcmVhZG5QaXhlbHNF
WFQoaW50IHgsIGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xl
bnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIHZvaWQgKmRhdGEp
IG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0blVuaWZvcm1mdkVYVChHQ0dMdWludCBwcm9ncmFtLCBp
bnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBmbG9hdCAqcGFyYW1zKSBvdmVycmlkZTsK
LSAgICB2b2lkIGdldG5Vbmlmb3JtaXZFWFQoR0NHTHVpbnQgcHJvZ3JhbSwgaW50IGxvY2F0aW9u
LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgaW50ICpwYXJhbXMpIG92ZXJyaWRlOwotCi0gICAgYm9vbCBp
c05WSURJQSgpIG92ZXJyaWRlIHsgcmV0dXJuIG1faXNOVklESUE7IH0KLSAgICBib29sIGlzQU1E
KCkgb3ZlcnJpZGUgeyByZXR1cm4gbV9pc0FNRDsgfQotICAgIGJvb2wgaXNJbnRlbCgpIG92ZXJy
aWRlIHsgcmV0dXJuIG1faXNJbnRlbDsgfQotICAgIGJvb2wgaXNJbWFnaW5hdGlvbigpIG92ZXJy
aWRlIHsgcmV0dXJuIG1faXNJbWFnaW5hdGlvbjsgfQotICAgIFN0cmluZyB2ZW5kb3IoKSBvdmVy
cmlkZSB7IHJldHVybiBtX3ZlbmRvcjsgfQotCi0gICAgYm9vbCByZXF1aXJlc0J1aWx0SW5GdW5j
dGlvbkVtdWxhdGlvbigpIG92ZXJyaWRlIHsgcmV0dXJuIG1fcmVxdWlyZXNCdWlsdEluRnVuY3Rp
b25FbXVsYXRpb247IH0KLSAgICBib29sIHJlcXVpcmVzUmVzdHJpY3RlZE1heGltdW1UZXh0dXJl
U2l6ZSgpIG92ZXJyaWRlIHsgcmV0dXJuIG1fcmVxdWlyZXNSZXN0cmljdGVkTWF4aW11bVRleHR1
cmVTaXplOyB9CisgICAgdm9pZCByZWFkblBpeGVsc0VYVChpbnQgeCwgaW50IHksIEdDR0xzaXpl
aSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBl
LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgdm9pZCAqZGF0YSk7CisgICAgdm9pZCBnZXRuVW5pZm9ybWZ2
RVhUKEdDR0x1aW50IHByb2dyYW0sIGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIGZs
b2F0ICpwYXJhbXMpOworICAgIHZvaWQgZ2V0blVuaWZvcm1pdkVYVChHQ0dMdWludCBwcm9ncmFt
LCBpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBpbnQgKnBhcmFtcyk7CiAKICAgICAv
LyBHTF9BTkdMRV9yb2J1c3RfY2xpZW50X21lbW9yeQorI2lmIDAKICAgICB2b2lkIHJlYWRQaXhl
bHNSb2J1c3RBTkdMRShpbnQgeCwgaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhl
aWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwg
R0NHTHNpemVpICpsZW5ndGgsIEdDR0xzaXplaSAqY29sdW1ucywgR0NHTHNpemVpICpyb3dzLCB2
b2lkICpwaXhlbHMpIG92ZXJyaWRlOwogICAgIHZvaWQgdGV4UGFyYW1ldGVyZnZSb2J1c3RBTkdM
RShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29u
c3QgR0NHTGZsb2F0ICpwYXJhbXMpIG92ZXJyaWRlOwogICAgIHZvaWQgdGV4UGFyYW1ldGVyaXZS
b2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVm
U2l6ZSwgY29uc3QgR0NHTGludCAqcGFyYW1zKSBvdmVycmlkZTsKQEAgLTkzLDcgKzg1LDExIEBA
IHB1YmxpYzoKICAgICB2b2lkIGdldFRleExldmVsUGFyYW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dM
ZW51bSB0YXJnZXQsIGludCBsZXZlbCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXpl
LCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGZsb2F0ICpwYXJhbXMpIG92ZXJyaWRlOwogCiAgICAg
dm9pZCBnZXRQb2ludGVydlJvYnVzdEFOR0xFUm9idXN0QU5HTEUoR0NHTGVudW0gcG5hbWUsIEdD
R0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgdm9pZCAqKnBhcmFtcykgb3ZlcnJp
ZGU7CisjZW5kaWYKKwogICAgIHZvaWQgcmVhZG5QaXhlbHNSb2J1c3RBTkdMRShpbnQgeCwgaW50
IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBH
Q0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xz
aXplaSAqY29sdW1ucywgR0NHTHNpemVpICpyb3dzLCB2b2lkICpkYXRhLCBib29sIHJlYWRpbmdU
b1BpeGVsQnVmZmVyT2JqZWN0KSBvdmVycmlkZTsKKworI2lmIDAKICAgICB2b2lkIGdldG5Vbmlm
b3JtZnZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBpbnQgbG9jYXRpb24sIEdDR0xzaXpl
aSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGZsb2F0ICpwYXJhbXMpIG92ZXJyaWRl
OwogICAgIHZvaWQgZ2V0blVuaWZvcm1pdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIGlu
dCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50
ICpwYXJhbXMpIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0blVuaWZvcm11aXZSb2J1c3RBTkdMRShH
Q0dMdWludCBwcm9ncmFtLCBpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6
ZWkgKmxlbmd0aCwgR0NHTHVpbnQgKnBhcmFtcykgb3ZlcnJpZGU7CkBAIC0xMDksMTAgKzEwNSwx
MSBAQCBwdWJsaWM6CiAgICAgdm9pZCBnZXRRdWVyeU9iamVjdGl2Um9idXN0QU5HTEUoR0NHTHVp
bnQgaWQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5n
dGgsIEdDR0xpbnQgKnBhcmFtcykgb3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRRdWVyeU9iamVjdGk2
NHZSb2J1c3RBTkdMRShHQ0dMdWludCBpZCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZT
aXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludDY0ICpwYXJhbXMpIG92ZXJyaWRlOwogICAg
IHZvaWQgZ2V0UXVlcnlPYmplY3R1aTY0dlJvYnVzdEFOR0xFKEdDR0x1aW50IGlkLCBHQ0dMZW51
bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMdWludDY0
ICpwYXJhbXMpIG92ZXJyaWRlOworI2VuZGlmCiAKIHByb3RlY3RlZDoKICAgICBmcmllbmQgY2xh
c3MgRXh0ZW5zaW9uc0dMT3BlbkdMRVM7Ci0gICAgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uKEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMKiwgYm9vbCB1c2VJbmRleGVkR2V0U3RyaW5nKTsKKyAgICBF
eHRlbnNpb25zR0xPcGVuR0xDb21tb24oR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqKTsKIAogICAg
IHZpcnR1YWwgYm9vbCBzdXBwb3J0c0V4dGVuc2lvbihjb25zdCBTdHJpbmcmKSA9IDA7CiAgICAg
dmlydHVhbCBTdHJpbmcgZ2V0RXh0ZW5zaW9ucygpID0gMDsKQEAgLTEyMywxOCArMTIwLDYgQEAg
cHJvdGVjdGVkOgogCiAgICAgLy8gV2VhayBwb2ludGVyIGJhY2sgdG8gR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0wKICAgICBHcmFwaGljc0NvbnRleHRHTE9wZW5HTCogbV9jb250ZXh0OwotCi0gICAg
Ym9vbCBtX2lzTlZJRElBOwotICAgIGJvb2wgbV9pc0FNRDsKLSAgICBib29sIG1faXNJbnRlbDsK
LSAgICBib29sIG1faXNJbWFnaW5hdGlvbjsKLSAgICBib29sIG1fcmVxdWlyZXNCdWlsdEluRnVu
Y3Rpb25FbXVsYXRpb247Ci0gICAgYm9vbCBtX3JlcXVpcmVzUmVzdHJpY3RlZE1heGltdW1UZXh0
dXJlU2l6ZTsKLQotICAgIGJvb2wgbV91c2VJbmRleGVkR2V0U3RyaW5nIHsgZmFsc2UgfTsKLQot
ICAgIFN0cmluZyBtX3ZlbmRvcjsKLSAgICBTdHJpbmcgbV9yZW5kZXJlcjsKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xFUy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMRVMuY3BwCmluZGV4IDM2
YzNlZjM4Zjk4Yjk5YWYwMTE1MDY5OTE0MjdiYWNlZmNiYjhhYzMuLmFhYjk2ODc0Mzg3ZDc1Mjk3
YjA3YjcwZDg5Mjc1YjFjZDNlMDgwODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xFUy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVTLmNw
cApAQCAtMTAwLDExICsxMDAsNiBAQCB2b2lkIEV4dGVuc2lvbnNHTE9wZW5HTEVTOjpyZW5kZXJi
dWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVJTUcodW5zaWduZWQgbG9uZyB0YXJnZQogICAgICAgICBt
X2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKIH0KIAot
dm9pZCBFeHRlbnNpb25zR0xPcGVuR0xFUzo6YmxpdEZyYW1lYnVmZmVyKGxvbmcgLyogc3JjWDAg
Ki8sIGxvbmcgLyogc3JjWTAgKi8sIGxvbmcgLyogc3JjWDEgKi8sIGxvbmcgLyogc3JjWTEgKi8s
IGxvbmcgLyogZHN0WDAgKi8sIGxvbmcgLyogZHN0WTAgKi8sIGxvbmcgLyogZHN0WDEgKi8sIGxv
bmcgLyogZHN0WTEgKi8sIHVuc2lnbmVkIGxvbmcgLyogbWFzayAqLywgdW5zaWduZWQgbG9uZyAv
KiBmaWx0ZXIgKi8pCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQogdm9pZCBFeHRlbnNp
b25zR0xPcGVuR0xFUzo6cmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlKHVuc2lnbmVkIGxv
bmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25nIHNhbXBsZXMsIHVuc2lnbmVkIGxvbmcgaW50ZXJuYWxm
b3JtYXQsIHVuc2lnbmVkIGxvbmcgd2lkdGgsIHVuc2lnbmVkIGxvbmcgaGVpZ2h0KQogewogICAg
IGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKQEAgLTExNSwyMSArMTEwLDYg
QEAgdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xFUzo6cmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2Ft
cGxlKHVuc2lnbmVkIGxvbmcgdGFyZ2V0LAogICAgICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQog
Ci12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTEVTOjppbnNlcnRFdmVudE1hcmtlckVYVChjb25zdCBT
dHJpbmcmKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dM
T3BlbkdMRVM6OnB1c2hHcm91cE1hcmtlckVYVChjb25zdCBTdHJpbmcmKQotewotICAgIG5vdElt
cGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMRVM6OnBvcEdyb3VwTWFy
a2VyRVhUKHZvaWQpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQogUGxhdGZvcm1HTE9i
amVjdCBFeHRlbnNpb25zR0xPcGVuR0xFUzo6Y3JlYXRlVmVydGV4QXJyYXlPRVMoKQogewogICAg
IGlmIChtX2dsR2VuVmVydGV4QXJyYXlzT0VTKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMRVMuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xFUy5o
CmluZGV4IDAxN2E0NWI3Mzk4ZDA5OTJlZDE0NzY3ZjA3NjdlMDRiNDY0MTYyODMuLjdlZjk2YjIz
YzU5ODY4MWQxZDgwYTE4NzZjMTg3YmQxM2ZhMjE3NWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xFUy5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVu
R0xFUy5oCkBAIC03MiwxNCArNzIsMTAgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGZy
YW1lYnVmZmVyVGV4dHVyZTJETXVsdGlzYW1wbGVJTUcodW5zaWduZWQgbG9uZyB0YXJnZXQsIHVu
c2lnbmVkIGxvbmcgYXR0YWNobWVudCwgdW5zaWduZWQgbG9uZyB0ZXh0YXJnZXQsIHVuc2lnbmVk
IHRleHR1cmUsIGludCBsZXZlbCwgdW5zaWduZWQgbG9uZyBzYW1wbGVzKTsKICAgICB2aXJ0dWFs
IHZvaWQgcmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlSU1HKHVuc2lnbmVkIGxvbmcgdGFy
Z2V0LCB1bnNpZ25lZCBsb25nIHNhbXBsZXMsIHVuc2lnbmVkIGxvbmcgaW50ZXJuYWxmb3JtYXQs
IHVuc2lnbmVkIGxvbmcgd2lkdGgsIHVuc2lnbmVkIGxvbmcgaGVpZ2h0KTsKKyAgICB2b2lkIHJl
bmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZSh1bnNpZ25lZCBsb25nIHRhcmdldCwgdW5zaWdu
ZWQgbG9uZyBzYW1wbGVzLCB1bnNpZ25lZCBsb25nIGludGVybmFsZm9ybWF0LCB1bnNpZ25lZCBs
b25nIHdpZHRoLCB1bnNpZ25lZCBsb25nIGhlaWdodCk7CiAKICAgICAvLyBFeHRlbnNpb24zRCBt
ZXRob2RzCiAgICAgYm9vbCBpc0VuYWJsZWQoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7Ci0gICAg
dm9pZCBibGl0RnJhbWVidWZmZXIobG9uZyBzcmNYMCwgbG9uZyBzcmNZMCwgbG9uZyBzcmNYMSwg
bG9uZyBzcmNZMSwgbG9uZyBkc3RYMCwgbG9uZyBkc3RZMCwgbG9uZyBkc3RYMSwgbG9uZyBkc3RZ
MSwgdW5zaWduZWQgbG9uZyBtYXNrLCB1bnNpZ25lZCBsb25nIGZpbHRlcikgb3ZlcnJpZGU7Ci0g
ICAgdm9pZCByZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUodW5zaWduZWQgbG9uZyB0YXJn
ZXQsIHVuc2lnbmVkIGxvbmcgc2FtcGxlcywgdW5zaWduZWQgbG9uZyBpbnRlcm5hbGZvcm1hdCwg
dW5zaWduZWQgbG9uZyB3aWR0aCwgdW5zaWduZWQgbG9uZyBoZWlnaHQpIG92ZXJyaWRlOwotICAg
IHZvaWQgaW5zZXJ0RXZlbnRNYXJrZXJFWFQoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7Ci0gICAg
dm9pZCBwdXNoR3JvdXBNYXJrZXJFWFQoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7Ci0gICAgdm9p
ZCBwb3BHcm91cE1hcmtlckVYVCh2b2lkKSBvdmVycmlkZTsKIAogICAgIFBsYXRmb3JtR0xPYmpl
Y3QgY3JlYXRlVmVydGV4QXJyYXlPRVMoKSBvdmVycmlkZTsKICAgICB2b2lkIGRlbGV0ZVZlcnRl
eEFycmF5T0VTKFBsYXRmb3JtR0xPYmplY3QpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdM
QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0xCYXNlLmNwcAppbmRleCA2MzU2ZjgxZjQ4MjFiNmExZWE2YzM1NTdl
ZGYxZjRlNjg4MTNmNmI5Li4wMWVkZmZiYTAwOTllZDRlOTA2MzNlNzk4MjZmY2E2MjZmNGIwYjc5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0xCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xCYXNlLmNwcApAQCAtNjYs
MzIgKzY2LDI4IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlYWRQaXhlbHNBbmRD
b252ZXJ0VG9CR1JBSWZOZWNlc3NhcnkoaW50IHgsIGludCB5CiAgICAgYXV0byBhdHRycyA9IGNv
bnRleHRBdHRyaWJ1dGVzKCk7CiAKICAgICAvLyBOVklESUEgZHJpdmVycyBoYXZlIGEgYnVnIHdo
ZXJlIGNhbGxpbmcgcmVhZFBpeGVscyBpbiBCR1JBIGNhbiByZXR1cm4gdGhlIHdyb25nIHZhbHVl
cyBmb3IgdGhlIGFscGhhIGNoYW5uZWwgd2hlbiB0aGUgYWxwaGEgaXMgb2ZmIGZvciB0aGUgY29u
dGV4dC4KLSAgICBpZiAoIWF0dHJzLmFscGhhICYmIGdldEV4dGVuc2lvbnMoKS5pc05WSURJQSgp
KSB7Ci0gICAgICAgIDo6Z2xSZWFkUGl4ZWxzKHgsIHksIHdpZHRoLCBoZWlnaHQsIEdMX1JHQkEs
IEdMX1VOU0lHTkVEX0JZVEUsIHBpeGVscyk7CisgICAgOjpnbFJlYWRQaXhlbHMoeCwgeSwgd2lk
dGgsIGhlaWdodCwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwgcGl4ZWxzKTsKICNpZiBVU0Uo
QUNDRUxFUkFURSkKLSAgICAgICAgdkltYWdlX0J1ZmZlciBzcmM7Ci0gICAgICAgIHNyYy5oZWln
aHQgPSBoZWlnaHQ7Ci0gICAgICAgIHNyYy53aWR0aCA9IHdpZHRoOwotICAgICAgICBzcmMucm93
Qnl0ZXMgPSB3aWR0aCAqIDQ7Ci0gICAgICAgIHNyYy5kYXRhID0gcGl4ZWxzOwotCi0gICAgICAg
IHZJbWFnZV9CdWZmZXIgZGVzdDsKLSAgICAgICAgZGVzdC5oZWlnaHQgPSBoZWlnaHQ7Ci0gICAg
ICAgIGRlc3Qud2lkdGggPSB3aWR0aDsKLSAgICAgICAgZGVzdC5yb3dCeXRlcyA9IHdpZHRoICog
NDsKLSAgICAgICAgZGVzdC5kYXRhID0gcGl4ZWxzOwotCi0gICAgICAgIC8vIFN3YXAgcGl4ZWwg
Y2hhbm5lbHMgZnJvbSBSR0JBIHRvIEJHUkEuCi0gICAgICAgIGNvbnN0IHVpbnQ4X3QgbWFwWzRd
ID0geyAyLCAxLCAwLCAzIH07Ci0gICAgICAgIHZJbWFnZVBlcm11dGVDaGFubmVsc19BUkdCODg4
OCgmc3JjLCAmZGVzdCwgbWFwLCBrdkltYWdlTm9GbGFncyk7CisgICAgdkltYWdlX0J1ZmZlciBz
cmM7CisgICAgc3JjLmhlaWdodCA9IGhlaWdodDsKKyAgICBzcmMud2lkdGggPSB3aWR0aDsKKyAg
ICBzcmMucm93Qnl0ZXMgPSB3aWR0aCAqIDQ7CisgICAgc3JjLmRhdGEgPSBwaXhlbHM7CisKKyAg
ICB2SW1hZ2VfQnVmZmVyIGRlc3Q7CisgICAgZGVzdC5oZWlnaHQgPSBoZWlnaHQ7CisgICAgZGVz
dC53aWR0aCA9IHdpZHRoOworICAgIGRlc3Qucm93Qnl0ZXMgPSB3aWR0aCAqIDQ7CisgICAgZGVz
dC5kYXRhID0gcGl4ZWxzOworCisgICAgLy8gU3dhcCBwaXhlbCBjaGFubmVscyBmcm9tIFJHQkEg
dG8gQkdSQS4KKyAgICBjb25zdCB1aW50OF90IG1hcFs0XSA9IHsgMiwgMSwgMCwgMyB9OworICAg
IHZJbWFnZVBlcm11dGVDaGFubmVsc19BUkdCODg4OCgmc3JjLCAmZGVzdCwgbWFwLCBrdkltYWdl
Tm9GbGFncyk7CiAjZWxzZQotICAgICAgICBpbnQgdG90YWxCeXRlcyA9IHdpZHRoICogaGVpZ2h0
ICogNDsKLSAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCB0b3RhbEJ5dGVzOyBpICs9IDQpCi0g
ICAgICAgICAgICBzdGQ6OnN3YXAocGl4ZWxzW2ldLCBwaXhlbHNbaSArIDJdKTsKKyAgICBpbnQg
dG90YWxCeXRlcyA9IHdpZHRoICogaGVpZ2h0ICogNDsKKyAgICBmb3IgKGludCBpID0gMDsgaSA8
IHRvdGFsQnl0ZXM7IGkgKz0gNCkKKyAgICAgICAgc3RkOjpzd2FwKHBpeGVsc1tpXSwgcGl4ZWxz
W2kgKyAyXSk7CiAjZW5kaWYKLSAgICB9IGVsc2UKLSAgICAgICAgOjpnbFJlYWRQaXhlbHMoeCwg
eSwgd2lkdGgsIGhlaWdodCwgR0xfQkdSQSwgR0xfVU5TSUdORURfSU5UXzhfOF84XzhfUkVWLCBw
aXhlbHMpOwotCiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnZhbGlkYXRlQXR0
cmlidXRlcygpCkBAIC0yOTMsMTYgKzI4OSw2IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OmdldEludGVnZXJ2KEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3BhbjxHQ0dMaW50PiB2YWx1CiAg
ICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAjZW5kaWYKLSAgICBjYXNlIE1BWF9URVhUVVJFX1NJ
WkU6Ci0gICAgICAgIDo6Z2xHZXRJbnRlZ2VydihNQVhfVEVYVFVSRV9TSVpFLCB2YWx1ZS5kYXRh
KTsKLSAgICAgICAgaWYgKGdldEV4dGVuc2lvbnMoKS5yZXF1aXJlc1Jlc3RyaWN0ZWRNYXhpbXVt
VGV4dHVyZVNpemUoKSkKLSAgICAgICAgICAgICp2YWx1ZSA9IHN0ZDo6bWluKDQwOTYsICp2YWx1
ZSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgTUFYX0NVQkVfTUFQX1RFWFRVUkVfU0laRToK
LSAgICAgICAgOjpnbEdldEludGVnZXJ2KE1BWF9DVUJFX01BUF9URVhUVVJFX1NJWkUsIHZhbHVl
LmRhdGEpOwotICAgICAgICBpZiAoZ2V0RXh0ZW5zaW9ucygpLnJlcXVpcmVzUmVzdHJpY3RlZE1h
eGltdW1UZXh0dXJlU2l6ZSgpKQotICAgICAgICAgICAgKnZhbHVlID0gc3RkOjptaW4oMTAyNCwg
KnZhbHVlKTsKLSAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgICAgOjpnbEdldElu
dGVnZXJ2KHBuYW1lLCB2YWx1ZS5kYXRhKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xFUy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0xFUy5jcHAKaW5kZXggMjNkNzRmYTgwZDcwNzkxYmU2MDBkZjU4ZTc1NjE3MzM5
NmFhNTUwNS4uZTdiOGNjNWJiOGUwMzJhNmNkMTRiMDQwYjNmNWIyZThjMTIyZWMyMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMRVMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEVTLmNwcApAQCAtMTE5LDcgKzExOSw3IEBA
IGJvb2wgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlc2hhcGVGQk9zKGNvbnN0IEludFNpemUm
IHNpemUpCiAjZW5kaWYKIAogICAgIEV4dGVuc2lvbnNHTE9wZW5HTEVTJiBleHRlbnNpb25zID0g
c3RhdGljX2Nhc3Q8RXh0ZW5zaW9uc0dMT3BlbkdMRVMmPihnZXRFeHRlbnNpb25zKCkpOwotICAg
IGlmIChleHRlbnNpb25zLmlzSW1hZ2luYXRpb24oKSAmJiBhdHRyaWJ1dGVzLmFudGlhbGlhcykg
eworICAgIGlmIChhdHRyaWJ1dGVzLmFudGlhbGlhcykgewogICAgICAgICBHTGludCBtYXhTYW1w
bGVDb3VudDsKICAgICAgICAgOjpnbEdldEludGVnZXJ2KEV4dGVuc2lvbnNHTDo6TUFYX1NBTVBM
RVNfSU1HLCAmbWF4U2FtcGxlQ291bnQpOyAKICAgICAgICAgR0xpbnQgc2FtcGxlQ291bnQgPSBz
dGQ6Om1pbig4LCBtYXhTYW1wbGVDb3VudCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>415232</attachid>
            <date>2020-12-02 10:11:44 -0800</date>
            <delta_ts>2020-12-03 13:50:29 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-218896-20201202101144.patch</filename>
            <type>text/plain</type>
            <size>65052</size>
            <attacher name="Rini Patel">rini_patel</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwMjU1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTg2NmY3ODkzZWY2Njhh
Y2ZhOWQ1M2Q1YmEzMGE2ZjMxOGFlMDM3Ny4uYWQ1Mjc0ZmU5Mjk4MTcyMTc4M2YzZTIyYTJmNjM2
Yzg3OTJiMTcxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDIwLTExLTMwICBSaW5p
IFBhdGVsICA8cmluaV9wYXRlbEBhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3ZlIHVudXNlZCBm
dW5jdGlvbnMgZnJvbSBHcmFwaGljc0NvbnRleHRHTCBhbmQgRXh0ZW5zaW9uc0dMCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTg4OTYKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW1vdmUgdW51c2VkIGZ1
bmN0aW9ucyBmcm9tIEdyYXBoaWNzQ29udGV4dEdMIGFuZCBFeHRlbnNpb25zR0wKKyAgICAgICAg
VGhleSdyZSBkZWFkIGNvZGUgYW5kIG1ha2UgaXQgaGFyZGVyIHRvIGltcGxlbWVudCB0aGUgR1BV
IFByb2Nlc3MgdmVyc2lvbi4KKworICAgICAgICAtIElmIHRoZSBmdW5jdGlvbiBpcyB1bnVzZWQs
IHJlbW92ZSBpdCBmdWxseQorICAgICAgICAtIElmIHRoZSBmdW5jdGlvbiBpcyB1bnVzZWQgaW4g
VVNFKEFOR0xFKSBXZWJHTCBwYXJ0LCByZW1vdmUgdGhlIGZ1bmN0aW9uIGZyb20gR3JhcGhpY3ND
b250ZXh0R0wgYW5kIEFOR0xFIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMCisKKyAgICAgICAgKiBo
dG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvRXh0ZW5zaW9uc0dMLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
YW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9u
c0dMQU5HTEU6OkV4dGVuc2lvbnNHTEFOR0xFKToKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lv
bnNHTEFOR0xFOjppbml0aWFsaXplQXZhaWxhYmxlRXh0ZW5zaW9ucyk6CisgICAgICAgIChXZWJD
b3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6YmxpdEZyYW1lYnVmZmVyKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpyZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlz
YW1wbGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6Omlu
c2VydEV2ZW50TWFya2VyRVhUKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lv
bnNHTEFOR0xFOjpwdXNoR3JvdXBNYXJrZXJFWFQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OnBvcEdyb3VwTWFya2VyRVhUKTogRGVsZXRlZC4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRlbnNpb25zR0xBTkdMRS5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMOjpibGl0RnJhbWVidWZmZXIpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMOjpyZW5kZXJidWZmZXJT
dG9yYWdlTXVsdGlzYW1wbGUpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMRVMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXh0
ZW5zaW9uc0dMT3BlbkdMRVM6OmJsaXRGcmFtZWJ1ZmZlcik6IERlbGV0ZWQuCisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVTLmg6CisKIDIwMjAt
MTEtMzAgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIE1pc3Np
bmcgV2ViUlRDIE1ldHJpY3MgaW4gaU9TIDE0IEJldGEgNQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcAppbmRleCA1
NTc4NGUxYTMzZWMwNWI0MDI5NTMxMGY2ZWIwZTdjZTBhNWU5OGRkLi4yYWVjZWI4YTk1MDNlZDM5
MmViNzE1ZDM2ODJjZmI5YTU1ZWI0NTM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcApAQCAtNzQxLDEwICs3
NDEsNiBAQCBzdGQ6OnVuaXF1ZV9wdHI8V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZT4gV2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZTo6Y3JlYXRlKENhbgogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
ICAgICB9CiAKLSAgICBhdXRvJiBleHRlbnNpb25zID0gY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygp
OwotICAgIGlmIChleHRlbnNpb25zLnN1cHBvcnRzKCJHTF9FWFRfZGVidWdfbWFya2VyIl9zKSkK
LSAgICAgICAgZXh0ZW5zaW9ucy5wdXNoR3JvdXBNYXJrZXJFWFQoIldlYkdMUmVuZGVyaW5nQ29u
dGV4dCJfcyk7Ci0KICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZT4gcmVuZGVyaW5nQ29udGV4dDsKICNpZiBFTkFCTEUoV0VCR0wyKQogICAgIGlmICh0eXBlID09
ICJ3ZWJnbDIiKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
RXh0ZW5zaW9uc0dMLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9FeHRlbnNp
b25zR0wuaAppbmRleCAwNmMxMjExMjdlMjJkMTNlNmJlMzg2YjhlYmJhNzZjNjcxMTZhMTNkLi4w
MzNkZjE1ZjQxMTE1MjQ4MjQ5ZDM4MmU2MGFmODMyNDVhZGU0MDk3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9FeHRlbnNpb25zR0wuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9FeHRlbnNpb25zR0wuaApAQCAtMjc1LDEyICsyNzUs
NiBAQCBwdWJsaWM6CiAgICAgLy8gZXh0ZXJuYWxseS4KICAgICB2aXJ0dWFsIEdDR0xpbnQgZ2V0
R3JhcGhpY3NSZXNldFN0YXR1c0FSQigpID0gMDsKIAotICAgIC8vIEdMX0FOR0xFX2ZyYW1lYnVm
ZmVyX2JsaXQKLSAgICB2aXJ0dWFsIHZvaWQgYmxpdEZyYW1lYnVmZmVyKGxvbmcgc3JjWDAsIGxv
bmcgc3JjWTAsIGxvbmcgc3JjWDEsIGxvbmcgc3JjWTEsIGxvbmcgZHN0WDAsIGxvbmcgZHN0WTAs
IGxvbmcgZHN0WDEsIGxvbmcgZHN0WTEsIHVuc2lnbmVkIGxvbmcgbWFzaywgdW5zaWduZWQgbG9u
ZyBmaWx0ZXIpID0gMDsKLQotICAgIC8vIEdMX0FOR0xFX2ZyYW1lYnVmZmVyX211bHRpc2FtcGxl
Ci0gICAgdmlydHVhbCB2b2lkIHJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZSh1bnNpZ25l
ZCBsb25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBzYW1wbGVzLCB1bnNpZ25lZCBsb25nIGludGVy
bmFsZm9ybWF0LCB1bnNpZ25lZCBsb25nIHdpZHRoLCB1bnNpZ25lZCBsb25nIGhlaWdodCkgPSAw
OwotCiAgICAgLy8gR0xfT0VTX3ZlcnRleF9hcnJheV9vYmplY3QKICAgICB2aXJ0dWFsIFBsYXRm
b3JtR0xPYmplY3QgY3JlYXRlVmVydGV4QXJyYXlPRVMoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lk
IGRlbGV0ZVZlcnRleEFycmF5T0VTKFBsYXRmb3JtR0xPYmplY3QpID0gMDsKQEAgLTI5MCwxMSAr
Mjg0LDYgQEAgcHVibGljOgogICAgIC8vIEdMX0FOR0xFX3RyYW5zbGF0ZWRfc2hhZGVyX3NvdXJj
ZQogICAgIHZpcnR1YWwgU3RyaW5nIGdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRShQbGF0
Zm9ybUdMT2JqZWN0KSA9IDA7CiAKLSAgICAvLyBHTF9FWFRfZGVidWdfbWFya2VyCi0gICAgdmly
dHVhbCB2b2lkIGluc2VydEV2ZW50TWFya2VyRVhUKGNvbnN0IFN0cmluZyYpID0gMDsKLSAgICB2
aXJ0dWFsIHZvaWQgcHVzaEdyb3VwTWFya2VyRVhUKGNvbnN0IFN0cmluZyYpID0gMDsKLSAgICB2
aXJ0dWFsIHZvaWQgcG9wR3JvdXBNYXJrZXJFWFQodm9pZCkgPSAwOwotCiAgICAgLy8gR0xfQVJC
X2RyYXdfYnVmZmVycyAvIEdMX0VYVF9kcmF3X2J1ZmZlcnMKICAgICB2aXJ0dWFsIHZvaWQgZHJh
d0J1ZmZlcnNFWFQoR0NHTFNwYW48Y29uc3QgR0NHTGVudW0+IGJ1ZnMpID0gMDsKIApAQCAtMzAz
LDQ4ICsyOTIsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRyYXdFbGVtZW50c0luc3Rh
bmNlZChHQ0dMZW51bSBtb2RlLCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xlbnVtIHR5cGUsIGxvbmcg
bG9uZyBvZmZzZXQsIEdDR0xzaXplaSBwcmltY291bnQpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
dmVydGV4QXR0cmliRGl2aXNvcihHQ0dMdWludCBpbmRleCwgR0NHTHVpbnQgZGl2aXNvcikgPSAw
OwogCi0gICAgLy8gR0xfQU5HTEVfcm9idXN0X2NsaWVudF9tZW1vcnkKLSAgICB2aXJ0dWFsIHZv
aWQgcmVhZFBpeGVsc1JvYnVzdEFOR0xFKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkg
d2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwg
R0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMc2l6ZWkqIGNvbHVtbnMs
IEdDR0xzaXplaSogcm93cywgR0NHTHZvaWQqIHBpeGVscykgPSAwOwotICAgIHZpcnR1YWwgdm9p
ZCB0ZXhQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5h
bWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMZmxvYXQqIHBhcmFtcykgPSAwOwotICAg
IHZpcnR1YWwgdm9pZCB0ZXhQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwg
R0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMaW50KiBwYXJhbXMp
ID0gMDsKLQotICAgIHZpcnR1YWwgdm9pZCBnZXRRdWVyeWl2Um9idXN0QU5HTEUoR0NHTGVudW0g
dGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVu
Z3RoLCBHQ0dMaW50KiBwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0UXVlcnlPYmpl
Y3R1aXZSb2J1c3RBTkdMRShHQ0dMdWludCBpZCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBi
dWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHVpbnQqIHBhcmFtcykgPSAwOwotICAgIHZp
cnR1YWwgdm9pZCBnZXRCdWZmZXJQb2ludGVydlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwg
R0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NH
THZvaWQqKiBwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0SW50ZXJuYWxmb3JtYXRp
dlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdD
R0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xp
bnQqIHBhcmFtcykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJJaXZSb2J1
c3RBTkdMRShHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXpl
LCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2
b2lkIGdldFZlcnRleEF0dHJpYkl1aXZSb2J1c3RBTkdMRShHQ0dMdWludCBpbmRleCwgR0NHTGVu
dW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHVpbnQq
IHBhcmFtcykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRVbmlmb3JtdWl2Um9idXN0QU5HTEUo
R0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdD
R0xzaXplaSogbGVuZ3RoLCBHQ0dMdWludCogcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lk
IGdldEJ1ZmZlclBhcmFtZXRlcmk2NHZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xl
bnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQ2
NCogcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHNhbXBsZXJQYXJhbWV0ZXJpdlJvYnVz
dEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6
ZSwgY29uc3QgR0NHTGludCogcGFyYW0pID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgc2FtcGxlclBh
cmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdD
R0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMZmxvYXQqIHBhcmFtKSA9IDA7Ci0gICAgdmlydHVh
bCB2b2lkIGdldFNhbXBsZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIs
IEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdD
R0xpbnQqIHBhcmFtcykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRTYW1wbGVyUGFyYW1ldGVy
ZnZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVp
IGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMZmxvYXQqIHBhcmFtcykgPSAwOwotCi0g
ICAgdmlydHVhbCB2b2lkIGdldEZyYW1lYnVmZmVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVp
KiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRQcm9n
cmFtSW50ZXJmYWNlaXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMZW51bSBwcm9n
cmFtSW50ZXJmYWNlLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXpl
aSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0Qm9v
bGVhbmlfdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTHVpbnQgaW5kZXgsIEdDR0xz
aXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGJvb2xlYW4qIGRhdGEpID0gMDsg
Ly8gTk9MSU5UCi0gICAgdmlydHVhbCB2b2lkIGdldE11bHRpc2FtcGxlZnZSb2J1c3RBTkdMRShH
Q0dMZW51bSBwbmFtZSwgR0NHTHVpbnQgaW5kZXgsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6
ZWkqIGxlbmd0aCwgR0NHTGZsb2F0KiB2YWwpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0VGV4
TGV2ZWxQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZl
bCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwg
R0NHTGludCogcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldFRleExldmVsUGFyYW1l
dGVyZnZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVt
IHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xmbG9hdCog
cGFyYW1zKSA9IDA7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgZ2V0UG9pbnRlcnZSb2J1c3RBTkdMRVJv
YnVzdEFOR0xFKEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBs
ZW5ndGgsIEdDR0x2b2lkKiogcGFyYW1zKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHJlYWRuUGl4
ZWxzUm9idXN0QU5HTEUoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NH
THNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkg
YnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xzaXplaSogY29sdW1ucywgR0NHTHNpemVp
KiByb3dzLCBHQ0dMdm9pZCogZGF0YSwgYm9vbCByZWFkaW5nVG9QaXhlbEJ1ZmZlck9iamVjdCkg
PSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRuVW5pZm9ybWZ2Um9idXN0QU5HTEUoR0NHTHVpbnQg
cHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSog
bGVuZ3RoLCBHQ0dMZmxvYXQqIHBhcmFtcykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRuVW5p
Zm9ybWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NH
THNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpID0gMDsK
LSAgICB2aXJ0dWFsIHZvaWQgZ2V0blVuaWZvcm11aXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9n
cmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5n
dGgsIEdDR0x1aW50KiBwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgdGV4UGFyYW1ldGVy
SWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVp
IGJ1ZlNpemUsIGNvbnN0IEdDR0xpbnQqIHBhcmFtcykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCB0
ZXhQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFt
ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0x1aW50KiBwYXJhbXMpID0gMDsKLSAgICB2
aXJ0dWFsIHZvaWQgZ2V0VGV4UGFyYW1ldGVySWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBH
Q0dMaW50KiBwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0VGV4UGFyYW1ldGVySXVp
dlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBi
dWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHVpbnQqIHBhcmFtcykgPSAwOwotICAgIHZp
cnR1YWwgdm9pZCBzYW1wbGVyUGFyYW1ldGVySWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxl
ciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMaW50KiBwYXJh
bSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBzYW1wbGVyUGFyYW1ldGVySXVpdlJvYnVzdEFOR0xF
KEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29u
c3QgR0NHTHVpbnQqIHBhcmFtKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldFNhbXBsZXJQYXJh
bWV0ZXJJaXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NH
THNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpID0gMDsK
LSAgICB2aXJ0dWFsIHZvaWQgZ2V0U2FtcGxlclBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRShHQ0dM
dWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXpl
aSogbGVuZ3RoLCBHQ0dMdWludCogcGFyYW1zKSA9IDA7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgZ2V0
UXVlcnlPYmplY3RpdlJvYnVzdEFOR0xFKEdDR0x1aW50IGlkLCBHQ0dMZW51bSBwbmFtZSwgR0NH
THNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpID0gMDsK
LSAgICB2aXJ0dWFsIHZvaWQgZ2V0UXVlcnlPYmplY3RpNjR2Um9idXN0QU5HTEUoR0NHTHVpbnQg
aWQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgs
IEdDR0xpbnQ2NCogcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldFF1ZXJ5T2JqZWN0
dWk2NHZSb2J1c3RBTkdMRShHQ0dMdWludCBpZCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBi
dWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHVpbnQ2NCogcGFyYW1zKSA9IDA7CiAKICAg
ICAvLyBPdGhlciBmdW5jdGlvbnMuCiAjaWYgIVVTRShBTkdMRSkKQEAgLTM1MywxOCArMzAxLDYg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBnZXRuVW5pZm9ybWZ2RVhUKEdDR0x1aW50IHBy
b2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMZmxvYXQqIHBh
cmFtcykgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBnZXRuVW5pZm9ybWl2RVhUKEdDR0x1aW50IHBy
b2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMaW50KiBwYXJh
bXMpID0gMDsKICNlbmRpZgotCi0gICAgdmlydHVhbCBib29sIGlzTlZJRElBKCkgPSAwOwotICAg
IHZpcnR1YWwgYm9vbCBpc0FNRCgpID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgaXNJbnRlbCgpID0g
MDsKLSAgICB2aXJ0dWFsIGJvb2wgaXNJbWFnaW5hdGlvbigpID0gMDsKLSAgICB2aXJ0dWFsIFN0
cmluZyB2ZW5kb3IoKSA9IDA7Ci0KLSAgICAvLyBTb21lIGNvbmZpZ3VyYXRpb25zIGhhdmUgYnVn
cyByZWdhcmRpbmcgYnVpbHQtaW4gZnVuY3Rpb25zIGluIHRoZWlyIE9wZW5HTCBkcml2ZXJzCi0g
ICAgLy8gdGhhdCBtdXN0IGJlIGF2b2lkZWQuIFBvcnRzIHNob3VsZCBpbXBsZW1lbnQgdGhlc2Ug
ZmxhZ3Mgb24gc3VjaCBjb25maWd1cmF0aW9ucy4KLSAgICB2aXJ0dWFsIGJvb2wgcmVxdWlyZXNC
dWlsdEluRnVuY3Rpb25FbXVsYXRpb24oKSA9IDA7Ci0gICAgdmlydHVhbCBib29sIHJlcXVpcmVz
UmVzdHJpY3RlZE1heGltdW1UZXh0dXJlU2l6ZSgpID0gMDsKLQogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUuY3BwCmluZGV4IDI4M2RhODJjNmE2MDJlYTRi
NTU3YzY4NmNmZDgyM2QwODFjNTVlNGEuLjM0NWMyNjZhNGEwNmUwMmE4MWNmY2ZkMjg3NzM1ZDRh
OWUxNjE4N2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Fu
Z2xlL0V4dGVuc2lvbnNHTEFOR0xFLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hbmdsZS9FeHRlbnNpb25zR0xBTkdMRS5jcHAKQEAgLTQzLDMxICs0MywxMCBAQCB0
eXBlZGVmIHZvaWQqIEdMZWdsQ29udGV4dDsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1FeHRl
bnNpb25zR0xBTkdMRTo6RXh0ZW5zaW9uc0dMQU5HTEUoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wq
IGNvbnRleHQsIGJvb2wgdXNlSW5kZXhlZEdldFN0cmluZykKK0V4dGVuc2lvbnNHTEFOR0xFOjpF
eHRlbnNpb25zR0xBTkdMRShHcmFwaGljc0NvbnRleHRHTE9wZW5HTCogY29udGV4dCkKICAgICA6
IG1faW5pdGlhbGl6ZWRBdmFpbGFibGVFeHRlbnNpb25zKGZhbHNlKQogICAgICwgbV9jb250ZXh0
KGNvbnRleHQpCi0gICAgLCBtX2lzTlZJRElBKGZhbHNlKQotICAgICwgbV9pc0FNRChmYWxzZSkK
LSAgICAsIG1faXNJbnRlbChmYWxzZSkKLSAgICAsIG1faXNJbWFnaW5hdGlvbihmYWxzZSkKLSAg
ICAsIG1fcmVxdWlyZXNCdWlsdEluRnVuY3Rpb25FbXVsYXRpb24oZmFsc2UpCi0gICAgLCBtX3Jl
cXVpcmVzUmVzdHJpY3RlZE1heGltdW1UZXh0dXJlU2l6ZShmYWxzZSkKLSAgICAsIG1fdXNlSW5k
ZXhlZEdldFN0cmluZyh1c2VJbmRleGVkR2V0U3RyaW5nKQogewotICAgIC8vIEZJWE1FOiBpZGVh
bGx5LCByZW1vdmUgdGhpcyBpbml0aWFsaXphdGlvbiBhbHRvZ2V0aGVyLiBBTkdMRQotICAgIC8v
IHN1YnN1bWVzIHRoZSByZXNwb25zaWJpbGl0eSBmb3IgZ3JhcGhpY3MgZHJpdmVyIHdvcmthcm91
bmRzLgotICAgIG1fdmVuZG9yID0gU3RyaW5nKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+
KGdsOjpHZXRTdHJpbmcoR0xfVkVORE9SKSkpOwotICAgIG1fcmVuZGVyZXIgPSBTdHJpbmcocmVp
bnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZ2w6OkdldFN0cmluZyhHTF9SRU5ERVJFUikpKTsK
LQotICAgIFZlY3RvcjxTdHJpbmc+IHZlbmRvckNvbXBvbmVudHMgPSBtX3ZlbmRvci5jb252ZXJ0
VG9BU0NJSUxvd2VyY2FzZSgpLnNwbGl0KCcgJyk7Ci0gICAgaWYgKHZlbmRvckNvbXBvbmVudHMu
Y29udGFpbnMoIm52aWRpYSIpKQotICAgICAgICBtX2lzTlZJRElBID0gdHJ1ZTsKLSAgICBpZiAo
dmVuZG9yQ29tcG9uZW50cy5jb250YWlucygiYXRpIikgfHwgdmVuZG9yQ29tcG9uZW50cy5jb250
YWlucygiYW1kIikpCi0gICAgICAgIG1faXNBTUQgPSB0cnVlOwotICAgIGlmICh2ZW5kb3JDb21w
b25lbnRzLmNvbnRhaW5zKCJpbnRlbCIpKQotICAgICAgICBtX2lzSW50ZWwgPSB0cnVlOwotICAg
IGlmICh2ZW5kb3JDb21wb25lbnRzLmNvbnRhaW5zKCJpbWFnaW5hdGlvbiIpKQotICAgICAgICBt
X2lzSW1hZ2luYXRpb24gPSB0cnVlOwogfQogCiBFeHRlbnNpb25zR0xBTkdMRTo6fkV4dGVuc2lv
bnNHTEFOR0xFKCkgPSBkZWZhdWx0OwpAQCAtMTI4LDQyICsxMDcsMTUgQEAgU3RyaW5nIEV4dGVu
c2lvbnNHTEFOR0xFOjpnZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUoUGxhdGZvcm1HTE9i
amVjdCBzaGFkZXIKIAogdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6aW5pdGlhbGl6ZUF2YWlsYWJs
ZUV4dGVuc2lvbnMoKQogewotICAgIGlmIChtX3VzZUluZGV4ZWRHZXRTdHJpbmcpIHsKLSAgICAg
ICAgR0xpbnQgbnVtRXh0ZW5zaW9ucyA9IDA7Ci0gICAgICAgIGdsOjpHZXRJbnRlZ2VydihHTF9O
VU1fRVhURU5TSU9OUywgJm51bUV4dGVuc2lvbnMpOwotICAgICAgICBmb3IgKEdMaW50IGkgPSAw
OyBpIDwgbnVtRXh0ZW5zaW9uczsgKytpKQotICAgICAgICAgICAgbV9hdmFpbGFibGVFeHRlbnNp
b25zLmFkZChnbDo6R2V0U3RyaW5naShHTF9FWFRFTlNJT05TLCBpKSk7Ci0gICAgICAgIGdsOjpH
ZXRJbnRlZ2VydihHTF9OVU1fUkVRVUVTVEFCTEVfRVhURU5TSU9OU19BTkdMRSwgJm51bUV4dGVu
c2lvbnMpOwotICAgICAgICBmb3IgKEdMaW50IGkgPSAwOyBpIDwgbnVtRXh0ZW5zaW9uczsgKytp
KQotICAgICAgICAgICAgbV9yZXF1ZXN0YWJsZUV4dGVuc2lvbnMuYWRkKGdsOjpHZXRTdHJpbmdp
KEdMX1JFUVVFU1RBQkxFX0VYVEVOU0lPTlNfQU5HTEUsIGkpKTsKLSAgICB9IGVsc2UgewotICAg
ICAgICBTdHJpbmcgZXh0ZW5zaW9uc1N0cmluZyA9IGdldEV4dGVuc2lvbnMoKTsKLSAgICAgICAg
Zm9yIChhdXRvJiBleHRlbnNpb24gOiBleHRlbnNpb25zU3RyaW5nLnNwbGl0KCcgJykpCi0gICAg
ICAgICAgICBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuYWRkKGV4dGVuc2lvbik7Ci0gICAgICAgIGV4
dGVuc2lvbnNTdHJpbmcgPSBTdHJpbmcocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZ2w6
OkdldFN0cmluZyhHTF9SRVFVRVNUQUJMRV9FWFRFTlNJT05TX0FOR0xFKSkpOwotICAgICAgICBm
b3IgKGF1dG8mIGV4dGVuc2lvbiA6IGV4dGVuc2lvbnNTdHJpbmcuc3BsaXQoJyAnKSkKLSAgICAg
ICAgICAgIG1fcmVxdWVzdGFibGVFeHRlbnNpb25zLmFkZChleHRlbnNpb24pOwotICAgIH0KKyAg
ICBTdHJpbmcgZXh0ZW5zaW9uc1N0cmluZyA9IGdldEV4dGVuc2lvbnMoKTsKKyAgICBmb3IgKGF1
dG8mIGV4dGVuc2lvbiA6IGV4dGVuc2lvbnNTdHJpbmcuc3BsaXQoJyAnKSkKKyAgICAgICAgbV9h
dmFpbGFibGVFeHRlbnNpb25zLmFkZChleHRlbnNpb24pOworICAgIGV4dGVuc2lvbnNTdHJpbmcg
PSBTdHJpbmcocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZ2w6OkdldFN0cmluZyhHTF9S
RVFVRVNUQUJMRV9FWFRFTlNJT05TX0FOR0xFKSkpOworICAgIGZvciAoYXV0byYgZXh0ZW5zaW9u
IDogZXh0ZW5zaW9uc1N0cmluZy5zcGxpdCgnICcpKQorICAgICAgICBtX3JlcXVlc3RhYmxlRXh0
ZW5zaW9ucy5hZGQoZXh0ZW5zaW9uKTsKICAgICBtX2luaXRpYWxpemVkQXZhaWxhYmxlRXh0ZW5z
aW9ucyA9IHRydWU7CiB9CiAKLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmJsaXRGcmFtZWJ1ZmZl
cihsb25nIHNyY1gwLCBsb25nIHNyY1kwLCBsb25nIHNyY1gxLCBsb25nIHNyY1kxLCBsb25nIGRz
dFgwLCBsb25nIGRzdFkwLCBsb25nIGRzdFgxLCBsb25nIGRzdFkxLCB1bnNpZ25lZCBsb25nIG1h
c2ssIHVuc2lnbmVkIGxvbmcgZmlsdGVyKQotewotICAgIC8vIEZJWE1FOiBjb25zaWRlciBhZGRp
bmcgc3VwcG9ydCBmb3IgQVBQTEVfZnJhbWVidWZmZXJfbXVsdGlzYW1wbGUuCi0gICAgaWYgKCFt
X2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBn
bDo6QmxpdEZyYW1lYnVmZmVyQU5HTEUoc3JjWDAsIHNyY1kwLCBzcmNYMSwgc3JjWTEsIGRzdFgw
LCBkc3RZMCwgZHN0WDEsIGRzdFkxLCBtYXNrLCBmaWx0ZXIpOwotfQotCi12b2lkIEV4dGVuc2lv
bnNHTEFOR0xFOjpyZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUodW5zaWduZWQgbG9uZyB0
YXJnZXQsIHVuc2lnbmVkIGxvbmcgc2FtcGxlcywgdW5zaWduZWQgbG9uZyBpbnRlcm5hbGZvcm1h
dCwgdW5zaWduZWQgbG9uZyB3aWR0aCwgdW5zaWduZWQgbG9uZyBoZWlnaHQpCi17Ci0gICAgaWYg
KCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAg
ICBnbDo6UmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5HTEUodGFyZ2V0LCBzYW1wbGVz
LCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCk7Ci19Ci0KIFBsYXRmb3JtR0xPYmplY3Qg
RXh0ZW5zaW9uc0dMQU5HTEU6OmNyZWF0ZVZlcnRleEFycmF5T0VTKCkKIHsKICAgICBpZiAoIW1f
Y29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCkBAIC0yMDQsMjQgKzE1Niw2IEBAIHZvaWQg
RXh0ZW5zaW9uc0dMQU5HTEU6OmJpbmRWZXJ0ZXhBcnJheU9FUyhQbGF0Zm9ybUdMT2JqZWN0IGFy
cmF5KQogICAgIGdsOjpCaW5kVmVydGV4QXJyYXlPRVMoYXJyYXkpOwogfQogCi12b2lkIEV4dGVu
c2lvbnNHTEFOR0xFOjppbnNlcnRFdmVudE1hcmtlckVYVChjb25zdCBTdHJpbmcmKQotewotICAg
IC8vIEZJWE1FOiBpbXBsZW1lbnQgdGhpcyBmdW5jdGlvbiBhbmQgYWRkIEdMX0VYVF9kZWJ1Z19t
YXJrZXIgaW4gc3VwcG9ydHMoKS4KLSAgICByZXR1cm47Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dM
QU5HTEU6OnB1c2hHcm91cE1hcmtlckVYVChjb25zdCBTdHJpbmcmKQotewotICAgIC8vIEZJWE1F
OiBpbXBsZW1lbnQgdGhpcyBmdW5jdGlvbiBhbmQgYWRkIEdMX0VYVF9kZWJ1Z19tYXJrZXIgaW4g
c3VwcG9ydHMoKS4KLSAgICByZXR1cm47Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OnBv
cEdyb3VwTWFya2VyRVhUKHZvaWQpCi17Ci0gICAgLy8gRklYTUU6IGltcGxlbWVudCB0aGlzIGZ1
bmN0aW9uIGFuZCBhZGQgR0xfRVhUX2RlYnVnX21hcmtlciBpbiBzdXBwb3J0cygpLgotICAgIHJl
dHVybjsKLX0KLQogYm9vbCBFeHRlbnNpb25zR0xBTkdMRTo6c3VwcG9ydHNFeHRlbnNpb24oY29u
c3QgU3RyaW5nJiBuYW1lKQogewogICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29u
dGFpbnMobmFtZSkgfHwgbV9yZXF1ZXN0YWJsZUV4dGVuc2lvbnMuY29udGFpbnMobmFtZSk7CkBA
IC0yNzgsMTgzICsyMTIsNiBAQCBHQ0dMZW51bSBFeHRlbnNpb25zR0xBTkdMRTo6YWRqdXN0V2Vi
R0wxVGV4dHVyZUludGVybmFsRm9ybWF0KEdDR0xlbnVtIGludGVybmFsZgogfQogCiAvLyBHTF9B
TkdMRV9yb2J1c3RfY2xpZW50X21lbW9yeQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6cmVhZFBp
eGVsc1JvYnVzdEFOR0xFKGludCB4LCBpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkg
aGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXpl
LCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHNpemVpICpjb2x1bW5zLCBHQ0dMc2l6ZWkgKnJvd3Ms
IHZvaWQgKnBpeGVscykKLXsKLSAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50
KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpSZWFkUGl4ZWxzUm9idXN0QU5HTEUoeCwg
eSwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBidWZTaXplLCBsZW5ndGgsIGNvbHVtbnMs
IHJvd3MsIHBpeGVscyk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OnRleFBhcmFtZXRl
cmZ2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVp
IGJ1ZlNpemUsIGNvbnN0IEdDR0xmbG9hdCAqcGFyYW1zKQotewotICAgIGlmICghbV9jb250ZXh0
LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OlRleFBh
cmFtZXRlcmZ2Um9idXN0QU5HTEUodGFyZ2V0LCBwbmFtZSwgYnVmU2l6ZSwgcGFyYW1zKTsKLX0K
LQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6dGV4UGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NH
TGludCAqcGFyYW1zKQotewotICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQo
KSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OlRleFBhcmFtZXRlcml2Um9idXN0QU5HTEUo
dGFyZ2V0LCBwbmFtZSwgYnVmU2l6ZSwgcGFyYW1zKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xB
TkdMRTo6Z2V0UXVlcnlpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5h
bWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1z
KQotewotICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgZ2w6OkdldFF1ZXJ5aXZSb2J1c3RBTkdMRSh0YXJnZXQsIHBuYW1lLCBi
dWZTaXplLCBsZW5ndGgsIHBhcmFtcyk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6Omdl
dFF1ZXJ5T2JqZWN0dWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgaWQsIEdDR0xlbnVtIHBuYW1lLCBH
Q0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0x1aW50ICpwYXJhbXMpCi17
Ci0gICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1
cm47Ci0KLSAgICBnbDo6R2V0UXVlcnlPYmplY3R1aXZSb2J1c3RBTkdMRShpZCwgcG5hbWUsIGJ1
ZlNpemUsIGxlbmd0aCwgcGFyYW1zKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0
QnVmZmVyUG9pbnRlcnZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1l
LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIHZvaWQgKipwYXJhbXMpCi17
Ci0gICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1
cm47Ci0KLSAgICBnbDo6R2V0QnVmZmVyUG9pbnRlcnZSb2J1c3RBTkdMRSh0YXJnZXQsIHBuYW1l
LCBidWZTaXplLCBsZW5ndGgsIHBhcmFtcyk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6
OmdldEludGVybmFsZm9ybWF0aXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVt
IGludGVybmFsZm9ybWF0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xz
aXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpCi17Ci0gICAgaWYgKCFtX2NvbnRleHQtPm1h
a2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6R2V0SW50ZXJu
YWxmb3JtYXRpdlJvYnVzdEFOR0xFKHRhcmdldCwgaW50ZXJuYWxmb3JtYXQsIHBuYW1lLCBidWZT
aXplLCBsZW5ndGgsIHBhcmFtcyk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldFZl
cnRleEF0dHJpYklpdlJvYnVzdEFOR0xFKEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwg
R0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpCi17
Ci0gICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1
cm47Ci0KLSAgICBnbDo6R2V0VmVydGV4QXR0cmliSWl2Um9idXN0QU5HTEUoaW5kZXgsIHBuYW1l
LCBidWZTaXplLCBsZW5ndGgsIHBhcmFtcyk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6
OmdldFZlcnRleEF0dHJpYkl1aXZSb2J1c3RBTkdMRShHQ0dMdWludCBpbmRleCwgR0NHTGVudW0g
cG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHVpbnQgKnBh
cmFtcykKLXsKLSAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAg
ICAgIHJldHVybjsKLQotICAgIGdsOjpHZXRWZXJ0ZXhBdHRyaWJJdWl2Um9idXN0QU5HTEUoaW5k
ZXgsIHBuYW1lLCBidWZTaXplLCBsZW5ndGgsIHBhcmFtcyk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9u
c0dMQU5HTEU6OmdldFVuaWZvcm11aXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBpbnQg
bG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHVpbnQg
KnBhcmFtcykKLXsKLSAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0g
ICAgICAgIHJldHVybjsKLQotICAgIGdsOjpHZXRVbmlmb3JtdWl2Um9idXN0QU5HTEUocHJvZ3Jh
bSwgbG9jYXRpb24sIGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1zKTsKLX0KLQotdm9pZCBFeHRlbnNp
b25zR0xBTkdMRTo6Z2V0QnVmZmVyUGFyYW1ldGVyaTY0dlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRh
cmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0
aCwgR0NHTGludDY0ICpwYXJhbXMpCi17Ci0gICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0
Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6R2V0QnVmZmVyUGFyYW1ldGVy
aTY0dlJvYnVzdEFOR0xFKHRhcmdldCwgcG5hbWUsIGJ1ZlNpemUsIGxlbmd0aCwgcmVpbnRlcnBy
ZXRfY2FzdDxHTGludDY0Kj4ocGFyYW1zKSk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6
OnNhbXBsZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVt
IHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGludCAqcGFyYW0pCi17Ci0gICAg
aWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0K
LSAgICBnbDo6U2FtcGxlclBhcmFtZXRlcml2Um9idXN0QU5HTEUoc2FtcGxlciwgcG5hbWUsIGJ1
ZlNpemUsIHBhcmFtKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6c2FtcGxlclBhcmFt
ZXRlcmZ2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xz
aXplaSBidWZTaXplLCBjb25zdCBHQ0dMZmxvYXQgKnBhcmFtKQotewotICAgIGlmICghbV9jb250
ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OlNh
bXBsZXJQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKHNhbXBsZXIsIHBuYW1lLCBidWZTaXplLCBwYXJh
bSk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldFNhbXBsZXJQYXJhbWV0ZXJpdlJv
YnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVm
U2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykKLXsKLSAgICBpZiAoIW1f
Y29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGds
OjpHZXRTYW1wbGVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShzYW1wbGVyLCBwbmFtZSwgYnVmU2l6
ZSwgbGVuZ3RoLCBwYXJhbXMpOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRTYW1w
bGVyUGFyYW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFt
ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMZmxvYXQgKnBhcmFt
cykKLXsKLSAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAg
IHJldHVybjsKLQotICAgIGdsOjpHZXRTYW1wbGVyUGFyYW1ldGVyZnZSb2J1c3RBTkdMRShzYW1w
bGVyLCBwbmFtZSwgYnVmU2l6ZSwgbGVuZ3RoLCBwYXJhbXMpOwotfQotCi0KLXZvaWQgRXh0ZW5z
aW9uc0dMQU5HTEU6OmdldEZyYW1lYnVmZmVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51
bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICps
ZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykKLXsKLSAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRl
eHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpHZXRGcmFtZWJ1ZmZlclBh
cmFtZXRlcml2Um9idXN0QU5HTEUodGFyZ2V0LCBwbmFtZSwgYnVmU2l6ZSwgbGVuZ3RoLCBwYXJh
bXMpOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRQcm9ncmFtSW50ZXJmYWNlaXZS
b2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMZW51bSBwcm9ncmFtSW50ZXJmYWNlLCBH
Q0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dM
aW50ICpwYXJhbXMpCi17Ci0gICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgp
KQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6R2V0UHJvZ3JhbUludGVyZmFjZWl2Um9idXN0
QU5HTEUocHJvZ3JhbSwgcHJvZ3JhbUludGVyZmFjZSwgcG5hbWUsIGJ1ZlNpemUsIGxlbmd0aCwg
cGFyYW1zKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0Qm9vbGVhbmlfdlJvYnVz
dEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTHVpbnQgaW5kZXgsIEdDR0xzaXplaSBidWZTaXpl
LCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGJvb2xlYW4gKmRhdGEpCi17Ci0gICAgaWYgKCFtX2Nv
bnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6
R2V0Qm9vbGVhbmlfdlJvYnVzdEFOR0xFKHRhcmdldCwgaW5kZXgsIGJ1ZlNpemUsIGxlbmd0aCwg
ZGF0YSk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldE11bHRpc2FtcGxlZnZSb2J1
c3RBTkdMRShHQ0dMZW51bSBwbmFtZSwgR0NHTHVpbnQgaW5kZXgsIEdDR0xzaXplaSBidWZTaXpl
LCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGZsb2F0ICp2YWwpCi17Ci0gICAgaWYgKCFtX2NvbnRl
eHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6R2V0
TXVsdGlzYW1wbGVmdlJvYnVzdEFOR0xFKHBuYW1lLCBpbmRleCwgYnVmU2l6ZSwgbGVuZ3RoLCB2
YWwpOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRUZXhMZXZlbFBhcmFtZXRlcml2
Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBpbnQgbGV2ZWwsIEdDR0xlbnVtIHBuYW1lLCBH
Q0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykKLXsK
LSAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVy
bjsKLQotICAgIGdsOjpHZXRUZXhMZXZlbFBhcmFtZXRlcml2Um9idXN0QU5HTEUodGFyZ2V0LCBs
ZXZlbCwgcG5hbWUsIGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1zKTsKLX0KLQotdm9pZCBFeHRlbnNp
b25zR0xBTkdMRTo6Z2V0VGV4TGV2ZWxQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRh
cmdldCwgaW50IGxldmVsLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xz
aXplaSAqbGVuZ3RoLCBHQ0dMZmxvYXQgKnBhcmFtcykKLXsKLSAgICBpZiAoIW1fY29udGV4dC0+
bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpHZXRUZXhM
ZXZlbFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUodGFyZ2V0LCBsZXZlbCwgcG5hbWUsIGJ1ZlNpemUs
IGxlbmd0aCwgcGFyYW1zKTsKLX0KLQotCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRQb2lu
dGVydlJvYnVzdEFOR0xFUm9idXN0QU5HTEUoR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZT
aXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgdm9pZCAqKnBhcmFtcykKLXsKLSAgICBpZiAoIW1fY29u
dGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpH
ZXRQb2ludGVydlJvYnVzdEFOR0xFUm9idXN0QU5HTEUocG5hbWUsIGJ1ZlNpemUsIGxlbmd0aCwg
cGFyYW1zKTsKLX0KIAogI2lmIFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0oSU9TX0ZBTUlMWSkK
IHN0YXRpYyB2b2lkIHdpcGVBbHBoYUNoYW5uZWxGcm9tUGl4ZWxzKGludCB3aWR0aCwgaW50IGhl
aWdodCwgdW5zaWduZWQgY2hhciogcGl4ZWxzKQpAQCAtNTA0LDEyMCArMjYxLDYgQEAgdm9pZCBF
eHRlbnNpb25zR0xBTkdMRTo6cmVhZG5QaXhlbHNSb2J1c3RBTkdMRShpbnQgeCwgaW50IHksIEdD
R0xzaXplaSB3aWR0aCwgR0MKICNlbmRpZgogfQogCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpn
ZXRuVW5pZm9ybWZ2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgaW50IGxvY2F0aW9uLCBH
Q0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xmbG9hdCAqcGFyYW1zKQot
ewotICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0
dXJuOwotCi0gICAgZ2w6OkdldG5Vbmlmb3JtZnZSb2J1c3RBTkdMRShwcm9ncmFtLCBsb2NhdGlv
biwgYnVmU2l6ZSwgbGVuZ3RoLCBwYXJhbXMpOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xF
OjpnZXRuVW5pZm9ybWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgaW50IGxvY2F0aW9u
LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykK
LXsKLSAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJl
dHVybjsKLQotICAgIGdsOjpHZXRuVW5pZm9ybWl2Um9idXN0QU5HTEUocHJvZ3JhbSwgbG9jYXRp
b24sIGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1zKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdM
RTo6Z2V0blVuaWZvcm11aXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBpbnQgbG9jYXRp
b24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHVpbnQgKnBhcmFt
cykKLXsKLSAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAg
IHJldHVybjsKLQotICAgIGdsOjpHZXRuVW5pZm9ybXVpdlJvYnVzdEFOR0xFKHByb2dyYW0sIGxv
Y2F0aW9uLCBidWZTaXplLCBsZW5ndGgsIHBhcmFtcyk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dM
QU5HTEU6OnRleFBhcmFtZXRlcklpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVu
dW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMaW50ICpwYXJhbXMpCi17Ci0g
ICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47
Ci0KLSAgICBnbDo6VGV4UGFyYW1ldGVySWl2Um9idXN0QU5HTEUodGFyZ2V0LCBwbmFtZSwgYnVm
U2l6ZSwgcGFyYW1zKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6dGV4UGFyYW1ldGVy
SXVpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXpl
aSBidWZTaXplLCBjb25zdCBHQ0dMdWludCAqcGFyYW1zKQotewotICAgIGlmICghbV9jb250ZXh0
LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OlRleFBh
cmFtZXRlckl1aXZSb2J1c3RBTkdMRSh0YXJnZXQsIHBuYW1lLCBidWZTaXplLCBwYXJhbXMpOwot
fQotCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRUZXhQYXJhbWV0ZXJJaXZSb2J1c3RBTkdM
RShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NH
THNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykKLXsKLSAgICBpZiAoIW1fY29udGV4dC0+
bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpHZXRUZXhQ
YXJhbWV0ZXJJaXZSb2J1c3RBTkdMRSh0YXJnZXQsIHBuYW1lLCBidWZTaXplLCBsZW5ndGgsIHBh
cmFtcyk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldFRleFBhcmFtZXRlckl1aXZS
b2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVm
U2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0x1aW50ICpwYXJhbXMpCi17Ci0gICAgaWYgKCFt
X2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBn
bDo6R2V0VGV4UGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFKHRhcmdldCwgcG5hbWUsIGJ1ZlNpemUs
IGxlbmd0aCwgcGFyYW1zKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6c2FtcGxlclBh
cmFtZXRlcklpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBH
Q0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGludCAqcGFyYW0pCi17Ci0gICAgaWYgKCFtX2Nv
bnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6
U2FtcGxlclBhcmFtZXRlcklpdlJvYnVzdEFOR0xFKHNhbXBsZXIsIHBuYW1lLCBidWZTaXplLCBw
YXJhbSk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OnNhbXBsZXJQYXJhbWV0ZXJJdWl2
Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBi
dWZTaXplLCBjb25zdCBHQ0dMdWludCAqcGFyYW0pCi17Ci0gICAgaWYgKCFtX2NvbnRleHQtPm1h
a2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6U2FtcGxlclBh
cmFtZXRlckl1aXZSb2J1c3RBTkdMRShzYW1wbGVyLCBwbmFtZSwgYnVmU2l6ZSwgcGFyYW0pOwot
fQotCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRTYW1wbGVyUGFyYW1ldGVySWl2Um9idXN0
QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXpl
LCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKQotewotICAgIGlmICghbV9jb250
ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6Okdl
dFNhbXBsZXJQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRShzYW1wbGVyLCBwbmFtZSwgYnVmU2l6ZSwg
bGVuZ3RoLCBwYXJhbXMpOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRTYW1wbGVy
UGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1l
LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0x1aW50ICpwYXJhbXMp
Ci17Ci0gICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICBy
ZXR1cm47Ci0KLSAgICBnbDo6R2V0U2FtcGxlclBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRShzYW1w
bGVyLCBwbmFtZSwgYnVmU2l6ZSwgbGVuZ3RoLCBwYXJhbXMpOwotfQotCi0KLXZvaWQgRXh0ZW5z
aW9uc0dMQU5HTEU6OmdldFF1ZXJ5T2JqZWN0aXZSb2J1c3RBTkdMRShHQ0dMdWludCBpZCwgR0NH
TGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGlu
dCAqcGFyYW1zKQotewotICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OkdldFF1ZXJ5T2JqZWN0aXZSb2J1c3RBTkdMRShp
ZCwgcG5hbWUsIGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1zKTsKLX0KLQotdm9pZCBFeHRlbnNpb25z
R0xBTkdMRTo6Z2V0UXVlcnlPYmplY3RpNjR2Um9idXN0QU5HTEUoR0NHTHVpbnQgaWQsIEdDR0xl
bnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQ2
NCAqcGFyYW1zKQotewotICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OkdldFF1ZXJ5T2JqZWN0aTY0dlJvYnVzdEFOR0xF
KGlkLCBwbmFtZSwgYnVmU2l6ZSwgbGVuZ3RoLCByZWludGVycHJldF9jYXN0PEdMaW50NjQqPihw
YXJhbXMpKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0UXVlcnlPYmplY3R1aTY0
dlJvYnVzdEFOR0xFKEdDR0x1aW50IGlkLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNp
emUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMdWludDY0ICpwYXJhbXMpCi17Ci0gICAgaWYgKCFt
X2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBn
bDo6R2V0UXVlcnlPYmplY3R1aTY0dlJvYnVzdEFOR0xFKGlkLCBwbmFtZSwgYnVmU2l6ZSwgbGVu
Z3RoLCByZWludGVycHJldF9jYXN0PEdMdWludDY0Kj4ocGFyYW1zKSk7Ci19Ci0KLQogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKEdSQVBISUNTX0NPTlRFWFRfR0wp
ICYmIFVTRShBTkdMRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hbmdsZS9FeHRlbnNpb25zR0xBTkdMRS5oCmluZGV4IGE3NzMxZGZkMjBjNWYwM2Ez
MzU5MDNmYWE2ZTM4ZmY3MmY0YjIzMjMuLjA1N2ZmMGMzYWJiNWE5M2UxM2M0NzY0NjY0M2Q5ZGYz
ZTY4Nzg1YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Fu
Z2xlL0V4dGVuc2lvbnNHTEFOR0xFLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUuaApAQCAtMzYsNyArMzYsNyBAQCBjbGFzcyBF
eHRlbnNpb25zR0xBTkdMRSA6IHB1YmxpYyBFeHRlbnNpb25zR0wgewogICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIC8vIFRoaXMgY2xhc3Mgb25seSBuZWVkcyB0byBi
ZSBpbnN0YW50aWF0ZWQgYnkgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wgaW1wbGVtZW50YXRpb25z
LgotICAgIEV4dGVuc2lvbnNHTEFOR0xFKEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiwgYm9vbCB1
c2VJbmRleGVkR2V0U3RyaW5nID0gZmFsc2UpOworICAgIEV4dGVuc2lvbnNHTEFOR0xFKEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMKik7CiAgICAgdmlydHVhbCB+RXh0ZW5zaW9uc0dMQU5HTEUoKTsK
IAogICAgIC8vIEV4dGVuc2lvbnNHTCBtZXRob2RzLgpAQCAtNDksNzEgKzQ5LDE3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIGRlbGV0ZVZlcnRleEFycmF5T0VTKFBsYXRmb3JtR0xPYmplY3QpIG92ZXJy
aWRlOwogICAgIEdDR0xib29sZWFuIGlzVmVydGV4QXJyYXlPRVMoUGxhdGZvcm1HTE9iamVjdCkg
b3ZlcnJpZGU7CiAgICAgdm9pZCBiaW5kVmVydGV4QXJyYXlPRVMoUGxhdGZvcm1HTE9iamVjdCkg
b3ZlcnJpZGU7Ci0gICAgdm9pZCBpbnNlcnRFdmVudE1hcmtlckVYVChjb25zdCBTdHJpbmcmKSBv
dmVycmlkZTsKLSAgICB2b2lkIHB1c2hHcm91cE1hcmtlckVYVChjb25zdCBTdHJpbmcmKSBvdmVy
cmlkZTsKLSAgICB2b2lkIHBvcEdyb3VwTWFya2VyRVhUKHZvaWQpIG92ZXJyaWRlOwogICAgIHZv
aWQgZHJhd0J1ZmZlcnNFWFQoR0NHTFNwYW48Y29uc3QgR0NHTGVudW0+KSBvdmVycmlkZTsKIAog
ICAgIFN0cmluZyBnZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUoUGxhdGZvcm1HTE9iamVj
dCkgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIGJsaXRGcmFtZWJ1ZmZlcihsb25nIHNyY1gwLCBsb25n
IHNyY1kwLCBsb25nIHNyY1gxLCBsb25nIHNyY1kxLCBsb25nIGRzdFgwLCBsb25nIGRzdFkwLCBs
b25nIGRzdFgxLCBsb25nIGRzdFkxLCB1bnNpZ25lZCBsb25nIG1hc2ssIHVuc2lnbmVkIGxvbmcg
ZmlsdGVyKSBvdmVycmlkZTsKLSAgICB2b2lkIHJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBs
ZSh1bnNpZ25lZCBsb25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBzYW1wbGVzLCB1bnNpZ25lZCBs
b25nIGludGVybmFsZm9ybWF0LCB1bnNpZ25lZCBsb25nIHdpZHRoLCB1bnNpZ25lZCBsb25nIGhl
aWdodCkgb3ZlcnJpZGU7Ci0KICAgICB2b2lkIGRyYXdBcnJheXNJbnN0YW5jZWQoR0NHTGVudW0g
bW9kZSwgR0NHTGludCBmaXJzdCwgR0NHTHNpemVpIGNvdW50LCBHQ0dMc2l6ZWkgcHJpbWNvdW50
KSBvdmVycmlkZTsKICAgICB2b2lkIGRyYXdFbGVtZW50c0luc3RhbmNlZChHQ0dMZW51bSBtb2Rl
LCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xlbnVtIHR5cGUsIGxvbmcgbG9uZyBvZmZzZXQsIEdDR0xz
aXplaSBwcmltY291bnQpIG92ZXJyaWRlOwogICAgIHZvaWQgdmVydGV4QXR0cmliRGl2aXNvcihH
Q0dMdWludCBpbmRleCwgR0NHTHVpbnQgZGl2aXNvcikgb3ZlcnJpZGU7CiAKLSAgICBib29sIGlz
TlZJRElBKCkgb3ZlcnJpZGUgeyByZXR1cm4gbV9pc05WSURJQTsgfQotICAgIGJvb2wgaXNBTUQo
KSBvdmVycmlkZSB7IHJldHVybiBtX2lzQU1EOyB9Ci0gICAgYm9vbCBpc0ludGVsKCkgb3ZlcnJp
ZGUgeyByZXR1cm4gbV9pc0ludGVsOyB9Ci0gICAgYm9vbCBpc0ltYWdpbmF0aW9uKCkgb3ZlcnJp
ZGUgeyByZXR1cm4gbV9pc0ltYWdpbmF0aW9uOyB9Ci0gICAgU3RyaW5nIHZlbmRvcigpIG92ZXJy
aWRlIHsgcmV0dXJuIG1fdmVuZG9yOyB9Ci0KLSAgICBib29sIHJlcXVpcmVzQnVpbHRJbkZ1bmN0
aW9uRW11bGF0aW9uKCkgb3ZlcnJpZGUgeyByZXR1cm4gbV9yZXF1aXJlc0J1aWx0SW5GdW5jdGlv
bkVtdWxhdGlvbjsgfQotICAgIGJvb2wgcmVxdWlyZXNSZXN0cmljdGVkTWF4aW11bVRleHR1cmVT
aXplKCkgb3ZlcnJpZGUgeyByZXR1cm4gbV9yZXF1aXJlc1Jlc3RyaWN0ZWRNYXhpbXVtVGV4dHVy
ZVNpemU7IH0KLQogICAgIC8vIEdMX0FOR0xFX3JvYnVzdF9jbGllbnRfbWVtb3J5Ci0gICAgdm9p
ZCByZWFkUGl4ZWxzUm9idXN0QU5HTEUoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3
aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBH
Q0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xzaXplaSAqY29sdW1ucywg
R0NHTHNpemVpICpyb3dzLCB2b2lkICpwaXhlbHMpIG92ZXJyaWRlOwotICAgIHZvaWQgdGV4UGFy
YW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dM
c2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGZsb2F0ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZv
aWQgdGV4UGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBu
YW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGludCAqcGFyYW1zKSBvdmVycmlkZTsK
LSAgICB2b2lkIGdldFF1ZXJ5aXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVt
IHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBh
cmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRRdWVyeU9iamVjdHVpdlJvYnVzdEFOR0xFKEdD
R0x1aW50IGlkLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAq
bGVuZ3RoLCBHQ0dMdWludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldEJ1ZmZlclBv
aW50ZXJ2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNp
emVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCB2b2lkICoqcGFyYW1zKSBvdmVycmlkZTsK
LSAgICB2b2lkIGdldEludGVybmFsZm9ybWF0aXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQs
IEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNp
emUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZv
aWQgZ2V0VmVydGV4QXR0cmliSWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVt
IHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBh
cmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJJdWl2Um9idXN0QU5HTEUo
R0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNp
emVpICpsZW5ndGgsIEdDR0x1aW50ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0VW5p
Zm9ybXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdD
R0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHVpbnQgKnBhcmFtcykgb3Zl
cnJpZGU7Ci0gICAgdm9pZCBnZXRCdWZmZXJQYXJhbWV0ZXJpNjR2Um9idXN0QU5HTEUoR0NHTGVu
dW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAq
bGVuZ3RoLCBHQ0dMaW50NjQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzYW1wbGVyUGFy
YW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NH
THNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xpbnQgKnBhcmFtKSBvdmVycmlkZTsKLSAgICB2b2lk
IHNhbXBsZXJQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVt
IHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGZsb2F0ICpwYXJhbSkgb3ZlcnJp
ZGU7Ci0gICAgdm9pZCBnZXRTYW1wbGVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMdWludCBz
YW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVu
Z3RoLCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0U2FtcGxlclBhcmFt
ZXRlcmZ2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xz
aXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGZsb2F0ICpwYXJhbXMpIG92ZXJy
aWRlOwogCi0gICAgdm9pZCBnZXRGcmFtZWJ1ZmZlclBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXpl
aSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0UHJvZ3Jh
bUludGVyZmFjZWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGVudW0gcHJvZ3Jh
bUludGVyZmFjZSwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkg
Kmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldEJvb2xlYW5p
X3ZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0x1aW50IGluZGV4LCBHQ0dMc2l6ZWkg
YnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xib29sZWFuICpkYXRhKSBvdmVycmlkZTsg
Ly8gTk9MSU5UCi0gICAgdm9pZCBnZXRNdWx0aXNhbXBsZWZ2Um9idXN0QU5HTEUoR0NHTGVudW0g
cG5hbWUsIEdDR0x1aW50IGluZGV4LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5n
dGgsIEdDR0xmbG9hdCAqdmFsKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldFRleExldmVsUGFyYW1l
dGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVt
IHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBh
cmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRUZXhMZXZlbFBhcmFtZXRlcmZ2Um9idXN0QU5H
TEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNp
emVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMZmxvYXQgKnBhcmFtcykgb3ZlcnJp
ZGU7Ci0KLSAgICB2b2lkIGdldFBvaW50ZXJ2Um9idXN0QU5HTEVSb2J1c3RBTkdMRShHQ0dMZW51
bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCB2b2lkICoqcGFy
YW1zKSBvdmVycmlkZTsKICAgICB2b2lkIHJlYWRuUGl4ZWxzUm9idXN0QU5HTEUoR0NHTGludCB4
LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0g
Zm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5n
dGgsIEdDR0xzaXplaSAqY29sdW1ucywgR0NHTHNpemVpICpyb3dzLCB2b2lkICpkYXRhLCBib29s
IHJlYWRpbmdUb1BpeGVsQnVmZmVyT2JqZWN0KSBvdmVycmlkZTsKLSAgICB2b2lkIGdldG5Vbmlm
b3JtZnZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dM
c2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xmbG9hdCAqcGFyYW1zKSBvdmVy
cmlkZTsKLSAgICB2b2lkIGdldG5Vbmlmb3JtaXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFt
LCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgs
IEdDR0xpbnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRuVW5pZm9ybXVpdlJvYnVz
dEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZT
aXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHVpbnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAg
dm9pZCB0ZXhQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVt
IHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGludCAqcGFyYW1zKSBvdmVycmlk
ZTsKLSAgICB2b2lkIHRleFBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQs
IEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTHVpbnQgKnBhcmFt
cykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRUZXhQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRShHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVp
ICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRUZXhQYXJh
bWV0ZXJJdWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NH
THNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMdWludCAqcGFyYW1zKSBvdmVy
cmlkZTsKLSAgICB2b2lkIHNhbXBsZXJQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRShHQ0dMdWludCBz
YW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xpbnQg
KnBhcmFtKSBvdmVycmlkZTsKLSAgICB2b2lkIHNhbXBsZXJQYXJhbWV0ZXJJdWl2Um9idXN0QU5H
TEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBj
b25zdCBHQ0dMdWludCAqcGFyYW0pIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0U2FtcGxlclBhcmFt
ZXRlcklpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dM
c2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykgb3ZlcnJp
ZGU7Ci0gICAgdm9pZCBnZXRTYW1wbGVyUGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50
IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICps
ZW5ndGgsIEdDR0x1aW50ICpwYXJhbXMpIG92ZXJyaWRlOwotCi0gICAgdm9pZCBnZXRRdWVyeU9i
amVjdGl2Um9idXN0QU5HTEUoR0NHTHVpbnQgaWQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkg
YnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0g
ICAgdm9pZCBnZXRRdWVyeU9iamVjdGk2NHZSb2J1c3RBTkdMRShHQ0dMdWludCBpZCwgR0NHTGVu
dW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludDY0
ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0UXVlcnlPYmplY3R1aTY0dlJvYnVzdEFO
R0xFKEdDR0x1aW50IGlkLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xz
aXplaSAqbGVuZ3RoLCBHQ0dMdWludDY0ICpwYXJhbXMpIG92ZXJyaWRlOwotCiAgICAgLy8gT25s
eSBmb3Igbm9uLVdlYkdMIDIuMCBjb250ZXh0cy4KICAgICBHQ0dMZW51bSBhZGp1c3RXZWJHTDFU
ZXh0dXJlSW50ZXJuYWxGb3JtYXQoR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xlbnVtIGZv
cm1hdCwgR0NHTGVudW0gdHlwZSk7CiAKQEAgLTEyOSwxOSArNzUsNiBAQCBwcml2YXRlOgogCiAg
ICAgLy8gV2VhayBwb2ludGVyIGJhY2sgdG8gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuCiAgICAg
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqIG1fY29udGV4dDsKLQotICAgIGJvb2wgbV9pc05WSURJ
QTsKLSAgICBib29sIG1faXNBTUQ7Ci0gICAgYm9vbCBtX2lzSW50ZWw7Ci0gICAgYm9vbCBtX2lz
SW1hZ2luYXRpb247Ci0gICAgYm9vbCBtX3JlcXVpcmVzQnVpbHRJbkZ1bmN0aW9uRW11bGF0aW9u
OwotICAgIGJvb2wgbV9yZXF1aXJlc1Jlc3RyaWN0ZWRNYXhpbXVtVGV4dHVyZVNpemU7Ci0KLSAg
ICBib29sIG1fdXNlSW5kZXhlZEdldFN0cmluZyB7IGZhbHNlIH07Ci0KLSAgICBTdHJpbmcgbV92
ZW5kb3I7Ci0gICAgU3RyaW5nIG1fcmVuZGVyZXI7Ci0KICAgICAvLyBXaGV0aGVyIHRoZSBXZWJH
TCAxLjAtcmVsYXRlZCBmbG9hdGluZy1wb2ludCByZW5kZXJhYmlsaXR5IGV4dGVuc2lvbnMgaGF2
ZSBiZWVuIGVuYWJsZWQuCiAgICAgYm9vbCBtX3dlYmdsQ29sb3JCdWZmZXJGbG9hdFJHQiB7IGZh
bHNlIH07CiAgICAgYm9vbCBtX3dlYmdsQ29sb3JCdWZmZXJGbG9hdFJHQkEgeyBmYWxzZSB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVu
c2lvbnNHTE9wZW5HTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVu
Z2wvRXh0ZW5zaW9uc0dMT3BlbkdMLmNwcAppbmRleCA3ZWM4MWNmNGFlNTc3MmNhZTk3Mjg4YmM4
MGUzNjU2NDZkNjI3YzdiLi5hM2Q5Y2VkMDQ4YzdlNGUyNDE5ODk1NGM3MGE0YzA4YWU1MjU5ODdj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0
ZW5zaW9uc0dMT3BlbkdMLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMLmNwcApAQCAtNDEsMjkgKzQxLDEyIEBACiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIEV4dGVuc2lvbnNHTE9wZW5HTDo6RXh0ZW5zaW9uc0dMT3BlbkdM
KEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiBjb250ZXh0LCBib29sIHVzZUluZGV4ZWRHZXRTdHJp
bmcpCi0gICAgOiBFeHRlbnNpb25zR0xPcGVuR0xDb21tb24oY29udGV4dCwgdXNlSW5kZXhlZEdl
dFN0cmluZykKKyAgICA6IEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbihjb250ZXh0KQogewogfQog
CiBFeHRlbnNpb25zR0xPcGVuR0w6On5FeHRlbnNpb25zR0xPcGVuR0woKSA9IGRlZmF1bHQ7CiAK
LQotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0w6OmJsaXRGcmFtZWJ1ZmZlcihsb25nIHNyY1gwLCBs
b25nIHNyY1kwLCBsb25nIHNyY1gxLCBsb25nIHNyY1kxLCBsb25nIGRzdFgwLCBsb25nIGRzdFkw
LCBsb25nIGRzdFgxLCBsb25nIGRzdFkxLCB1bnNpZ25lZCBsb25nIG1hc2ssIHVuc2lnbmVkIGxv
bmcgZmlsdGVyKQotewotICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgOjpnbEJsaXRGcmFtZWJ1ZmZlckVYVChzcmNYMCwgc3Jj
WTAsIHNyY1gxLCBzcmNZMSwgZHN0WDAsIGRzdFkwLCBkc3RYMSwgZHN0WTEsIG1hc2ssIGZpbHRl
cik7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMOjpyZW5kZXJidWZmZXJTdG9yYWdlTXVs
dGlzYW1wbGUodW5zaWduZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgc2FtcGxlcywgdW5z
aWduZWQgbG9uZyBpbnRlcm5hbGZvcm1hdCwgdW5zaWduZWQgbG9uZyB3aWR0aCwgdW5zaWduZWQg
bG9uZyBoZWlnaHQpCi17Ci0gICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgp
KQotICAgICAgICByZXR1cm47Ci0KLSAgICA6OmdsUmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2Ft
cGxlRVhUKHRhcmdldCwgc2FtcGxlcywgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQpOwot
fQotCiBQbGF0Zm9ybUdMT2JqZWN0IEV4dGVuc2lvbnNHTE9wZW5HTDo6Y3JlYXRlVmVydGV4QXJy
YXlPRVMoKQogewogICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKQEAg
LTEyNywyNCArMTEwLDYgQEAgdm9pZCBFeHRlbnNpb25zR0xPcGVuR0w6OmJpbmRWZXJ0ZXhBcnJh
eU9FUyhQbGF0Zm9ybUdMT2JqZWN0IGFycmF5KQogI2VuZGlmCiB9CiAKLXZvaWQgRXh0ZW5zaW9u
c0dMT3BlbkdMOjppbnNlcnRFdmVudE1hcmtlckVYVChjb25zdCBTdHJpbmcmKQotewotICAgIC8v
IEZJWE1FOiBpbXBsZW1lbnQgdGhpcyBmdW5jdGlvbiBhbmQgYWRkIEdMX0VYVF9kZWJ1Z19tYXJr
ZXIgaW4gc3VwcG9ydHMoKS4KLSAgICByZXR1cm47Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMT3Bl
bkdMOjpwdXNoR3JvdXBNYXJrZXJFWFQoY29uc3QgU3RyaW5nJikKLXsKLSAgICAvLyBGSVhNRTog
aW1wbGVtZW50IHRoaXMgZnVuY3Rpb24gYW5kIGFkZCBHTF9FWFRfZGVidWdfbWFya2VyIGluIHN1
cHBvcnRzKCkuCi0gICAgcmV0dXJuOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTDo6cG9w
R3JvdXBNYXJrZXJFWFQodm9pZCkKLXsKLSAgICAvLyBGSVhNRTogaW1wbGVtZW50IHRoaXMgZnVu
Y3Rpb24gYW5kIGFkZCBHTF9FWFRfZGVidWdfbWFya2VyIGluIHN1cHBvcnRzKCkuCi0gICAgcmV0
dXJuOwotfQotCiBib29sIEV4dGVuc2lvbnNHTE9wZW5HTDo6c3VwcG9ydHNFeHRlbnNpb24oY29u
c3QgU3RyaW5nJiBuYW1lKQogewogICAgIC8vIEdMX0FOR0xFX2ZyYW1lYnVmZmVyX2JsaXQgYW5k
IEdMX0FOR0xFX2ZyYW1lYnVmZmVyX211bHRpc2FtcGxlIGFyZSAiZmFrZSIuIFRoZXkgYXJlIGlt
cGxlbWVudGVkIHVzaW5nIG90aGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMLmgKaW5kZXggNDk2Mjg5
Y2VhMGU2YTA5ZDZkYjczMWY4NjhiNTQ5OTNhNDQ0NDlhOC4uNTBiNmZlM2U5NDM4NzkzODllMDk0
ZTdhNTRjM2FiODczZWZmZmI5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuaApAQCAtNDAsMTYg
KzQwLDEwIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5FeHRlbnNpb25zR0xPcGVuR0woKTsKIAog
ICAgIC8vIEV4dGVuc2lvbnNHTCBtZXRob2RzLgotICAgIHZvaWQgYmxpdEZyYW1lYnVmZmVyKGxv
bmcgc3JjWDAsIGxvbmcgc3JjWTAsIGxvbmcgc3JjWDEsIGxvbmcgc3JjWTEsIGxvbmcgZHN0WDAs
IGxvbmcgZHN0WTAsIGxvbmcgZHN0WDEsIGxvbmcgZHN0WTEsIHVuc2lnbmVkIGxvbmcgbWFzaywg
dW5zaWduZWQgbG9uZyBmaWx0ZXIpIG92ZXJyaWRlOwotICAgIHZvaWQgcmVuZGVyYnVmZmVyU3Rv
cmFnZU11bHRpc2FtcGxlKHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25nIHNhbXBs
ZXMsIHVuc2lnbmVkIGxvbmcgaW50ZXJuYWxmb3JtYXQsIHVuc2lnbmVkIGxvbmcgd2lkdGgsIHVu
c2lnbmVkIGxvbmcgaGVpZ2h0KSBvdmVycmlkZTsKLQogICAgIFBsYXRmb3JtR0xPYmplY3QgY3Jl
YXRlVmVydGV4QXJyYXlPRVMoKSBvdmVycmlkZTsKICAgICB2b2lkIGRlbGV0ZVZlcnRleEFycmF5
T0VTKFBsYXRmb3JtR0xPYmplY3QpIG92ZXJyaWRlOwogICAgIEdDR0xib29sZWFuIGlzVmVydGV4
QXJyYXlPRVMoUGxhdGZvcm1HTE9iamVjdCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBiaW5kVmVydGV4
QXJyYXlPRVMoUGxhdGZvcm1HTE9iamVjdCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBpbnNlcnRFdmVu
dE1hcmtlckVYVChjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKLSAgICB2b2lkIHB1c2hHcm91cE1h
cmtlckVYVChjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKLSAgICB2b2lkIHBvcEdyb3VwTWFya2Vy
RVhUKHZvaWQpIG92ZXJyaWRlOwogICAgIHZvaWQgZHJhd0J1ZmZlcnNFWFQoR0NHTFNwYW48Y29u
c3QgR0NHTGVudW0+KSBvdmVycmlkZTsKIAogICAgIHZvaWQgZHJhd0FycmF5c0luc3RhbmNlZChH
Q0dMZW51bSBtb2RlLCBHQ0dMaW50IGZpcnN0LCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xzaXplaSBw
cmltY291bnQpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmNw
cAppbmRleCA0M2I1MTYxZmJhNzc4ZjhmYjQzODRiMWJjMmRiMzhlY2Y2YzQ4M2ViLi43ZjE1M2E0
N2JhOTMyZjA0MDM2YjM4ODExOTczZDNlZjg0NDhjYzcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9u
c0dMT3BlbkdMQ29tbW9uLmNwcApAQCAtNjMsMzcgKzYzLDEwIEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpFeHRlbnNpb25zR0xPcGVuR0xDb21t
b24oR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqIGNvbnRleHQsIGJvb2wgdXNlSW5kZXhlZEdldFN0
cmluZykKK0V4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9u
KEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiBjb250ZXh0KQogICAgIDogbV9pbml0aWFsaXplZEF2
YWlsYWJsZUV4dGVuc2lvbnMoZmFsc2UpCiAgICAgLCBtX2NvbnRleHQoY29udGV4dCkKLSAgICAs
IG1faXNOVklESUEoZmFsc2UpCi0gICAgLCBtX2lzQU1EKGZhbHNlKQotICAgICwgbV9pc0ludGVs
KGZhbHNlKQotICAgICwgbV9pc0ltYWdpbmF0aW9uKGZhbHNlKQotICAgICwgbV9yZXF1aXJlc0J1
aWx0SW5GdW5jdGlvbkVtdWxhdGlvbihmYWxzZSkKLSAgICAsIG1fcmVxdWlyZXNSZXN0cmljdGVk
TWF4aW11bVRleHR1cmVTaXplKGZhbHNlKQotICAgICwgbV91c2VJbmRleGVkR2V0U3RyaW5nKHVz
ZUluZGV4ZWRHZXRTdHJpbmcpCiB7Ci0gICAgbV92ZW5kb3IgPSBTdHJpbmcocmVpbnRlcnByZXRf
Y2FzdDxjb25zdCBjaGFyKj4oOjpnbEdldFN0cmluZyhHTF9WRU5ET1IpKSk7Ci0gICAgbV9yZW5k
ZXJlciA9IFN0cmluZyhyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPig6OmdsR2V0U3RyaW5n
KEdMX1JFTkRFUkVSKSkpOwotCi0gICAgVmVjdG9yPFN0cmluZz4gdmVuZG9yQ29tcG9uZW50cyA9
IG1fdmVuZG9yLmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCkuc3BsaXQoJyAnKTsKLSAgICBpZiAo
dmVuZG9yQ29tcG9uZW50cy5jb250YWlucygibnZpZGlhIikpCi0gICAgICAgIG1faXNOVklESUEg
PSB0cnVlOwotICAgIGlmICh2ZW5kb3JDb21wb25lbnRzLmNvbnRhaW5zKCJhdGkiKSB8fCB2ZW5k
b3JDb21wb25lbnRzLmNvbnRhaW5zKCJhbWQiKSkKLSAgICAgICAgbV9pc0FNRCA9IHRydWU7Ci0g
ICAgaWYgKHZlbmRvckNvbXBvbmVudHMuY29udGFpbnMoImludGVsIikpCi0gICAgICAgIG1faXNJ
bnRlbCA9IHRydWU7Ci0gICAgaWYgKHZlbmRvckNvbXBvbmVudHMuY29udGFpbnMoImltYWdpbmF0
aW9uIikpCi0gICAgICAgIG1faXNJbWFnaW5hdGlvbiA9IHRydWU7Ci0KLSNpZiBQTEFURk9STShN
QUMpCi0gICAgaWYgKG1faXNBTUQgfHwgbV9pc0ludGVsKQotICAgICAgICBtX3JlcXVpcmVzQnVp
bHRJbkZ1bmN0aW9uRW11bGF0aW9uID0gdHJ1ZTsKLQotICAgIC8vIEludGVsIEhEIDMwMDAgZGV2
aWNlcyBoYXZlIHByb2JsZW1zIHdpdGggbGFyZ2UgdGV4dHVyZXMuIDxyZGFyOi8vcHJvYmxlbS8x
NjY0OTE0MD4KLSAgICBtX3JlcXVpcmVzUmVzdHJpY3RlZE1heGltdW1UZXh0dXJlU2l6ZSA9IG1f
cmVuZGVyZXIuc3RhcnRzV2l0aCgiSW50ZWwgSEQgR3JhcGhpY3MgMzAwMCIpOwotI2VuZGlmCiB9
CiAKIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6fkV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbigp
ID0gZGVmYXVsdDsKQEAgLTE5Miw5ICsxNjUsNiBAQCBTdHJpbmcgRXh0ZW5zaW9uc0dMT3BlbkdM
Q29tbW9uOjpnZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUoUGxhdGZvcm1HTE9iamVjdAog
ICAgIFN0cmluZyBzaGFkZXJJbmZvTG9nOwogICAgIEdDR0x1aW50NjQgZXh0cmFDb21waWxlT3B0
aW9ucyA9IFNIX0NMQU1QX0lORElSRUNUX0FSUkFZX0JPVU5EUyB8IFNIX1VORk9MRF9TSE9SVF9D
SVJDVUlUIHwgU0hfSU5JVF9PVVRQVVRfVkFSSUFCTEVTIHwgU0hfRU5GT1JDRV9QQUNLSU5HX1JF
U1RSSUNUSU9OUyB8IFNIX0xJTUlUX0VYUFJFU1NJT05fQ09NUExFWElUWSB8IFNIX0xJTUlUX0NB
TExfU1RBQ0tfREVQVEggfCBTSF9JTklUSUFMSVpFX1VOSU5JVElBTElaRURfTE9DQUxTOwogCi0g
ICAgaWYgKG1fcmVxdWlyZXNCdWlsdEluRnVuY3Rpb25FbXVsYXRpb24pCi0gICAgICAgIGV4dHJh
Q29tcGlsZU9wdGlvbnMgfD0gU0hfRU1VTEFURV9BQlNfSU5UX0ZVTkNUSU9OOwotCiAgICAgVmVj
dG9yPHN0ZDo6cGFpcjxBTkdMRVNoYWRlclN5bWJvbFR5cGUsIHNoOjpTaGFkZXJWYXJpYWJsZT4+
IHN5bWJvbHM7CiAgICAgYm9vbCBpc1ZhbGlkID0gY29tcGlsZXIuY29tcGlsZVNoYWRlclNvdXJj
ZShlbnRyeS5zb3VyY2UudXRmOCgpLmRhdGEoKSwgc2hhZGVyVHlwZSwgdHJhbnNsYXRlZFNoYWRl
clNvdXJjZSwgc2hhZGVySW5mb0xvZywgc3ltYm9scywgZXh0cmFDb21waWxlT3B0aW9ucyk7CiAK
QEAgLTIxNCwyOCArMTg0LDkgQEAgU3RyaW5nIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0
VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFKFBsYXRmb3JtR0xPYmplY3QKIAogdm9pZCBFeHRl
bnNpb25zR0xPcGVuR0xDb21tb246OmluaXRpYWxpemVBdmFpbGFibGVFeHRlbnNpb25zKCkKIHsK
LSNpZiBQTEFURk9STShHVEspICYmICFVU0UoT1BFTkdMX0VTKQotICAgIGlmIChtX3VzZUluZGV4
ZWRHZXRTdHJpbmcpIHsKLSAgICAgICAgR0xpbnQgbnVtRXh0ZW5zaW9ucyA9IDA7Ci0gICAgICAg
IDo6Z2xHZXRJbnRlZ2VydihHTF9OVU1fRVhURU5TSU9OUywgJm51bUV4dGVuc2lvbnMpOwotICAg
ICAgICBmb3IgKEdMaW50IGkgPSAwOyBpIDwgbnVtRXh0ZW5zaW9uczsgKytpKQotICAgICAgICAg
ICAgbV9hdmFpbGFibGVFeHRlbnNpb25zLmFkZChnbEdldFN0cmluZ2koR0xfRVhURU5TSU9OUywg
aSkpOwotCi0gICAgICAgIGlmICghbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9B
UkJfdGV4dHVyZV9zdG9yYWdlIl9zKSkgewotICAgICAgICAgICAgR0xpbnQgbWFqb3JWZXJzaW9u
OwotICAgICAgICAgICAgZ2xHZXRJbnRlZ2VydihHTF9NQUpPUl9WRVJTSU9OLCAmbWFqb3JWZXJz
aW9uKTsKLSAgICAgICAgICAgIEdMaW50IG1pbm9yVmVyc2lvbjsKLSAgICAgICAgICAgIGdsR2V0
SW50ZWdlcnYoR0xfTUlOT1JfVkVSU0lPTiwgJm1pbm9yVmVyc2lvbik7Ci0gICAgICAgICAgICBp
ZiAobWFqb3JWZXJzaW9uID4gNCB8fCAobWFqb3JWZXJzaW9uID09IDQgJiYgbWlub3JWZXJzaW9u
ID49IDIpKQotICAgICAgICAgICAgICAgIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5hZGQoIkdMX0FS
Ql90ZXh0dXJlX3N0b3JhZ2UiX3MpOwotICAgICAgICB9Ci0gICAgfSBlbHNlCi0jZW5kaWYKLSAg
ICB7Ci0gICAgICAgIFN0cmluZyBleHRlbnNpb25zU3RyaW5nID0gZ2V0RXh0ZW5zaW9ucygpOwot
ICAgICAgICBmb3IgKGF1dG8mIGV4dGVuc2lvbiA6IGV4dGVuc2lvbnNTdHJpbmcuc3BsaXQoJyAn
KSkKLSAgICAgICAgICAgIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5hZGQoZXh0ZW5zaW9uKTsKLSAg
ICB9CisgICAgU3RyaW5nIGV4dGVuc2lvbnNTdHJpbmcgPSBnZXRFeHRlbnNpb25zKCk7CisgICAg
Zm9yIChhdXRvJiBleHRlbnNpb24gOiBleHRlbnNpb25zU3RyaW5nLnNwbGl0KCcgJykpCisgICAg
ICAgIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5hZGQoZXh0ZW5zaW9uKTsKICAgICBtX2luaXRpYWxp
emVkQXZhaWxhYmxlRXh0ZW5zaW9ucyA9IHRydWU7CiB9CiAKQEAgLTI1NCwxOTUgKzIwNSwxMSBA
QCB2b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0blVuaWZvcm1pdkVYVChHQ0dMdWlu
dCwgaW50LCBHQ0dMc2l6ZWksIEdDR0xpbgogICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJy
b3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwogfQogCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENv
bW1vbjo6cmVhZFBpeGVsc1JvYnVzdEFOR0xFKGludCwgaW50LCBHQ0dMc2l6ZWksIEdDR0xzaXpl
aSwgR0NHTGVudW0sIEdDR0xlbnVtLCBHQ0dMc2l6ZWksIEdDR0xzaXplaSAqLCBHQ0dMc2l6ZWkg
KiwgR0NHTHNpemVpICosIHZvaWQgKikKLXsKLSAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVy
cm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xD
b21tb246OnRleFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTGVudW0sIEdDR0xlbnVtLCBHQ0dM
c2l6ZWksIGNvbnN0IEdDR0xmbG9hdCAqKQotewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdM
RXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5H
TENvbW1vbjo6dGV4UGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51bSwgR0NHTGVudW0sIEdD
R0xzaXplaSwgY29uc3QgR0NHTGludCAqKQotewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdM
RXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5H
TENvbW1vbjo6Z2V0UXVlcnlpdlJvYnVzdEFOR0xFKEdDR0xlbnVtLCBHQ0dMZW51bSwgR0NHTHNp
emVpLCBHQ0dMc2l6ZWkgKiwgR0NHTGludCAqKQotewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6
ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9w
ZW5HTENvbW1vbjo6Z2V0UXVlcnlPYmplY3R1aXZSb2J1c3RBTkdMRShHQ0dMdWludCwgR0NHTGVu
dW0sIEdDR0xzaXplaSwgR0NHTHNpemVpICosIEdDR0x1aW50ICopCi17Ci0gICAgbV9jb250ZXh0
LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Ci19Ci0KLXZvaWQgRXh0
ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRCdWZmZXJQb2ludGVydlJvYnVzdEFOR0xFKEdDR0xl
bnVtLCBHQ0dMZW51bSwgR0NHTHNpemVpLCBHQ0dMc2l6ZWkgKiwgdm9pZCAqKikKLXsKLSAgICBt
X2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLX0KLQot
dm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldEludGVybmFsZm9ybWF0aXZSb2J1c3RB
TkdMRShHQ0dMZW51bSwgR0NHTGVudW0sIEdDR0xlbnVtLCBHQ0dMc2l6ZWksIEdDR0xzaXplaSAq
LCBHQ0dMaW50ICopCi17Ci0gICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZB
TElEX09QRVJBVElPTik7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRW
ZXJ0ZXhBdHRyaWJJaXZSb2J1c3RBTkdMRShHQ0dMdWludCwgR0NHTGVudW0sIEdDR0xzaXplaSwg
R0NHTHNpemVpICosIEdDR0xpbnQgKikKLXsKLSAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVy
cm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xD
b21tb246OmdldFZlcnRleEF0dHJpYkl1aXZSb2J1c3RBTkdMRShHQ0dMdWludCwgR0NHTGVudW0s
IEdDR0xzaXplaSwgR0NHTHNpemVpICosIEdDR0x1aW50ICopCi17Ci0gICAgbV9jb250ZXh0LT5z
eW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Ci19Ci0KLXZvaWQgRXh0ZW5z
aW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRVbmlmb3JtdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQsIGlu
dCwgR0NHTHNpemVpLCBHQ0dMc2l6ZWkgKiwgR0NHTHVpbnQgKikKLXsKLSAgICBtX2NvbnRleHQt
PnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLX0KLQotdm9pZCBFeHRl
bnNpb25zR0xPcGVuR0xDb21tb246OmdldEJ1ZmZlclBhcmFtZXRlcmk2NHZSb2J1c3RBTkdMRShH
Q0dMZW51bSwgR0NHTGVudW0sIEdDR0xzaXplaSwgR0NHTHNpemVpICosIEdDR0xpbnQ2NCAqKQot
ewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04p
OwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6c2FtcGxlclBhcmFtZXRlcml2
Um9idXN0QU5HTEUoR0NHTHVpbnQsIEdDR0xlbnVtLCBHQ0dMc2l6ZWksIGNvbnN0IEdDR0xpbnQg
KikKLXsKLSAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFU
SU9OKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OnNhbXBsZXJQYXJhbWV0
ZXJmdlJvYnVzdEFOR0xFKEdDR0x1aW50LCBHQ0dMZW51bSwgR0NHTHNpemVpLCBjb25zdCBHQ0dM
ZmxvYXQgKikKLXsKLSAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURf
T1BFUkFUSU9OKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFNhbXBs
ZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0x1aW50LCBHQ0dMZW51bSwgR0NHTHNpemVpLCBH
Q0dMc2l6ZWkgKiwgR0NHTGludCAqKQotewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJy
b3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENv
bW1vbjo6Z2V0U2FtcGxlclBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTHVpbnQsIEdDR0xlbnVt
LCBHQ0dMc2l6ZWksIEdDR0xzaXplaSAqLCBHQ0dMZmxvYXQgKikKLXsKLSAgICBtX2NvbnRleHQt
PnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLX0KLQotCi12b2lkIEV4
dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0RnJhbWVidWZmZXJQYXJhbWV0ZXJpdlJvYnVzdEFO
R0xFKEdDR0xlbnVtLCBHQ0dMZW51bSwgR0NHTHNpemVpLCBHQ0dMc2l6ZWkgKiwgR0NHTGludCAq
KQotewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJ
T04pOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0UHJvZ3JhbUludGVy
ZmFjZWl2Um9idXN0QU5HTEUoR0NHTHVpbnQsIEdDR0xlbnVtLCBHQ0dMZW51bSwgR0NHTHNpemVp
LCBHQ0dMc2l6ZWkgKiwgR0NHTGludCAqKQotewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdM
RXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5H
TENvbW1vbjo6Z2V0Qm9vbGVhbmlfdlJvYnVzdEFOR0xFKEdDR0xlbnVtLCBHQ0dMdWludCwgR0NH
THNpemVpLCBHQ0dMc2l6ZWkgKiwgR0NHTGJvb2xlYW4gKikKLXsKLSAgICBtX2NvbnRleHQtPnN5
bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLX0KLQotdm9pZCBFeHRlbnNp
b25zR0xPcGVuR0xDb21tb246OmdldE11bHRpc2FtcGxlZnZSb2J1c3RBTkdMRShHQ0dMZW51bSwg
R0NHTHVpbnQsIEdDR0xzaXplaSwgR0NHTHNpemVpICosIEdDR0xmbG9hdCAqKQotewotICAgIG1f
Y29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi12
b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0VGV4TGV2ZWxQYXJhbWV0ZXJpdlJvYnVz
dEFOR0xFKEdDR0xlbnVtLCBpbnQsIEdDR0xlbnVtLCBHQ0dMc2l6ZWksIEdDR0xzaXplaSAqLCBH
Q0dMaW50ICopCi17Ci0gICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElE
X09QRVJBVElPTik7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRUZXhM
ZXZlbFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTGVudW0sIGludCwgR0NHTGVudW0sIEdDR0xz
aXplaSwgR0NHTHNpemVpICosIEdDR0xmbG9hdCAqKQotewotICAgIG1fY29udGV4dC0+c3ludGhl
c2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi0KLXZvaWQgRXh0ZW5zaW9u
c0dMT3BlbkdMQ29tbW9uOjpnZXRQb2ludGVydlJvYnVzdEFOR0xFUm9idXN0QU5HTEUoR0NHTGVu
dW0sIEdDR0xzaXplaSwgR0NHTHNpemVpICosIHZvaWQgKiopCi17Ci0gICAgbV9jb250ZXh0LT5z
eW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Ci19Ci0KIHZvaWQgRXh0ZW5z
aW9uc0dMT3BlbkdMQ29tbW9uOjpyZWFkblBpeGVsc1JvYnVzdEFOR0xFKGludCwgaW50LCBHQ0dM
c2l6ZWksIEdDR0xzaXplaSwgR0NHTGVudW0sIEdDR0xlbnVtLCBHQ0dMc2l6ZWksIEdDR0xzaXpl
aSAqLCBHQ0dMc2l6ZWkgKiwgR0NHTHNpemVpICosIHZvaWQgKiwgYm9vbCkKIHsKICAgICBtX2Nv
bnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKIH0KIAotdm9p
ZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldG5Vbmlmb3JtZnZSb2J1c3RBTkdMRShHQ0dM
dWludCwgaW50LCBHQ0dMc2l6ZWksIEdDR0xzaXplaSAqLCBHQ0dMZmxvYXQgKikKLXsKLSAgICBt
X2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLX0KLQot
dm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldG5Vbmlmb3JtaXZSb2J1c3RBTkdMRShH
Q0dMdWludCwgaW50LCBHQ0dMc2l6ZWksIEdDR0xzaXplaSAqLCBHQ0dMaW50ICopCi17Ci0gICAg
bV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Ci19Ci0K
LXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRuVW5pZm9ybXVpdlJvYnVzdEFOR0xF
KEdDR0x1aW50LCBpbnQsIEdDR0xzaXplaSwgR0NHTHNpemVpICosIEdDR0x1aW50ICopCi17Ci0g
ICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Ci19
Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjp0ZXhQYXJhbWV0ZXJJaXZSb2J1c3RB
TkdMRShHQ0dMZW51bSwgR0NHTGVudW0sIEdDR0xzaXplaSwgY29uc3QgR0NHTGludCAqKQotewot
ICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwot
fQotCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6dGV4UGFyYW1ldGVySXVpdlJvYnVz
dEFOR0xFKEdDR0xlbnVtLCBHQ0dMZW51bSwgR0NHTHNpemVpLCBjb25zdCBHQ0dMdWludCAqKQot
ewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04p
OwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0VGV4UGFyYW1ldGVySWl2
Um9idXN0QU5HTEUoR0NHTGVudW0sIEdDR0xlbnVtLCBHQ0dMc2l6ZWksIEdDR0xzaXplaSAqLCBH
Q0dMaW50ICopCi17Ci0gICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElE
X09QRVJBVElPTik7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRUZXhQ
YXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUoR0NHTGVudW0sIEdDR0xlbnVtLCBHQ0dMc2l6ZWksIEdD
R0xzaXplaSAqLCBHQ0dMdWludCAqKQotewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJy
b3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENv
bW1vbjo6c2FtcGxlclBhcmFtZXRlcklpdlJvYnVzdEFOR0xFKEdDR0x1aW50LCBHQ0dMZW51bSwg
R0NHTHNpemVpLCBjb25zdCBHQ0dMaW50ICopCi17Ci0gICAgbV9jb250ZXh0LT5zeW50aGVzaXpl
R0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMT3Bl
bkdMQ29tbW9uOjpzYW1wbGVyUGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50LCBHQ0dM
ZW51bSwgR0NHTHNpemVpLCBjb25zdCBHQ0dMdWludCAqKQotewotICAgIG1fY29udGV4dC0+c3lu
dGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi12b2lkIEV4dGVuc2lv
bnNHTE9wZW5HTENvbW1vbjo6Z2V0U2FtcGxlclBhcmFtZXRlcklpdlJvYnVzdEFOR0xFKEdDR0x1
aW50LCBHQ0dMZW51bSwgR0NHTHNpemVpLCBHQ0dMc2l6ZWkgKiwgR0NHTGludCAqKQotewotICAg
IG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQot
Ci12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0U2FtcGxlclBhcmFtZXRlckl1aXZS
b2J1c3RBTkdMRShHQ0dMdWludCwgR0NHTGVudW0sIEdDR0xzaXplaSwgR0NHTHNpemVpICosIEdD
R0x1aW50ICopCi17Ci0gICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElE
X09QRVJBVElPTik7Ci19Ci0KLQotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFF1
ZXJ5T2JqZWN0aXZSb2J1c3RBTkdMRShHQ0dMdWludCwgR0NHTGVudW0sIEdDR0xzaXplaSwgR0NH
THNpemVpICosIEdDR0xpbnQgKikKLXsKLSAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9y
KEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21t
b246OmdldFF1ZXJ5T2JqZWN0aTY0dlJvYnVzdEFOR0xFKEdDR0x1aW50LCBHQ0dMZW51bSwgR0NH
THNpemVpLCBHQ0dMc2l6ZWkgKiwgR0NHTGludDY0ICopCi17Ci0gICAgbV9jb250ZXh0LT5zeW50
aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9u
c0dMT3BlbkdMQ29tbW9uOjpnZXRRdWVyeU9iamVjdHVpNjR2Um9idXN0QU5HTEUoR0NHTHVpbnQs
IEdDR0xlbnVtLCBHQ0dMc2l6ZWksIEdDR0xzaXplaSAqLCBHQ0dMdWludDY0ICopCi17Ci0gICAg
bV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Ci19Ci0K
LQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKEdSQVBISUNTX0NP
TlRFWFRfR0wpICYmIChVU0UoT1BFTkdMKSB8fCBVU0UoT1BFTkdMX0VTKSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVu
R0xDb21tb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRl
bnNpb25zR0xPcGVuR0xDb21tb24uaAppbmRleCBiZmU0NTIxNTQzZmY0YjI3MjEzN2YzNDRjZWU0
YTIyZDhmYjI4YzY0Li4wNTlhYzAxYTAwMmQxYTU4ZWQyYmI2OGVjOTY2ZDEwOGNkZWQ0ZjYxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5z
aW9uc0dMT3BlbkdMQ29tbW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5oCkBAIC01NSw2NCArNTUsMTcgQEAg
cHVibGljOgogICAgIFN0cmluZyBnZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUoUGxhdGZv
cm1HTE9iamVjdCkgb3ZlcnJpZGU7CiAKICAgICAvLyBFWFQgUm9idXN0bmVzcyAtIHVzZXMgZ2V0
R3JhcGhpY3NSZXNldFN0YXR1c0FSQigpCi0gICAgdm9pZCByZWFkblBpeGVsc0VYVChpbnQgeCwg
aW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0
LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgdm9pZCAqZGF0YSkgb3ZlcnJpZGU7
Ci0gICAgdm9pZCBnZXRuVW5pZm9ybWZ2RVhUKEdDR0x1aW50IHByb2dyYW0sIGludCBsb2NhdGlv
biwgR0NHTHNpemVpIGJ1ZlNpemUsIGZsb2F0ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQg
Z2V0blVuaWZvcm1pdkVYVChHQ0dMdWludCBwcm9ncmFtLCBpbnQgbG9jYXRpb24sIEdDR0xzaXpl
aSBidWZTaXplLCBpbnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0KLSAgICBib29sIGlzTlZJRElBKCkg
b3ZlcnJpZGUgeyByZXR1cm4gbV9pc05WSURJQTsgfQotICAgIGJvb2wgaXNBTUQoKSBvdmVycmlk
ZSB7IHJldHVybiBtX2lzQU1EOyB9Ci0gICAgYm9vbCBpc0ludGVsKCkgb3ZlcnJpZGUgeyByZXR1
cm4gbV9pc0ludGVsOyB9Ci0gICAgYm9vbCBpc0ltYWdpbmF0aW9uKCkgb3ZlcnJpZGUgeyByZXR1
cm4gbV9pc0ltYWdpbmF0aW9uOyB9Ci0gICAgU3RyaW5nIHZlbmRvcigpIG92ZXJyaWRlIHsgcmV0
dXJuIG1fdmVuZG9yOyB9Ci0KLSAgICBib29sIHJlcXVpcmVzQnVpbHRJbkZ1bmN0aW9uRW11bGF0
aW9uKCkgb3ZlcnJpZGUgeyByZXR1cm4gbV9yZXF1aXJlc0J1aWx0SW5GdW5jdGlvbkVtdWxhdGlv
bjsgfQotICAgIGJvb2wgcmVxdWlyZXNSZXN0cmljdGVkTWF4aW11bVRleHR1cmVTaXplKCkgb3Zl
cnJpZGUgeyByZXR1cm4gbV9yZXF1aXJlc1Jlc3RyaWN0ZWRNYXhpbXVtVGV4dHVyZVNpemU7IH0K
KyAgICB2b2lkIHJlYWRuUGl4ZWxzRVhUKGludCB4LCBpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBH
Q0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXpl
aSBidWZTaXplLCB2b2lkICpkYXRhKTsKKyAgICB2b2lkIGdldG5Vbmlmb3JtZnZFWFQoR0NHTHVp
bnQgcHJvZ3JhbSwgaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgZmxvYXQgKnBhcmFt
cyk7CisgICAgdm9pZCBnZXRuVW5pZm9ybWl2RVhUKEdDR0x1aW50IHByb2dyYW0sIGludCBsb2Nh
dGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIGludCAqcGFyYW1zKTsKIAogICAgIC8vIEdMX0FOR0xF
X3JvYnVzdF9jbGllbnRfbWVtb3J5Ci0gICAgdm9pZCByZWFkUGl4ZWxzUm9idXN0QU5HTEUoaW50
IHgsIGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZv
cm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3Ro
LCBHQ0dMc2l6ZWkgKmNvbHVtbnMsIEdDR0xzaXplaSAqcm93cywgdm9pZCAqcGl4ZWxzKSBvdmVy
cmlkZTsKLSAgICB2b2lkIHRleFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xmbG9hdCAqcGFy
YW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIHRleFBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVu
dW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xp
bnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRRdWVyeWl2Um9idXN0QU5HTEUoR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXpl
aSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0UXVlcnlP
YmplY3R1aXZSb2J1c3RBTkdMRShHQ0dMdWludCBpZCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXpl
aSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHVpbnQgKnBhcmFtcykgb3ZlcnJpZGU7
Ci0gICAgdm9pZCBnZXRCdWZmZXJQb2ludGVydlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwg
R0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgdm9p
ZCAqKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRJbnRlcm5hbGZvcm1hdGl2Um9idXN0
QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTGVudW0g
cG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFy
YW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldFZlcnRleEF0dHJpYklpdlJvYnVzdEFOR0xFKEdD
R0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXpl
aSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0VmVydGV4
QXR0cmliSXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NH
THNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMdWludCAqcGFyYW1zKSBvdmVy
cmlkZTsKLSAgICB2b2lkIGdldFVuaWZvcm11aXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFt
LCBpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NH
THVpbnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRCdWZmZXJQYXJhbWV0ZXJpNjR2
Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1
ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50NjQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0g
ICAgdm9pZCBzYW1wbGVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBH
Q0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xpbnQgKnBhcmFtKSBv
dmVycmlkZTsKLSAgICB2b2lkIHNhbXBsZXJQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0x1aW50
IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGZs
b2F0ICpwYXJhbSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRTYW1wbGVyUGFyYW1ldGVyaXZSb2J1
c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNp
emUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZv
aWQgZ2V0U2FtcGxlclBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NH
TGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGZs
b2F0ICpwYXJhbXMpIG92ZXJyaWRlOwotCi0gICAgdm9pZCBnZXRGcmFtZWJ1ZmZlclBhcmFtZXRl
cml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVp
IGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJyaWRlOwot
ICAgIHZvaWQgZ2V0UHJvZ3JhbUludGVyZmFjZWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3Jh
bSwgR0NHTGVudW0gcHJvZ3JhbUludGVyZmFjZSwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBi
dWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAg
ICB2b2lkIGdldEJvb2xlYW5pX3ZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0x1aW50
IGluZGV4LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xib29sZWFu
ICpkYXRhKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldE11bHRpc2FtcGxlZnZSb2J1c3RBTkdMRShH
Q0dMZW51bSBwbmFtZSwgR0NHTHVpbnQgaW5kZXgsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6
ZWkgKmxlbmd0aCwgR0NHTGZsb2F0ICp2YWwpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0VGV4TGV2
ZWxQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgaW50IGxldmVsLCBHQ0dM
ZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50
ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0VGV4TGV2ZWxQYXJhbWV0ZXJmdlJvYnVz
dEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgaW50IGxldmVsLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNp
emVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMZmxvYXQgKnBhcmFtcykgb3ZlcnJp
ZGU7Ci0KLSAgICB2b2lkIGdldFBvaW50ZXJ2Um9idXN0QU5HTEVSb2J1c3RBTkdMRShHQ0dMZW51
bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCB2b2lkICoqcGFy
YW1zKSBvdmVycmlkZTsKICAgICB2b2lkIHJlYWRuUGl4ZWxzUm9idXN0QU5HTEUoaW50IHgsIGlu
dCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwg
R0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dM
c2l6ZWkgKmNvbHVtbnMsIEdDR0xzaXplaSAqcm93cywgdm9pZCAqZGF0YSwgYm9vbCByZWFkaW5n
VG9QaXhlbEJ1ZmZlck9iamVjdCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRuVW5pZm9ybWZ2Um9i
dXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6
ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xmbG9hdCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2
b2lkIGdldG5Vbmlmb3JtaXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBpbnQgbG9jYXRp
b24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1z
KSBvdmVycmlkZTsKLSAgICB2b2lkIGdldG5Vbmlmb3JtdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQg
cHJvZ3JhbSwgaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5n
dGgsIEdDR0x1aW50ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgdGV4UGFyYW1ldGVySWl2
Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1
ZlNpemUsIGNvbnN0IEdDR0xpbnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCB0ZXhQYXJh
bWV0ZXJJdWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NH
THNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0x1aW50ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZv
aWQgZ2V0VGV4UGFyYW1ldGVySWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51
bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpw
YXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0VGV4UGFyYW1ldGVySXVpdlJvYnVzdEFOR0xF
KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dM
c2l6ZWkgKmxlbmd0aCwgR0NHTHVpbnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzYW1w
bGVyUGFyYW1ldGVySWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5h
bWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMaW50ICpwYXJhbSkgb3ZlcnJpZGU7Ci0g
ICAgdm9pZCBzYW1wbGVyUGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIs
IEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTHVpbnQgKnBhcmFt
KSBvdmVycmlkZTsKLSAgICB2b2lkIGdldFNhbXBsZXJQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRShH
Q0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xz
aXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0U2Ft
cGxlclBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBw
bmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMdWludCAqcGFy
YW1zKSBvdmVycmlkZTsKLQotICAgIHZvaWQgZ2V0UXVlcnlPYmplY3RpdlJvYnVzdEFOR0xFKEdD
R0x1aW50IGlkLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAq
bGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0UXVlcnlPYmpl
Y3RpNjR2Um9idXN0QU5HTEUoR0NHTHVpbnQgaWQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkg
YnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQ2NCAqcGFyYW1zKSBvdmVycmlkZTsK
LSAgICB2b2lkIGdldFF1ZXJ5T2JqZWN0dWk2NHZSb2J1c3RBTkdMRShHQ0dMdWludCBpZCwgR0NH
TGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHVp
bnQ2NCAqcGFyYW1zKSBvdmVycmlkZTsKKwogCiBwcm90ZWN0ZWQ6CiAgICAgZnJpZW5kIGNsYXNz
IEV4dGVuc2lvbnNHTE9wZW5HTEVTOwotICAgIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbihHcmFw
aGljc0NvbnRleHRHTE9wZW5HTCosIGJvb2wgdXNlSW5kZXhlZEdldFN0cmluZyk7CisgICAgRXh0
ZW5zaW9uc0dMT3BlbkdMQ29tbW9uKEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKik7CiAKICAgICB2
aXJ0dWFsIGJvb2wgc3VwcG9ydHNFeHRlbnNpb24oY29uc3QgU3RyaW5nJikgPSAwOwogICAgIHZp
cnR1YWwgU3RyaW5nIGdldEV4dGVuc2lvbnMoKSA9IDA7CkBAIC0xMjMsMTggKzc2LDYgQEAgcHJv
dGVjdGVkOgogCiAgICAgLy8gV2VhayBwb2ludGVyIGJhY2sgdG8gR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0wKICAgICBHcmFwaGljc0NvbnRleHRHTE9wZW5HTCogbV9jb250ZXh0OwotCi0gICAgYm9v
bCBtX2lzTlZJRElBOwotICAgIGJvb2wgbV9pc0FNRDsKLSAgICBib29sIG1faXNJbnRlbDsKLSAg
ICBib29sIG1faXNJbWFnaW5hdGlvbjsKLSAgICBib29sIG1fcmVxdWlyZXNCdWlsdEluRnVuY3Rp
b25FbXVsYXRpb247Ci0gICAgYm9vbCBtX3JlcXVpcmVzUmVzdHJpY3RlZE1heGltdW1UZXh0dXJl
U2l6ZTsKLQotICAgIGJvb2wgbV91c2VJbmRleGVkR2V0U3RyaW5nIHsgZmFsc2UgfTsKLQotICAg
IFN0cmluZyBtX3ZlbmRvcjsKLSAgICBTdHJpbmcgbV9yZW5kZXJlcjsKIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xFUy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMRVMuY3BwCmluZGV4IDM2YzNl
ZjM4Zjk4Yjk5YWYwMTE1MDY5OTE0MjdiYWNlZmNiYjhhYzMuLjExY2U3YzhiMmUxZGI2MzdhNzhk
NzU1YjQ1MWIxNDE1OTNkMDU5YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xFUy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVTLmNwcApA
QCAtNDMsNyArNDMsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBFeHRlbnNpb25zR0xPcGVu
R0xFUzo6RXh0ZW5zaW9uc0dMT3BlbkdMRVMoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqIGNvbnRl
eHQsIGJvb2wgdXNlSW5kZXhlZEdldFN0cmluZykKLSAgICA6IEV4dGVuc2lvbnNHTE9wZW5HTENv
bW1vbihjb250ZXh0LCB1c2VJbmRleGVkR2V0U3RyaW5nKQorICAgIDogRXh0ZW5zaW9uc0dMT3Bl
bkdMQ29tbW9uKGNvbnRleHQpCiAgICAgLCBtX2NvbnRleHRSZXNldFN0YXR1cyhHTF9OT19FUlJP
UikKICAgICAsIG1fc3VwcG9ydHNPRVN2ZXJ0ZXhBcnJheU9iamVjdChmYWxzZSkKICAgICAsIG1f
c3VwcG9ydHNJTUdNdWx0aXNhbXBsZWRSZW5kZXJUb1RleHR1cmUoZmFsc2UpCkBAIC0xMDAsMTEg
KzEwMCw2IEBAIHZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMRVM6OnJlbmRlcmJ1ZmZlclN0b3JhZ2VN
dWx0aXNhbXBsZUlNRyh1bnNpZ25lZCBsb25nIHRhcmdlCiAgICAgICAgIG1fY29udGV4dC0+c3lu
dGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwogfQogCi12b2lkIEV4dGVuc2lv
bnNHTE9wZW5HTEVTOjpibGl0RnJhbWVidWZmZXIobG9uZyAvKiBzcmNYMCAqLywgbG9uZyAvKiBz
cmNZMCAqLywgbG9uZyAvKiBzcmNYMSAqLywgbG9uZyAvKiBzcmNZMSAqLywgbG9uZyAvKiBkc3RY
MCAqLywgbG9uZyAvKiBkc3RZMCAqLywgbG9uZyAvKiBkc3RYMSAqLywgbG9uZyAvKiBkc3RZMSAq
LywgdW5zaWduZWQgbG9uZyAvKiBtYXNrICovLCB1bnNpZ25lZCBsb25nIC8qIGZpbHRlciAqLykK
LXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCiB2b2lkIEV4dGVuc2lvbnNHTE9wZW5HTEVT
OjpyZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUodW5zaWduZWQgbG9uZyB0YXJnZXQsIHVu
c2lnbmVkIGxvbmcgc2FtcGxlcywgdW5zaWduZWQgbG9uZyBpbnRlcm5hbGZvcm1hdCwgdW5zaWdu
ZWQgbG9uZyB3aWR0aCwgdW5zaWduZWQgbG9uZyBoZWlnaHQpCiB7CiAgICAgaWYgKCFtX2NvbnRl
eHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQpAQCAtMTE1LDIxICsxMTAsNiBAQCB2b2lkIEV4dGVu
c2lvbnNHTE9wZW5HTEVTOjpyZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUodW5zaWduZWQg
bG9uZyB0YXJnZXQsCiAgICAgICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLXZvaWQgRXh0ZW5z
aW9uc0dMT3BlbkdMRVM6Omluc2VydEV2ZW50TWFya2VyRVhUKGNvbnN0IFN0cmluZyYpCi17Ci0g
ICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xFUzo6cHVz
aEdyb3VwTWFya2VyRVhUKGNvbnN0IFN0cmluZyYpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsK
LX0KLQotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xFUzo6cG9wR3JvdXBNYXJrZXJFWFQodm9pZCkK
LXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCiBQbGF0Zm9ybUdMT2JqZWN0IEV4dGVuc2lv
bnNHTE9wZW5HTEVTOjpjcmVhdGVWZXJ0ZXhBcnJheU9FUygpCiB7CiAgICAgaWYgKG1fZ2xHZW5W
ZXJ0ZXhBcnJheXNPRVMpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xFUy5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVTLmgKaW5kZXggMDE3YTQ1
YjczOThkMDk5MmVkMTQ3NjdmMDc2N2UwNGI0NjQxNjI4My4uN2VmOTZiMjNjNTk4NjgxZDFkODBh
MTg3NmMxODdiZDEzZmEyMTc1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVTLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVTLmgKQEAgLTcy
LDE0ICs3MiwxMCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgZnJhbWVidWZmZXJUZXh0
dXJlMkRNdWx0aXNhbXBsZUlNRyh1bnNpZ25lZCBsb25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBh
dHRhY2htZW50LCB1bnNpZ25lZCBsb25nIHRleHRhcmdldCwgdW5zaWduZWQgdGV4dHVyZSwgaW50
IGxldmVsLCB1bnNpZ25lZCBsb25nIHNhbXBsZXMpOwogICAgIHZpcnR1YWwgdm9pZCByZW5kZXJi
dWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVJTUcodW5zaWduZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVk
IGxvbmcgc2FtcGxlcywgdW5zaWduZWQgbG9uZyBpbnRlcm5hbGZvcm1hdCwgdW5zaWduZWQgbG9u
ZyB3aWR0aCwgdW5zaWduZWQgbG9uZyBoZWlnaHQpOworICAgIHZvaWQgcmVuZGVyYnVmZmVyU3Rv
cmFnZU11bHRpc2FtcGxlKHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25nIHNhbXBs
ZXMsIHVuc2lnbmVkIGxvbmcgaW50ZXJuYWxmb3JtYXQsIHVuc2lnbmVkIGxvbmcgd2lkdGgsIHVu
c2lnbmVkIGxvbmcgaGVpZ2h0KTsKIAogICAgIC8vIEV4dGVuc2lvbjNEIG1ldGhvZHMKICAgICBi
b29sIGlzRW5hYmxlZChjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKLSAgICB2b2lkIGJsaXRGcmFt
ZWJ1ZmZlcihsb25nIHNyY1gwLCBsb25nIHNyY1kwLCBsb25nIHNyY1gxLCBsb25nIHNyY1kxLCBs
b25nIGRzdFgwLCBsb25nIGRzdFkwLCBsb25nIGRzdFgxLCBsb25nIGRzdFkxLCB1bnNpZ25lZCBs
b25nIG1hc2ssIHVuc2lnbmVkIGxvbmcgZmlsdGVyKSBvdmVycmlkZTsKLSAgICB2b2lkIHJlbmRl
cmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZSh1bnNpZ25lZCBsb25nIHRhcmdldCwgdW5zaWduZWQg
bG9uZyBzYW1wbGVzLCB1bnNpZ25lZCBsb25nIGludGVybmFsZm9ybWF0LCB1bnNpZ25lZCBsb25n
IHdpZHRoLCB1bnNpZ25lZCBsb25nIGhlaWdodCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBpbnNlcnRF
dmVudE1hcmtlckVYVChjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKLSAgICB2b2lkIHB1c2hHcm91
cE1hcmtlckVYVChjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKLSAgICB2b2lkIHBvcEdyb3VwTWFy
a2VyRVhUKHZvaWQpIG92ZXJyaWRlOwogCiAgICAgUGxhdGZvcm1HTE9iamVjdCBjcmVhdGVWZXJ0
ZXhBcnJheU9FUygpIG92ZXJyaWRlOwogICAgIHZvaWQgZGVsZXRlVmVydGV4QXJyYXlPRVMoUGxh
dGZvcm1HTE9iamVjdCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xCYXNlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9w
ZW5HTEJhc2UuY3BwCmluZGV4IDYzNTZmODFmNDgyMWI2YTFlYTZjMzU1N2VkZjFmNGU2ODgxM2Y2
YjkuLjAxZWRmZmJhMDA5OWVkNGU5MDYzM2U3OTgyNmZjYTYyNmY0YjBiNzkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRH
TE9wZW5HTEJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29w
ZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEJhc2UuY3BwCkBAIC02NiwzMiArNjYsMjggQEAg
dm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVhZFBpeGVsc0FuZENvbnZlcnRUb0JHUkFJ
Zk5lY2Vzc2FyeShpbnQgeCwgaW50IHkKICAgICBhdXRvIGF0dHJzID0gY29udGV4dEF0dHJpYnV0
ZXMoKTsKIAogICAgIC8vIE5WSURJQSBkcml2ZXJzIGhhdmUgYSBidWcgd2hlcmUgY2FsbGluZyBy
ZWFkUGl4ZWxzIGluIEJHUkEgY2FuIHJldHVybiB0aGUgd3JvbmcgdmFsdWVzIGZvciB0aGUgYWxw
aGEgY2hhbm5lbCB3aGVuIHRoZSBhbHBoYSBpcyBvZmYgZm9yIHRoZSBjb250ZXh0LgotICAgIGlm
ICghYXR0cnMuYWxwaGEgJiYgZ2V0RXh0ZW5zaW9ucygpLmlzTlZJRElBKCkpIHsKLSAgICAgICAg
OjpnbFJlYWRQaXhlbHMoeCwgeSwgd2lkdGgsIGhlaWdodCwgR0xfUkdCQSwgR0xfVU5TSUdORURf
QllURSwgcGl4ZWxzKTsKKyAgICA6OmdsUmVhZFBpeGVscyh4LCB5LCB3aWR0aCwgaGVpZ2h0LCBH
TF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLCBwaXhlbHMpOwogI2lmIFVTRShBQ0NFTEVSQVRFKQot
ICAgICAgICB2SW1hZ2VfQnVmZmVyIHNyYzsKLSAgICAgICAgc3JjLmhlaWdodCA9IGhlaWdodDsK
LSAgICAgICAgc3JjLndpZHRoID0gd2lkdGg7Ci0gICAgICAgIHNyYy5yb3dCeXRlcyA9IHdpZHRo
ICogNDsKLSAgICAgICAgc3JjLmRhdGEgPSBwaXhlbHM7Ci0KLSAgICAgICAgdkltYWdlX0J1ZmZl
ciBkZXN0OwotICAgICAgICBkZXN0LmhlaWdodCA9IGhlaWdodDsKLSAgICAgICAgZGVzdC53aWR0
aCA9IHdpZHRoOwotICAgICAgICBkZXN0LnJvd0J5dGVzID0gd2lkdGggKiA0OwotICAgICAgICBk
ZXN0LmRhdGEgPSBwaXhlbHM7Ci0KLSAgICAgICAgLy8gU3dhcCBwaXhlbCBjaGFubmVscyBmcm9t
IFJHQkEgdG8gQkdSQS4KLSAgICAgICAgY29uc3QgdWludDhfdCBtYXBbNF0gPSB7IDIsIDEsIDAs
IDMgfTsKLSAgICAgICAgdkltYWdlUGVybXV0ZUNoYW5uZWxzX0FSR0I4ODg4KCZzcmMsICZkZXN0
LCBtYXAsIGt2SW1hZ2VOb0ZsYWdzKTsKKyAgICB2SW1hZ2VfQnVmZmVyIHNyYzsKKyAgICBzcmMu
aGVpZ2h0ID0gaGVpZ2h0OworICAgIHNyYy53aWR0aCA9IHdpZHRoOworICAgIHNyYy5yb3dCeXRl
cyA9IHdpZHRoICogNDsKKyAgICBzcmMuZGF0YSA9IHBpeGVsczsKKworICAgIHZJbWFnZV9CdWZm
ZXIgZGVzdDsKKyAgICBkZXN0LmhlaWdodCA9IGhlaWdodDsKKyAgICBkZXN0LndpZHRoID0gd2lk
dGg7CisgICAgZGVzdC5yb3dCeXRlcyA9IHdpZHRoICogNDsKKyAgICBkZXN0LmRhdGEgPSBwaXhl
bHM7CisKKyAgICAvLyBTd2FwIHBpeGVsIGNoYW5uZWxzIGZyb20gUkdCQSB0byBCR1JBLgorICAg
IGNvbnN0IHVpbnQ4X3QgbWFwWzRdID0geyAyLCAxLCAwLCAzIH07CisgICAgdkltYWdlUGVybXV0
ZUNoYW5uZWxzX0FSR0I4ODg4KCZzcmMsICZkZXN0LCBtYXAsIGt2SW1hZ2VOb0ZsYWdzKTsKICNl
bHNlCi0gICAgICAgIGludCB0b3RhbEJ5dGVzID0gd2lkdGggKiBoZWlnaHQgKiA0OwotICAgICAg
ICBmb3IgKGludCBpID0gMDsgaSA8IHRvdGFsQnl0ZXM7IGkgKz0gNCkKLSAgICAgICAgICAgIHN0
ZDo6c3dhcChwaXhlbHNbaV0sIHBpeGVsc1tpICsgMl0pOworICAgIGludCB0b3RhbEJ5dGVzID0g
d2lkdGggKiBoZWlnaHQgKiA0OworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgdG90YWxCeXRlczsg
aSArPSA0KQorICAgICAgICBzdGQ6OnN3YXAocGl4ZWxzW2ldLCBwaXhlbHNbaSArIDJdKTsKICNl
bmRpZgotICAgIH0gZWxzZQotICAgICAgICA6OmdsUmVhZFBpeGVscyh4LCB5LCB3aWR0aCwgaGVp
Z2h0LCBHTF9CR1JBLCBHTF9VTlNJR05FRF9JTlRfOF84XzhfOF9SRVYsIHBpeGVscyk7Ci0KIH0K
IAogdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmFsaWRhdGVBdHRyaWJ1dGVzKCkKQEAg
LTI5MywxNiArMjg5LDYgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0SW50ZWdl
cnYoR0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xpbnQ+IHZhbHUKICAgICAgICAgfQogICAg
ICAgICBicmVhazsKICNlbmRpZgotICAgIGNhc2UgTUFYX1RFWFRVUkVfU0laRToKLSAgICAgICAg
OjpnbEdldEludGVnZXJ2KE1BWF9URVhUVVJFX1NJWkUsIHZhbHVlLmRhdGEpOwotICAgICAgICBp
ZiAoZ2V0RXh0ZW5zaW9ucygpLnJlcXVpcmVzUmVzdHJpY3RlZE1heGltdW1UZXh0dXJlU2l6ZSgp
KQotICAgICAgICAgICAgKnZhbHVlID0gc3RkOjptaW4oNDA5NiwgKnZhbHVlKTsKLSAgICAgICAg
YnJlYWs7Ci0gICAgY2FzZSBNQVhfQ1VCRV9NQVBfVEVYVFVSRV9TSVpFOgotICAgICAgICA6Omds
R2V0SW50ZWdlcnYoTUFYX0NVQkVfTUFQX1RFWFRVUkVfU0laRSwgdmFsdWUuZGF0YSk7Ci0gICAg
ICAgIGlmIChnZXRFeHRlbnNpb25zKCkucmVxdWlyZXNSZXN0cmljdGVkTWF4aW11bVRleHR1cmVT
aXplKCkpCi0gICAgICAgICAgICAqdmFsdWUgPSBzdGQ6Om1pbigxMDI0LCAqdmFsdWUpOwotICAg
ICAgICBicmVhazsKICAgICBkZWZhdWx0OgogICAgICAgICA6OmdsR2V0SW50ZWdlcnYocG5hbWUs
IHZhbHVlLmRhdGEpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEVTLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEVT
LmNwcAppbmRleCAyM2Q3NGZhODBkNzA3OTFiZTYwMGRmNThlNzU2MTczMzk2YWE1NTA1Li5lN2I4
Y2M1YmI4ZTAzMmE2Y2QxNGIwNDBiM2Y1YjJlOGMxMjJlYzIxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xF
Uy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBo
aWNzQ29udGV4dEdMT3BlbkdMRVMuY3BwCkBAIC0xMTksNyArMTE5LDcgQEAgYm9vbCBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6cmVzaGFwZUZCT3MoY29uc3QgSW50U2l6ZSYgc2l6ZSkKICNlbmRp
ZgogCiAgICAgRXh0ZW5zaW9uc0dMT3BlbkdMRVMmIGV4dGVuc2lvbnMgPSBzdGF0aWNfY2FzdDxF
eHRlbnNpb25zR0xPcGVuR0xFUyY+KGdldEV4dGVuc2lvbnMoKSk7Ci0gICAgaWYgKGV4dGVuc2lv
bnMuaXNJbWFnaW5hdGlvbigpICYmIGF0dHJpYnV0ZXMuYW50aWFsaWFzKSB7CisgICAgaWYgKGF0
dHJpYnV0ZXMuYW50aWFsaWFzKSB7CiAgICAgICAgIEdMaW50IG1heFNhbXBsZUNvdW50OwogICAg
ICAgICA6OmdsR2V0SW50ZWdlcnYoRXh0ZW5zaW9uc0dMOjpNQVhfU0FNUExFU19JTUcsICZtYXhT
YW1wbGVDb3VudCk7IAogICAgICAgICBHTGludCBzYW1wbGVDb3VudCA9IHN0ZDo6bWluKDgsIG1h
eFNhbXBsZUNvdW50KTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>415338</attachid>
            <date>2020-12-03 13:50:31 -0800</date>
            <delta_ts>2020-12-03 14:56:32 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-218896-20201203135029.patch</filename>
            <type>text/plain</type>
            <size>58670</size>
            <attacher name="Rini Patel">rini_patel</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwMjU1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTg2NmY3ODkzZWY2Njhh
Y2ZhOWQ1M2Q1YmEzMGE2ZjMxOGFlMDM3Ny4uYWQ1Mjc0ZmU5Mjk4MTcyMTc4M2YzZTIyYTJmNjM2
Yzg3OTJiMTcxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDIwLTExLTMwICBSaW5p
IFBhdGVsICA8cmluaV9wYXRlbEBhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3ZlIHVudXNlZCBm
dW5jdGlvbnMgZnJvbSBHcmFwaGljc0NvbnRleHRHTCBhbmQgRXh0ZW5zaW9uc0dMCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTg4OTYKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW1vdmUgdW51c2VkIGZ1
bmN0aW9ucyBmcm9tIEdyYXBoaWNzQ29udGV4dEdMIGFuZCBFeHRlbnNpb25zR0wKKyAgICAgICAg
VGhleSdyZSBkZWFkIGNvZGUgYW5kIG1ha2UgaXQgaGFyZGVyIHRvIGltcGxlbWVudCB0aGUgR1BV
IFByb2Nlc3MgdmVyc2lvbi4KKworICAgICAgICAtIElmIHRoZSBmdW5jdGlvbiBpcyB1bnVzZWQs
IHJlbW92ZSBpdCBmdWxseQorICAgICAgICAtIElmIHRoZSBmdW5jdGlvbiBpcyB1bnVzZWQgaW4g
VVNFKEFOR0xFKSBXZWJHTCBwYXJ0LCByZW1vdmUgdGhlIGZ1bmN0aW9uIGZyb20gR3JhcGhpY3ND
b250ZXh0R0wgYW5kIEFOR0xFIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMCisKKyAgICAgICAgKiBo
dG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvRXh0ZW5zaW9uc0dMLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
YW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9u
c0dMQU5HTEU6OkV4dGVuc2lvbnNHTEFOR0xFKToKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lv
bnNHTEFOR0xFOjppbml0aWFsaXplQXZhaWxhYmxlRXh0ZW5zaW9ucyk6CisgICAgICAgIChXZWJD
b3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6YmxpdEZyYW1lYnVmZmVyKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpyZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlz
YW1wbGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6Omlu
c2VydEV2ZW50TWFya2VyRVhUKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lv
bnNHTEFOR0xFOjpwdXNoR3JvdXBNYXJrZXJFWFQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OnBvcEdyb3VwTWFya2VyRVhUKTogRGVsZXRlZC4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRlbnNpb25zR0xBTkdMRS5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMOjpibGl0RnJhbWVidWZmZXIpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMOjpyZW5kZXJidWZmZXJT
dG9yYWdlTXVsdGlzYW1wbGUpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMRVMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXh0
ZW5zaW9uc0dMT3BlbkdMRVM6OmJsaXRGcmFtZWJ1ZmZlcik6IERlbGV0ZWQuCisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVTLmg6CisKIDIwMjAt
MTEtMzAgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIE1pc3Np
bmcgV2ViUlRDIE1ldHJpY3MgaW4gaU9TIDE0IEJldGEgNQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcAppbmRleCA1
NTc4NGUxYTMzZWMwNWI0MDI5NTMxMGY2ZWIwZTdjZTBhNWU5OGRkLi40NmMxMjA0Y2YwNDA5YmY1
MjQ1M2I0ZDdmMGY1YmE4MDcxY2E2NDZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcApAQCAtNzQyLDggKzc0
Miw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlPiBXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlOjpjcmVhdGUoQ2FuCiAgICAgfQogCiAgICAgYXV0byYgZXh0ZW5z
aW9ucyA9IGNvbnRleHQtPmdldEV4dGVuc2lvbnMoKTsKLSAgICBpZiAoZXh0ZW5zaW9ucy5zdXBw
b3J0cygiR0xfRVhUX2RlYnVnX21hcmtlciJfcykpCi0gICAgICAgIGV4dGVuc2lvbnMucHVzaEdy
b3VwTWFya2VyRVhUKCJXZWJHTFJlbmRlcmluZ0NvbnRleHQiX3MpOworICAgIGlmIChleHRlbnNp
b25zLnN1cHBvcnRzKCJHTF9FWFRfZGVidWdfbWFya2VyIl9zKSkgeyB9CiAKICAgICBzdGQ6OnVu
aXF1ZV9wdHI8V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZT4gcmVuZGVyaW5nQ29udGV4dDsKICNp
ZiBFTkFCTEUoV0VCR0wyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvRXh0ZW5zaW9uc0dMLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9F
eHRlbnNpb25zR0wuaAppbmRleCAwNmMxMjExMjdlMjJkMTNlNmJlMzg2YjhlYmJhNzZjNjcxMTZh
MTNkLi4wMzNkZjE1ZjQxMTE1MjQ4MjQ5ZDM4MmU2MGFmODMyNDVhZGU0MDk3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9FeHRlbnNpb25zR0wuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9FeHRlbnNpb25zR0wuaApAQCAtMjc1LDEy
ICsyNzUsNiBAQCBwdWJsaWM6CiAgICAgLy8gZXh0ZXJuYWxseS4KICAgICB2aXJ0dWFsIEdDR0xp
bnQgZ2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQigpID0gMDsKIAotICAgIC8vIEdMX0FOR0xFX2Zy
YW1lYnVmZmVyX2JsaXQKLSAgICB2aXJ0dWFsIHZvaWQgYmxpdEZyYW1lYnVmZmVyKGxvbmcgc3Jj
WDAsIGxvbmcgc3JjWTAsIGxvbmcgc3JjWDEsIGxvbmcgc3JjWTEsIGxvbmcgZHN0WDAsIGxvbmcg
ZHN0WTAsIGxvbmcgZHN0WDEsIGxvbmcgZHN0WTEsIHVuc2lnbmVkIGxvbmcgbWFzaywgdW5zaWdu
ZWQgbG9uZyBmaWx0ZXIpID0gMDsKLQotICAgIC8vIEdMX0FOR0xFX2ZyYW1lYnVmZmVyX211bHRp
c2FtcGxlCi0gICAgdmlydHVhbCB2b2lkIHJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZSh1
bnNpZ25lZCBsb25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBzYW1wbGVzLCB1bnNpZ25lZCBsb25n
IGludGVybmFsZm9ybWF0LCB1bnNpZ25lZCBsb25nIHdpZHRoLCB1bnNpZ25lZCBsb25nIGhlaWdo
dCkgPSAwOwotCiAgICAgLy8gR0xfT0VTX3ZlcnRleF9hcnJheV9vYmplY3QKICAgICB2aXJ0dWFs
IFBsYXRmb3JtR0xPYmplY3QgY3JlYXRlVmVydGV4QXJyYXlPRVMoKSA9IDA7CiAgICAgdmlydHVh
bCB2b2lkIGRlbGV0ZVZlcnRleEFycmF5T0VTKFBsYXRmb3JtR0xPYmplY3QpID0gMDsKQEAgLTI5
MCwxMSArMjg0LDYgQEAgcHVibGljOgogICAgIC8vIEdMX0FOR0xFX3RyYW5zbGF0ZWRfc2hhZGVy
X3NvdXJjZQogICAgIHZpcnR1YWwgU3RyaW5nIGdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdM
RShQbGF0Zm9ybUdMT2JqZWN0KSA9IDA7CiAKLSAgICAvLyBHTF9FWFRfZGVidWdfbWFya2VyCi0g
ICAgdmlydHVhbCB2b2lkIGluc2VydEV2ZW50TWFya2VyRVhUKGNvbnN0IFN0cmluZyYpID0gMDsK
LSAgICB2aXJ0dWFsIHZvaWQgcHVzaEdyb3VwTWFya2VyRVhUKGNvbnN0IFN0cmluZyYpID0gMDsK
LSAgICB2aXJ0dWFsIHZvaWQgcG9wR3JvdXBNYXJrZXJFWFQodm9pZCkgPSAwOwotCiAgICAgLy8g
R0xfQVJCX2RyYXdfYnVmZmVycyAvIEdMX0VYVF9kcmF3X2J1ZmZlcnMKICAgICB2aXJ0dWFsIHZv
aWQgZHJhd0J1ZmZlcnNFWFQoR0NHTFNwYW48Y29uc3QgR0NHTGVudW0+IGJ1ZnMpID0gMDsKIApA
QCAtMzAzLDQ4ICsyOTIsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRyYXdFbGVtZW50
c0luc3RhbmNlZChHQ0dMZW51bSBtb2RlLCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xlbnVtIHR5cGUs
IGxvbmcgbG9uZyBvZmZzZXQsIEdDR0xzaXplaSBwcmltY291bnQpID0gMDsKICAgICB2aXJ0dWFs
IHZvaWQgdmVydGV4QXR0cmliRGl2aXNvcihHQ0dMdWludCBpbmRleCwgR0NHTHVpbnQgZGl2aXNv
cikgPSAwOwogCi0gICAgLy8gR0xfQU5HTEVfcm9idXN0X2NsaWVudF9tZW1vcnkKLSAgICB2aXJ0
dWFsIHZvaWQgcmVhZFBpeGVsc1JvYnVzdEFOR0xFKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dM
c2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0g
dHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMc2l6ZWkqIGNv
bHVtbnMsIEdDR0xzaXplaSogcm93cywgR0NHTHZvaWQqIHBpeGVscykgPSAwOwotICAgIHZpcnR1
YWwgdm9pZCB0ZXhQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVu
dW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMZmxvYXQqIHBhcmFtcykgPSAw
OwotICAgIHZpcnR1YWwgdm9pZCB0ZXhQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRh
cmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMaW50KiBw
YXJhbXMpID0gMDsKLQotICAgIHZpcnR1YWwgdm9pZCBnZXRRdWVyeWl2Um9idXN0QU5HTEUoR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXpl
aSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0UXVl
cnlPYmplY3R1aXZSb2J1c3RBTkdMRShHQ0dMdWludCBpZCwgR0NHTGVudW0gcG5hbWUsIEdDR0xz
aXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHVpbnQqIHBhcmFtcykgPSAwOwot
ICAgIHZpcnR1YWwgdm9pZCBnZXRCdWZmZXJQb2ludGVydlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRh
cmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0
aCwgR0NHTHZvaWQqKiBwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0SW50ZXJuYWxm
b3JtYXRpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gaW50ZXJuYWxmb3Jt
YXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgs
IEdDR0xpbnQqIHBhcmFtcykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJJ
aXZSb2J1c3RBTkdMRShHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBi
dWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1zKSA9IDA7Ci0gICAgdmly
dHVhbCB2b2lkIGdldFZlcnRleEF0dHJpYkl1aXZSb2J1c3RBTkdMRShHQ0dMdWludCBpbmRleCwg
R0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NH
THVpbnQqIHBhcmFtcykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRVbmlmb3JtdWl2Um9idXN0
QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNp
emUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMdWludCogcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVh
bCB2b2lkIGdldEJ1ZmZlclBhcmFtZXRlcmk2NHZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQs
IEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdD
R0xpbnQ2NCogcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHNhbXBsZXJQYXJhbWV0ZXJp
dlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkg
YnVmU2l6ZSwgY29uc3QgR0NHTGludCogcGFyYW0pID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgc2Ft
cGxlclBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5h
bWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMZmxvYXQqIHBhcmFtKSA9IDA7Ci0gICAg
dmlydHVhbCB2b2lkIGdldFNhbXBsZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNh
bXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5n
dGgsIEdDR0xpbnQqIHBhcmFtcykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRTYW1wbGVyUGFy
YW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NH
THNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMZmxvYXQqIHBhcmFtcykgPSAw
OwotCi0gICAgdmlydHVhbCB2b2lkIGdldEZyYW1lYnVmZmVyUGFyYW1ldGVyaXZSb2J1c3RBTkdM
RShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NH
THNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBn
ZXRQcm9ncmFtSW50ZXJmYWNlaXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMZW51
bSBwcm9ncmFtSW50ZXJmYWNlLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdD
R0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQg
Z2V0Qm9vbGVhbmlfdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTHVpbnQgaW5kZXgs
IEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGJvb2xlYW4qIGRhdGEp
ID0gMDsgLy8gTk9MSU5UCi0gICAgdmlydHVhbCB2b2lkIGdldE11bHRpc2FtcGxlZnZSb2J1c3RB
TkdMRShHQ0dMZW51bSBwbmFtZSwgR0NHTHVpbnQgaW5kZXgsIEdDR0xzaXplaSBidWZTaXplLCBH
Q0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGZsb2F0KiB2YWwpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQg
Z2V0VGV4TGV2ZWxQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGlu
dCBsZXZlbCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxl
bmd0aCwgR0NHTGludCogcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldFRleExldmVs
UGFyYW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdD
R0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xm
bG9hdCogcGFyYW1zKSA9IDA7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgZ2V0UG9pbnRlcnZSb2J1c3RB
TkdMRVJvYnVzdEFOR0xFKEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNp
emVpKiBsZW5ndGgsIEdDR0x2b2lkKiogcGFyYW1zKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHJl
YWRuUGl4ZWxzUm9idXN0QU5HTEUoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0
aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dM
c2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xzaXplaSogY29sdW1ucywgR0NH
THNpemVpKiByb3dzLCBHQ0dMdm9pZCogZGF0YSwgYm9vbCByZWFkaW5nVG9QaXhlbEJ1ZmZlck9i
amVjdCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRuVW5pZm9ybWZ2Um9idXN0QU5HTEUoR0NH
THVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xz
aXplaSogbGVuZ3RoLCBHQ0dMZmxvYXQqIHBhcmFtcykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBn
ZXRuVW5pZm9ybWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlv
biwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMp
ID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0blVuaWZvcm11aXZSb2J1c3RBTkdMRShHQ0dMdWlu
dCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVp
KiBsZW5ndGgsIEdDR0x1aW50KiBwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgdGV4UGFy
YW1ldGVySWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NH
THNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xpbnQqIHBhcmFtcykgPSAwOwotICAgIHZpcnR1YWwg
dm9pZCB0ZXhQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51
bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0x1aW50KiBwYXJhbXMpID0gMDsK
LSAgICB2aXJ0dWFsIHZvaWQgZ2V0VGV4UGFyYW1ldGVySWl2Um9idXN0QU5HTEUoR0NHTGVudW0g
dGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVu
Z3RoLCBHQ0dMaW50KiBwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0VGV4UGFyYW1l
dGVySXVpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xz
aXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHVpbnQqIHBhcmFtcykgPSAwOwot
ICAgIHZpcnR1YWwgdm9pZCBzYW1wbGVyUGFyYW1ldGVySWl2Um9idXN0QU5HTEUoR0NHTHVpbnQg
c2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMaW50
KiBwYXJhbSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBzYW1wbGVyUGFyYW1ldGVySXVpdlJvYnVz
dEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6
ZSwgY29uc3QgR0NHTHVpbnQqIHBhcmFtKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldFNhbXBs
ZXJQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFt
ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMp
ID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0U2FtcGxlclBhcmFtZXRlckl1aXZSb2J1c3RBTkdM
RShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdD
R0xzaXplaSogbGVuZ3RoLCBHQ0dMdWludCogcGFyYW1zKSA9IDA7Ci0KLSAgICB2aXJ0dWFsIHZv
aWQgZ2V0UXVlcnlPYmplY3RpdlJvYnVzdEFOR0xFKEdDR0x1aW50IGlkLCBHQ0dMZW51bSBwbmFt
ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMp
ID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0UXVlcnlPYmplY3RpNjR2Um9idXN0QU5HTEUoR0NH
THVpbnQgaWQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBs
ZW5ndGgsIEdDR0xpbnQ2NCogcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldFF1ZXJ5
T2JqZWN0dWk2NHZSb2J1c3RBTkdMRShHQ0dMdWludCBpZCwgR0NHTGVudW0gcG5hbWUsIEdDR0xz
aXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHVpbnQ2NCogcGFyYW1zKSA9IDA7
CiAKICAgICAvLyBPdGhlciBmdW5jdGlvbnMuCiAjaWYgIVVTRShBTkdMRSkKQEAgLTM1MywxOCAr
MzAxLDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBnZXRuVW5pZm9ybWZ2RVhUKEdDR0x1
aW50IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMZmxv
YXQqIHBhcmFtcykgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBnZXRuVW5pZm9ybWl2RVhUKEdDR0x1
aW50IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMaW50
KiBwYXJhbXMpID0gMDsKICNlbmRpZgotCi0gICAgdmlydHVhbCBib29sIGlzTlZJRElBKCkgPSAw
OwotICAgIHZpcnR1YWwgYm9vbCBpc0FNRCgpID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgaXNJbnRl
bCgpID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgaXNJbWFnaW5hdGlvbigpID0gMDsKLSAgICB2aXJ0
dWFsIFN0cmluZyB2ZW5kb3IoKSA9IDA7Ci0KLSAgICAvLyBTb21lIGNvbmZpZ3VyYXRpb25zIGhh
dmUgYnVncyByZWdhcmRpbmcgYnVpbHQtaW4gZnVuY3Rpb25zIGluIHRoZWlyIE9wZW5HTCBkcml2
ZXJzCi0gICAgLy8gdGhhdCBtdXN0IGJlIGF2b2lkZWQuIFBvcnRzIHNob3VsZCBpbXBsZW1lbnQg
dGhlc2UgZmxhZ3Mgb24gc3VjaCBjb25maWd1cmF0aW9ucy4KLSAgICB2aXJ0dWFsIGJvb2wgcmVx
dWlyZXNCdWlsdEluRnVuY3Rpb25FbXVsYXRpb24oKSA9IDA7Ci0gICAgdmlydHVhbCBib29sIHJl
cXVpcmVzUmVzdHJpY3RlZE1heGltdW1UZXh0dXJlU2l6ZSgpID0gMDsKLQogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUuY3BwCmluZGV4IDI4M2RhODJjNmE2
MDJlYTRiNTU3YzY4NmNmZDgyM2QwODFjNTVlNGEuLjM0NWMyNjZhNGEwNmUwMmE4MWNmY2ZkMjg3
NzM1ZDRhOWUxNjE4N2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRlbnNpb25zR0xBTkdMRS5jcHAKQEAgLTQzLDMxICs0Mywx
MCBAQCB0eXBlZGVmIHZvaWQqIEdMZWdsQ29udGV4dDsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1FeHRlbnNpb25zR0xBTkdMRTo6RXh0ZW5zaW9uc0dMQU5HTEUoR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0wqIGNvbnRleHQsIGJvb2wgdXNlSW5kZXhlZEdldFN0cmluZykKK0V4dGVuc2lvbnNHTEFO
R0xFOjpFeHRlbnNpb25zR0xBTkdMRShHcmFwaGljc0NvbnRleHRHTE9wZW5HTCogY29udGV4dCkK
ICAgICA6IG1faW5pdGlhbGl6ZWRBdmFpbGFibGVFeHRlbnNpb25zKGZhbHNlKQogICAgICwgbV9j
b250ZXh0KGNvbnRleHQpCi0gICAgLCBtX2lzTlZJRElBKGZhbHNlKQotICAgICwgbV9pc0FNRChm
YWxzZSkKLSAgICAsIG1faXNJbnRlbChmYWxzZSkKLSAgICAsIG1faXNJbWFnaW5hdGlvbihmYWxz
ZSkKLSAgICAsIG1fcmVxdWlyZXNCdWlsdEluRnVuY3Rpb25FbXVsYXRpb24oZmFsc2UpCi0gICAg
LCBtX3JlcXVpcmVzUmVzdHJpY3RlZE1heGltdW1UZXh0dXJlU2l6ZShmYWxzZSkKLSAgICAsIG1f
dXNlSW5kZXhlZEdldFN0cmluZyh1c2VJbmRleGVkR2V0U3RyaW5nKQogewotICAgIC8vIEZJWE1F
OiBpZGVhbGx5LCByZW1vdmUgdGhpcyBpbml0aWFsaXphdGlvbiBhbHRvZ2V0aGVyLiBBTkdMRQot
ICAgIC8vIHN1YnN1bWVzIHRoZSByZXNwb25zaWJpbGl0eSBmb3IgZ3JhcGhpY3MgZHJpdmVyIHdv
cmthcm91bmRzLgotICAgIG1fdmVuZG9yID0gU3RyaW5nKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
Y2hhcio+KGdsOjpHZXRTdHJpbmcoR0xfVkVORE9SKSkpOwotICAgIG1fcmVuZGVyZXIgPSBTdHJp
bmcocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZ2w6OkdldFN0cmluZyhHTF9SRU5ERVJF
UikpKTsKLQotICAgIFZlY3RvcjxTdHJpbmc+IHZlbmRvckNvbXBvbmVudHMgPSBtX3ZlbmRvci5j
b252ZXJ0VG9BU0NJSUxvd2VyY2FzZSgpLnNwbGl0KCcgJyk7Ci0gICAgaWYgKHZlbmRvckNvbXBv
bmVudHMuY29udGFpbnMoIm52aWRpYSIpKQotICAgICAgICBtX2lzTlZJRElBID0gdHJ1ZTsKLSAg
ICBpZiAodmVuZG9yQ29tcG9uZW50cy5jb250YWlucygiYXRpIikgfHwgdmVuZG9yQ29tcG9uZW50
cy5jb250YWlucygiYW1kIikpCi0gICAgICAgIG1faXNBTUQgPSB0cnVlOwotICAgIGlmICh2ZW5k
b3JDb21wb25lbnRzLmNvbnRhaW5zKCJpbnRlbCIpKQotICAgICAgICBtX2lzSW50ZWwgPSB0cnVl
OwotICAgIGlmICh2ZW5kb3JDb21wb25lbnRzLmNvbnRhaW5zKCJpbWFnaW5hdGlvbiIpKQotICAg
ICAgICBtX2lzSW1hZ2luYXRpb24gPSB0cnVlOwogfQogCiBFeHRlbnNpb25zR0xBTkdMRTo6fkV4
dGVuc2lvbnNHTEFOR0xFKCkgPSBkZWZhdWx0OwpAQCAtMTI4LDQyICsxMDcsMTUgQEAgU3RyaW5n
IEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUoUGxhdGZv
cm1HTE9iamVjdCBzaGFkZXIKIAogdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6aW5pdGlhbGl6ZUF2
YWlsYWJsZUV4dGVuc2lvbnMoKQogewotICAgIGlmIChtX3VzZUluZGV4ZWRHZXRTdHJpbmcpIHsK
LSAgICAgICAgR0xpbnQgbnVtRXh0ZW5zaW9ucyA9IDA7Ci0gICAgICAgIGdsOjpHZXRJbnRlZ2Vy
dihHTF9OVU1fRVhURU5TSU9OUywgJm51bUV4dGVuc2lvbnMpOwotICAgICAgICBmb3IgKEdMaW50
IGkgPSAwOyBpIDwgbnVtRXh0ZW5zaW9uczsgKytpKQotICAgICAgICAgICAgbV9hdmFpbGFibGVF
eHRlbnNpb25zLmFkZChnbDo6R2V0U3RyaW5naShHTF9FWFRFTlNJT05TLCBpKSk7Ci0gICAgICAg
IGdsOjpHZXRJbnRlZ2VydihHTF9OVU1fUkVRVUVTVEFCTEVfRVhURU5TSU9OU19BTkdMRSwgJm51
bUV4dGVuc2lvbnMpOwotICAgICAgICBmb3IgKEdMaW50IGkgPSAwOyBpIDwgbnVtRXh0ZW5zaW9u
czsgKytpKQotICAgICAgICAgICAgbV9yZXF1ZXN0YWJsZUV4dGVuc2lvbnMuYWRkKGdsOjpHZXRT
dHJpbmdpKEdMX1JFUVVFU1RBQkxFX0VYVEVOU0lPTlNfQU5HTEUsIGkpKTsKLSAgICB9IGVsc2Ug
ewotICAgICAgICBTdHJpbmcgZXh0ZW5zaW9uc1N0cmluZyA9IGdldEV4dGVuc2lvbnMoKTsKLSAg
ICAgICAgZm9yIChhdXRvJiBleHRlbnNpb24gOiBleHRlbnNpb25zU3RyaW5nLnNwbGl0KCcgJykp
Ci0gICAgICAgICAgICBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuYWRkKGV4dGVuc2lvbik7Ci0gICAg
ICAgIGV4dGVuc2lvbnNTdHJpbmcgPSBTdHJpbmcocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFy
Kj4oZ2w6OkdldFN0cmluZyhHTF9SRVFVRVNUQUJMRV9FWFRFTlNJT05TX0FOR0xFKSkpOwotICAg
ICAgICBmb3IgKGF1dG8mIGV4dGVuc2lvbiA6IGV4dGVuc2lvbnNTdHJpbmcuc3BsaXQoJyAnKSkK
LSAgICAgICAgICAgIG1fcmVxdWVzdGFibGVFeHRlbnNpb25zLmFkZChleHRlbnNpb24pOwotICAg
IH0KKyAgICBTdHJpbmcgZXh0ZW5zaW9uc1N0cmluZyA9IGdldEV4dGVuc2lvbnMoKTsKKyAgICBm
b3IgKGF1dG8mIGV4dGVuc2lvbiA6IGV4dGVuc2lvbnNTdHJpbmcuc3BsaXQoJyAnKSkKKyAgICAg
ICAgbV9hdmFpbGFibGVFeHRlbnNpb25zLmFkZChleHRlbnNpb24pOworICAgIGV4dGVuc2lvbnNT
dHJpbmcgPSBTdHJpbmcocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZ2w6OkdldFN0cmlu
ZyhHTF9SRVFVRVNUQUJMRV9FWFRFTlNJT05TX0FOR0xFKSkpOworICAgIGZvciAoYXV0byYgZXh0
ZW5zaW9uIDogZXh0ZW5zaW9uc1N0cmluZy5zcGxpdCgnICcpKQorICAgICAgICBtX3JlcXVlc3Rh
YmxlRXh0ZW5zaW9ucy5hZGQoZXh0ZW5zaW9uKTsKICAgICBtX2luaXRpYWxpemVkQXZhaWxhYmxl
RXh0ZW5zaW9ucyA9IHRydWU7CiB9CiAKLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmJsaXRGcmFt
ZWJ1ZmZlcihsb25nIHNyY1gwLCBsb25nIHNyY1kwLCBsb25nIHNyY1gxLCBsb25nIHNyY1kxLCBs
b25nIGRzdFgwLCBsb25nIGRzdFkwLCBsb25nIGRzdFgxLCBsb25nIGRzdFkxLCB1bnNpZ25lZCBs
b25nIG1hc2ssIHVuc2lnbmVkIGxvbmcgZmlsdGVyKQotewotICAgIC8vIEZJWE1FOiBjb25zaWRl
ciBhZGRpbmcgc3VwcG9ydCBmb3IgQVBQTEVfZnJhbWVidWZmZXJfbXVsdGlzYW1wbGUuCi0gICAg
aWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0K
LSAgICBnbDo6QmxpdEZyYW1lYnVmZmVyQU5HTEUoc3JjWDAsIHNyY1kwLCBzcmNYMSwgc3JjWTEs
IGRzdFgwLCBkc3RZMCwgZHN0WDEsIGRzdFkxLCBtYXNrLCBmaWx0ZXIpOwotfQotCi12b2lkIEV4
dGVuc2lvbnNHTEFOR0xFOjpyZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUodW5zaWduZWQg
bG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgc2FtcGxlcywgdW5zaWduZWQgbG9uZyBpbnRlcm5h
bGZvcm1hdCwgdW5zaWduZWQgbG9uZyB3aWR0aCwgdW5zaWduZWQgbG9uZyBoZWlnaHQpCi17Ci0g
ICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47
Ci0KLSAgICBnbDo6UmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5HTEUodGFyZ2V0LCBz
YW1wbGVzLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCk7Ci19Ci0KIFBsYXRmb3JtR0xP
YmplY3QgRXh0ZW5zaW9uc0dMQU5HTEU6OmNyZWF0ZVZlcnRleEFycmF5T0VTKCkKIHsKICAgICBp
ZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCkBAIC0yMDQsMjQgKzE1Niw2IEBA
IHZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmJpbmRWZXJ0ZXhBcnJheU9FUyhQbGF0Zm9ybUdMT2Jq
ZWN0IGFycmF5KQogICAgIGdsOjpCaW5kVmVydGV4QXJyYXlPRVMoYXJyYXkpOwogfQogCi12b2lk
IEV4dGVuc2lvbnNHTEFOR0xFOjppbnNlcnRFdmVudE1hcmtlckVYVChjb25zdCBTdHJpbmcmKQot
ewotICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQgdGhpcyBmdW5jdGlvbiBhbmQgYWRkIEdMX0VYVF9k
ZWJ1Z19tYXJrZXIgaW4gc3VwcG9ydHMoKS4KLSAgICByZXR1cm47Ci19Ci0KLXZvaWQgRXh0ZW5z
aW9uc0dMQU5HTEU6OnB1c2hHcm91cE1hcmtlckVYVChjb25zdCBTdHJpbmcmKQotewotICAgIC8v
IEZJWE1FOiBpbXBsZW1lbnQgdGhpcyBmdW5jdGlvbiBhbmQgYWRkIEdMX0VYVF9kZWJ1Z19tYXJr
ZXIgaW4gc3VwcG9ydHMoKS4KLSAgICByZXR1cm47Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5H
TEU6OnBvcEdyb3VwTWFya2VyRVhUKHZvaWQpCi17Ci0gICAgLy8gRklYTUU6IGltcGxlbWVudCB0
aGlzIGZ1bmN0aW9uIGFuZCBhZGQgR0xfRVhUX2RlYnVnX21hcmtlciBpbiBzdXBwb3J0cygpLgot
ICAgIHJldHVybjsKLX0KLQogYm9vbCBFeHRlbnNpb25zR0xBTkdMRTo6c3VwcG9ydHNFeHRlbnNp
b24oY29uc3QgU3RyaW5nJiBuYW1lKQogewogICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lv
bnMuY29udGFpbnMobmFtZSkgfHwgbV9yZXF1ZXN0YWJsZUV4dGVuc2lvbnMuY29udGFpbnMobmFt
ZSk7CkBAIC0yNzgsMTgzICsyMTIsNiBAQCBHQ0dMZW51bSBFeHRlbnNpb25zR0xBTkdMRTo6YWRq
dXN0V2ViR0wxVGV4dHVyZUludGVybmFsRm9ybWF0KEdDR0xlbnVtIGludGVybmFsZgogfQogCiAv
LyBHTF9BTkdMRV9yb2J1c3RfY2xpZW50X21lbW9yeQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6
cmVhZFBpeGVsc1JvYnVzdEFOR0xFKGludCB4LCBpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dM
c2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBi
dWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHNpemVpICpjb2x1bW5zLCBHQ0dMc2l6ZWkg
KnJvd3MsIHZvaWQgKnBpeGVscykKLXsKLSAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRD
dXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpSZWFkUGl4ZWxzUm9idXN0QU5H
TEUoeCwgeSwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBidWZTaXplLCBsZW5ndGgsIGNv
bHVtbnMsIHJvd3MsIHBpeGVscyk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OnRleFBh
cmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NH
THNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xmbG9hdCAqcGFyYW1zKQotewotICAgIGlmICghbV9j
b250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6
OlRleFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUodGFyZ2V0LCBwbmFtZSwgYnVmU2l6ZSwgcGFyYW1z
KTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6dGV4UGFyYW1ldGVyaXZSb2J1c3RBTkdM
RShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29u
c3QgR0NHTGludCAqcGFyYW1zKQotewotICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1
cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OlRleFBhcmFtZXRlcml2Um9idXN0
QU5HTEUodGFyZ2V0LCBwbmFtZSwgYnVmU2l6ZSwgcGFyYW1zKTsKLX0KLQotdm9pZCBFeHRlbnNp
b25zR0xBTkdMRTo6Z2V0UXVlcnlpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVu
dW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAq
cGFyYW1zKQotewotICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAg
ICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OkdldFF1ZXJ5aXZSb2J1c3RBTkdMRSh0YXJnZXQsIHBu
YW1lLCBidWZTaXplLCBsZW5ndGgsIHBhcmFtcyk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5H
TEU6OmdldFF1ZXJ5T2JqZWN0dWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgaWQsIEdDR0xlbnVtIHBu
YW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0x1aW50ICpwYXJh
bXMpCi17Ci0gICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAg
ICByZXR1cm47Ci0KLSAgICBnbDo6R2V0UXVlcnlPYmplY3R1aXZSb2J1c3RBTkdMRShpZCwgcG5h
bWUsIGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1zKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdM
RTo6Z2V0QnVmZmVyUG9pbnRlcnZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVt
IHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIHZvaWQgKipwYXJh
bXMpCi17Ci0gICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAg
ICByZXR1cm47Ci0KLSAgICBnbDo6R2V0QnVmZmVyUG9pbnRlcnZSb2J1c3RBTkdMRSh0YXJnZXQs
IHBuYW1lLCBidWZTaXplLCBsZW5ndGgsIHBhcmFtcyk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dM
QU5HTEU6OmdldEludGVybmFsZm9ybWF0aXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdD
R0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUs
IEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpCi17Ci0gICAgaWYgKCFtX2NvbnRl
eHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6R2V0
SW50ZXJuYWxmb3JtYXRpdlJvYnVzdEFOR0xFKHRhcmdldCwgaW50ZXJuYWxmb3JtYXQsIHBuYW1l
LCBidWZTaXplLCBsZW5ndGgsIHBhcmFtcyk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6
OmdldFZlcnRleEF0dHJpYklpdlJvYnVzdEFOR0xFKEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBw
bmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJh
bXMpCi17Ci0gICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAg
ICByZXR1cm47Ci0KLSAgICBnbDo6R2V0VmVydGV4QXR0cmliSWl2Um9idXN0QU5HTEUoaW5kZXgs
IHBuYW1lLCBidWZTaXplLCBsZW5ndGgsIHBhcmFtcyk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dM
QU5HTEU6OmdldFZlcnRleEF0dHJpYkl1aXZSb2J1c3RBTkdMRShHQ0dMdWludCBpbmRleCwgR0NH
TGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHVp
bnQgKnBhcmFtcykKLXsKLSAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkp
Ci0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpHZXRWZXJ0ZXhBdHRyaWJJdWl2Um9idXN0QU5H
TEUoaW5kZXgsIHBuYW1lLCBidWZTaXplLCBsZW5ndGgsIHBhcmFtcyk7Ci19Ci0KLXZvaWQgRXh0
ZW5zaW9uc0dMQU5HTEU6OmdldFVuaWZvcm11aXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFt
LCBpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NH
THVpbnQgKnBhcmFtcykKLXsKLSAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50
KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpHZXRVbmlmb3JtdWl2Um9idXN0QU5HTEUo
cHJvZ3JhbSwgbG9jYXRpb24sIGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1zKTsKLX0KLQotdm9pZCBF
eHRlbnNpb25zR0xBTkdMRTo6Z2V0QnVmZmVyUGFyYW1ldGVyaTY0dlJvYnVzdEFOR0xFKEdDR0xl
bnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkg
Kmxlbmd0aCwgR0NHTGludDY0ICpwYXJhbXMpCi17Ci0gICAgaWYgKCFtX2NvbnRleHQtPm1ha2VD
b250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6R2V0QnVmZmVyUGFy
YW1ldGVyaTY0dlJvYnVzdEFOR0xFKHRhcmdldCwgcG5hbWUsIGJ1ZlNpemUsIGxlbmd0aCwgcmVp
bnRlcnByZXRfY2FzdDxHTGludDY0Kj4ocGFyYW1zKSk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dM
QU5HTEU6OnNhbXBsZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdD
R0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGludCAqcGFyYW0pCi17
Ci0gICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1
cm47Ci0KLSAgICBnbDo6U2FtcGxlclBhcmFtZXRlcml2Um9idXN0QU5HTEUoc2FtcGxlciwgcG5h
bWUsIGJ1ZlNpemUsIHBhcmFtKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6c2FtcGxl
clBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUs
IEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMZmxvYXQgKnBhcmFtKQotewotICAgIGlmICgh
bV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAg
Z2w6OlNhbXBsZXJQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKHNhbXBsZXIsIHBuYW1lLCBidWZTaXpl
LCBwYXJhbSk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldFNhbXBsZXJQYXJhbWV0
ZXJpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6
ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykKLXsKLSAgICBp
ZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQot
ICAgIGdsOjpHZXRTYW1wbGVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShzYW1wbGVyLCBwbmFtZSwg
YnVmU2l6ZSwgbGVuZ3RoLCBwYXJhbXMpOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpn
ZXRTYW1wbGVyUGFyYW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51
bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMZmxvYXQg
KnBhcmFtcykKLXsKLSAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0g
ICAgICAgIHJldHVybjsKLQotICAgIGdsOjpHZXRTYW1wbGVyUGFyYW1ldGVyZnZSb2J1c3RBTkdM
RShzYW1wbGVyLCBwbmFtZSwgYnVmU2l6ZSwgbGVuZ3RoLCBwYXJhbXMpOwotfQotCi0KLXZvaWQg
RXh0ZW5zaW9uc0dMQU5HTEU6OmdldEZyYW1lYnVmZmVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShH
Q0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNp
emVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykKLXsKLSAgICBpZiAoIW1fY29udGV4dC0+bWFr
ZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpHZXRGcmFtZWJ1
ZmZlclBhcmFtZXRlcml2Um9idXN0QU5HTEUodGFyZ2V0LCBwbmFtZSwgYnVmU2l6ZSwgbGVuZ3Ro
LCBwYXJhbXMpOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRQcm9ncmFtSW50ZXJm
YWNlaXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMZW51bSBwcm9ncmFtSW50ZXJm
YWNlLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3Ro
LCBHQ0dMaW50ICpwYXJhbXMpCi17Ci0gICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3Vy
cmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6R2V0UHJvZ3JhbUludGVyZmFjZWl2
Um9idXN0QU5HTEUocHJvZ3JhbSwgcHJvZ3JhbUludGVyZmFjZSwgcG5hbWUsIGJ1ZlNpemUsIGxl
bmd0aCwgcGFyYW1zKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0Qm9vbGVhbmlf
dlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTHVpbnQgaW5kZXgsIEdDR0xzaXplaSBi
dWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGJvb2xlYW4gKmRhdGEpCi17Ci0gICAgaWYg
KCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAg
ICBnbDo6R2V0Qm9vbGVhbmlfdlJvYnVzdEFOR0xFKHRhcmdldCwgaW5kZXgsIGJ1ZlNpemUsIGxl
bmd0aCwgZGF0YSk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldE11bHRpc2FtcGxl
ZnZSb2J1c3RBTkdMRShHQ0dMZW51bSBwbmFtZSwgR0NHTHVpbnQgaW5kZXgsIEdDR0xzaXplaSBi
dWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGZsb2F0ICp2YWwpCi17Ci0gICAgaWYgKCFt
X2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBn
bDo6R2V0TXVsdGlzYW1wbGVmdlJvYnVzdEFOR0xFKHBuYW1lLCBpbmRleCwgYnVmU2l6ZSwgbGVu
Z3RoLCB2YWwpOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRUZXhMZXZlbFBhcmFt
ZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBpbnQgbGV2ZWwsIEdDR0xlbnVtIHBu
YW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFt
cykKLXsKLSAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAg
IHJldHVybjsKLQotICAgIGdsOjpHZXRUZXhMZXZlbFBhcmFtZXRlcml2Um9idXN0QU5HTEUodGFy
Z2V0LCBsZXZlbCwgcG5hbWUsIGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1zKTsKLX0KLQotdm9pZCBF
eHRlbnNpb25zR0xBTkdMRTo6Z2V0VGV4TGV2ZWxQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0xl
bnVtIHRhcmdldCwgaW50IGxldmVsLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUs
IEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMZmxvYXQgKnBhcmFtcykKLXsKLSAgICBpZiAoIW1fY29u
dGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpH
ZXRUZXhMZXZlbFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUodGFyZ2V0LCBsZXZlbCwgcG5hbWUsIGJ1
ZlNpemUsIGxlbmd0aCwgcGFyYW1zKTsKLX0KLQotCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpn
ZXRQb2ludGVydlJvYnVzdEFOR0xFUm9idXN0QU5HTEUoR0NHTGVudW0gcG5hbWUsIEdDR0xzaXpl
aSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgdm9pZCAqKnBhcmFtcykKLXsKLSAgICBpZiAo
IW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAg
IGdsOjpHZXRQb2ludGVydlJvYnVzdEFOR0xFUm9idXN0QU5HTEUocG5hbWUsIGJ1ZlNpemUsIGxl
bmd0aCwgcGFyYW1zKTsKLX0KIAogI2lmIFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0oSU9TX0ZB
TUlMWSkKIHN0YXRpYyB2b2lkIHdpcGVBbHBoYUNoYW5uZWxGcm9tUGl4ZWxzKGludCB3aWR0aCwg
aW50IGhlaWdodCwgdW5zaWduZWQgY2hhciogcGl4ZWxzKQpAQCAtNTA0LDEyMCArMjYxLDYgQEAg
dm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6cmVhZG5QaXhlbHNSb2J1c3RBTkdMRShpbnQgeCwgaW50
IHksIEdDR0xzaXplaSB3aWR0aCwgR0MKICNlbmRpZgogfQogCi12b2lkIEV4dGVuc2lvbnNHTEFO
R0xFOjpnZXRuVW5pZm9ybWZ2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgaW50IGxvY2F0
aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xmbG9hdCAqcGFy
YW1zKQotewotICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAg
ICAgcmV0dXJuOwotCi0gICAgZ2w6OkdldG5Vbmlmb3JtZnZSb2J1c3RBTkdMRShwcm9ncmFtLCBs
b2NhdGlvbiwgYnVmU2l6ZSwgbGVuZ3RoLCBwYXJhbXMpOwotfQotCi12b2lkIEV4dGVuc2lvbnNH
TEFOR0xFOjpnZXRuVW5pZm9ybWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgaW50IGxv
Y2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBh
cmFtcykKLXsKLSAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAg
ICAgIHJldHVybjsKLQotICAgIGdsOjpHZXRuVW5pZm9ybWl2Um9idXN0QU5HTEUocHJvZ3JhbSwg
bG9jYXRpb24sIGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1zKTsKLX0KLQotdm9pZCBFeHRlbnNpb25z
R0xBTkdMRTo6Z2V0blVuaWZvcm11aXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBpbnQg
bG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHVpbnQg
KnBhcmFtcykKLXsKLSAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0g
ICAgICAgIHJldHVybjsKLQotICAgIGdsOjpHZXRuVW5pZm9ybXVpdlJvYnVzdEFOR0xFKHByb2dy
YW0sIGxvY2F0aW9uLCBidWZTaXplLCBsZW5ndGgsIHBhcmFtcyk7Ci19Ci0KLXZvaWQgRXh0ZW5z
aW9uc0dMQU5HTEU6OnRleFBhcmFtZXRlcklpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwg
R0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMaW50ICpwYXJhbXMp
Ci17Ci0gICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICBy
ZXR1cm47Ci0KLSAgICBnbDo6VGV4UGFyYW1ldGVySWl2Um9idXN0QU5HTEUodGFyZ2V0LCBwbmFt
ZSwgYnVmU2l6ZSwgcGFyYW1zKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6dGV4UGFy
YW1ldGVySXVpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdD
R0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMdWludCAqcGFyYW1zKQotewotICAgIGlmICghbV9j
b250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6
OlRleFBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRSh0YXJnZXQsIHBuYW1lLCBidWZTaXplLCBwYXJh
bXMpOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRUZXhQYXJhbWV0ZXJJaXZSb2J1
c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6
ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykKLXsKLSAgICBpZiAoIW1fY29u
dGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpH
ZXRUZXhQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRSh0YXJnZXQsIHBuYW1lLCBidWZTaXplLCBsZW5n
dGgsIHBhcmFtcyk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldFRleFBhcmFtZXRl
ckl1aXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6
ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0x1aW50ICpwYXJhbXMpCi17Ci0gICAg
aWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0K
LSAgICBnbDo6R2V0VGV4UGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFKHRhcmdldCwgcG5hbWUsIGJ1
ZlNpemUsIGxlbmd0aCwgcGFyYW1zKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6c2Ft
cGxlclBhcmFtZXRlcklpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBu
YW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGludCAqcGFyYW0pCi17Ci0gICAgaWYg
KCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAg
ICBnbDo6U2FtcGxlclBhcmFtZXRlcklpdlJvYnVzdEFOR0xFKHNhbXBsZXIsIHBuYW1lLCBidWZT
aXplLCBwYXJhbSk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OnNhbXBsZXJQYXJhbWV0
ZXJJdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xz
aXplaSBidWZTaXplLCBjb25zdCBHQ0dMdWludCAqcGFyYW0pCi17Ci0gICAgaWYgKCFtX2NvbnRl
eHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6U2Ft
cGxlclBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRShzYW1wbGVyLCBwbmFtZSwgYnVmU2l6ZSwgcGFy
YW0pOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRTYW1wbGVyUGFyYW1ldGVySWl2
Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBi
dWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKQotewotICAgIGlmICgh
bV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAg
Z2w6OkdldFNhbXBsZXJQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRShzYW1wbGVyLCBwbmFtZSwgYnVm
U2l6ZSwgbGVuZ3RoLCBwYXJhbXMpOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRT
YW1wbGVyUGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVt
IHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0x1aW50ICpw
YXJhbXMpCi17Ci0gICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAg
ICAgICByZXR1cm47Ci0KLSAgICBnbDo6R2V0U2FtcGxlclBhcmFtZXRlckl1aXZSb2J1c3RBTkdM
RShzYW1wbGVyLCBwbmFtZSwgYnVmU2l6ZSwgbGVuZ3RoLCBwYXJhbXMpOwotfQotCi0KLXZvaWQg
RXh0ZW5zaW9uc0dMQU5HTEU6OmdldFF1ZXJ5T2JqZWN0aXZSb2J1c3RBTkdMRShHQ0dMdWludCBp
ZCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwg
R0NHTGludCAqcGFyYW1zKQotewotICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJl
bnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OkdldFF1ZXJ5T2JqZWN0aXZSb2J1c3RB
TkdMRShpZCwgcG5hbWUsIGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1zKTsKLX0KLQotdm9pZCBFeHRl
bnNpb25zR0xBTkdMRTo6Z2V0UXVlcnlPYmplY3RpNjR2Um9idXN0QU5HTEUoR0NHTHVpbnQgaWQs
IEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdD
R0xpbnQ2NCAqcGFyYW1zKQotewotICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJl
bnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OkdldFF1ZXJ5T2JqZWN0aTY0dlJvYnVz
dEFOR0xFKGlkLCBwbmFtZSwgYnVmU2l6ZSwgbGVuZ3RoLCByZWludGVycHJldF9jYXN0PEdMaW50
NjQqPihwYXJhbXMpKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0UXVlcnlPYmpl
Y3R1aTY0dlJvYnVzdEFOR0xFKEdDR0x1aW50IGlkLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVp
IGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMdWludDY0ICpwYXJhbXMpCi17Ci0gICAg
aWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0K
LSAgICBnbDo6R2V0UXVlcnlPYmplY3R1aTY0dlJvYnVzdEFOR0xFKGlkLCBwbmFtZSwgYnVmU2l6
ZSwgbGVuZ3RoLCByZWludGVycHJldF9jYXN0PEdMdWludDY0Kj4ocGFyYW1zKSk7Ci19Ci0KLQog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKEdSQVBISUNTX0NPTlRF
WFRfR0wpICYmIFVTRShBTkdMRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRlbnNpb25zR0xBTkdMRS5oCmluZGV4IGE3NzMxZGZkMjBj
NWYwM2EzMzU5MDNmYWE2ZTM4ZmY3MmY0YjIzMjMuLjA1N2ZmMGMzYWJiNWE5M2UxM2M0NzY0NjY0
M2Q5ZGYzZTY4Nzg1YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUuaApAQCAtMzYsNyArMzYsNyBAQCBj
bGFzcyBFeHRlbnNpb25zR0xBTkdMRSA6IHB1YmxpYyBFeHRlbnNpb25zR0wgewogICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIC8vIFRoaXMgY2xhc3Mgb25seSBuZWVk
cyB0byBiZSBpbnN0YW50aWF0ZWQgYnkgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wgaW1wbGVtZW50
YXRpb25zLgotICAgIEV4dGVuc2lvbnNHTEFOR0xFKEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiwg
Ym9vbCB1c2VJbmRleGVkR2V0U3RyaW5nID0gZmFsc2UpOworICAgIEV4dGVuc2lvbnNHTEFOR0xF
KEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKik7CiAgICAgdmlydHVhbCB+RXh0ZW5zaW9uc0dMQU5H
TEUoKTsKIAogICAgIC8vIEV4dGVuc2lvbnNHTCBtZXRob2RzLgpAQCAtNDksNzEgKzQ5LDE3IEBA
IHB1YmxpYzoKICAgICB2b2lkIGRlbGV0ZVZlcnRleEFycmF5T0VTKFBsYXRmb3JtR0xPYmplY3Qp
IG92ZXJyaWRlOwogICAgIEdDR0xib29sZWFuIGlzVmVydGV4QXJyYXlPRVMoUGxhdGZvcm1HTE9i
amVjdCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBiaW5kVmVydGV4QXJyYXlPRVMoUGxhdGZvcm1HTE9i
amVjdCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBpbnNlcnRFdmVudE1hcmtlckVYVChjb25zdCBTdHJp
bmcmKSBvdmVycmlkZTsKLSAgICB2b2lkIHB1c2hHcm91cE1hcmtlckVYVChjb25zdCBTdHJpbmcm
KSBvdmVycmlkZTsKLSAgICB2b2lkIHBvcEdyb3VwTWFya2VyRVhUKHZvaWQpIG92ZXJyaWRlOwog
ICAgIHZvaWQgZHJhd0J1ZmZlcnNFWFQoR0NHTFNwYW48Y29uc3QgR0NHTGVudW0+KSBvdmVycmlk
ZTsKIAogICAgIFN0cmluZyBnZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUoUGxhdGZvcm1H
TE9iamVjdCkgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIGJsaXRGcmFtZWJ1ZmZlcihsb25nIHNyY1gw
LCBsb25nIHNyY1kwLCBsb25nIHNyY1gxLCBsb25nIHNyY1kxLCBsb25nIGRzdFgwLCBsb25nIGRz
dFkwLCBsb25nIGRzdFgxLCBsb25nIGRzdFkxLCB1bnNpZ25lZCBsb25nIG1hc2ssIHVuc2lnbmVk
IGxvbmcgZmlsdGVyKSBvdmVycmlkZTsKLSAgICB2b2lkIHJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0
aXNhbXBsZSh1bnNpZ25lZCBsb25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBzYW1wbGVzLCB1bnNp
Z25lZCBsb25nIGludGVybmFsZm9ybWF0LCB1bnNpZ25lZCBsb25nIHdpZHRoLCB1bnNpZ25lZCBs
b25nIGhlaWdodCkgb3ZlcnJpZGU7Ci0KICAgICB2b2lkIGRyYXdBcnJheXNJbnN0YW5jZWQoR0NH
TGVudW0gbW9kZSwgR0NHTGludCBmaXJzdCwgR0NHTHNpemVpIGNvdW50LCBHQ0dMc2l6ZWkgcHJp
bWNvdW50KSBvdmVycmlkZTsKICAgICB2b2lkIGRyYXdFbGVtZW50c0luc3RhbmNlZChHQ0dMZW51
bSBtb2RlLCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xlbnVtIHR5cGUsIGxvbmcgbG9uZyBvZmZzZXQs
IEdDR0xzaXplaSBwcmltY291bnQpIG92ZXJyaWRlOwogICAgIHZvaWQgdmVydGV4QXR0cmliRGl2
aXNvcihHQ0dMdWludCBpbmRleCwgR0NHTHVpbnQgZGl2aXNvcikgb3ZlcnJpZGU7CiAKLSAgICBi
b29sIGlzTlZJRElBKCkgb3ZlcnJpZGUgeyByZXR1cm4gbV9pc05WSURJQTsgfQotICAgIGJvb2wg
aXNBTUQoKSBvdmVycmlkZSB7IHJldHVybiBtX2lzQU1EOyB9Ci0gICAgYm9vbCBpc0ludGVsKCkg
b3ZlcnJpZGUgeyByZXR1cm4gbV9pc0ludGVsOyB9Ci0gICAgYm9vbCBpc0ltYWdpbmF0aW9uKCkg
b3ZlcnJpZGUgeyByZXR1cm4gbV9pc0ltYWdpbmF0aW9uOyB9Ci0gICAgU3RyaW5nIHZlbmRvcigp
IG92ZXJyaWRlIHsgcmV0dXJuIG1fdmVuZG9yOyB9Ci0KLSAgICBib29sIHJlcXVpcmVzQnVpbHRJ
bkZ1bmN0aW9uRW11bGF0aW9uKCkgb3ZlcnJpZGUgeyByZXR1cm4gbV9yZXF1aXJlc0J1aWx0SW5G
dW5jdGlvbkVtdWxhdGlvbjsgfQotICAgIGJvb2wgcmVxdWlyZXNSZXN0cmljdGVkTWF4aW11bVRl
eHR1cmVTaXplKCkgb3ZlcnJpZGUgeyByZXR1cm4gbV9yZXF1aXJlc1Jlc3RyaWN0ZWRNYXhpbXVt
VGV4dHVyZVNpemU7IH0KLQogICAgIC8vIEdMX0FOR0xFX3JvYnVzdF9jbGllbnRfbWVtb3J5Ci0g
ICAgdm9pZCByZWFkUGl4ZWxzUm9idXN0QU5HTEUoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xz
aXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0
eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xzaXplaSAqY29s
dW1ucywgR0NHTHNpemVpICpyb3dzLCB2b2lkICpwaXhlbHMpIG92ZXJyaWRlOwotICAgIHZvaWQg
dGV4UGFyYW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1l
LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGZsb2F0ICpwYXJhbXMpIG92ZXJyaWRlOwot
ICAgIHZvaWQgdGV4UGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xl
bnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGludCAqcGFyYW1zKSBvdmVy
cmlkZTsKLSAgICB2b2lkIGdldFF1ZXJ5aXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdD
R0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xp
bnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRRdWVyeU9iamVjdHVpdlJvYnVzdEFO
R0xFKEdDR0x1aW50IGlkLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xz
aXplaSAqbGVuZ3RoLCBHQ0dMdWludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldEJ1
ZmZlclBvaW50ZXJ2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwg
R0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCB2b2lkICoqcGFyYW1zKSBvdmVy
cmlkZTsKLSAgICB2b2lkIGdldEludGVybmFsZm9ybWF0aXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0
YXJnZXQsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVp
IGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJyaWRlOwot
ICAgIHZvaWQgZ2V0VmVydGV4QXR0cmliSWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdD
R0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xp
bnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJJdWl2Um9idXN0
QU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwg
R0NHTHNpemVpICpsZW5ndGgsIEdDR0x1aW50ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQg
Z2V0VW5pZm9ybXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRp
b24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHVpbnQgKnBhcmFt
cykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRCdWZmZXJQYXJhbWV0ZXJpNjR2Um9idXN0QU5HTEUo
R0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xz
aXplaSAqbGVuZ3RoLCBHQ0dMaW50NjQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzYW1w
bGVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFt
ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xpbnQgKnBhcmFtKSBvdmVycmlkZTsKLSAg
ICB2b2lkIHNhbXBsZXJQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdD
R0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGZsb2F0ICpwYXJhbSkg
b3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRTYW1wbGVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dM
dWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXpl
aSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0U2FtcGxl
clBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUs
IEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGZsb2F0ICpwYXJhbXMp
IG92ZXJyaWRlOwogCi0gICAgdm9pZCBnZXRGcmFtZWJ1ZmZlclBhcmFtZXRlcml2Um9idXN0QU5H
TEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdD
R0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0
UHJvZ3JhbUludGVyZmFjZWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGVudW0g
cHJvZ3JhbUludGVyZmFjZSwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dM
c2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldEJv
b2xlYW5pX3ZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0x1aW50IGluZGV4LCBHQ0dM
c2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xib29sZWFuICpkYXRhKSBvdmVy
cmlkZTsgLy8gTk9MSU5UCi0gICAgdm9pZCBnZXRNdWx0aXNhbXBsZWZ2Um9idXN0QU5HTEUoR0NH
TGVudW0gcG5hbWUsIEdDR0x1aW50IGluZGV4LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVp
ICpsZW5ndGgsIEdDR0xmbG9hdCAqdmFsKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldFRleExldmVs
UGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdD
R0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xp
bnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRUZXhMZXZlbFBhcmFtZXRlcmZ2Um9i
dXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBwbmFtZSwg
R0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMZmxvYXQgKnBhcmFtcykg
b3ZlcnJpZGU7Ci0KLSAgICB2b2lkIGdldFBvaW50ZXJ2Um9idXN0QU5HTEVSb2J1c3RBTkdMRShH
Q0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCB2b2lk
ICoqcGFyYW1zKSBvdmVycmlkZTsKICAgICB2b2lkIHJlYWRuUGl4ZWxzUm9idXN0QU5HTEUoR0NH
TGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NH
TGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVp
ICpsZW5ndGgsIEdDR0xzaXplaSAqY29sdW1ucywgR0NHTHNpemVpICpyb3dzLCB2b2lkICpkYXRh
LCBib29sIHJlYWRpbmdUb1BpeGVsQnVmZmVyT2JqZWN0KSBvdmVycmlkZTsKLSAgICB2b2lkIGdl
dG5Vbmlmb3JtZnZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9u
LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xmbG9hdCAqcGFyYW1z
KSBvdmVycmlkZTsKLSAgICB2b2lkIGdldG5Vbmlmb3JtaXZSb2J1c3RBTkdMRShHQ0dMdWludCBw
cm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICps
ZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRuVW5pZm9ybXVp
dlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXpl
aSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHVpbnQgKnBhcmFtcykgb3ZlcnJpZGU7
Ci0gICAgdm9pZCB0ZXhQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdD
R0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGludCAqcGFyYW1zKSBv
dmVycmlkZTsKLSAgICB2b2lkIHRleFBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0
YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTHVpbnQg
KnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRUZXhQYXJhbWV0ZXJJaXZSb2J1c3RBTkdM
RShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NH
THNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRU
ZXhQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFt
ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMdWludCAqcGFyYW1z
KSBvdmVycmlkZTsKLSAgICB2b2lkIHNhbXBsZXJQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRShHQ0dM
dWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdD
R0xpbnQgKnBhcmFtKSBvdmVycmlkZTsKLSAgICB2b2lkIHNhbXBsZXJQYXJhbWV0ZXJJdWl2Um9i
dXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZT
aXplLCBjb25zdCBHQ0dMdWludCAqcGFyYW0pIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0U2FtcGxl
clBhcmFtZXRlcklpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1l
LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykg
b3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRTYW1wbGVyUGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFKEdD
R0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNp
emVpICpsZW5ndGgsIEdDR0x1aW50ICpwYXJhbXMpIG92ZXJyaWRlOwotCi0gICAgdm9pZCBnZXRR
dWVyeU9iamVjdGl2Um9idXN0QU5HTEUoR0NHTHVpbnQgaWQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dM
c2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykgb3ZlcnJp
ZGU7Ci0gICAgdm9pZCBnZXRRdWVyeU9iamVjdGk2NHZSb2J1c3RBTkdMRShHQ0dMdWludCBpZCwg
R0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NH
TGludDY0ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0UXVlcnlPYmplY3R1aTY0dlJv
YnVzdEFOR0xFKEdDR0x1aW50IGlkLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUs
IEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMdWludDY0ICpwYXJhbXMpIG92ZXJyaWRlOwotCiAgICAg
Ly8gT25seSBmb3Igbm9uLVdlYkdMIDIuMCBjb250ZXh0cy4KICAgICBHQ0dMZW51bSBhZGp1c3RX
ZWJHTDFUZXh0dXJlSW50ZXJuYWxGb3JtYXQoR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xl
bnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSk7CiAKQEAgLTEyOSwxOSArNzUsNiBAQCBwcml2YXRl
OgogCiAgICAgLy8gV2VhayBwb2ludGVyIGJhY2sgdG8gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wu
CiAgICAgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqIG1fY29udGV4dDsKLQotICAgIGJvb2wgbV9p
c05WSURJQTsKLSAgICBib29sIG1faXNBTUQ7Ci0gICAgYm9vbCBtX2lzSW50ZWw7Ci0gICAgYm9v
bCBtX2lzSW1hZ2luYXRpb247Ci0gICAgYm9vbCBtX3JlcXVpcmVzQnVpbHRJbkZ1bmN0aW9uRW11
bGF0aW9uOwotICAgIGJvb2wgbV9yZXF1aXJlc1Jlc3RyaWN0ZWRNYXhpbXVtVGV4dHVyZVNpemU7
Ci0KLSAgICBib29sIG1fdXNlSW5kZXhlZEdldFN0cmluZyB7IGZhbHNlIH07Ci0KLSAgICBTdHJp
bmcgbV92ZW5kb3I7Ci0gICAgU3RyaW5nIG1fcmVuZGVyZXI7Ci0KICAgICAvLyBXaGV0aGVyIHRo
ZSBXZWJHTCAxLjAtcmVsYXRlZCBmbG9hdGluZy1wb2ludCByZW5kZXJhYmlsaXR5IGV4dGVuc2lv
bnMgaGF2ZSBiZWVuIGVuYWJsZWQuCiAgICAgYm9vbCBtX3dlYmdsQ29sb3JCdWZmZXJGbG9hdFJH
QiB7IGZhbHNlIH07CiAgICAgYm9vbCBtX3dlYmdsQ29sb3JCdWZmZXJGbG9hdFJHQkEgeyBmYWxz
ZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Blbmds
L0V4dGVuc2lvbnNHTE9wZW5HTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMLmNwcAppbmRleCA3ZWM4MWNmNGFlNTc3MmNhZTk3
Mjg4YmM4MGUzNjU2NDZkNjI3YzdiLi45MzYzMGZkNmQ0ODVhMGIzMDA5ODM3N2Y0NGQ4ZGZjMDVj
YjRiYmUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVu
Z2wvRXh0ZW5zaW9uc0dMT3BlbkdMLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMLmNwcApAQCAtNDcsMjMgKzQ3LDYgQEAg
RXh0ZW5zaW9uc0dMT3BlbkdMOjpFeHRlbnNpb25zR0xPcGVuR0woR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0wqIGNvbnRleHQsIGJvb2wgdXMKIAogRXh0ZW5zaW9uc0dMT3BlbkdMOjp+RXh0ZW5zaW9u
c0dMT3BlbkdMKCkgPSBkZWZhdWx0OwogCi0KLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMOjpibGl0
RnJhbWVidWZmZXIobG9uZyBzcmNYMCwgbG9uZyBzcmNZMCwgbG9uZyBzcmNYMSwgbG9uZyBzcmNZ
MSwgbG9uZyBkc3RYMCwgbG9uZyBkc3RZMCwgbG9uZyBkc3RYMSwgbG9uZyBkc3RZMSwgdW5zaWdu
ZWQgbG9uZyBtYXNrLCB1bnNpZ25lZCBsb25nIGZpbHRlcikKLXsKLSAgICBpZiAoIW1fY29udGV4
dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIDo6Z2xCbGl0
RnJhbWVidWZmZXJFWFQoc3JjWDAsIHNyY1kwLCBzcmNYMSwgc3JjWTEsIGRzdFgwLCBkc3RZMCwg
ZHN0WDEsIGRzdFkxLCBtYXNrLCBmaWx0ZXIpOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5H
TDo6cmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlKHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1
bnNpZ25lZCBsb25nIHNhbXBsZXMsIHVuc2lnbmVkIGxvbmcgaW50ZXJuYWxmb3JtYXQsIHVuc2ln
bmVkIGxvbmcgd2lkdGgsIHVuc2lnbmVkIGxvbmcgaGVpZ2h0KQotewotICAgIGlmICghbV9jb250
ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgOjpnbFJl
bmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUVYVCh0YXJnZXQsIHNhbXBsZXMsIGludGVybmFs
Zm9ybWF0LCB3aWR0aCwgaGVpZ2h0KTsKLX0KLQogUGxhdGZvcm1HTE9iamVjdCBFeHRlbnNpb25z
R0xPcGVuR0w6OmNyZWF0ZVZlcnRleEFycmF5T0VTKCkKIHsKICAgICBpZiAoIW1fY29udGV4dC0+
bWFrZUNvbnRleHRDdXJyZW50KCkpCkBAIC0xMjcsMjQgKzExMCw2IEBAIHZvaWQgRXh0ZW5zaW9u
c0dMT3BlbkdMOjpiaW5kVmVydGV4QXJyYXlPRVMoUGxhdGZvcm1HTE9iamVjdCBhcnJheSkKICNl
bmRpZgogfQogCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTDo6aW5zZXJ0RXZlbnRNYXJrZXJFWFQo
Y29uc3QgU3RyaW5nJikKLXsKLSAgICAvLyBGSVhNRTogaW1wbGVtZW50IHRoaXMgZnVuY3Rpb24g
YW5kIGFkZCBHTF9FWFRfZGVidWdfbWFya2VyIGluIHN1cHBvcnRzKCkuCi0gICAgcmV0dXJuOwot
fQotCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTDo6cHVzaEdyb3VwTWFya2VyRVhUKGNvbnN0IFN0
cmluZyYpCi17Ci0gICAgLy8gRklYTUU6IGltcGxlbWVudCB0aGlzIGZ1bmN0aW9uIGFuZCBhZGQg
R0xfRVhUX2RlYnVnX21hcmtlciBpbiBzdXBwb3J0cygpLgotICAgIHJldHVybjsKLX0KLQotdm9p
ZCBFeHRlbnNpb25zR0xPcGVuR0w6OnBvcEdyb3VwTWFya2VyRVhUKHZvaWQpCi17Ci0gICAgLy8g
RklYTUU6IGltcGxlbWVudCB0aGlzIGZ1bmN0aW9uIGFuZCBhZGQgR0xfRVhUX2RlYnVnX21hcmtl
ciBpbiBzdXBwb3J0cygpLgotICAgIHJldHVybjsKLX0KLQogYm9vbCBFeHRlbnNpb25zR0xPcGVu
R0w6OnN1cHBvcnRzRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgbmFtZSkKIHsKICAgICAvLyBHTF9B
TkdMRV9mcmFtZWJ1ZmZlcl9ibGl0IGFuZCBHTF9BTkdMRV9mcmFtZWJ1ZmZlcl9tdWx0aXNhbXBs
ZSBhcmUgImZha2UiLiBUaGV5IGFyZSBpbXBsZW1lbnRlZCB1c2luZyBvdGhlcgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9w
ZW5HTC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lv
bnNHTE9wZW5HTC5oCmluZGV4IDQ5NjI4OWNlYTBlNmEwOWQ2ZGI3MzFmODY4YjU0OTkzYTQ0NDQ5
YTguLjUwYjZmZTNlOTQzODc5Mzg5ZTA5NGU3YTU0YzNhYjg3M2VmZmZiOTYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVu
R0wuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5z
aW9uc0dMT3BlbkdMLmgKQEAgLTQwLDE2ICs0MCwxMCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+
RXh0ZW5zaW9uc0dMT3BlbkdMKCk7CiAKICAgICAvLyBFeHRlbnNpb25zR0wgbWV0aG9kcy4KLSAg
ICB2b2lkIGJsaXRGcmFtZWJ1ZmZlcihsb25nIHNyY1gwLCBsb25nIHNyY1kwLCBsb25nIHNyY1gx
LCBsb25nIHNyY1kxLCBsb25nIGRzdFgwLCBsb25nIGRzdFkwLCBsb25nIGRzdFgxLCBsb25nIGRz
dFkxLCB1bnNpZ25lZCBsb25nIG1hc2ssIHVuc2lnbmVkIGxvbmcgZmlsdGVyKSBvdmVycmlkZTsK
LSAgICB2b2lkIHJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZSh1bnNpZ25lZCBsb25nIHRh
cmdldCwgdW5zaWduZWQgbG9uZyBzYW1wbGVzLCB1bnNpZ25lZCBsb25nIGludGVybmFsZm9ybWF0
LCB1bnNpZ25lZCBsb25nIHdpZHRoLCB1bnNpZ25lZCBsb25nIGhlaWdodCkgb3ZlcnJpZGU7Ci0K
ICAgICBQbGF0Zm9ybUdMT2JqZWN0IGNyZWF0ZVZlcnRleEFycmF5T0VTKCkgb3ZlcnJpZGU7CiAg
ICAgdm9pZCBkZWxldGVWZXJ0ZXhBcnJheU9FUyhQbGF0Zm9ybUdMT2JqZWN0KSBvdmVycmlkZTsK
ICAgICBHQ0dMYm9vbGVhbiBpc1ZlcnRleEFycmF5T0VTKFBsYXRmb3JtR0xPYmplY3QpIG92ZXJy
aWRlOwogICAgIHZvaWQgYmluZFZlcnRleEFycmF5T0VTKFBsYXRmb3JtR0xPYmplY3QpIG92ZXJy
aWRlOwotICAgIHZvaWQgaW5zZXJ0RXZlbnRNYXJrZXJFWFQoY29uc3QgU3RyaW5nJikgb3ZlcnJp
ZGU7Ci0gICAgdm9pZCBwdXNoR3JvdXBNYXJrZXJFWFQoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7
Ci0gICAgdm9pZCBwb3BHcm91cE1hcmtlckVYVCh2b2lkKSBvdmVycmlkZTsKICAgICB2b2lkIGRy
YXdCdWZmZXJzRVhUKEdDR0xTcGFuPGNvbnN0IEdDR0xlbnVtPikgb3ZlcnJpZGU7CiAKICAgICB2
b2lkIGRyYXdBcnJheXNJbnN0YW5jZWQoR0NHTGVudW0gbW9kZSwgR0NHTGludCBmaXJzdCwgR0NH
THNpemVpIGNvdW50LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KSBvdmVycmlkZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVu
R0xDb21tb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4
dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5jcHAKaW5kZXggNDNiNTE2MWZiYTc3OGY4ZmI0Mzg0YjFi
YzJkYjM4ZWNmNmM0ODNlYi4uMjY2ZGZjZWVjODdiODI0Y2E5MjNlNmMzOGJmZDQ4MzdhZjk1OGRi
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4
dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5jcHAKQEAgLTI1NCwxOTUg
KzI1NCwxMSBAQCB2b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0blVuaWZvcm1pdkVY
VChHQ0dMdWludCwgaW50LCBHQ0dMc2l6ZWksIEdDR0xpbgogICAgIG1fY29udGV4dC0+c3ludGhl
c2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwogfQogCi12b2lkIEV4dGVuc2lvbnNH
TE9wZW5HTENvbW1vbjo6cmVhZFBpeGVsc1JvYnVzdEFOR0xFKGludCwgaW50LCBHQ0dMc2l6ZWks
IEdDR0xzaXplaSwgR0NHTGVudW0sIEdDR0xlbnVtLCBHQ0dMc2l6ZWksIEdDR0xzaXplaSAqLCBH
Q0dMc2l6ZWkgKiwgR0NHTHNpemVpICosIHZvaWQgKikKLXsKLSAgICBtX2NvbnRleHQtPnN5bnRo
ZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLX0KLQotdm9pZCBFeHRlbnNpb25z
R0xPcGVuR0xDb21tb246OnRleFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTGVudW0sIEdDR0xl
bnVtLCBHQ0dMc2l6ZWksIGNvbnN0IEdDR0xmbG9hdCAqKQotewotICAgIG1fY29udGV4dC0+c3lu
dGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi12b2lkIEV4dGVuc2lv
bnNHTE9wZW5HTENvbW1vbjo6dGV4UGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51bSwgR0NH
TGVudW0sIEdDR0xzaXplaSwgY29uc3QgR0NHTGludCAqKQotewotICAgIG1fY29udGV4dC0+c3lu
dGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi12b2lkIEV4dGVuc2lv
bnNHTE9wZW5HTENvbW1vbjo6Z2V0UXVlcnlpdlJvYnVzdEFOR0xFKEdDR0xlbnVtLCBHQ0dMZW51
bSwgR0NHTHNpemVpLCBHQ0dMc2l6ZWkgKiwgR0NHTGludCAqKQotewotICAgIG1fY29udGV4dC0+
c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi12b2lkIEV4dGVu
c2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0UXVlcnlPYmplY3R1aXZSb2J1c3RBTkdMRShHQ0dMdWlu
dCwgR0NHTGVudW0sIEdDR0xzaXplaSwgR0NHTHNpemVpICosIEdDR0x1aW50ICopCi17Ci0gICAg
bV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Ci19Ci0K
LXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRCdWZmZXJQb2ludGVydlJvYnVzdEFO
R0xFKEdDR0xlbnVtLCBHQ0dMZW51bSwgR0NHTHNpemVpLCBHQ0dMc2l6ZWkgKiwgdm9pZCAqKikK
LXsKLSAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9O
KTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldEludGVybmFsZm9ybWF0
aXZSb2J1c3RBTkdMRShHQ0dMZW51bSwgR0NHTGVudW0sIEdDR0xlbnVtLCBHQ0dMc2l6ZWksIEdD
R0xzaXplaSAqLCBHQ0dMaW50ICopCi17Ci0gICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJv
cihHTF9JTlZBTElEX09QRVJBVElPTik7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29t
bW9uOjpnZXRWZXJ0ZXhBdHRyaWJJaXZSb2J1c3RBTkdMRShHQ0dMdWludCwgR0NHTGVudW0sIEdD
R0xzaXplaSwgR0NHTHNpemVpICosIEdDR0xpbnQgKikKLXsKLSAgICBtX2NvbnRleHQtPnN5bnRo
ZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLX0KLQotdm9pZCBFeHRlbnNpb25z
R0xPcGVuR0xDb21tb246OmdldFZlcnRleEF0dHJpYkl1aXZSb2J1c3RBTkdMRShHQ0dMdWludCwg
R0NHTGVudW0sIEdDR0xzaXplaSwgR0NHTHNpemVpICosIEdDR0x1aW50ICopCi17Ci0gICAgbV9j
b250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Ci19Ci0KLXZv
aWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRVbmlmb3JtdWl2Um9idXN0QU5HTEUoR0NH
THVpbnQsIGludCwgR0NHTHNpemVpLCBHQ0dMc2l6ZWkgKiwgR0NHTHVpbnQgKikKLXsKLSAgICBt
X2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLX0KLQot
dm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldEJ1ZmZlclBhcmFtZXRlcmk2NHZSb2J1
c3RBTkdMRShHQ0dMZW51bSwgR0NHTGVudW0sIEdDR0xzaXplaSwgR0NHTHNpemVpICosIEdDR0xp
bnQ2NCAqKQotewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9P
UEVSQVRJT04pOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6c2FtcGxlclBh
cmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTHVpbnQsIEdDR0xlbnVtLCBHQ0dMc2l6ZWksIGNvbnN0
IEdDR0xpbnQgKikKLXsKLSAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFM
SURfT1BFUkFUSU9OKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OnNhbXBs
ZXJQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0x1aW50LCBHQ0dMZW51bSwgR0NHTHNpemVpLCBj
b25zdCBHQ0dMZmxvYXQgKikKLXsKLSAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdM
X0lOVkFMSURfT1BFUkFUSU9OKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246
OmdldFNhbXBsZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0x1aW50LCBHQ0dMZW51bSwgR0NH
THNpemVpLCBHQ0dMc2l6ZWkgKiwgR0NHTGludCAqKQotewotICAgIG1fY29udGV4dC0+c3ludGhl
c2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi12b2lkIEV4dGVuc2lvbnNH
TE9wZW5HTENvbW1vbjo6Z2V0U2FtcGxlclBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTHVpbnQs
IEdDR0xlbnVtLCBHQ0dMc2l6ZWksIEdDR0xzaXplaSAqLCBHQ0dMZmxvYXQgKikKLXsKLSAgICBt
X2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLX0KLQot
Ci12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0RnJhbWVidWZmZXJQYXJhbWV0ZXJp
dlJvYnVzdEFOR0xFKEdDR0xlbnVtLCBHQ0dMZW51bSwgR0NHTHNpemVpLCBHQ0dMc2l6ZWkgKiwg
R0NHTGludCAqKQotewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJ
RF9PUEVSQVRJT04pOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0UHJv
Z3JhbUludGVyZmFjZWl2Um9idXN0QU5HTEUoR0NHTHVpbnQsIEdDR0xlbnVtLCBHQ0dMZW51bSwg
R0NHTHNpemVpLCBHQ0dMc2l6ZWkgKiwgR0NHTGludCAqKQotewotICAgIG1fY29udGV4dC0+c3lu
dGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi12b2lkIEV4dGVuc2lv
bnNHTE9wZW5HTENvbW1vbjo6Z2V0Qm9vbGVhbmlfdlJvYnVzdEFOR0xFKEdDR0xlbnVtLCBHQ0dM
dWludCwgR0NHTHNpemVpLCBHQ0dMc2l6ZWkgKiwgR0NHTGJvb2xlYW4gKikKLXsKLSAgICBtX2Nv
bnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLX0KLQotdm9p
ZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldE11bHRpc2FtcGxlZnZSb2J1c3RBTkdMRShH
Q0dMZW51bSwgR0NHTHVpbnQsIEdDR0xzaXplaSwgR0NHTHNpemVpICosIEdDR0xmbG9hdCAqKQot
ewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04p
OwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0VGV4TGV2ZWxQYXJhbWV0
ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtLCBpbnQsIEdDR0xlbnVtLCBHQ0dMc2l6ZWksIEdDR0xz
aXplaSAqLCBHQ0dMaW50ICopCi17Ci0gICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihH
TF9JTlZBTElEX09QRVJBVElPTik7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9u
OjpnZXRUZXhMZXZlbFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTGVudW0sIGludCwgR0NHTGVu
dW0sIEdDR0xzaXplaSwgR0NHTHNpemVpICosIEdDR0xmbG9hdCAqKQotewotICAgIG1fY29udGV4
dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi0KLXZvaWQg
RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRQb2ludGVydlJvYnVzdEFOR0xFUm9idXN0QU5H
TEUoR0NHTGVudW0sIEdDR0xzaXplaSwgR0NHTHNpemVpICosIHZvaWQgKiopCi17Ci0gICAgbV9j
b250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Ci19Ci0KIHZv
aWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpyZWFkblBpeGVsc1JvYnVzdEFOR0xFKGludCwg
aW50LCBHQ0dMc2l6ZWksIEdDR0xzaXplaSwgR0NHTGVudW0sIEdDR0xlbnVtLCBHQ0dMc2l6ZWks
IEdDR0xzaXplaSAqLCBHQ0dMc2l6ZWkgKiwgR0NHTHNpemVpICosIHZvaWQgKiwgYm9vbCkKIHsK
ICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsK
IH0KIAotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldG5Vbmlmb3JtZnZSb2J1c3RB
TkdMRShHQ0dMdWludCwgaW50LCBHQ0dMc2l6ZWksIEdDR0xzaXplaSAqLCBHQ0dMZmxvYXQgKikK
LXsKLSAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9O
KTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldG5Vbmlmb3JtaXZSb2J1
c3RBTkdMRShHQ0dMdWludCwgaW50LCBHQ0dMc2l6ZWksIEdDR0xzaXplaSAqLCBHQ0dMaW50ICop
Ci17Ci0gICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElP
Tik7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRuVW5pZm9ybXVpdlJv
YnVzdEFOR0xFKEdDR0x1aW50LCBpbnQsIEdDR0xzaXplaSwgR0NHTHNpemVpICosIEdDR0x1aW50
ICopCi17Ci0gICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJB
VElPTik7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjp0ZXhQYXJhbWV0ZXJJ
aXZSb2J1c3RBTkdMRShHQ0dMZW51bSwgR0NHTGVudW0sIEdDR0xzaXplaSwgY29uc3QgR0NHTGlu
dCAqKQotewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVS
QVRJT04pOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6dGV4UGFyYW1ldGVy
SXVpdlJvYnVzdEFOR0xFKEdDR0xlbnVtLCBHQ0dMZW51bSwgR0NHTHNpemVpLCBjb25zdCBHQ0dM
dWludCAqKQotewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9P
UEVSQVRJT04pOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0VGV4UGFy
YW1ldGVySWl2Um9idXN0QU5HTEUoR0NHTGVudW0sIEdDR0xlbnVtLCBHQ0dMc2l6ZWksIEdDR0xz
aXplaSAqLCBHQ0dMaW50ICopCi17Ci0gICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihH
TF9JTlZBTElEX09QRVJBVElPTik7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9u
OjpnZXRUZXhQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUoR0NHTGVudW0sIEdDR0xlbnVtLCBHQ0dM
c2l6ZWksIEdDR0xzaXplaSAqLCBHQ0dMdWludCAqKQotewotICAgIG1fY29udGV4dC0+c3ludGhl
c2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi12b2lkIEV4dGVuc2lvbnNH
TE9wZW5HTENvbW1vbjo6c2FtcGxlclBhcmFtZXRlcklpdlJvYnVzdEFOR0xFKEdDR0x1aW50LCBH
Q0dMZW51bSwgR0NHTHNpemVpLCBjb25zdCBHQ0dMaW50ICopCi17Ci0gICAgbV9jb250ZXh0LT5z
eW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Ci19Ci0KLXZvaWQgRXh0ZW5z
aW9uc0dMT3BlbkdMQ29tbW9uOjpzYW1wbGVyUGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFKEdDR0x1
aW50LCBHQ0dMZW51bSwgR0NHTHNpemVpLCBjb25zdCBHQ0dMdWludCAqKQotewotICAgIG1fY29u
dGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi12b2lk
IEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0U2FtcGxlclBhcmFtZXRlcklpdlJvYnVzdEFO
R0xFKEdDR0x1aW50LCBHQ0dMZW51bSwgR0NHTHNpemVpLCBHQ0dMc2l6ZWkgKiwgR0NHTGludCAq
KQotewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJ
T04pOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0U2FtcGxlclBhcmFt
ZXRlckl1aXZSb2J1c3RBTkdMRShHQ0dMdWludCwgR0NHTGVudW0sIEdDR0xzaXplaSwgR0NHTHNp
emVpICosIEdDR0x1aW50ICopCi17Ci0gICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihH
TF9JTlZBTElEX09QRVJBVElPTik7Ci19Ci0KLQotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21t
b246OmdldFF1ZXJ5T2JqZWN0aXZSb2J1c3RBTkdMRShHQ0dMdWludCwgR0NHTGVudW0sIEdDR0xz
aXplaSwgR0NHTHNpemVpICosIEdDR0xpbnQgKikKLXsKLSAgICBtX2NvbnRleHQtPnN5bnRoZXNp
emVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xP
cGVuR0xDb21tb246OmdldFF1ZXJ5T2JqZWN0aTY0dlJvYnVzdEFOR0xFKEdDR0x1aW50LCBHQ0dM
ZW51bSwgR0NHTHNpemVpLCBHQ0dMc2l6ZWkgKiwgR0NHTGludDY0ICopCi17Ci0gICAgbV9jb250
ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Ci19Ci0KLXZvaWQg
RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRRdWVyeU9iamVjdHVpNjR2Um9idXN0QU5HTEUo
R0NHTHVpbnQsIEdDR0xlbnVtLCBHQ0dMc2l6ZWksIEdDR0xzaXplaSAqLCBHQ0dMdWludDY0ICop
Ci17Ci0gICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElP
Tik7Ci19Ci0KLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKEdS
QVBISUNTX0NPTlRFWFRfR0wpICYmIChVU0UoT1BFTkdMKSB8fCBVU0UoT1BFTkdMX0VTKSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNp
b25zR0xPcGVuR0xDb21tb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29w
ZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uaAppbmRleCBiZmU0NTIxNTQzZmY0YjI3MjEz
N2YzNDRjZWU0YTIyZDhmYjI4YzY0Li44NDViM2U3YTI1NGVjMjA3OGRiYTQzZWZkZDY5MzJiODA3
YzgxYzkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVu
Z2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5oCkBAIC01NSw2MCAr
NTUsMjEgQEAgcHVibGljOgogICAgIFN0cmluZyBnZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5H
TEUoUGxhdGZvcm1HTE9iamVjdCkgb3ZlcnJpZGU7CiAKICAgICAvLyBFWFQgUm9idXN0bmVzcyAt
IHVzZXMgZ2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQigpCi0gICAgdm9pZCByZWFkblBpeGVsc0VY
VChpbnQgeCwgaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVu
dW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgdm9pZCAqZGF0YSkg
b3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRuVW5pZm9ybWZ2RVhUKEdDR0x1aW50IHByb2dyYW0sIGlu
dCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIGZsb2F0ICpwYXJhbXMpIG92ZXJyaWRlOwot
ICAgIHZvaWQgZ2V0blVuaWZvcm1pdkVYVChHQ0dMdWludCBwcm9ncmFtLCBpbnQgbG9jYXRpb24s
IEdDR0xzaXplaSBidWZTaXplLCBpbnQgKnBhcmFtcykgb3ZlcnJpZGU7CisgICAgdm9pZCByZWFk
blBpeGVsc0VYVChpbnQgeCwgaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdo
dCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgdm9p
ZCAqZGF0YSk7CisgICAgdm9pZCBnZXRuVW5pZm9ybWZ2RVhUKEdDR0x1aW50IHByb2dyYW0sIGlu
dCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIGZsb2F0ICpwYXJhbXMpOworICAgIHZvaWQg
Z2V0blVuaWZvcm1pdkVYVChHQ0dMdWludCBwcm9ncmFtLCBpbnQgbG9jYXRpb24sIEdDR0xzaXpl
aSBidWZTaXplLCBpbnQgKnBhcmFtcyk7CiAKLSAgICBib29sIGlzTlZJRElBKCkgb3ZlcnJpZGUg
eyByZXR1cm4gbV9pc05WSURJQTsgfQotICAgIGJvb2wgaXNBTUQoKSBvdmVycmlkZSB7IHJldHVy
biBtX2lzQU1EOyB9Ci0gICAgYm9vbCBpc0ludGVsKCkgb3ZlcnJpZGUgeyByZXR1cm4gbV9pc0lu
dGVsOyB9Ci0gICAgYm9vbCBpc0ltYWdpbmF0aW9uKCkgb3ZlcnJpZGUgeyByZXR1cm4gbV9pc0lt
YWdpbmF0aW9uOyB9Ci0gICAgU3RyaW5nIHZlbmRvcigpIG92ZXJyaWRlIHsgcmV0dXJuIG1fdmVu
ZG9yOyB9CisgICAgYm9vbCBpc05WSURJQSgpIHsgcmV0dXJuIG1faXNOVklESUE7IH0KKyAgICBi
b29sIGlzQU1EKCkgeyByZXR1cm4gbV9pc0FNRDsgfQorICAgIGJvb2wgaXNJbnRlbCgpIHsgcmV0
dXJuIG1faXNJbnRlbDsgfQorICAgIGJvb2wgaXNJbWFnaW5hdGlvbigpIHsgcmV0dXJuIG1faXNJ
bWFnaW5hdGlvbjsgfQorICAgIFN0cmluZyB2ZW5kb3IoKSB7IHJldHVybiBtX3ZlbmRvcjsgfQog
Ci0gICAgYm9vbCByZXF1aXJlc0J1aWx0SW5GdW5jdGlvbkVtdWxhdGlvbigpIG92ZXJyaWRlIHsg
cmV0dXJuIG1fcmVxdWlyZXNCdWlsdEluRnVuY3Rpb25FbXVsYXRpb247IH0KLSAgICBib29sIHJl
cXVpcmVzUmVzdHJpY3RlZE1heGltdW1UZXh0dXJlU2l6ZSgpIG92ZXJyaWRlIHsgcmV0dXJuIG1f
cmVxdWlyZXNSZXN0cmljdGVkTWF4aW11bVRleHR1cmVTaXplOyB9CisgICAgYm9vbCByZXF1aXJl
c0J1aWx0SW5GdW5jdGlvbkVtdWxhdGlvbigpIHsgcmV0dXJuIG1fcmVxdWlyZXNCdWlsdEluRnVu
Y3Rpb25FbXVsYXRpb247IH0KKyAgICBib29sIHJlcXVpcmVzUmVzdHJpY3RlZE1heGltdW1UZXh0
dXJlU2l6ZSgpIHsgcmV0dXJuIG1fcmVxdWlyZXNSZXN0cmljdGVkTWF4aW11bVRleHR1cmVTaXpl
OyB9CiAKICAgICAvLyBHTF9BTkdMRV9yb2J1c3RfY2xpZW50X21lbW9yeQotICAgIHZvaWQgcmVh
ZFBpeGVsc1JvYnVzdEFOR0xFKGludCB4LCBpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6
ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZT
aXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHNpemVpICpjb2x1bW5zLCBHQ0dMc2l6ZWkgKnJv
d3MsIHZvaWQgKnBpeGVscykgb3ZlcnJpZGU7Ci0gICAgdm9pZCB0ZXhQYXJhbWV0ZXJmdlJvYnVz
dEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXpl
LCBjb25zdCBHQ0dMZmxvYXQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCB0ZXhQYXJhbWV0
ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXpl
aSBidWZTaXplLCBjb25zdCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0
UXVlcnlpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xz
aXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVycmlk
ZTsKLSAgICB2b2lkIGdldFF1ZXJ5T2JqZWN0dWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgaWQsIEdD
R0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0x1
aW50ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0QnVmZmVyUG9pbnRlcnZSb2J1c3RB
TkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwg
R0NHTHNpemVpICpsZW5ndGgsIHZvaWQgKipwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0
SW50ZXJuYWxmb3JtYXRpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gaW50
ZXJuYWxmb3JtYXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVp
ICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRWZXJ0ZXhB
dHRyaWJJaXZSb2J1c3RBTkdMRShHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xz
aXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVycmlk
ZTsKLSAgICB2b2lkIGdldFZlcnRleEF0dHJpYkl1aXZSb2J1c3RBTkdMRShHQ0dMdWludCBpbmRl
eCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwg
R0NHTHVpbnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRVbmlmb3JtdWl2Um9idXN0
QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwg
R0NHTHNpemVpICpsZW5ndGgsIEdDR0x1aW50ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQg
Z2V0QnVmZmVyUGFyYW1ldGVyaTY0dlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVu
dW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludDY0
ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgc2FtcGxlclBhcmFtZXRlcml2Um9idXN0QU5H
TEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBj
b25zdCBHQ0dMaW50ICpwYXJhbSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzYW1wbGVyUGFyYW1ldGVy
ZnZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVp
IGJ1ZlNpemUsIGNvbnN0IEdDR0xmbG9hdCAqcGFyYW0pIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0
U2FtcGxlclBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0g
cG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFy
YW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldFNhbXBsZXJQYXJhbWV0ZXJmdlJvYnVzdEFOR0xF
KEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NH
THNpemVpICpsZW5ndGgsIEdDR0xmbG9hdCAqcGFyYW1zKSBvdmVycmlkZTsKLQotICAgIHZvaWQg
Z2V0RnJhbWVidWZmZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NH
TGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGlu
dCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldFByb2dyYW1JbnRlcmZhY2VpdlJvYnVz
dEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xlbnVtIHByb2dyYW1JbnRlcmZhY2UsIEdDR0xl
bnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQg
KnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRCb29sZWFuaV92Um9idXN0QU5HTEUoR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMdWludCBpbmRleCwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXpl
aSAqbGVuZ3RoLCBHQ0dMYm9vbGVhbiAqZGF0YSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRNdWx0
aXNhbXBsZWZ2Um9idXN0QU5HTEUoR0NHTGVudW0gcG5hbWUsIEdDR0x1aW50IGluZGV4LCBHQ0dM
c2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xmbG9hdCAqdmFsKSBvdmVycmlk
ZTsKLSAgICB2b2lkIGdldFRleExldmVsUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0
YXJnZXQsIGludCBsZXZlbCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dM
c2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldFRl
eExldmVsUGFyYW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIGludCBsZXZlbCwg
R0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NH
TGZsb2F0ICpwYXJhbXMpIG92ZXJyaWRlOwotCi0gICAgdm9pZCBnZXRQb2ludGVydlJvYnVzdEFO
R0xFUm9idXN0QU5HTEUoR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6
ZWkgKmxlbmd0aCwgdm9pZCAqKnBhcmFtcykgb3ZlcnJpZGU7CiAgICAgdm9pZCByZWFkblBpeGVs
c1JvYnVzdEFOR0xFKGludCB4LCBpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVp
Z2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXplLCBH
Q0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHNpemVpICpjb2x1bW5zLCBHQ0dMc2l6ZWkgKnJvd3MsIHZv
aWQgKmRhdGEsIGJvb2wgcmVhZGluZ1RvUGl4ZWxCdWZmZXJPYmplY3QpIG92ZXJyaWRlOwotICAg
IHZvaWQgZ2V0blVuaWZvcm1mdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIGludCBsb2Nh
dGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMZmxvYXQgKnBh
cmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRuVW5pZm9ybWl2Um9idXN0QU5HTEUoR0NHTHVp
bnQgcHJvZ3JhbSwgaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICps
ZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRuVW5pZm9ybXVp
dlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1
ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMdWludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAg
ICB2b2lkIHRleFBhcmFtZXRlcklpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVu
dW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJy
aWRlOwotICAgIHZvaWQgdGV4UGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdl
dCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMdWludCAqcGFy
YW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldFRleFBhcmFtZXRlcklpdlJvYnVzdEFOR0xFKEdD
R0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6
ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldFRleFBh
cmFtZXRlckl1aXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBH
Q0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0x1aW50ICpwYXJhbXMpIG92
ZXJyaWRlOwotICAgIHZvaWQgc2FtcGxlclBhcmFtZXRlcklpdlJvYnVzdEFOR0xFKEdDR0x1aW50
IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGlu
dCAqcGFyYW0pIG92ZXJyaWRlOwotICAgIHZvaWQgc2FtcGxlclBhcmFtZXRlckl1aXZSb2J1c3RB
TkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUs
IGNvbnN0IEdDR0x1aW50ICpwYXJhbSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRTYW1wbGVyUGFy
YW1ldGVySWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdD
R0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVy
cmlkZTsKLSAgICB2b2lkIGdldFNhbXBsZXJQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUoR0NHTHVp
bnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkg
Kmxlbmd0aCwgR0NHTHVpbnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0KLSAgICB2b2lkIGdldFF1ZXJ5
T2JqZWN0aXZSb2J1c3RBTkdMRShHQ0dMdWludCBpZCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXpl
aSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVycmlkZTsK
LSAgICB2b2lkIGdldFF1ZXJ5T2JqZWN0aTY0dlJvYnVzdEFOR0xFKEdDR0x1aW50IGlkLCBHQ0dM
ZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50
NjQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRRdWVyeU9iamVjdHVpNjR2Um9idXN0
QU5HTEUoR0NHTHVpbnQgaWQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NH
THNpemVpICpsZW5ndGgsIEdDR0x1aW50NjQgKnBhcmFtcykgb3ZlcnJpZGU7CiAKIHByb3RlY3Rl
ZDoKICAgICBmcmllbmQgY2xhc3MgRXh0ZW5zaW9uc0dMT3BlbkdMRVM7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdM
RVMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lv
bnNHTE9wZW5HTEVTLmNwcAppbmRleCAzNmMzZWYzOGY5OGI5OWFmMDExNTA2OTkxNDI3YmFjZWZj
YmI4YWMzLi5hYWI5Njg3NDM4N2Q3NTI5N2IwN2I3MGQ4OTI3NWIxY2QzZTA4MDg4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dM
T3BlbkdMRVMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5n
bC9FeHRlbnNpb25zR0xPcGVuR0xFUy5jcHAKQEAgLTEwMCwxMSArMTAwLDYgQEAgdm9pZCBFeHRl
bnNpb25zR0xPcGVuR0xFUzo6cmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlSU1HKHVuc2ln
bmVkIGxvbmcgdGFyZ2UKICAgICAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9J
TlZBTElEX09QRVJBVElPTik7CiB9CiAKLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMRVM6OmJsaXRG
cmFtZWJ1ZmZlcihsb25nIC8qIHNyY1gwICovLCBsb25nIC8qIHNyY1kwICovLCBsb25nIC8qIHNy
Y1gxICovLCBsb25nIC8qIHNyY1kxICovLCBsb25nIC8qIGRzdFgwICovLCBsb25nIC8qIGRzdFkw
ICovLCBsb25nIC8qIGRzdFgxICovLCBsb25nIC8qIGRzdFkxICovLCB1bnNpZ25lZCBsb25nIC8q
IG1hc2sgKi8sIHVuc2lnbmVkIGxvbmcgLyogZmlsdGVyICovKQotewotICAgIG5vdEltcGxlbWVu
dGVkKCk7Ci19Ci0KIHZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMRVM6OnJlbmRlcmJ1ZmZlclN0b3Jh
Z2VNdWx0aXNhbXBsZSh1bnNpZ25lZCBsb25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBzYW1wbGVz
LCB1bnNpZ25lZCBsb25nIGludGVybmFsZm9ybWF0LCB1bnNpZ25lZCBsb25nIHdpZHRoLCB1bnNp
Z25lZCBsb25nIGhlaWdodCkKIHsKICAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJy
ZW50KCkpCkBAIC0xMTUsMjEgKzExMCw2IEBAIHZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMRVM6OnJl
bmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZSh1bnNpZ25lZCBsb25nIHRhcmdldCwKICAgICAg
ICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xFUzo6aW5z
ZXJ0RXZlbnRNYXJrZXJFWFQoY29uc3QgU3RyaW5nJikKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgp
OwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTEVTOjpwdXNoR3JvdXBNYXJrZXJFWFQoY29u
c3QgU3RyaW5nJikKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIEV4dGVuc2lv
bnNHTE9wZW5HTEVTOjpwb3BHcm91cE1hcmtlckVYVCh2b2lkKQotewotICAgIG5vdEltcGxlbWVu
dGVkKCk7Ci19Ci0KIFBsYXRmb3JtR0xPYmplY3QgRXh0ZW5zaW9uc0dMT3BlbkdMRVM6OmNyZWF0
ZVZlcnRleEFycmF5T0VTKCkKIHsKICAgICBpZiAobV9nbEdlblZlcnRleEFycmF5c09FUykgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVu
c2lvbnNHTE9wZW5HTEVTLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVu
Z2wvRXh0ZW5zaW9uc0dMT3BlbkdMRVMuaAppbmRleCAwMTdhNDViNzM5OGQwOTkyZWQxNDc2N2Yw
NzY3ZTA0YjQ2NDE2MjgzLi43ZWY5NmIyM2M1OTg2ODFkMWQ4MGExODc2YzE4N2JkMTNmYTIxNzVl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0
ZW5zaW9uc0dMT3BlbkdMRVMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMRVMuaApAQCAtNzIsMTQgKzcyLDEwIEBAIHB1Ymxp
YzoKIAogICAgIHZpcnR1YWwgdm9pZCBmcmFtZWJ1ZmZlclRleHR1cmUyRE11bHRpc2FtcGxlSU1H
KHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25nIGF0dGFjaG1lbnQsIHVuc2lnbmVk
IGxvbmcgdGV4dGFyZ2V0LCB1bnNpZ25lZCB0ZXh0dXJlLCBpbnQgbGV2ZWwsIHVuc2lnbmVkIGxv
bmcgc2FtcGxlcyk7CiAgICAgdmlydHVhbCB2b2lkIHJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNh
bXBsZUlNRyh1bnNpZ25lZCBsb25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBzYW1wbGVzLCB1bnNp
Z25lZCBsb25nIGludGVybmFsZm9ybWF0LCB1bnNpZ25lZCBsb25nIHdpZHRoLCB1bnNpZ25lZCBs
b25nIGhlaWdodCk7CisgICAgdm9pZCByZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUodW5z
aWduZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgc2FtcGxlcywgdW5zaWduZWQgbG9uZyBp
bnRlcm5hbGZvcm1hdCwgdW5zaWduZWQgbG9uZyB3aWR0aCwgdW5zaWduZWQgbG9uZyBoZWlnaHQp
OwogCiAgICAgLy8gRXh0ZW5zaW9uM0QgbWV0aG9kcwogICAgIGJvb2wgaXNFbmFibGVkKGNvbnN0
IFN0cmluZyYpIG92ZXJyaWRlOwotICAgIHZvaWQgYmxpdEZyYW1lYnVmZmVyKGxvbmcgc3JjWDAs
IGxvbmcgc3JjWTAsIGxvbmcgc3JjWDEsIGxvbmcgc3JjWTEsIGxvbmcgZHN0WDAsIGxvbmcgZHN0
WTAsIGxvbmcgZHN0WDEsIGxvbmcgZHN0WTEsIHVuc2lnbmVkIGxvbmcgbWFzaywgdW5zaWduZWQg
bG9uZyBmaWx0ZXIpIG92ZXJyaWRlOwotICAgIHZvaWQgcmVuZGVyYnVmZmVyU3RvcmFnZU11bHRp
c2FtcGxlKHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25nIHNhbXBsZXMsIHVuc2ln
bmVkIGxvbmcgaW50ZXJuYWxmb3JtYXQsIHVuc2lnbmVkIGxvbmcgd2lkdGgsIHVuc2lnbmVkIGxv
bmcgaGVpZ2h0KSBvdmVycmlkZTsKLSAgICB2b2lkIGluc2VydEV2ZW50TWFya2VyRVhUKGNvbnN0
IFN0cmluZyYpIG92ZXJyaWRlOwotICAgIHZvaWQgcHVzaEdyb3VwTWFya2VyRVhUKGNvbnN0IFN0
cmluZyYpIG92ZXJyaWRlOwotICAgIHZvaWQgcG9wR3JvdXBNYXJrZXJFWFQodm9pZCkgb3ZlcnJp
ZGU7CiAKICAgICBQbGF0Zm9ybUdMT2JqZWN0IGNyZWF0ZVZlcnRleEFycmF5T0VTKCkgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBkZWxldGVWZXJ0ZXhBcnJheU9FUyhQbGF0Zm9ybUdMT2JqZWN0KSBvdmVy
cmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5n
bC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQmFzZS5jcHAKaW5kZXgg
NjM1NmY4MWY0ODIxYjZhMWVhNmMzNTU3ZWRmMWY0ZTY4ODEzZjZiOS4uZjdlYzU3N2RhOTIzMDRl
MjNlOTA3OWQ4ZWVhODUzYzA1YTA1ZjFiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQmFzZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4
dEdMT3BlbkdMQmFzZS5jcHAKQEAgLTY2LDcgKzY2LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6cmVhZFBpeGVsc0FuZENvbnZlcnRUb0JHUkFJZk5lY2Vzc2FyeShpbnQgeCwgaW50
IHkKICAgICBhdXRvIGF0dHJzID0gY29udGV4dEF0dHJpYnV0ZXMoKTsKIAogICAgIC8vIE5WSURJ
QSBkcml2ZXJzIGhhdmUgYSBidWcgd2hlcmUgY2FsbGluZyByZWFkUGl4ZWxzIGluIEJHUkEgY2Fu
IHJldHVybiB0aGUgd3JvbmcgdmFsdWVzIGZvciB0aGUgYWxwaGEgY2hhbm5lbCB3aGVuIHRoZSBh
bHBoYSBpcyBvZmYgZm9yIHRoZSBjb250ZXh0LgotICAgIGlmICghYXR0cnMuYWxwaGEgJiYgZ2V0
RXh0ZW5zaW9ucygpLmlzTlZJRElBKCkpIHsKKyAgICBpZiAoIWF0dHJzLmFscGhhICYmIHN0YXRp
Y19jYXN0PEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbiY+KGdldEV4dGVuc2lvbnMoKSkuaXNOVklE
SUEoKSkgewogICAgICAgICA6OmdsUmVhZFBpeGVscyh4LCB5LCB3aWR0aCwgaGVpZ2h0LCBHTF9S
R0JBLCBHTF9VTlNJR05FRF9CWVRFLCBwaXhlbHMpOwogI2lmIFVTRShBQ0NFTEVSQVRFKQogICAg
ICAgICB2SW1hZ2VfQnVmZmVyIHNyYzsKQEAgLTI5NSwxMiArMjk1LDEyIEBAIHZvaWQgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OmdldEludGVnZXJ2KEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3BhbjxH
Q0dMaW50PiB2YWx1CiAjZW5kaWYKICAgICBjYXNlIE1BWF9URVhUVVJFX1NJWkU6CiAgICAgICAg
IDo6Z2xHZXRJbnRlZ2VydihNQVhfVEVYVFVSRV9TSVpFLCB2YWx1ZS5kYXRhKTsKLSAgICAgICAg
aWYgKGdldEV4dGVuc2lvbnMoKS5yZXF1aXJlc1Jlc3RyaWN0ZWRNYXhpbXVtVGV4dHVyZVNpemUo
KSkKKyAgICAgICAgaWYgKHN0YXRpY19jYXN0PEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbiY+KGdl
dEV4dGVuc2lvbnMoKSkucmVxdWlyZXNSZXN0cmljdGVkTWF4aW11bVRleHR1cmVTaXplKCkpCiAg
ICAgICAgICAgICAqdmFsdWUgPSBzdGQ6Om1pbig0MDk2LCAqdmFsdWUpOwogICAgICAgICBicmVh
azsKICAgICBjYXNlIE1BWF9DVUJFX01BUF9URVhUVVJFX1NJWkU6CiAgICAgICAgIDo6Z2xHZXRJ
bnRlZ2VydihNQVhfQ1VCRV9NQVBfVEVYVFVSRV9TSVpFLCB2YWx1ZS5kYXRhKTsKLSAgICAgICAg
aWYgKGdldEV4dGVuc2lvbnMoKS5yZXF1aXJlc1Jlc3RyaWN0ZWRNYXhpbXVtVGV4dHVyZVNpemUo
KSkKKyAgICAgICAgaWYgKHN0YXRpY19jYXN0PEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbiY+KGdl
dEV4dGVuc2lvbnMoKSkucmVxdWlyZXNSZXN0cmljdGVkTWF4aW11bVRleHR1cmVTaXplKCkpCiAg
ICAgICAgICAgICAqdmFsdWUgPSBzdGQ6Om1pbigxMDI0LCAqdmFsdWUpOwogICAgICAgICBicmVh
azsKICAgICBkZWZhdWx0Ogo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>415353</attachid>
            <date>2020-12-03 14:56:34 -0800</date>
            <delta_ts>2020-12-04 11:50:16 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-218896-20201203145632.patch</filename>
            <type>text/plain</type>
            <size>61359</size>
            <attacher name="Rini Patel">rini_patel</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwNDA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmRiZjBkODg2Y2Q0NGZh
NTkyMjIyMTUyMDM1YzQ4NDU3YTY0Yjc5Zi4uZTU1N2E0ODdmZjhkMjYzZGI0N2QwMDM1NDJkYzhh
MmI0OTU0MDAxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyNSBAQAorMjAyMC0xMi0wMyAgUmlu
aSBQYXRlbCAgPHJpbmlfcGF0ZWxAYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZSB1bnVzZWQg
ZnVuY3Rpb25zIGZyb20gR3JhcGhpY3NDb250ZXh0R0wgYW5kIEV4dGVuc2lvbnNHTAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE4ODk2CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVtb3ZlIHVudXNlZCBm
dW5jdGlvbnMgZnJvbSBHcmFwaGljc0NvbnRleHRHTCBhbmQgRXh0ZW5zaW9uc0dMCisgICAgICAg
IFRoZXkncmUgZGVhZCBjb2RlIGFuZCBtYWtlIGl0IGhhcmRlciB0byBpbXBsZW1lbnQgdGhlIEdQ
VSBQcm9jZXNzIHZlcnNpb24uCisKKyAgICAgICAgLSBJZiB0aGUgZnVuY3Rpb24gaXMgdW51c2Vk
LCByZW1vdmUgaXQgZnVsbHkKKyAgICAgICAgLSBJZiB0aGUgZnVuY3Rpb24gaXMgdW51c2VkIGlu
IFVTRShBTkdMRSkgV2ViR0wgcGFydCwgcmVtb3ZlIHRoZSBmdW5jdGlvbiBmcm9tIEdyYXBoaWNz
Q29udGV4dEdMIGFuZCBBTkdMRSBHcmFwaGljc0NvbnRleHRHTE9wZW5HTAorCisKKyAgICAgICAg
KiBodG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmNyZWF0ZSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvRXh0ZW5zaW9uc0dMLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvYW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5z
aW9uc0dMQU5HTEU6OkV4dGVuc2lvbnNHTEFOR0xFKToKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVu
c2lvbnNHTEFOR0xFOjppbml0aWFsaXplQXZhaWxhYmxlRXh0ZW5zaW9ucyk6CisgICAgICAgIChX
ZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6YmxpdEZyYW1lYnVmZmVyQU5HTEUpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OnJlbmRlcmJ1ZmZlclN0b3Jh
Z2VNdWx0aXNhbXBsZUFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lv
bnNHTEFOR0xFOjppbnNlcnRFdmVudE1hcmtlckVYVCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6cHVzaEdyb3VwTWFya2VyRVhUKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpwb3BHcm91cE1hcmtlckVYVCk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6cmVhZFBpeGVsc1Jv
YnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xF
Ojp0ZXhQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkV4dGVuc2lvbnNHTEFOR0xFOjp0ZXhQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpnZXRRdWVyeWl2Um9idXN0QU5H
TEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldFF1
ZXJ5T2JqZWN0dWl2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0
ZW5zaW9uc0dMQU5HTEU6OmdldEJ1ZmZlclBvaW50ZXJ2Um9idXN0QU5HTEUpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldFZlcnRleEF0dHJpYklpdlJv
YnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xF
OjpnZXRWZXJ0ZXhBdHRyaWJJdWl2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldFVuaWZvcm11aXZSb2J1c3RBTkdMRSk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6Z2V0QnVmZmVyUGFyYW1l
dGVyaTY0dlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lv
bnNHTEFOR0xFOjpzYW1wbGVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6c2FtcGxlclBhcmFtZXRlcmZ2Um9idXN0
QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6Omdl
dFNhbXBsZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpnZXRTYW1wbGVyUGFyYW1ldGVyZnZSb2J1c3RBTkdMRSk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6Z2V0RnJhbWVi
dWZmZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkV4dGVuc2lvbnNHTEFOR0xFOjpnZXRQcm9ncmFtSW50ZXJmYWNlaXZSb2J1c3RBTkdMRSk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6Z2V0Qm9vbGVhbmlf
dlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFO
R0xFOjpnZXRNdWx0aXNhbXBsZWZ2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldFRleExldmVsUGFyYW1ldGVyaXZSb2J1c3RBTkdM
RSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6Z2V0VGV4
TGV2ZWxQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkV4dGVuc2lvbnNHTEFOR0xFOjpnZXRQb2ludGVydlJvYnVzdEFOR0xFUm9idXN0QU5HTEUpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldG5Vbmlmb3Jt
ZnZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xB
TkdMRTo6Z2V0blVuaWZvcm1pdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpnZXRuVW5pZm9ybXVpdlJvYnVzdEFOR0xFKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjp0ZXhQYXJhbWV0ZXJJaXZS
b2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdM
RTo6dGV4UGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpnZXRUZXhQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRSk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6Z2V0VGV4UGFyYW1l
dGVySXVpdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lv
bnNHTEFOR0xFOjpzYW1wbGVyUGFyYW1ldGVySWl2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OnNhbXBsZXJQYXJhbWV0ZXJJdWl2Um9i
dXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6
OmdldFNhbXBsZXJQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6Z2V0U2FtcGxlclBhcmFtZXRlckl1aXZSb2J1c3RB
TkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6Z2V0
UXVlcnlPYmplY3RpdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4
dGVuc2lvbnNHTEFOR0xFOjpnZXRRdWVyeU9iamVjdGk2NHZSb2J1c3RBTkdMRSk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6Z2V0UXVlcnlPYmplY3R1aTY0
dlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hbmds
ZS9FeHRlbnNpb25zR0xBTkdMRS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5n
bC9FeHRlbnNpb25zR0xPcGVuR0wuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dM
T3BlbkdMOjpibGl0RnJhbWVidWZmZXJBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpFeHRlbnNpb25zR0xPcGVuR0w6OnJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xF
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTDo6aW5zZXJ0
RXZlbnRNYXJrZXJFWFQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dM
T3BlbkdMOjpwdXNoR3JvdXBNYXJrZXJFWFQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
RXh0ZW5zaW9uc0dMT3BlbkdMOjpwb3BHcm91cE1hcmtlckVYVCk6IERlbGV0ZWQuCisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTC5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpyZWFkUGl4ZWxz
Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3Bl
bkdMQ29tbW9uOjp0ZXhQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6dGV4UGFyYW1ldGVyaXZSb2J1c3RB
TkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21t
b246OmdldFF1ZXJ5aXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpF
eHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFF1ZXJ5T2JqZWN0dWl2Um9idXN0QU5HTEUpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRC
dWZmZXJQb2ludGVydlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4
dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0VmVydGV4QXR0cmliSWl2Um9idXN0QU5HTEUpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRW
ZXJ0ZXhBdHRyaWJJdWl2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRVbmlmb3JtdWl2Um9idXN0QU5HTEUpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRCdWZm
ZXJQYXJhbWV0ZXJpNjR2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpzYW1wbGVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRSk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OnNh
bXBsZXJQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0U2FtcGxlclBhcmFtZXRlcml2Um9idXN0QU5H
TEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9u
OjpnZXRTYW1wbGVyUGFyYW1ldGVyZnZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldEZyYW1lYnVmZmVyUGFyYW1ldGVy
aXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xP
cGVuR0xDb21tb246OmdldFByb2dyYW1JbnRlcmZhY2VpdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0Qm9vbGVhbmlf
dlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9w
ZW5HTENvbW1vbjo6Z2V0TXVsdGlzYW1wbGVmdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0VGV4TGV2ZWxQYXJhbWV0
ZXJpdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNH
TE9wZW5HTENvbW1vbjo6Z2V0VGV4TGV2ZWxQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0UG9pbnRl
cnZSb2J1c3RBTkdMRVJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4
dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0blVuaWZvcm1mdlJvYnVzdEFOR0xFKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0blVuaWZv
cm1pdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNH
TE9wZW5HTENvbW1vbjo6Z2V0blVuaWZvcm11aXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OnRleFBhcmFtZXRlcklpdlJv
YnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5H
TENvbW1vbjo6dGV4UGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0VGV4UGFyYW1ldGVySWl2Um9i
dXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdM
Q29tbW9uOjpnZXRUZXhQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpzYW1wbGVyUGFyYW1ldGVySWl2
Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3Bl
bkdMQ29tbW9uOjpzYW1wbGVyUGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0U2FtcGxlclBhcmFt
ZXRlcklpdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lv
bnNHTE9wZW5HTENvbW1vbjo6Z2V0U2FtcGxlclBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRSk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFF1
ZXJ5T2JqZWN0aXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRl
bnNpb25zR0xPcGVuR0xDb21tb246OmdldFF1ZXJ5T2JqZWN0aTY0dlJvYnVzdEFOR0xFKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0UXVl
cnlPYmplY3R1aTY0dlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmg6CisgICAgICAgIChXZWJD
b3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmlzTlZJRElBKToKKyAgICAgICAgKFdlYkNv
cmU6OkV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6aXNBTUQpOgorICAgICAgICAoV2ViQ29yZTo6
RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjppc0ludGVsKToKKyAgICAgICAgKFdlYkNvcmU6OkV4
dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6aXNJbWFnaW5hdGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OnZlbmRvcik6CisgICAgICAgIChXZWJDb3JlOjpF
eHRlbnNpb25zR0xPcGVuR0xDb21tb246OnJlcXVpcmVzQnVpbHRJbkZ1bmN0aW9uRW11bGF0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6cmVxdWlyZXNS
ZXN0cmljdGVkTWF4aW11bVRleHR1cmVTaXplKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMRVMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXh0
ZW5zaW9uc0dMT3BlbkdMRVM6OmJsaXRGcmFtZWJ1ZmZlckFOR0xFKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTEVTOjppbnNlcnRFdmVudE1hcmtlckVYVCk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xFUzo6cHVzaEdy
b3VwTWFya2VyRVhUKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9w
ZW5HTEVTOjpwb3BHcm91cE1hcmtlckVYVCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVTLmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQmFzZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVhZFBpeGVsc0FuZENvbnZl
cnRUb0JHUkFJZk5lY2Vzc2FyeSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6Z2V0SW50ZWdlcnYpOgorCiAyMDIwLTEyLTAzICBDaHJpcyBEdW1leiAgPGNkdW1l
ekBhcHBsZS5jb20+CiAKICAgICAgICAgUmVmYWN0b3IgbWFjcm9zIGZvciBsb3cgcG93ZXIgbW9k
ZSBjb2RlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2UuY3BwCmluZGV4IDcyYzI2NDQ2NjZjZjAzYTJmNTlmMWUwOWZlOTMy
OTNjYjgwYjZiYWUuLjNjNmMyNGRmMDIzZWQwMjNiYzc4NzM1YTlmODAwODM2ODM5MmQ1YTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2UuY3BwCkBAIC03NDMsOCArNzQzLDcgQEAgc3RkOjp1bmlxdWVfcHRyPFdlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2U+IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmNyZWF0ZShD
YW4KICAgICB9CiAKICAgICBhdXRvJiBleHRlbnNpb25zID0gY29udGV4dC0+Z2V0RXh0ZW5zaW9u
cygpOwotICAgIGlmIChleHRlbnNpb25zLnN1cHBvcnRzKCJHTF9FWFRfZGVidWdfbWFya2VyIl9z
KSkKLSAgICAgICAgZXh0ZW5zaW9ucy5wdXNoR3JvdXBNYXJrZXJFWFQoIldlYkdMUmVuZGVyaW5n
Q29udGV4dCJfcyk7CisgICAgaWYgKGV4dGVuc2lvbnMuc3VwcG9ydHMoIkdMX0VYVF9kZWJ1Z19t
YXJrZXIiX3MpKSB7IH0KIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlPiByZW5kZXJpbmdDb250ZXh0OwogI2lmIEVOQUJMRShXRUJHTDIpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9FeHRlbnNpb25zR0wuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0V4dGVuc2lvbnNHTC5oCmluZGV4IGM0ZTc3Nzhk
YjZhNDQ4ZmQwYTVlNjUxNTkxZmVlYTE0NTM4NjM4MjMuLjYyZDU4MzAwMGExNWM2N2QyZjhhNTA4
YjRmYzZiN2U4ODRjNGI0ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0V4dGVuc2lvbnNHTC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0V4dGVuc2lvbnNHTC5oCkBAIC0yNzgsMTIgKzI3OCw2IEBAIHB1YmxpYzoKICAgICAvLyBl
eHRlcm5hbGx5LgogICAgIHZpcnR1YWwgR0NHTGludCBnZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJC
KCkgPSAwOwogCi0gICAgLy8gR0xfQU5HTEVfZnJhbWVidWZmZXJfYmxpdAotICAgIHZpcnR1YWwg
dm9pZCBibGl0RnJhbWVidWZmZXJBTkdMRShHQ0dMaW50IHNyY1gwLCBHQ0dMaW50IHNyY1kwLCBH
Q0dMaW50IHNyY1gxLCBHQ0dMaW50IHNyY1kxLCBHQ0dMaW50IGRzdFgwLCBHQ0dMaW50IGRzdFkw
LCBHQ0dMaW50IGRzdFgxLCBHQ0dMaW50IGRzdFkxLCBHQ0dMYml0ZmllbGQgbWFzaywgR0NHTGVu
dW0gZmlsdGVyKSA9IDA7Ci0KLSAgICAvLyBHTF9BTkdMRV9mcmFtZWJ1ZmZlcl9tdWx0aXNhbXBs
ZQotICAgIHZpcnR1YWwgdm9pZCByZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVBTkdMRShH
Q0dMZW51bSB0YXJnZXQsIEdDR0xzaXplaSBzYW1wbGVzLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1h
dCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KSA9IDA7Ci0KICAgICAvLyBHTF9P
RVNfdmVydGV4X2FycmF5X29iamVjdAogICAgIHZpcnR1YWwgUGxhdGZvcm1HTE9iamVjdCBjcmVh
dGVWZXJ0ZXhBcnJheU9FUygpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlVmVydGV4QXJy
YXlPRVMoUGxhdGZvcm1HTE9iamVjdCkgPSAwOwpAQCAtMjkzLDExICsyODcsNiBAQCBwdWJsaWM6
CiAgICAgLy8gR0xfQU5HTEVfdHJhbnNsYXRlZF9zaGFkZXJfc291cmNlCiAgICAgdmlydHVhbCBT
dHJpbmcgZ2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFKFBsYXRmb3JtR0xPYmplY3QpID0g
MDsKIAotICAgIC8vIEdMX0VYVF9kZWJ1Z19tYXJrZXIKLSAgICB2aXJ0dWFsIHZvaWQgaW5zZXJ0
RXZlbnRNYXJrZXJFWFQoY29uc3QgU3RyaW5nJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBwdXNo
R3JvdXBNYXJrZXJFWFQoY29uc3QgU3RyaW5nJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBwb3BH
cm91cE1hcmtlckVYVCgpID0gMDsKLQogICAgIC8vIEdMX0FSQl9kcmF3X2J1ZmZlcnMgLyBHTF9F
WFRfZHJhd19idWZmZXJzCiAgICAgdmlydHVhbCB2b2lkIGRyYXdCdWZmZXJzRVhUKEdDR0xTcGFu
PGNvbnN0IEdDR0xlbnVtPiBidWZzKSA9IDA7CiAKQEAgLTMwNiw0NyArMjk1LDYgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgdm9pZCBkcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRShHQ0dMZW51bSBt
b2RlLCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xlbnVtIHR5cGUsIEdDR0x2b2lkcHRyIG9mZnNldCwg
R0NHTHNpemVpIHByaW1jb3VudCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB2ZXJ0ZXhBdHRyaWJE
aXZpc29yQU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0x1aW50IGRpdmlzb3IpID0gMDsKIAotICAg
IC8vIEdMX0FOR0xFX3JvYnVzdF9jbGllbnRfbWVtb3J5Ci0gICAgdmlydHVhbCB2b2lkIHJlYWRQ
aXhlbHNSb2J1c3RBTkdMRShHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBH
Q0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXpl
aSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHNpemVpKiBjb2x1bW5zLCBHQ0dMc2l6
ZWkqIHJvd3MsIEdDR0x2b2lkKiBwaXhlbHMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgdGV4UGFy
YW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dM
c2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGZsb2F0KiBwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFs
IHZvaWQgdGV4UGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVt
IHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGludCogcGFyYW1zKSA9IDA7Ci0K
LSAgICB2aXJ0dWFsIHZvaWQgZ2V0UXVlcnlpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwg
R0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NH
TGludCogcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldFF1ZXJ5T2JqZWN0dWl2Um9i
dXN0QU5HTEUoR0NHTHVpbnQgaWQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwg
R0NHTHNpemVpKiBsZW5ndGgsIEdDR0x1aW50KiBwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZv
aWQgZ2V0QnVmZmVyUG9pbnRlcnZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVt
IHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0x2b2lkKiog
cGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldFZlcnRleEF0dHJpYklpdlJvYnVzdEFO
R0xFKEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdD
R0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQg
Z2V0VmVydGV4QXR0cmliSXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBw
bmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMdWludCogcGFy
YW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldFVuaWZvcm11aXZSb2J1c3RBTkdMRShHQ0dM
dWludCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNp
emVpKiBsZW5ndGgsIEdDR0x1aW50KiBwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0
QnVmZmVyUGFyYW1ldGVyaTY0dlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0g
cG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludDY0KiBw
YXJhbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgc2FtcGxlclBhcmFtZXRlcml2Um9idXN0QU5H
TEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBj
b25zdCBHQ0dMaW50KiBwYXJhbSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBzYW1wbGVyUGFyYW1l
dGVyZnZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNp
emVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xmbG9hdCogcGFyYW0pID0gMDsKLSAgICB2aXJ0dWFsIHZv
aWQgZ2V0U2FtcGxlclBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NH
TGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGlu
dCogcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldFNhbXBsZXJQYXJhbWV0ZXJmdlJv
YnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVm
U2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xmbG9hdCogcGFyYW1zKSA9IDA7Ci0KLSAgICB2
aXJ0dWFsIHZvaWQgZ2V0RnJhbWVidWZmZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVt
IHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxl
bmd0aCwgR0NHTGludCogcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldFByb2dyYW1J
bnRlcmZhY2VpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xlbnVtIHByb2dyYW1J
bnRlcmZhY2UsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBs
ZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRCb29sZWFu
aV92Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMdWludCBpbmRleCwgR0NHTHNpemVp
IGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMYm9vbGVhbiogZGF0YSkgPSAwOyAvLyBO
T0xJTlQKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0TXVsdGlzYW1wbGVmdlJvYnVzdEFOR0xFKEdDR0xl
bnVtIHBuYW1lLCBHQ0dMdWludCBpbmRleCwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSog
bGVuZ3RoLCBHQ0dMZmxvYXQqIHZhbCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRUZXhMZXZl
bFBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBH
Q0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dM
aW50KiBwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0VGV4TGV2ZWxQYXJhbWV0ZXJm
dlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gcG5h
bWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGZsb2F0KiBwYXJh
bXMpID0gMDsKLQotICAgIHZpcnR1YWwgdm9pZCBnZXRQb2ludGVydlJvYnVzdEFOR0xFUm9idXN0
QU5HTEUoR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0
aCwgR0NHTHZvaWQqKiBwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0blVuaWZvcm1m
dlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXpl
aSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGZsb2F0KiBwYXJhbXMpID0gMDsKLSAg
ICB2aXJ0dWFsIHZvaWQgZ2V0blVuaWZvcm1pdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0s
IEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwg
R0NHTGludCogcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldG5Vbmlmb3JtdWl2Um9i
dXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1
ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMdWludCogcGFyYW1zKSA9IDA7Ci0gICAgdmly
dHVhbCB2b2lkIHRleFBhcmFtZXRlcklpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NH
TGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMaW50KiBwYXJhbXMpID0g
MDsKLSAgICB2aXJ0dWFsIHZvaWQgdGV4UGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFKEdDR0xlbnVt
IHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMdWlu
dCogcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldFRleFBhcmFtZXRlcklpdlJvYnVz
dEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXpl
LCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2
b2lkIGdldFRleFBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xl
bnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0x1aW50
KiBwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgc2FtcGxlclBhcmFtZXRlcklpdlJvYnVz
dEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6
ZSwgY29uc3QgR0NHTGludCogcGFyYW0pID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgc2FtcGxlclBh
cmFtZXRlckl1aXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwg
R0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0x1aW50KiBwYXJhbSkgPSAwOwotICAgIHZpcnR1
YWwgdm9pZCBnZXRTYW1wbGVyUGFyYW1ldGVySWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxl
ciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwg
R0NHTGludCogcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldFNhbXBsZXJQYXJhbWV0
ZXJJdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xz
aXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHVpbnQqIHBhcmFtcykgPSAwOwot
Ci0gICAgdmlydHVhbCB2b2lkIGdldFF1ZXJ5T2JqZWN0aXZSb2J1c3RBTkdMRShHQ0dMdWludCBp
ZCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwg
R0NHTGludCogcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldFF1ZXJ5T2JqZWN0aTY0
dlJvYnVzdEFOR0xFKEdDR0x1aW50IGlkLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNp
emUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50NjQqIHBhcmFtcykgPSAwOwotICAgIHZpcnR1
YWwgdm9pZCBnZXRRdWVyeU9iamVjdHVpNjR2Um9idXN0QU5HTEUoR0NHTHVpbnQgaWQsIEdDR0xl
bnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0x1aW50
NjQqIHBhcmFtcykgPSAwOwotCiAgICAgLy8gT3RoZXIgZnVuY3Rpb25zLgogI2lmICFVU0UoQU5H
TEUpCiAgICAgLy8gRVhUIFJvYnVzdG5lc3MgLSB1c2VzIGdldEdyYXBoaWNzUmVzZXRTdGF0dXNB
UkIKQEAgLTM1NCwxNiArMzAyLDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBnZXRuVW5p
Zm9ybWZ2RVhUKEdDR0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBi
dWZTaXplLCBHQ0dMZmxvYXQqIHBhcmFtcykgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBnZXRuVW5p
Zm9ybWl2RVhUKEdDR0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBi
dWZTaXplLCBHQ0dMaW50KiBwYXJhbXMpID0gMDsKIAotICAgIHZpcnR1YWwgYm9vbCBpc05WSURJ
QSgpID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgaXNBTUQoKSA9IDA7Ci0gICAgdmlydHVhbCBib29s
IGlzSW50ZWwoKSA9IDA7Ci0gICAgdmlydHVhbCBib29sIGlzSW1hZ2luYXRpb24oKSA9IDA7Ci0g
ICAgdmlydHVhbCBTdHJpbmcgdmVuZG9yKCkgPSAwOwotCi0gICAgLy8gU29tZSBjb25maWd1cmF0
aW9ucyBoYXZlIGJ1Z3MgcmVnYXJkaW5nIGJ1aWx0LWluIGZ1bmN0aW9ucyBpbiB0aGVpciBPcGVu
R0wgZHJpdmVycwotICAgIC8vIHRoYXQgbXVzdCBiZSBhdm9pZGVkLiBQb3J0cyBzaG91bGQgaW1w
bGVtZW50IHRoZXNlIGZsYWdzIG9uIHN1Y2ggY29uZmlndXJhdGlvbnMuCi0gICAgdmlydHVhbCBi
b29sIHJlcXVpcmVzQnVpbHRJbkZ1bmN0aW9uRW11bGF0aW9uKCkgPSAwOwotICAgIHZpcnR1YWwg
Ym9vbCByZXF1aXJlc1Jlc3RyaWN0ZWRNYXhpbXVtVGV4dHVyZVNpemUoKSA9IDA7CiAjZW5kaWYK
IAogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xl
L0V4dGVuc2lvbnNHTEFOR0xFLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmNwcAppbmRleCBiN2RiNGZkMjA0MWIzYmJjOGJiOWE3
NzMzZTg5YmVlYWFlYjZmNzg5Li5jZTQ2YzdhNzVhNWUyYjYyZjJhYjlmZTAyYjliZWMxZjZhNzBm
YjlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9F
eHRlbnNpb25zR0xBTkdMRS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUuY3BwCkBAIC00MywxMCArNDMsOSBAQCB0eXBlZGVm
IHZvaWQqIEdMZWdsQ29udGV4dDsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1FeHRlbnNpb25z
R0xBTkdMRTo6RXh0ZW5zaW9uc0dMQU5HTEUoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqIGNvbnRl
eHQsIGJvb2wgdXNlSW5kZXhlZEdldFN0cmluZykKK0V4dGVuc2lvbnNHTEFOR0xFOjpFeHRlbnNp
b25zR0xBTkdMRShHcmFwaGljc0NvbnRleHRHTE9wZW5HTCogY29udGV4dCkKICAgICA6IG1faW5p
dGlhbGl6ZWRBdmFpbGFibGVFeHRlbnNpb25zKGZhbHNlKQogICAgICwgbV9jb250ZXh0KGNvbnRl
eHQpCi0gICAgLCBtX3VzZUluZGV4ZWRHZXRTdHJpbmcodXNlSW5kZXhlZEdldFN0cmluZykKIHsK
IH0KIApAQCAtMTA5LDQyICsxMDgsMTUgQEAgU3RyaW5nIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRU
cmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUoUGxhdGZvcm1HTE9iamVjdCBzaGFkZXIKIAogdm9p
ZCBFeHRlbnNpb25zR0xBTkdMRTo6aW5pdGlhbGl6ZUF2YWlsYWJsZUV4dGVuc2lvbnMoKQogewot
ICAgIGlmIChtX3VzZUluZGV4ZWRHZXRTdHJpbmcpIHsKLSAgICAgICAgR0xpbnQgbnVtRXh0ZW5z
aW9ucyA9IDA7Ci0gICAgICAgIGdsOjpHZXRJbnRlZ2VydihHTF9OVU1fRVhURU5TSU9OUywgJm51
bUV4dGVuc2lvbnMpOwotICAgICAgICBmb3IgKEdMaW50IGkgPSAwOyBpIDwgbnVtRXh0ZW5zaW9u
czsgKytpKQotICAgICAgICAgICAgbV9hdmFpbGFibGVFeHRlbnNpb25zLmFkZChnbDo6R2V0U3Ry
aW5naShHTF9FWFRFTlNJT05TLCBpKSk7Ci0gICAgICAgIGdsOjpHZXRJbnRlZ2VydihHTF9OVU1f
UkVRVUVTVEFCTEVfRVhURU5TSU9OU19BTkdMRSwgJm51bUV4dGVuc2lvbnMpOwotICAgICAgICBm
b3IgKEdMaW50IGkgPSAwOyBpIDwgbnVtRXh0ZW5zaW9uczsgKytpKQotICAgICAgICAgICAgbV9y
ZXF1ZXN0YWJsZUV4dGVuc2lvbnMuYWRkKGdsOjpHZXRTdHJpbmdpKEdMX1JFUVVFU1RBQkxFX0VY
VEVOU0lPTlNfQU5HTEUsIGkpKTsKLSAgICB9IGVsc2UgewotICAgICAgICBTdHJpbmcgZXh0ZW5z
aW9uc1N0cmluZyA9IGdldEV4dGVuc2lvbnMoKTsKLSAgICAgICAgZm9yIChhdXRvJiBleHRlbnNp
b24gOiBleHRlbnNpb25zU3RyaW5nLnNwbGl0KCcgJykpCi0gICAgICAgICAgICBtX2F2YWlsYWJs
ZUV4dGVuc2lvbnMuYWRkKGV4dGVuc2lvbik7Ci0gICAgICAgIGV4dGVuc2lvbnNTdHJpbmcgPSBT
dHJpbmcocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZ2w6OkdldFN0cmluZyhHTF9SRVFV
RVNUQUJMRV9FWFRFTlNJT05TX0FOR0xFKSkpOwotICAgICAgICBmb3IgKGF1dG8mIGV4dGVuc2lv
biA6IGV4dGVuc2lvbnNTdHJpbmcuc3BsaXQoJyAnKSkKLSAgICAgICAgICAgIG1fcmVxdWVzdGFi
bGVFeHRlbnNpb25zLmFkZChleHRlbnNpb24pOwotICAgIH0KKyAgICBTdHJpbmcgZXh0ZW5zaW9u
c1N0cmluZyA9IGdldEV4dGVuc2lvbnMoKTsKKyAgICBmb3IgKGF1dG8mIGV4dGVuc2lvbiA6IGV4
dGVuc2lvbnNTdHJpbmcuc3BsaXQoJyAnKSkKKyAgICAgICAgbV9hdmFpbGFibGVFeHRlbnNpb25z
LmFkZChleHRlbnNpb24pOworICAgIGV4dGVuc2lvbnNTdHJpbmcgPSBTdHJpbmcocmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBjaGFyKj4oZ2w6OkdldFN0cmluZyhHTF9SRVFVRVNUQUJMRV9FWFRFTlNJ
T05TX0FOR0xFKSkpOworICAgIGZvciAoYXV0byYgZXh0ZW5zaW9uIDogZXh0ZW5zaW9uc1N0cmlu
Zy5zcGxpdCgnICcpKQorICAgICAgICBtX3JlcXVlc3RhYmxlRXh0ZW5zaW9ucy5hZGQoZXh0ZW5z
aW9uKTsKICAgICBtX2luaXRpYWxpemVkQXZhaWxhYmxlRXh0ZW5zaW9ucyA9IHRydWU7CiB9CiAK
LXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmJsaXRGcmFtZWJ1ZmZlckFOR0xFKEdDR0xpbnQgc3Jj
WDAsIEdDR0xpbnQgc3JjWTAsIEdDR0xpbnQgc3JjWDEsIEdDR0xpbnQgc3JjWTEsIEdDR0xpbnQg
ZHN0WDAsIEdDR0xpbnQgZHN0WTAsIEdDR0xpbnQgZHN0WDEsIEdDR0xpbnQgZHN0WTEsIEdDR0xi
aXRmaWVsZCBtYXNrLCBHQ0dMZW51bSBmaWx0ZXIpCi17Ci0gICAgLy8gRklYTUU6IGNvbnNpZGVy
IGFkZGluZyBzdXBwb3J0IGZvciBBUFBMRV9mcmFtZWJ1ZmZlcl9tdWx0aXNhbXBsZS4KLSAgICBp
ZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQot
ICAgIGdsOjpCbGl0RnJhbWVidWZmZXJBTkdMRShzcmNYMCwgc3JjWTAsIHNyY1gxLCBzcmNZMSwg
ZHN0WDAsIGRzdFkwLCBkc3RYMSwgZHN0WTEsIG1hc2ssIGZpbHRlcik7Ci19Ci0KLXZvaWQgRXh0
ZW5zaW9uc0dMQU5HTEU6OnJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKEdDR0xl
bnVtIHRhcmdldCwgR0NHTHNpemVpIHNhbXBsZXMsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBH
Q0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQpCi17Ci0gICAgaWYgKCFtX2NvbnRleHQt
Pm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6UmVuZGVy
YnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5HTEUodGFyZ2V0LCBzYW1wbGVzLCBpbnRlcm5hbGZv
cm1hdCwgd2lkdGgsIGhlaWdodCk7Ci19Ci0KIFBsYXRmb3JtR0xPYmplY3QgRXh0ZW5zaW9uc0dM
QU5HTEU6OmNyZWF0ZVZlcnRleEFycmF5T0VTKCkKIHsKICAgICBpZiAoIW1fY29udGV4dC0+bWFr
ZUNvbnRleHRDdXJyZW50KCkpCkBAIC0xODUsMjQgKzE1Nyw2IEBAIHZvaWQgRXh0ZW5zaW9uc0dM
QU5HTEU6OmJpbmRWZXJ0ZXhBcnJheU9FUyhQbGF0Zm9ybUdMT2JqZWN0IGFycmF5KQogICAgIGds
OjpCaW5kVmVydGV4QXJyYXlPRVMoYXJyYXkpOwogfQogCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xF
OjppbnNlcnRFdmVudE1hcmtlckVYVChjb25zdCBTdHJpbmcmKQotewotICAgIC8vIEZJWE1FOiBp
bXBsZW1lbnQgdGhpcyBmdW5jdGlvbiBhbmQgYWRkIEdMX0VYVF9kZWJ1Z19tYXJrZXIgaW4gc3Vw
cG9ydHMoKS4KLSAgICByZXR1cm47Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OnB1c2hH
cm91cE1hcmtlckVYVChjb25zdCBTdHJpbmcmKQotewotICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQg
dGhpcyBmdW5jdGlvbiBhbmQgYWRkIEdMX0VYVF9kZWJ1Z19tYXJrZXIgaW4gc3VwcG9ydHMoKS4K
LSAgICByZXR1cm47Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OnBvcEdyb3VwTWFya2Vy
RVhUKHZvaWQpCi17Ci0gICAgLy8gRklYTUU6IGltcGxlbWVudCB0aGlzIGZ1bmN0aW9uIGFuZCBh
ZGQgR0xfRVhUX2RlYnVnX21hcmtlciBpbiBzdXBwb3J0cygpLgotICAgIHJldHVybjsKLX0KLQog
Ym9vbCBFeHRlbnNpb25zR0xBTkdMRTo6c3VwcG9ydHNFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBu
YW1lKQogewogICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMobmFtZSkg
fHwgbV9yZXF1ZXN0YWJsZUV4dGVuc2lvbnMuY29udGFpbnMobmFtZSk7CkBAIC0yNTgsMjkxICsy
MTIsNiBAQCBHQ0dMZW51bSBFeHRlbnNpb25zR0xBTkdMRTo6YWRqdXN0V2ViR0wxVGV4dHVyZUlu
dGVybmFsRm9ybWF0KEdDR0xlbnVtIGludGVybmFsZgogICAgIHJldHVybiBpbnRlcm5hbGZvcm1h
dDsKIH0KIAotLy8gR0xfQU5HTEVfcm9idXN0X2NsaWVudF9tZW1vcnkKLXZvaWQgRXh0ZW5zaW9u
c0dMQU5HTEU6OnJlYWRQaXhlbHNSb2J1c3RBTkdMRShpbnQgeCwgaW50IHksIEdDR0xzaXplaSB3
aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBH
Q0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xzaXplaSAqY29sdW1ucywg
R0NHTHNpemVpICpyb3dzLCB2b2lkICpwaXhlbHMpCi17Ci0gICAgaWYgKCFtX2NvbnRleHQtPm1h
a2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6UmVhZFBpeGVs
c1JvYnVzdEFOR0xFKHgsIHksIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgYnVmU2l6ZSwg
bGVuZ3RoLCBjb2x1bW5zLCByb3dzLCBwaXhlbHMpOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTEFO
R0xFOjp0ZXhQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0g
cG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMZmxvYXQgKnBhcmFtcykKLXsKLSAg
ICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsK
LQotICAgIGdsOjpUZXhQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKHRhcmdldCwgcG5hbWUsIGJ1ZlNp
emUsIHBhcmFtcyk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OnRleFBhcmFtZXRlcml2
Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1
ZlNpemUsIGNvbnN0IEdDR0xpbnQgKnBhcmFtcykKLXsKLSAgICBpZiAoIW1fY29udGV4dC0+bWFr
ZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpUZXhQYXJhbWV0
ZXJpdlJvYnVzdEFOR0xFKHRhcmdldCwgcG5hbWUsIGJ1ZlNpemUsIHBhcmFtcyk7Ci19Ci0KLXZv
aWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldFF1ZXJ5aXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJn
ZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgs
IEdDR0xpbnQgKnBhcmFtcykKLXsKLSAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJy
ZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpHZXRRdWVyeWl2Um9idXN0QU5HTEUo
dGFyZ2V0LCBwbmFtZSwgYnVmU2l6ZSwgbGVuZ3RoLCBwYXJhbXMpOwotfQotCi12b2lkIEV4dGVu
c2lvbnNHTEFOR0xFOjpnZXRRdWVyeU9iamVjdHVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IGlkLCBH
Q0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dM
dWludCAqcGFyYW1zKQotewotICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQo
KSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OkdldFF1ZXJ5T2JqZWN0dWl2Um9idXN0QU5H
TEUoaWQsIHBuYW1lLCBidWZTaXplLCBsZW5ndGgsIHBhcmFtcyk7Ci19Ci0KLXZvaWQgRXh0ZW5z
aW9uc0dMQU5HTEU6OmdldEJ1ZmZlclBvaW50ZXJ2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCB2
b2lkICoqcGFyYW1zKQotewotICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQo
KSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OkdldEJ1ZmZlclBvaW50ZXJ2Um9idXN0QU5H
TEUodGFyZ2V0LCBwbmFtZSwgYnVmU2l6ZSwgbGVuZ3RoLCBwYXJhbXMpOwotfQotCi12b2lkIEV4
dGVuc2lvbnNHTEFOR0xFOjpnZXRWZXJ0ZXhBdHRyaWJJaXZSb2J1c3RBTkdMRShHQ0dMdWludCBp
bmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0
aCwgR0NHTGludCAqcGFyYW1zKQotewotICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1
cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OkdldFZlcnRleEF0dHJpYklpdlJv
YnVzdEFOR0xFKGluZGV4LCBwbmFtZSwgYnVmU2l6ZSwgbGVuZ3RoLCBwYXJhbXMpOwotfQotCi12
b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRWZXJ0ZXhBdHRyaWJJdWl2Um9idXN0QU5HTEUoR0NH
THVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVp
ICpsZW5ndGgsIEdDR0x1aW50ICpwYXJhbXMpCi17Ci0gICAgaWYgKCFtX2NvbnRleHQtPm1ha2VD
b250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6R2V0VmVydGV4QXR0
cmliSXVpdlJvYnVzdEFOR0xFKGluZGV4LCBwbmFtZSwgYnVmU2l6ZSwgbGVuZ3RoLCBwYXJhbXMp
OwotfQotCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRVbmlmb3JtdWl2Um9idXN0QU5HTEUo
R0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdD
R0xzaXplaSAqbGVuZ3RoLCBHQ0dMdWludCAqcGFyYW1zKQotewotICAgIGlmICghbV9jb250ZXh0
LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OkdldFVu
aWZvcm11aXZSb2J1c3RBTkdMRShwcm9ncmFtLCBsb2NhdGlvbiwgYnVmU2l6ZSwgbGVuZ3RoLCBw
YXJhbXMpOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRCdWZmZXJQYXJhbWV0ZXJp
NjR2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVp
IGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50NjQgKnBhcmFtcykKLXsKLSAgICBp
ZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQot
ICAgIGdsOjpHZXRCdWZmZXJQYXJhbWV0ZXJpNjR2Um9idXN0QU5HTEUodGFyZ2V0LCBwbmFtZSwg
YnVmU2l6ZSwgbGVuZ3RoLCByZWludGVycHJldF9jYXN0PEdMaW50NjQqPihwYXJhbXMpKTsKLX0K
LQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6c2FtcGxlclBhcmFtZXRlcml2Um9idXN0QU5HTEUo
R0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25z
dCBHQ0dMaW50ICpwYXJhbSkKLXsKLSAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJy
ZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpTYW1wbGVyUGFyYW1ldGVyaXZSb2J1
c3RBTkdMRShzYW1wbGVyLCBwbmFtZSwgYnVmU2l6ZSwgcGFyYW0pOwotfQotCi12b2lkIEV4dGVu
c2lvbnNHTEFOR0xFOjpzYW1wbGVyUGFyYW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1w
bGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xmbG9hdCAq
cGFyYW0pCi17Ci0gICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAg
ICAgICByZXR1cm47Ci0KLSAgICBnbDo6U2FtcGxlclBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoc2Ft
cGxlciwgcG5hbWUsIGJ1ZlNpemUsIHBhcmFtKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdM
RTo6Z2V0U2FtcGxlclBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NH
TGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGlu
dCAqcGFyYW1zKQotewotICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OkdldFNhbXBsZXJQYXJhbWV0ZXJpdlJvYnVzdEFO
R0xFKHNhbXBsZXIsIHBuYW1lLCBidWZTaXplLCBsZW5ndGgsIHBhcmFtcyk7Ci19Ci0KLXZvaWQg
RXh0ZW5zaW9uc0dMQU5HTEU6OmdldFNhbXBsZXJQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0x1
aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVp
ICpsZW5ndGgsIEdDR0xmbG9hdCAqcGFyYW1zKQotewotICAgIGlmICghbV9jb250ZXh0LT5tYWtl
Q29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OkdldFNhbXBsZXJQ
YXJhbWV0ZXJmdlJvYnVzdEFOR0xFKHNhbXBsZXIsIHBuYW1lLCBidWZTaXplLCBsZW5ndGgsIHBh
cmFtcyk7Ci19Ci0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0RnJhbWVidWZmZXJQYXJh
bWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xz
aXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKQotewotICAg
IGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwot
Ci0gICAgZ2w6OkdldEZyYW1lYnVmZmVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRSh0YXJnZXQsIHBu
YW1lLCBidWZTaXplLCBsZW5ndGgsIHBhcmFtcyk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5H
TEU6OmdldFByb2dyYW1JbnRlcmZhY2VpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdD
R0xlbnVtIHByb2dyYW1JbnRlcmZhY2UsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6
ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykKLXsKLSAgICBpZiAoIW1fY29u
dGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpH
ZXRQcm9ncmFtSW50ZXJmYWNlaXZSb2J1c3RBTkdMRShwcm9ncmFtLCBwcm9ncmFtSW50ZXJmYWNl
LCBwbmFtZSwgYnVmU2l6ZSwgbGVuZ3RoLCBwYXJhbXMpOwotfQotCi12b2lkIEV4dGVuc2lvbnNH
TEFOR0xFOjpnZXRCb29sZWFuaV92Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMdWlu
dCBpbmRleCwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMYm9vbGVh
biAqZGF0YSkKLXsKLSAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0g
ICAgICAgIHJldHVybjsKLQotICAgIGdsOjpHZXRCb29sZWFuaV92Um9idXN0QU5HTEUodGFyZ2V0
LCBpbmRleCwgYnVmU2l6ZSwgbGVuZ3RoLCBkYXRhKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xB
TkdMRTo6Z2V0TXVsdGlzYW1wbGVmdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHBuYW1lLCBHQ0dMdWlu
dCBpbmRleCwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMZmxvYXQg
KnZhbCkKLXsKLSAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAg
ICAgIHJldHVybjsKLQotICAgIGdsOjpHZXRNdWx0aXNhbXBsZWZ2Um9idXN0QU5HTEUocG5hbWUs
IGluZGV4LCBidWZTaXplLCBsZW5ndGgsIHZhbCk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5H
TEU6OmdldFRleExldmVsUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdD
R0xpbnQgbGV2ZWwsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVp
ICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykKLXsKLSAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNv
bnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpHZXRUZXhMZXZlbFBh
cmFtZXRlcml2Um9idXN0QU5HTEUodGFyZ2V0LCBsZXZlbCwgcG5hbWUsIGJ1ZlNpemUsIGxlbmd0
aCwgcGFyYW1zKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0VGV4TGV2ZWxQYXJh
bWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVu
dW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGZsb2F0
ICpwYXJhbXMpCi17Ci0gICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQot
ICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6R2V0VGV4TGV2ZWxQYXJhbWV0ZXJmdlJvYnVzdEFO
R0xFKHRhcmdldCwgbGV2ZWwsIHBuYW1lLCBidWZTaXplLCBsZW5ndGgsIHBhcmFtcyk7Ci19Ci0K
LQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0UG9pbnRlcnZSb2J1c3RBTkdMRVJvYnVzdEFO
R0xFKEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgs
IHZvaWQgKipwYXJhbXMpCi17Ci0gICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVu
dCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6R2V0UG9pbnRlcnZSb2J1c3RBTkdMRVJv
YnVzdEFOR0xFKHBuYW1lLCBidWZTaXplLCBsZW5ndGgsIHBhcmFtcyk7Ci19Ci0KLXZvaWQgRXh0
ZW5zaW9uc0dMQU5HTEU6OmdldG5Vbmlmb3JtZnZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFt
LCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgs
IEdDR0xmbG9hdCAqcGFyYW1zKQotewotICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1
cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OkdldG5Vbmlmb3JtZnZSb2J1c3RB
TkdMRShwcm9ncmFtLCBsb2NhdGlvbiwgYnVmU2l6ZSwgbGVuZ3RoLCBwYXJhbXMpOwotfQotCi12
b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRuVW5pZm9ybWl2Um9idXN0QU5HTEUoR0NHTHVpbnQg
cHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAq
bGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpCi17Ci0gICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250
ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6R2V0blVuaWZvcm1pdlJv
YnVzdEFOR0xFKHByb2dyYW0sIGxvY2F0aW9uLCBidWZTaXplLCBsZW5ndGgsIHBhcmFtcyk7Ci19
Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldG5Vbmlmb3JtdWl2Um9idXN0QU5HTEUoR0NH
THVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xz
aXplaSAqbGVuZ3RoLCBHQ0dMdWludCAqcGFyYW1zKQotewotICAgIGlmICghbV9jb250ZXh0LT5t
YWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OkdldG5Vbmlm
b3JtdWl2Um9idXN0QU5HTEUocHJvZ3JhbSwgbG9jYXRpb24sIGJ1ZlNpemUsIGxlbmd0aCwgcGFy
YW1zKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6dGV4UGFyYW1ldGVySWl2Um9idXN0
QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUs
IGNvbnN0IEdDR0xpbnQgKnBhcmFtcykKLXsKLSAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRl
eHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpUZXhQYXJhbWV0ZXJJaXZS
b2J1c3RBTkdMRSh0YXJnZXQsIHBuYW1lLCBidWZTaXplLCBwYXJhbXMpOwotfQotCi12b2lkIEV4
dGVuc2lvbnNHTEFOR0xFOjp0ZXhQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0x1aW50ICpw
YXJhbXMpCi17Ci0gICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAg
ICAgICByZXR1cm47Ci0KLSAgICBnbDo6VGV4UGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFKHRhcmdl
dCwgcG5hbWUsIGJ1ZlNpemUsIHBhcmFtcyk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6
OmdldFRleFBhcmFtZXRlcklpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0g
cG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFy
YW1zKQotewotICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAg
ICAgcmV0dXJuOwotCi0gICAgZ2w6OkdldFRleFBhcmFtZXRlcklpdlJvYnVzdEFOR0xFKHRhcmdl
dCwgcG5hbWUsIGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1zKTsKLX0KLQotdm9pZCBFeHRlbnNpb25z
R0xBTkdMRTo6Z2V0VGV4UGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwg
R0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NH
THVpbnQgKnBhcmFtcykKLXsKLSAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50
KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpHZXRUZXhQYXJhbWV0ZXJJdWl2Um9idXN0
QU5HTEUodGFyZ2V0LCBwbmFtZSwgYnVmU2l6ZSwgbGVuZ3RoLCBwYXJhbXMpOwotfQotCi12b2lk
IEV4dGVuc2lvbnNHTEFOR0xFOjpzYW1wbGVyUGFyYW1ldGVySWl2Um9idXN0QU5HTEUoR0NHTHVp
bnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dM
aW50ICpwYXJhbSkKLXsKLSAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkp
Ci0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpTYW1wbGVyUGFyYW1ldGVySWl2Um9idXN0QU5H
TEUoc2FtcGxlciwgcG5hbWUsIGJ1ZlNpemUsIHBhcmFtKTsKLX0KLQotdm9pZCBFeHRlbnNpb25z
R0xBTkdMRTo6c2FtcGxlclBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVy
LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0x1aW50ICpwYXJh
bSkKLXsKLSAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAg
IHJldHVybjsKLQotICAgIGdsOjpTYW1wbGVyUGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFKHNhbXBs
ZXIsIHBuYW1lLCBidWZTaXplLCBwYXJhbSk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6
OmdldFNhbXBsZXJQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dM
ZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50
ICpwYXJhbXMpCi17Ci0gICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQot
ICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6R2V0U2FtcGxlclBhcmFtZXRlcklpdlJvYnVzdEFO
R0xFKHNhbXBsZXIsIHBuYW1lLCBidWZTaXplLCBsZW5ndGgsIHBhcmFtcyk7Ci19Ci0KLXZvaWQg
RXh0ZW5zaW9uc0dMQU5HTEU6OmdldFNhbXBsZXJQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUoR0NH
THVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6
ZWkgKmxlbmd0aCwgR0NHTHVpbnQgKnBhcmFtcykKLXsKLSAgICBpZiAoIW1fY29udGV4dC0+bWFr
ZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpHZXRTYW1wbGVy
UGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFKHNhbXBsZXIsIHBuYW1lLCBidWZTaXplLCBsZW5ndGgs
IHBhcmFtcyk7Ci19Ci0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0UXVlcnlPYmplY3Rp
dlJvYnVzdEFOR0xFKEdDR0x1aW50IGlkLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNp
emUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpCi17Ci0gICAgaWYgKCFtX2Nv
bnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6
R2V0UXVlcnlPYmplY3RpdlJvYnVzdEFOR0xFKGlkLCBwbmFtZSwgYnVmU2l6ZSwgbGVuZ3RoLCBw
YXJhbXMpOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRRdWVyeU9iamVjdGk2NHZS
b2J1c3RBTkdMRShHQ0dMdWludCBpZCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXpl
LCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludDY0ICpwYXJhbXMpCi17Ci0gICAgaWYgKCFtX2Nv
bnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6
R2V0UXVlcnlPYmplY3RpNjR2Um9idXN0QU5HTEUoaWQsIHBuYW1lLCBidWZTaXplLCBsZW5ndGgs
IHJlaW50ZXJwcmV0X2Nhc3Q8R0xpbnQ2NCo+KHBhcmFtcykpOwotfQotCi12b2lkIEV4dGVuc2lv
bnNHTEFOR0xFOjpnZXRRdWVyeU9iamVjdHVpNjR2Um9idXN0QU5HTEUoR0NHTHVpbnQgaWQsIEdD
R0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0x1
aW50NjQgKnBhcmFtcykKLXsKLSAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50
KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpHZXRRdWVyeU9iamVjdHVpNjR2Um9idXN0
QU5HTEUoaWQsIHBuYW1lLCBidWZTaXplLCBsZW5ndGgsIHJlaW50ZXJwcmV0X2Nhc3Q8R0x1aW50
NjQqPihwYXJhbXMpKTsKLX0KLQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAv
LyBFTkFCTEUoR1JBUEhJQ1NfQ09OVEVYVF9HTCkgJiYgVVNFKEFOR0xFKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFO
R0xFLmgKaW5kZXggYjJkMjc3YjlhYzlkMjc4NjBmNTVhYmFiZjhjZmU1NWU4NGI1ZjU3ZS4uMWU1
M2E4YTBkNzI5OWE1NTBmMThhOWY0ZTFjZGMwMGIyNTZlNzk2OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRlbnNpb25zR0xBTkdM
RS5oCkBAIC0zNiw3ICszNiw3IEBAIGNsYXNzIEV4dGVuc2lvbnNHTEFOR0xFIDogcHVibGljIEV4
dGVuc2lvbnNHTCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAg
Ly8gVGhpcyBjbGFzcyBvbmx5IG5lZWRzIHRvIGJlIGluc3RhbnRpYXRlZCBieSBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTCBpbXBsZW1lbnRhdGlvbnMuCi0gICAgRXh0ZW5zaW9uc0dMQU5HTEUoR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0wqLCBib29sIHVzZUluZGV4ZWRHZXRTdHJpbmcgPSBmYWxzZSk7
CisgICAgRXh0ZW5zaW9uc0dMQU5HTEUoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqKTsKICAgICB2
aXJ0dWFsIH5FeHRlbnNpb25zR0xBTkdMRSgpOwogCiAgICAgLy8gRXh0ZW5zaW9uc0dMIG1ldGhv
ZHMuCkBAIC00OSw2MCArNDksMTQgQEAgcHVibGljOgogICAgIHZvaWQgZGVsZXRlVmVydGV4QXJy
YXlPRVMoUGxhdGZvcm1HTE9iamVjdCkgb3ZlcnJpZGU7CiAgICAgR0NHTGJvb2xlYW4gaXNWZXJ0
ZXhBcnJheU9FUyhQbGF0Zm9ybUdMT2JqZWN0KSBvdmVycmlkZTsKICAgICB2b2lkIGJpbmRWZXJ0
ZXhBcnJheU9FUyhQbGF0Zm9ybUdMT2JqZWN0KSBvdmVycmlkZTsKLSAgICB2b2lkIGluc2VydEV2
ZW50TWFya2VyRVhUKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwotICAgIHZvaWQgcHVzaEdyb3Vw
TWFya2VyRVhUKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwotICAgIHZvaWQgcG9wR3JvdXBNYXJr
ZXJFWFQodm9pZCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkcmF3QnVmZmVyc0VYVChHQ0dMU3Bhbjxj
b25zdCBHQ0dMZW51bT4pIG92ZXJyaWRlOwogCiAgICAgU3RyaW5nIGdldFRyYW5zbGF0ZWRTaGFk
ZXJTb3VyY2VBTkdMRShQbGF0Zm9ybUdMT2JqZWN0KSBvdmVycmlkZTsKIAotICAgIHZvaWQgYmxp
dEZyYW1lYnVmZmVyQU5HTEUoR0NHTGludCBzcmNYMCwgR0NHTGludCBzcmNZMCwgR0NHTGludCBz
cmNYMSwgR0NHTGludCBzcmNZMSwgR0NHTGludCBkc3RYMCwgR0NHTGludCBkc3RZMCwgR0NHTGlu
dCBkc3RYMSwgR0NHTGludCBkc3RZMSwgR0NHTGJpdGZpZWxkIG1hc2ssIEdDR0xlbnVtIGZpbHRl
cikgb3ZlcnJpZGU7Ci0gICAgdm9pZCByZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVBTkdM
RShHQ0dMZW51bSB0YXJnZXQsIEdDR0xzaXplaSBzYW1wbGVzLCBHQ0dMZW51bSBpbnRlcm5hbGZv
cm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KSBvdmVycmlkZTsKLQogICAg
IHZvaWQgZHJhd0FycmF5c0luc3RhbmNlZEFOR0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xpbnQgZmly
c3QsIEdDR0xzaXplaSBjb3VudCwgR0NHTHNpemVpIHByaW1jb3VudCkgb3ZlcnJpZGU7CiAgICAg
dm9pZCBkcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMc2l6ZWkg
Y291bnQsIEdDR0xlbnVtIHR5cGUsIEdDR0x2b2lkcHRyIG9mZnNldCwgR0NHTHNpemVpIHByaW1j
b3VudCkgb3ZlcnJpZGU7CiAgICAgdm9pZCB2ZXJ0ZXhBdHRyaWJEaXZpc29yQU5HTEUoR0NHTHVp
bnQgaW5kZXgsIEdDR0x1aW50IGRpdmlzb3IpIG92ZXJyaWRlOwogCi0gICAgLy8gR0xfQU5HTEVf
cm9idXN0X2NsaWVudF9tZW1vcnkKLSAgICB2b2lkIHJlYWRQaXhlbHNSb2J1c3RBTkdMRShHQ0dM
aW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dM
ZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkg
Kmxlbmd0aCwgR0NHTHNpemVpICpjb2x1bW5zLCBHQ0dMc2l6ZWkgKnJvd3MsIHZvaWQgKnBpeGVs
cykgb3ZlcnJpZGU7Ci0gICAgdm9pZCB0ZXhQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0xlbnVt
IHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMZmxv
YXQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCB0ZXhQYXJhbWV0ZXJpdlJvYnVzdEFOR0xF
KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25z
dCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0UXVlcnlpdlJvYnVzdEFO
R0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBH
Q0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdl
dFF1ZXJ5T2JqZWN0dWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgaWQsIEdDR0xlbnVtIHBuYW1lLCBH
Q0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0x1aW50ICpwYXJhbXMpIG92
ZXJyaWRlOwotICAgIHZvaWQgZ2V0QnVmZmVyUG9pbnRlcnZSb2J1c3RBTkdMRShHQ0dMZW51bSB0
YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5n
dGgsIHZvaWQgKipwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0VmVydGV4QXR0cmliSWl2
Um9idXN0QU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVm
U2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAg
dm9pZCBnZXRWZXJ0ZXhBdHRyaWJJdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0xl
bnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0x1aW50
ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0VW5pZm9ybXVpdlJvYnVzdEFOR0xFKEdD
R0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dM
c2l6ZWkgKmxlbmd0aCwgR0NHTHVpbnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRC
dWZmZXJQYXJhbWV0ZXJpNjR2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBw
bmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50NjQgKnBh
cmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzYW1wbGVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShH
Q0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0
IEdDR0xpbnQgKnBhcmFtKSBvdmVycmlkZTsKLSAgICB2b2lkIHNhbXBsZXJQYXJhbWV0ZXJmdlJv
YnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVm
U2l6ZSwgY29uc3QgR0NHTGZsb2F0ICpwYXJhbSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRTYW1w
bGVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFt
ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMp
IG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0U2FtcGxlclBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NH
THVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6
ZWkgKmxlbmd0aCwgR0NHTGZsb2F0ICpwYXJhbXMpIG92ZXJyaWRlOwotCi0gICAgdm9pZCBnZXRG
cmFtZWJ1ZmZlclBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51
bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpw
YXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0UHJvZ3JhbUludGVyZmFjZWl2Um9idXN0QU5H
TEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGVudW0gcHJvZ3JhbUludGVyZmFjZSwgR0NHTGVudW0g
cG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFy
YW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldEJvb2xlYW5pX3ZSb2J1c3RBTkdMRShHQ0dMZW51
bSB0YXJnZXQsIEdDR0x1aW50IGluZGV4LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICps
ZW5ndGgsIEdDR0xib29sZWFuICpkYXRhKSBvdmVycmlkZTsgLy8gTk9MSU5UCi0gICAgdm9pZCBn
ZXRNdWx0aXNhbXBsZWZ2Um9idXN0QU5HTEUoR0NHTGVudW0gcG5hbWUsIEdDR0x1aW50IGluZGV4
LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xmbG9hdCAqdmFsKSBv
dmVycmlkZTsKLSAgICB2b2lkIGdldFRleExldmVsUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVm
U2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAg
dm9pZCBnZXRUZXhMZXZlbFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMaW50IGxldmVsLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXpl
aSAqbGVuZ3RoLCBHQ0dMZmxvYXQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0KLSAgICB2b2lkIGdldFBv
aW50ZXJ2Um9idXN0QU5HTEVSb2J1c3RBTkdMRShHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1
ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCB2b2lkICoqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2
b2lkIGdldG5Vbmlmb3JtZnZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMaW50IGxv
Y2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xmbG9hdCAq
cGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldG5Vbmlmb3JtaXZSb2J1c3RBTkdMRShHQ0dM
dWludCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNp
emVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRuVW5p
Zm9ybXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdD
R0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHVpbnQgKnBhcmFtcykgb3Zl
cnJpZGU7Ci0gICAgdm9pZCB0ZXhQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJn
ZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGludCAqcGFy
YW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIHRleFBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRShHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NH
THVpbnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRUZXhQYXJhbWV0ZXJJaXZSb2J1
c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6
ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9p
ZCBnZXRUZXhQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51
bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMdWludCAq
cGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIHNhbXBsZXJQYXJhbWV0ZXJJaXZSb2J1c3RBTkdM
RShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNv
bnN0IEdDR0xpbnQgKnBhcmFtKSBvdmVycmlkZTsKLSAgICB2b2lkIHNhbXBsZXJQYXJhbWV0ZXJJ
dWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXpl
aSBidWZTaXplLCBjb25zdCBHQ0dMdWludCAqcGFyYW0pIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0
U2FtcGxlclBhcmFtZXRlcklpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVt
IHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBh
cmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRTYW1wbGVyUGFyYW1ldGVySXVpdlJvYnVzdEFO
R0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwg
R0NHTHNpemVpICpsZW5ndGgsIEdDR0x1aW50ICpwYXJhbXMpIG92ZXJyaWRlOwotCi0gICAgdm9p
ZCBnZXRRdWVyeU9iamVjdGl2Um9idXN0QU5HTEUoR0NHTHVpbnQgaWQsIEdDR0xlbnVtIHBuYW1l
LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykg
b3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRRdWVyeU9iamVjdGk2NHZSb2J1c3RBTkdMRShHQ0dMdWlu
dCBpZCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0
aCwgR0NHTGludDY0ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0UXVlcnlPYmplY3R1
aTY0dlJvYnVzdEFOR0xFKEdDR0x1aW50IGlkLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1
ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMdWludDY0ICpwYXJhbXMpIG92ZXJyaWRlOwot
CiAgICAgLy8gT25seSBmb3Igbm9uLVdlYkdMIDIuMCBjb250ZXh0cy4KICAgICBHQ0dMZW51bSBh
ZGp1c3RXZWJHTDFUZXh0dXJlSW50ZXJuYWxGb3JtYXQoR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQs
IEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSk7CiAKQEAgLTExOSw4ICs3Myw2IEBAIHBy
aXZhdGU6CiAgICAgLy8gV2VhayBwb2ludGVyIGJhY2sgdG8gR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0wuCiAgICAgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqIG1fY29udGV4dDsKIAotICAgIGJvb2wg
bV91c2VJbmRleGVkR2V0U3RyaW5nIHsgZmFsc2UgfTsKLQogICAgIC8vIFdoZXRoZXIgdGhlIFdl
YkdMIDEuMC1yZWxhdGVkIGZsb2F0aW5nLXBvaW50IHJlbmRlcmFiaWxpdHkgZXh0ZW5zaW9ucyBo
YXZlIGJlZW4gZW5hYmxlZC4KICAgICBib29sIG1fd2ViZ2xDb2xvckJ1ZmZlckZsb2F0UkdCIHsg
ZmFsc2UgfTsKICAgICBib29sIG1fd2ViZ2xDb2xvckJ1ZmZlckZsb2F0UkdCQSB7IGZhbHNlIH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0
ZW5zaW9uc0dMT3BlbkdMLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29w
ZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuY3BwCmluZGV4IGFkZDVmMzUyYWU0ZGU2YjZkNWRjMTkx
ZTY3M2I1YWFmYTU2ZGU5NWYuLmMzMDY0Njc0ODhiMDdhY2FiYmQxN2VjYWM4YjZhMTU4MjYyNDIz
ZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9F
eHRlbnNpb25zR0xPcGVuR0wuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuY3BwCkBAIC00OCwyMiArNDgsNiBAQCBFeHRl
bnNpb25zR0xPcGVuR0w6OkV4dGVuc2lvbnNHTE9wZW5HTChHcmFwaGljc0NvbnRleHRHTE9wZW5H
TCogY29udGV4dCwgYm9vbCB1cwogRXh0ZW5zaW9uc0dMT3BlbkdMOjp+RXh0ZW5zaW9uc0dMT3Bl
bkdMKCkgPSBkZWZhdWx0OwogCiAKLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMOjpibGl0RnJhbWVi
dWZmZXJBTkdMRShHQ0dMaW50IHNyY1gwLCBHQ0dMaW50IHNyY1kwLCBHQ0dMaW50IHNyY1gxLCBH
Q0dMaW50IHNyY1kxLCBHQ0dMaW50IGRzdFgwLCBHQ0dMaW50IGRzdFkwLCBHQ0dMaW50IGRzdFgx
LCBHQ0dMaW50IGRzdFkxLCBHQ0dMYml0ZmllbGQgbWFzaywgR0NHTGVudW0gZmlsdGVyKQotewot
ICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJu
OwotCi0gICAgOjpnbEJsaXRGcmFtZWJ1ZmZlckVYVChzcmNYMCwgc3JjWTAsIHNyY1gxLCBzcmNZ
MSwgZHN0WDAsIGRzdFkwLCBkc3RYMSwgZHN0WTEsIG1hc2ssIGZpbHRlcik7Ci19Ci0KLXZvaWQg
RXh0ZW5zaW9uc0dMT3BlbkdMOjpyZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVBTkdMRShH
Q0dMZW51bSB0YXJnZXQsIEdDR0xzaXplaSBzYW1wbGVzLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1h
dCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KQotewotICAgIGlmICghbV9jb250
ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgOjpnbFJl
bmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUVYVCh0YXJnZXQsIHNhbXBsZXMsIGludGVybmFs
Zm9ybWF0LCB3aWR0aCwgaGVpZ2h0KTsKLX0KLQogUGxhdGZvcm1HTE9iamVjdCBFeHRlbnNpb25z
R0xPcGVuR0w6OmNyZWF0ZVZlcnRleEFycmF5T0VTKCkKIHsKICAgICBpZiAoIW1fY29udGV4dC0+
bWFrZUNvbnRleHRDdXJyZW50KCkpCkBAIC0xMjcsMjQgKzExMSw2IEBAIHZvaWQgRXh0ZW5zaW9u
c0dMT3BlbkdMOjpiaW5kVmVydGV4QXJyYXlPRVMoUGxhdGZvcm1HTE9iamVjdCBhcnJheSkKICNl
bmRpZgogfQogCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTDo6aW5zZXJ0RXZlbnRNYXJrZXJFWFQo
Y29uc3QgU3RyaW5nJikKLXsKLSAgICAvLyBGSVhNRTogaW1wbGVtZW50IHRoaXMgZnVuY3Rpb24g
YW5kIGFkZCBHTF9FWFRfZGVidWdfbWFya2VyIGluIHN1cHBvcnRzKCkuCi0gICAgcmV0dXJuOwot
fQotCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTDo6cHVzaEdyb3VwTWFya2VyRVhUKGNvbnN0IFN0
cmluZyYpCi17Ci0gICAgLy8gRklYTUU6IGltcGxlbWVudCB0aGlzIGZ1bmN0aW9uIGFuZCBhZGQg
R0xfRVhUX2RlYnVnX21hcmtlciBpbiBzdXBwb3J0cygpLgotICAgIHJldHVybjsKLX0KLQotdm9p
ZCBFeHRlbnNpb25zR0xPcGVuR0w6OnBvcEdyb3VwTWFya2VyRVhUKHZvaWQpCi17Ci0gICAgLy8g
RklYTUU6IGltcGxlbWVudCB0aGlzIGZ1bmN0aW9uIGFuZCBhZGQgR0xfRVhUX2RlYnVnX21hcmtl
ciBpbiBzdXBwb3J0cygpLgotICAgIHJldHVybjsKLX0KLQogYm9vbCBFeHRlbnNpb25zR0xPcGVu
R0w6OnN1cHBvcnRzRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgbmFtZSkKIHsKICAgICAvLyBHTF9B
TkdMRV9mcmFtZWJ1ZmZlcl9ibGl0IGFuZCBHTF9BTkdMRV9mcmFtZWJ1ZmZlcl9tdWx0aXNhbXBs
ZSBhcmUgImZha2UiLiBUaGV5IGFyZSBpbXBsZW1lbnRlZCB1c2luZyBvdGhlcgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9w
ZW5HTC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lv
bnNHTE9wZW5HTC5oCmluZGV4IDQ3NTAyMjZlY2VjZWY0NDM5NmU5OTM4Njc2Y2I2MzliZTgzNDM3
YjYuLjBhZGJkNzA1MGI3ZTNmNzdlMDE4ODk0MzMyZmZjODdjZjMwZDkwYzUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVu
R0wuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5z
aW9uc0dMT3BlbkdMLmgKQEAgLTQwLDE2ICs0MCwxMCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+
RXh0ZW5zaW9uc0dMT3BlbkdMKCk7CiAKICAgICAvLyBFeHRlbnNpb25zR0wgbWV0aG9kcy4KLSAg
ICB2b2lkIGJsaXRGcmFtZWJ1ZmZlckFOR0xFKEdDR0xpbnQgc3JjWDAsIEdDR0xpbnQgc3JjWTAs
IEdDR0xpbnQgc3JjWDEsIEdDR0xpbnQgc3JjWTEsIEdDR0xpbnQgZHN0WDAsIEdDR0xpbnQgZHN0
WTAsIEdDR0xpbnQgZHN0WDEsIEdDR0xpbnQgZHN0WTEsIEdDR0xiaXRmaWVsZCBtYXNrLCBHQ0dM
ZW51bSBmaWx0ZXIpIG92ZXJyaWRlOwotICAgIHZvaWQgcmVuZGVyYnVmZmVyU3RvcmFnZU11bHRp
c2FtcGxlQU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWkgc2FtcGxlcywgR0NHTGVudW0g
aW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkgb3ZlcnJp
ZGU7Ci0KICAgICBQbGF0Zm9ybUdMT2JqZWN0IGNyZWF0ZVZlcnRleEFycmF5T0VTKCkgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBkZWxldGVWZXJ0ZXhBcnJheU9FUyhQbGF0Zm9ybUdMT2JqZWN0KSBvdmVy
cmlkZTsKICAgICBHQ0dMYm9vbGVhbiBpc1ZlcnRleEFycmF5T0VTKFBsYXRmb3JtR0xPYmplY3Qp
IG92ZXJyaWRlOwogICAgIHZvaWQgYmluZFZlcnRleEFycmF5T0VTKFBsYXRmb3JtR0xPYmplY3Qp
IG92ZXJyaWRlOwotICAgIHZvaWQgaW5zZXJ0RXZlbnRNYXJrZXJFWFQoY29uc3QgU3RyaW5nJikg
b3ZlcnJpZGU7Ci0gICAgdm9pZCBwdXNoR3JvdXBNYXJrZXJFWFQoY29uc3QgU3RyaW5nJikgb3Zl
cnJpZGU7Ci0gICAgdm9pZCBwb3BHcm91cE1hcmtlckVYVCh2b2lkKSBvdmVycmlkZTsKICAgICB2
b2lkIGRyYXdCdWZmZXJzRVhUKEdDR0xTcGFuPGNvbnN0IEdDR0xlbnVtPikgb3ZlcnJpZGU7CiAK
ICAgICB2b2lkIGRyYXdBcnJheXNJbnN0YW5jZWRBTkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMaW50
IGZpcnN0LCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xzaXplaSBwcmltY291bnQpIG92ZXJyaWRlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVu
c2lvbnNHTE9wZW5HTENvbW1vbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmNwcAppbmRleCA2OTNmYjkzYTY3ZmJj
ODQwNzA4MDQ4MmM4ZWViZTE2ODE3MTI3M2IwLi4zMzJjODI0MjQ5NzI0YmI5NjM2ZWFhYmVhMDNj
MmMzNzU4ZTAxNmZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmNwcApA
QCAtMjU0LDE4NSArMjU0LDYgQEAgdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldG5V
bmlmb3JtaXZFWFQoR0NHTHVpbnQsIGludCwgR0NHTHNpemVpLCBHQ0dMaW4KICAgICBtX2NvbnRl
eHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKIH0KIAotdm9pZCBF
eHRlbnNpb25zR0xPcGVuR0xDb21tb246OnJlYWRQaXhlbHNSb2J1c3RBTkdMRShpbnQsIGludCwg
R0NHTHNpemVpLCBHQ0dMc2l6ZWksIEdDR0xlbnVtLCBHQ0dMZW51bSwgR0NHTHNpemVpLCBHQ0dM
c2l6ZWkgKiwgR0NHTHNpemVpICosIEdDR0xzaXplaSAqLCB2b2lkICopCi17Ci0gICAgbV9jb250
ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Ci19Ci0KLXZvaWQg
RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjp0ZXhQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0xl
bnVtLCBHQ0dMZW51bSwgR0NHTHNpemVpLCBjb25zdCBHQ0dMZmxvYXQgKikKLXsKLSAgICBtX2Nv
bnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLX0KLQotdm9p
ZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OnRleFBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NH
TGVudW0sIEdDR0xlbnVtLCBHQ0dMc2l6ZWksIGNvbnN0IEdDR0xpbnQgKikKLXsKLSAgICBtX2Nv
bnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLX0KLQotdm9p
ZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFF1ZXJ5aXZSb2J1c3RBTkdMRShHQ0dMZW51
bSwgR0NHTGVudW0sIEdDR0xzaXplaSwgR0NHTHNpemVpICosIEdDR0xpbnQgKikKLXsKLSAgICBt
X2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLX0KLQot
dm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFF1ZXJ5T2JqZWN0dWl2Um9idXN0QU5H
TEUoR0NHTHVpbnQsIEdDR0xlbnVtLCBHQ0dMc2l6ZWksIEdDR0xzaXplaSAqLCBHQ0dMdWludCAq
KQotewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJ
T04pOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0QnVmZmVyUG9pbnRl
cnZSb2J1c3RBTkdMRShHQ0dMZW51bSwgR0NHTGVudW0sIEdDR0xzaXplaSwgR0NHTHNpemVpICos
IHZvaWQgKiopCi17Ci0gICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElE
X09QRVJBVElPTik7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRWZXJ0
ZXhBdHRyaWJJaXZSb2J1c3RBTkdMRShHQ0dMdWludCwgR0NHTGVudW0sIEdDR0xzaXplaSwgR0NH
THNpemVpICosIEdDR0xpbnQgKikKLXsKLSAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9y
KEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21t
b246OmdldFZlcnRleEF0dHJpYkl1aXZSb2J1c3RBTkdMRShHQ0dMdWludCwgR0NHTGVudW0sIEdD
R0xzaXplaSwgR0NHTHNpemVpICosIEdDR0x1aW50ICopCi17Ci0gICAgbV9jb250ZXh0LT5zeW50
aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9u
c0dMT3BlbkdMQ29tbW9uOjpnZXRVbmlmb3JtdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQsIGludCwg
R0NHTHNpemVpLCBHQ0dMc2l6ZWkgKiwgR0NHTHVpbnQgKikKLXsKLSAgICBtX2NvbnRleHQtPnN5
bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLX0KLQotdm9pZCBFeHRlbnNp
b25zR0xPcGVuR0xDb21tb246OmdldEJ1ZmZlclBhcmFtZXRlcmk2NHZSb2J1c3RBTkdMRShHQ0dM
ZW51bSwgR0NHTGVudW0sIEdDR0xzaXplaSwgR0NHTHNpemVpICosIEdDR0xpbnQ2NCAqKQotewot
ICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwot
fQotCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6c2FtcGxlclBhcmFtZXRlcml2Um9i
dXN0QU5HTEUoR0NHTHVpbnQsIEdDR0xlbnVtLCBHQ0dMc2l6ZWksIGNvbnN0IEdDR0xpbnQgKikK
LXsKLSAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9O
KTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OnNhbXBsZXJQYXJhbWV0ZXJm
dlJvYnVzdEFOR0xFKEdDR0x1aW50LCBHQ0dMZW51bSwgR0NHTHNpemVpLCBjb25zdCBHQ0dMZmxv
YXQgKikKLXsKLSAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BF
UkFUSU9OKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFNhbXBsZXJQ
YXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0x1aW50LCBHQ0dMZW51bSwgR0NHTHNpemVpLCBHQ0dM
c2l6ZWkgKiwgR0NHTGludCAqKQotewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3Io
R0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1v
bjo6Z2V0U2FtcGxlclBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTHVpbnQsIEdDR0xlbnVtLCBH
Q0dMc2l6ZWksIEdDR0xzaXplaSAqLCBHQ0dMZmxvYXQgKikKLXsKLSAgICBtX2NvbnRleHQtPnN5
bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLX0KLQotCi12b2lkIEV4dGVu
c2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0RnJhbWVidWZmZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xF
KEdDR0xlbnVtLCBHQ0dMZW51bSwgR0NHTHNpemVpLCBHQ0dMc2l6ZWkgKiwgR0NHTGludCAqKQot
ewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04p
OwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0UHJvZ3JhbUludGVyZmFj
ZWl2Um9idXN0QU5HTEUoR0NHTHVpbnQsIEdDR0xlbnVtLCBHQ0dMZW51bSwgR0NHTHNpemVpLCBH
Q0dMc2l6ZWkgKiwgR0NHTGludCAqKQotewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJy
b3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENv
bW1vbjo6Z2V0Qm9vbGVhbmlfdlJvYnVzdEFOR0xFKEdDR0xlbnVtLCBHQ0dMdWludCwgR0NHTHNp
emVpLCBHQ0dMc2l6ZWkgKiwgR0NHTGJvb2xlYW4gKikKLXsKLSAgICBtX2NvbnRleHQtPnN5bnRo
ZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLX0KLQotdm9pZCBFeHRlbnNpb25z
R0xPcGVuR0xDb21tb246OmdldE11bHRpc2FtcGxlZnZSb2J1c3RBTkdMRShHQ0dMZW51bSwgR0NH
THVpbnQsIEdDR0xzaXplaSwgR0NHTHNpemVpICosIEdDR0xmbG9hdCAqKQotewotICAgIG1fY29u
dGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi12b2lk
IEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0VGV4TGV2ZWxQYXJhbWV0ZXJpdlJvYnVzdEFO
R0xFKEdDR0xlbnVtLCBpbnQsIEdDR0xlbnVtLCBHQ0dMc2l6ZWksIEdDR0xzaXplaSAqLCBHQ0dM
aW50ICopCi17Ci0gICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09Q
RVJBVElPTik7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRUZXhMZXZl
bFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTGVudW0sIGludCwgR0NHTGVudW0sIEdDR0xzaXpl
aSwgR0NHTHNpemVpICosIEdDR0xmbG9hdCAqKQotewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6
ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi0KLXZvaWQgRXh0ZW5zaW9uc0dM
T3BlbkdMQ29tbW9uOjpnZXRQb2ludGVydlJvYnVzdEFOR0xFUm9idXN0QU5HTEUoR0NHTGVudW0s
IEdDR0xzaXplaSwgR0NHTHNpemVpICosIHZvaWQgKiopCi17Ci0gICAgbV9jb250ZXh0LT5zeW50
aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9u
c0dMT3BlbkdMQ29tbW9uOjpnZXRuVW5pZm9ybWZ2Um9idXN0QU5HTEUoR0NHTHVpbnQsIGludCwg
R0NHTHNpemVpLCBHQ0dMc2l6ZWkgKiwgR0NHTGZsb2F0ICopCi17Ci0gICAgbV9jb250ZXh0LT5z
eW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Ci19Ci0KLXZvaWQgRXh0ZW5z
aW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRuVW5pZm9ybWl2Um9idXN0QU5HTEUoR0NHTHVpbnQsIGlu
dCwgR0NHTHNpemVpLCBHQ0dMc2l6ZWkgKiwgR0NHTGludCAqKQotewotICAgIG1fY29udGV4dC0+
c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi12b2lkIEV4dGVu
c2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0blVuaWZvcm11aXZSb2J1c3RBTkdMRShHQ0dMdWludCwg
aW50LCBHQ0dMc2l6ZWksIEdDR0xzaXplaSAqLCBHQ0dMdWludCAqKQotewotICAgIG1fY29udGV4
dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi12b2lkIEV4
dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6dGV4UGFyYW1ldGVySWl2Um9idXN0QU5HTEUoR0NHTGVu
dW0sIEdDR0xlbnVtLCBHQ0dMc2l6ZWksIGNvbnN0IEdDR0xpbnQgKikKLXsKLSAgICBtX2NvbnRl
eHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLX0KLQotdm9pZCBF
eHRlbnNpb25zR0xPcGVuR0xDb21tb246OnRleFBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRShHQ0dM
ZW51bSwgR0NHTGVudW0sIEdDR0xzaXplaSwgY29uc3QgR0NHTHVpbnQgKikKLXsKLSAgICBtX2Nv
bnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLX0KLQotdm9p
ZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFRleFBhcmFtZXRlcklpdlJvYnVzdEFOR0xF
KEdDR0xlbnVtLCBHQ0dMZW51bSwgR0NHTHNpemVpLCBHQ0dMc2l6ZWkgKiwgR0NHTGludCAqKQot
ewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04p
OwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0VGV4UGFyYW1ldGVySXVp
dlJvYnVzdEFOR0xFKEdDR0xlbnVtLCBHQ0dMZW51bSwgR0NHTHNpemVpLCBHQ0dMc2l6ZWkgKiwg
R0NHTHVpbnQgKikKLXsKLSAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFM
SURfT1BFUkFUSU9OKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OnNhbXBs
ZXJQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRShHQ0dMdWludCwgR0NHTGVudW0sIEdDR0xzaXplaSwg
Y29uc3QgR0NHTGludCAqKQotewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xf
SU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6
c2FtcGxlclBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRShHQ0dMdWludCwgR0NHTGVudW0sIEdDR0xz
aXplaSwgY29uc3QgR0NHTHVpbnQgKikKLXsKLSAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVy
cm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xD
b21tb246OmdldFNhbXBsZXJQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRShHQ0dMdWludCwgR0NHTGVu
dW0sIEdDR0xzaXplaSwgR0NHTHNpemVpICosIEdDR0xpbnQgKikKLXsKLSAgICBtX2NvbnRleHQt
PnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLX0KLQotdm9pZCBFeHRl
bnNpb25zR0xPcGVuR0xDb21tb246OmdldFNhbXBsZXJQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUo
R0NHTHVpbnQsIEdDR0xlbnVtLCBHQ0dMc2l6ZWksIEdDR0xzaXplaSAqLCBHQ0dMdWludCAqKQot
ewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04p
OwotfQotCi0KLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRRdWVyeU9iamVjdGl2
Um9idXN0QU5HTEUoR0NHTHVpbnQsIEdDR0xlbnVtLCBHQ0dMc2l6ZWksIEdDR0xzaXplaSAqLCBH
Q0dMaW50ICopCi17Ci0gICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElE
X09QRVJBVElPTik7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRRdWVy
eU9iamVjdGk2NHZSb2J1c3RBTkdMRShHQ0dMdWludCwgR0NHTGVudW0sIEdDR0xzaXplaSwgR0NH
THNpemVpICosIEdDR0xpbnQ2NCAqKQotewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJy
b3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENv
bW1vbjo6Z2V0UXVlcnlPYmplY3R1aTY0dlJvYnVzdEFOR0xFKEdDR0x1aW50LCBHQ0dMZW51bSwg
R0NHTHNpemVpLCBHQ0dMc2l6ZWkgKiwgR0NHTHVpbnQ2NCAqKQotewotICAgIG1fY29udGV4dC0+
c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi0KIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShHUkFQSElDU19DT05URVhUX0dMKSAm
JiAoVVNFKE9QRU5HTCkgfHwgVVNFKE9QRU5HTF9FUykpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3Bl
bkdMQ29tbW9uLmgKaW5kZXggM2YxMDQwMTYyZmZhMDdhMmRjMTMwYWJiMjJmYjFiMWZmYzNmZGYy
MC4uZWJkMzhmOTIxMmMwNjRkNzYwMjBkNTc3YmNlNzkzZDM1ZWFmY2U0YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5H
TENvbW1vbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9F
eHRlbnNpb25zR0xPcGVuR0xDb21tb24uaApAQCAtNTUsNTggKzU1LDE4IEBAIHB1YmxpYzoKICAg
ICBTdHJpbmcgZ2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFKFBsYXRmb3JtR0xPYmplY3Qp
IG92ZXJyaWRlOwogCiAgICAgLy8gRVhUIFJvYnVzdG5lc3MgLSB1c2VzIGdldEdyYXBoaWNzUmVz
ZXRTdGF0dXNBUkIoKQotICAgIHZvaWQgcmVhZG5QaXhlbHNFWFQoaW50IHgsIGludCB5LCBHQ0dM
c2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0g
dHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIHZvaWQgKmRhdGEpIG92ZXJyaWRlOwotICAgIHZvaWQg
Z2V0blVuaWZvcm1mdkVYVChHQ0dMdWludCBwcm9ncmFtLCBpbnQgbG9jYXRpb24sIEdDR0xzaXpl
aSBidWZTaXplLCBmbG9hdCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldG5Vbmlmb3Jt
aXZFWFQoR0NHTHVpbnQgcHJvZ3JhbSwgaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwg
aW50ICpwYXJhbXMpIG92ZXJyaWRlOwotCi0gICAgYm9vbCBpc05WSURJQSgpIG92ZXJyaWRlIHsg
cmV0dXJuIG1faXNOVklESUE7IH0KLSAgICBib29sIGlzQU1EKCkgb3ZlcnJpZGUgeyByZXR1cm4g
bV9pc0FNRDsgfQotICAgIGJvb2wgaXNJbnRlbCgpIG92ZXJyaWRlIHsgcmV0dXJuIG1faXNJbnRl
bDsgfQotICAgIGJvb2wgaXNJbWFnaW5hdGlvbigpIG92ZXJyaWRlIHsgcmV0dXJuIG1faXNJbWFn
aW5hdGlvbjsgfQotICAgIFN0cmluZyB2ZW5kb3IoKSBvdmVycmlkZSB7IHJldHVybiBtX3ZlbmRv
cjsgfQotCi0gICAgYm9vbCByZXF1aXJlc0J1aWx0SW5GdW5jdGlvbkVtdWxhdGlvbigpIG92ZXJy
aWRlIHsgcmV0dXJuIG1fcmVxdWlyZXNCdWlsdEluRnVuY3Rpb25FbXVsYXRpb247IH0KLSAgICBi
b29sIHJlcXVpcmVzUmVzdHJpY3RlZE1heGltdW1UZXh0dXJlU2l6ZSgpIG92ZXJyaWRlIHsgcmV0
dXJuIG1fcmVxdWlyZXNSZXN0cmljdGVkTWF4aW11bVRleHR1cmVTaXplOyB9Ci0KLSAgICAvLyBH
TF9BTkdMRV9yb2J1c3RfY2xpZW50X21lbW9yeQotICAgIHZvaWQgcmVhZFBpeGVsc1JvYnVzdEFO
R0xFKGludCB4LCBpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dM
ZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkg
Kmxlbmd0aCwgR0NHTHNpemVpICpjb2x1bW5zLCBHQ0dMc2l6ZWkgKnJvd3MsIHZvaWQgKnBpeGVs
cykgb3ZlcnJpZGU7Ci0gICAgdm9pZCB0ZXhQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0xlbnVt
IHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMZmxv
YXQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCB0ZXhQYXJhbWV0ZXJpdlJvYnVzdEFOR0xF
KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25z
dCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0UXVlcnlpdlJvYnVzdEFO
R0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBH
Q0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdl
dFF1ZXJ5T2JqZWN0dWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgaWQsIEdDR0xlbnVtIHBuYW1lLCBH
Q0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0x1aW50ICpwYXJhbXMpIG92
ZXJyaWRlOwotICAgIHZvaWQgZ2V0QnVmZmVyUG9pbnRlcnZSb2J1c3RBTkdMRShHQ0dMZW51bSB0
YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5n
dGgsIHZvaWQgKipwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0VmVydGV4QXR0cmliSWl2
Um9idXN0QU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVm
U2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAg
dm9pZCBnZXRWZXJ0ZXhBdHRyaWJJdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0xl
bnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0x1aW50
ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0VW5pZm9ybXVpdlJvYnVzdEFOR0xFKEdD
R0x1aW50IHByb2dyYW0sIGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXpl
aSAqbGVuZ3RoLCBHQ0dMdWludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldEJ1ZmZl
clBhcmFtZXRlcmk2NHZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1l
LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQ2NCAqcGFyYW1z
KSBvdmVycmlkZTsKLSAgICB2b2lkIHNhbXBsZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0x1
aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NH
TGludCAqcGFyYW0pIG92ZXJyaWRlOwotICAgIHZvaWQgc2FtcGxlclBhcmFtZXRlcmZ2Um9idXN0
QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXpl
LCBjb25zdCBHQ0dMZmxvYXQgKnBhcmFtKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldFNhbXBsZXJQ
YXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBH
Q0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykgb3Zl
cnJpZGU7Ci0gICAgdm9pZCBnZXRTYW1wbGVyUGFyYW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dMdWlu
dCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAq
bGVuZ3RoLCBHQ0dMZmxvYXQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0KLSAgICB2b2lkIGdldEZyYW1l
YnVmZmVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBu
YW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFt
cykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRQcm9ncmFtSW50ZXJmYWNlaXZSb2J1c3RBTkdMRShH
Q0dMdWludCBwcm9ncmFtLCBHQ0dMZW51bSBwcm9ncmFtSW50ZXJmYWNlLCBHQ0dMZW51bSBwbmFt
ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMp
IG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0Qm9vbGVhbmlfdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRh
cmdldCwgR0NHTHVpbnQgaW5kZXgsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0
aCwgR0NHTGJvb2xlYW4gKmRhdGEpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0TXVsdGlzYW1wbGVm
dlJvYnVzdEFOR0xFKEdDR0xlbnVtIHBuYW1lLCBHQ0dMdWludCBpbmRleCwgR0NHTHNpemVpIGJ1
ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMZmxvYXQgKnZhbCkgb3ZlcnJpZGU7Ci0gICAg
dm9pZCBnZXRUZXhMZXZlbFBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBp
bnQgbGV2ZWwsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICps
ZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRUZXhMZXZlbFBh
cmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBpbnQgbGV2ZWwsIEdDR0xlbnVt
IHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xmbG9hdCAq
cGFyYW1zKSBvdmVycmlkZTsKLQotICAgIHZvaWQgZ2V0UG9pbnRlcnZSb2J1c3RBTkdMRVJvYnVz
dEFOR0xFKEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5n
dGgsIHZvaWQgKipwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0blVuaWZvcm1mdlJvYnVz
dEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUs
IEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMZmxvYXQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9p
ZCBnZXRuVW5pZm9ybWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgaW50IGxvY2F0aW9u
LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykg
b3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRuVW5pZm9ybXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHBy
b2dyYW0sIGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3Ro
LCBHQ0dMdWludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIHRleFBhcmFtZXRlcklpdlJv
YnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZT
aXplLCBjb25zdCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgdGV4UGFyYW1l
dGVySXVpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xz
aXplaSBidWZTaXplLCBjb25zdCBHQ0dMdWludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lk
IGdldFRleFBhcmFtZXRlcklpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0g
cG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFy
YW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldFRleFBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRShH
Q0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNp
emVpICpsZW5ndGgsIEdDR0x1aW50ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgc2FtcGxl
clBhcmFtZXRlcklpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1l
LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGludCAqcGFyYW0pIG92ZXJyaWRlOwotICAg
IHZvaWQgc2FtcGxlclBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBH
Q0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0x1aW50ICpwYXJhbSkg
b3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRTYW1wbGVyUGFyYW1ldGVySWl2Um9idXN0QU5HTEUoR0NH
THVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6
ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldFNhbXBs
ZXJQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5h
bWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHVpbnQgKnBhcmFt
cykgb3ZlcnJpZGU7Ci0KLSAgICB2b2lkIGdldFF1ZXJ5T2JqZWN0aXZSb2J1c3RBTkdMRShHQ0dM
dWludCBpZCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxl
bmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldFF1ZXJ5T2JqZWN0
aTY0dlJvYnVzdEFOR0xFKEdDR0x1aW50IGlkLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1
ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50NjQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0g
ICAgdm9pZCBnZXRRdWVyeU9iamVjdHVpNjR2Um9idXN0QU5HTEUoR0NHTHVpbnQgaWQsIEdDR0xl
bnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0x1aW50
NjQgKnBhcmFtcykgb3ZlcnJpZGU7CisgICAgdm9pZCByZWFkblBpeGVsc0VYVChpbnQgeCwgaW50
IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBH
Q0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgdm9pZCAqZGF0YSk7CisgICAgdm9pZCBn
ZXRuVW5pZm9ybWZ2RVhUKEdDR0x1aW50IHByb2dyYW0sIGludCBsb2NhdGlvbiwgR0NHTHNpemVp
IGJ1ZlNpemUsIGZsb2F0ICpwYXJhbXMpOworICAgIHZvaWQgZ2V0blVuaWZvcm1pdkVYVChHQ0dM
dWludCBwcm9ncmFtLCBpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBpbnQgKnBhcmFt
cyk7CisKKyAgICBib29sIGlzTlZJRElBKCkgeyByZXR1cm4gbV9pc05WSURJQTsgfQorICAgIGJv
b2wgaXNBTUQoKSB7IHJldHVybiBtX2lzQU1EOyB9CisgICAgYm9vbCBpc0ludGVsKCkgeyByZXR1
cm4gbV9pc0ludGVsOyB9CisgICAgYm9vbCBpc0ltYWdpbmF0aW9uKCkgeyByZXR1cm4gbV9pc0lt
YWdpbmF0aW9uOyB9CisgICAgU3RyaW5nIHZlbmRvcigpIHsgcmV0dXJuIG1fdmVuZG9yOyB9CisK
KyAgICBib29sIHJlcXVpcmVzQnVpbHRJbkZ1bmN0aW9uRW11bGF0aW9uKCkgeyByZXR1cm4gbV9y
ZXF1aXJlc0J1aWx0SW5GdW5jdGlvbkVtdWxhdGlvbjsgfQorICAgIGJvb2wgcmVxdWlyZXNSZXN0
cmljdGVkTWF4aW11bVRleHR1cmVTaXplKCkgeyByZXR1cm4gbV9yZXF1aXJlc1Jlc3RyaWN0ZWRN
YXhpbXVtVGV4dHVyZVNpemU7IH0KIAogcHJvdGVjdGVkOgogICAgIGZyaWVuZCBjbGFzcyBFeHRl
bnNpb25zR0xPcGVuR0xFUzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xFUy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMRVMuY3BwCmluZGV4IGUx
ZTQzYmY1MzkyODg1YTI0ZmJiMzNjYjI2YjVmNmU0OTFmYmUwNzMuLjA3ZDA5N2MyYzU1YzMxMjBj
NGRlZmZhOWJiNmFlMjY0YjRiZTQ4ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xFUy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVTLmNw
cApAQCAtMTAwLDExICsxMDAsNiBAQCB2b2lkIEV4dGVuc2lvbnNHTE9wZW5HTEVTOjpyZW5kZXJi
dWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVJTUcodW5zaWduZWQgbG9uZyB0YXJnZQogICAgICAgICBt
X2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKIH0KIAot
dm9pZCBFeHRlbnNpb25zR0xPcGVuR0xFUzo6YmxpdEZyYW1lYnVmZmVyQU5HTEUoR0NHTGludCwg
R0NHTGludCwgR0NHTGludCwgR0NHTGludCwgR0NHTGludCwgR0NHTGludCwgR0NHTGludCwgR0NH
TGludCwgR0NHTGJpdGZpZWxkLCBHQ0dMZW51bSkKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwot
fQotCiB2b2lkIEV4dGVuc2lvbnNHTE9wZW5HTEVTOjpyZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlz
YW1wbGVBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xzaXplaSBzYW1wbGVzLCBHQ0dMZW51bSBp
bnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KQogewogICAg
IGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKQEAgLTExNSwyMSArMTEwLDYg
QEAgdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xFUzo6cmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2Ft
cGxlQU5HTEUoR0NHTGVudW0gdGFyZ2V0LAogICAgICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQog
Ci12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTEVTOjppbnNlcnRFdmVudE1hcmtlckVYVChjb25zdCBT
dHJpbmcmKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dM
T3BlbkdMRVM6OnB1c2hHcm91cE1hcmtlckVYVChjb25zdCBTdHJpbmcmKQotewotICAgIG5vdElt
cGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMRVM6OnBvcEdyb3VwTWFy
a2VyRVhUKHZvaWQpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQogUGxhdGZvcm1HTE9i
amVjdCBFeHRlbnNpb25zR0xPcGVuR0xFUzo6Y3JlYXRlVmVydGV4QXJyYXlPRVMoKQogewogICAg
IGlmIChtX2dsR2VuVmVydGV4QXJyYXlzT0VTKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMRVMuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xFUy5o
CmluZGV4IDVjNzYwMzdmYTdiYzZlOGVlZTNlNjczZjk5YTdkZmMyZjc4ZmI0ZDIuLjY5M2QwM2M3
M2YwZWM4MzEwYjNjZDJlYjhhM2RkM2IzMjY5NDZmYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xFUy5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVu
R0xFUy5oCkBAIC03NSwxMSArNzUsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBFeHRlbnNpb24zRCBt
ZXRob2RzCiAgICAgYm9vbCBpc0VuYWJsZWQoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7Ci0gICAg
dm9pZCBibGl0RnJhbWVidWZmZXJBTkdMRShHQ0dMaW50IHNyY1gwLCBHQ0dMaW50IHNyY1kwLCBH
Q0dMaW50IHNyY1gxLCBHQ0dMaW50IHNyY1kxLCBHQ0dMaW50IGRzdFgwLCBHQ0dMaW50IGRzdFkw
LCBHQ0dMaW50IGRzdFgxLCBHQ0dMaW50IGRzdFkxLCBHQ0dMYml0ZmllbGQgbWFzaywgR0NHTGVu
dW0gZmlsdGVyKSBvdmVycmlkZTsKLSAgICB2b2lkIHJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNh
bXBsZUFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVpIHNhbXBsZXMsIEdDR0xlbnVtIGlu
dGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQpIG92ZXJyaWRl
OwotICAgIHZvaWQgaW5zZXJ0RXZlbnRNYXJrZXJFWFQoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7
Ci0gICAgdm9pZCBwdXNoR3JvdXBNYXJrZXJFWFQoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7Ci0g
ICAgdm9pZCBwb3BHcm91cE1hcmtlckVYVCh2b2lkKSBvdmVycmlkZTsKKyAgICB2b2lkIHJlbmRl
cmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVp
IHNhbXBsZXMsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xz
aXplaSBoZWlnaHQpOwogCiAgICAgUGxhdGZvcm1HTE9iamVjdCBjcmVhdGVWZXJ0ZXhBcnJheU9F
UygpIG92ZXJyaWRlOwogICAgIHZvaWQgZGVsZXRlVmVydGV4QXJyYXlPRVMoUGxhdGZvcm1HTE9i
amVjdCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xCYXNlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEJhc2Uu
Y3BwCmluZGV4IDEzYmNhNzRlYzg2NzM0ZmRmZDZiYjc4MDk5MDQ2YmE4YTgxODVkYWIuLjE3MjZj
M2RjZGViOGI3OWMxNTFmZDMwNjVlM2U3NmEyNzJjODZhMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEJh
c2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFw
aGljc0NvbnRleHRHTE9wZW5HTEJhc2UuY3BwCkBAIC02Niw3ICs2Niw3IEBAIHZvaWQgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OnJlYWRQaXhlbHNBbmRDb252ZXJ0VG9CR1JBSWZOZWNlc3Nhcnko
aW50IHgsIGludCB5CiAgICAgYXV0byBhdHRycyA9IGNvbnRleHRBdHRyaWJ1dGVzKCk7CiAKICAg
ICAvLyBOVklESUEgZHJpdmVycyBoYXZlIGEgYnVnIHdoZXJlIGNhbGxpbmcgcmVhZFBpeGVscyBp
biBCR1JBIGNhbiByZXR1cm4gdGhlIHdyb25nIHZhbHVlcyBmb3IgdGhlIGFscGhhIGNoYW5uZWwg
d2hlbiB0aGUgYWxwaGEgaXMgb2ZmIGZvciB0aGUgY29udGV4dC4KLSAgICBpZiAoIWF0dHJzLmFs
cGhhICYmIGdldEV4dGVuc2lvbnMoKS5pc05WSURJQSgpKSB7CisgICAgaWYgKCFhdHRycy5hbHBo
YSAmJiBzdGF0aWNfY2FzdDxFeHRlbnNpb25zR0xPcGVuR0xDb21tb24mPihnZXRFeHRlbnNpb25z
KCkpLmlzTlZJRElBKCkpIHsKICAgICAgICAgOjpnbFJlYWRQaXhlbHMoeCwgeSwgd2lkdGgsIGhl
aWdodCwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwgcGl4ZWxzKTsKICNpZiBVU0UoQUNDRUxF
UkFURSkKICAgICAgICAgdkltYWdlX0J1ZmZlciBzcmM7CkBAIC0yODksMTIgKzI4OSwxMiBAQCB2
b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRJbnRlZ2VydihHQ0dMZW51bSBwbmFtZSwg
R0NHTFNwYW48R0NHTGludD4gdmFsdQogI2VuZGlmCiAgICAgY2FzZSBNQVhfVEVYVFVSRV9TSVpF
OgogICAgICAgICA6OmdsR2V0SW50ZWdlcnYoTUFYX1RFWFRVUkVfU0laRSwgdmFsdWUuZGF0YSk7
Ci0gICAgICAgIGlmIChnZXRFeHRlbnNpb25zKCkucmVxdWlyZXNSZXN0cmljdGVkTWF4aW11bVRl
eHR1cmVTaXplKCkpCisgICAgICAgIGlmIChzdGF0aWNfY2FzdDxFeHRlbnNpb25zR0xPcGVuR0xD
b21tb24mPihnZXRFeHRlbnNpb25zKCkpLnJlcXVpcmVzUmVzdHJpY3RlZE1heGltdW1UZXh0dXJl
U2l6ZSgpKQogICAgICAgICAgICAgKnZhbHVlID0gc3RkOjptaW4oNDA5NiwgKnZhbHVlKTsKICAg
ICAgICAgYnJlYWs7CiAgICAgY2FzZSBNQVhfQ1VCRV9NQVBfVEVYVFVSRV9TSVpFOgogICAgICAg
ICA6OmdsR2V0SW50ZWdlcnYoTUFYX0NVQkVfTUFQX1RFWFRVUkVfU0laRSwgdmFsdWUuZGF0YSk7
Ci0gICAgICAgIGlmIChnZXRFeHRlbnNpb25zKCkucmVxdWlyZXNSZXN0cmljdGVkTWF4aW11bVRl
eHR1cmVTaXplKCkpCisgICAgICAgIGlmIChzdGF0aWNfY2FzdDxFeHRlbnNpb25zR0xPcGVuR0xD
b21tb24mPihnZXRFeHRlbnNpb25zKCkpLnJlcXVpcmVzUmVzdHJpY3RlZE1heGltdW1UZXh0dXJl
U2l6ZSgpKQogICAgICAgICAgICAgKnZhbHVlID0gc3RkOjptaW4oMTAyNCwgKnZhbHVlKTsKICAg
ICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>415439</attachid>
            <date>2020-12-04 11:50:18 -0800</date>
            <delta_ts>2020-12-04 15:07:38 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-218896-20201204115017.patch</filename>
            <type>text/plain</type>
            <size>63619</size>
            <attacher name="Rini Patel">rini_patel</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwNDQzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2FlMjg5MzBiNzRmYmZk
NzMwMWQ2OGY5YjFiMGJjZjc4YTg2YzlmNy4uNzQ5OTYzMDhjMDQyOTg4YzhlYzhkMzg2ZGExNzNl
YzE0MDdlNzViMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyOSBAQAorMjAyMC0xMi0wNCAgUmlu
aSBQYXRlbCAgPHJpbmlfcGF0ZWxAYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZSB1bnVzZWQg
ZnVuY3Rpb25zIGZyb20gR3JhcGhpY3NDb250ZXh0R0wgYW5kIEV4dGVuc2lvbnNHTAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE4ODk2CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVtb3ZlIHVudXNlZCBm
dW5jdGlvbnMgZnJvbSBHcmFwaGljc0NvbnRleHRHTCBhbmQgRXh0ZW5zaW9uc0dMCisgICAgICAg
IFRoZXkncmUgZGVhZCBjb2RlIGFuZCBtYWtlIGl0IGhhcmRlciB0byBpbXBsZW1lbnQgdGhlIEdQ
VSBQcm9jZXNzIHZlcnNpb24uCisKKyAgICAgICAgLSBJZiB0aGUgZnVuY3Rpb24gaXMgdW51c2Vk
LCByZW1vdmUgaXQgZnVsbHkKKyAgICAgICAgLSBJZiB0aGUgZnVuY3Rpb24gaXMgdW51c2VkIGlu
IFVTRShBTkdMRSkgV2ViR0wgcGFydCwgcmVtb3ZlIHRoZSBmdW5jdGlvbiBmcm9tIEdyYXBoaWNz
Q29udGV4dEdMIGFuZCBBTkdMRSBHcmFwaGljc0NvbnRleHRHTE9wZW5HTAorCisgICAgICAgICog
aHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL0V4dGVuc2lvbnNHTC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lv
bnNHTEFOR0xFOjpFeHRlbnNpb25zR0xBTkdMRSk6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNp
b25zR0xBTkdMRTo6aW5pdGlhbGl6ZUF2YWlsYWJsZUV4dGVuc2lvbnMpOgorICAgICAgICAoV2Vi
Q29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmJsaXRGcmFtZWJ1ZmZlckFOR0xFKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpyZW5kZXJidWZmZXJTdG9yYWdl
TXVsdGlzYW1wbGVBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25z
R0xBTkdMRTo6aW5zZXJ0RXZlbnRNYXJrZXJFWFQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OnB1c2hHcm91cE1hcmtlckVYVCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6cG9wR3JvdXBNYXJrZXJFWFQpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OnJlYWRQaXhlbHNSb2J1
c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6
dGV4UGFyYW1ldGVyZnZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpF
eHRlbnNpb25zR0xBTkdMRTo6dGV4UGFyYW1ldGVyaXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6Z2V0UXVlcnlpdlJvYnVzdEFOR0xF
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpnZXRRdWVy
eU9iamVjdHVpdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVu
c2lvbnNHTEFOR0xFOjpnZXRCdWZmZXJQb2ludGVydlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpnZXRWZXJ0ZXhBdHRyaWJJaXZSb2J1
c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6
Z2V0VmVydGV4QXR0cmliSXVpdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpnZXRVbmlmb3JtdWl2Um9idXN0QU5HTEUpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldEJ1ZmZlclBhcmFtZXRl
cmk2NHZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25z
R0xBTkdMRTo6c2FtcGxlclBhcmFtZXRlcml2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OnNhbXBsZXJQYXJhbWV0ZXJmdlJvYnVzdEFO
R0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpnZXRT
YW1wbGVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpFeHRlbnNpb25zR0xBTkdMRTo6Z2V0U2FtcGxlclBhcmFtZXRlcmZ2Um9idXN0QU5HTEUpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldEZyYW1lYnVm
ZmVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpF
eHRlbnNpb25zR0xBTkdMRTo6Z2V0UHJvZ3JhbUludGVyZmFjZWl2Um9idXN0QU5HTEUpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldEJvb2xlYW5pX3ZS
b2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdM
RTo6Z2V0TXVsdGlzYW1wbGVmdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpnZXRUZXhMZXZlbFBhcmFtZXRlcml2Um9idXN0QU5HTEUp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldFRleExl
dmVsUGFyYW1ldGVyZnZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpF
eHRlbnNpb25zR0xBTkdMRTo6Z2V0UG9pbnRlcnZSb2J1c3RBTkdMRVJvYnVzdEFOR0xFKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpnZXRuVW5pZm9ybWZ2
Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5H
TEU6OmdldG5Vbmlmb3JtaXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpFeHRlbnNpb25zR0xBTkdMRTo6Z2V0blVuaWZvcm11aXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6dGV4UGFyYW1ldGVySWl2Um9i
dXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6
OnRleFBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpFeHRlbnNpb25zR0xBTkdMRTo6Z2V0VGV4UGFyYW1ldGVySWl2Um9idXN0QU5HTEUpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldFRleFBhcmFtZXRl
ckl1aXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25z
R0xBTkdMRTo6c2FtcGxlclBhcmFtZXRlcklpdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpzYW1wbGVyUGFyYW1ldGVySXVpdlJvYnVz
dEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpn
ZXRTYW1wbGVyUGFyYW1ldGVySWl2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldFNhbXBsZXJQYXJhbWV0ZXJJdWl2Um9idXN0QU5H
TEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldFF1
ZXJ5T2JqZWN0aXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRl
bnNpb25zR0xBTkdMRTo6Z2V0UXVlcnlPYmplY3RpNjR2Um9idXN0QU5HTEUpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldFF1ZXJ5T2JqZWN0dWk2NHZS
b2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUv
RXh0ZW5zaW9uc0dMQU5HTEUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wv
RXh0ZW5zaW9uc0dMT3BlbkdMLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9w
ZW5HTDo6YmxpdEZyYW1lYnVmZmVyQU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
RXh0ZW5zaW9uc0dMT3BlbkdMOjpyZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVBTkdMRSk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0w6Omluc2VydEV2
ZW50TWFya2VyRVhUKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9w
ZW5HTDo6cHVzaEdyb3VwTWFya2VyRVhUKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4
dGVuc2lvbnNHTE9wZW5HTDo6cG9wR3JvdXBNYXJrZXJFWFQpOiBEZWxldGVkLgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6cmVhZFBpeGVsc1Jv
YnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5H
TENvbW1vbjo6dGV4UGFyYW1ldGVyZnZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OnRleFBhcmFtZXRlcml2Um9idXN0QU5H
TEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9u
OjpnZXRRdWVyeWl2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0
ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRRdWVyeU9iamVjdHVpdlJvYnVzdEFOR0xFKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0QnVm
ZmVyUG9pbnRlcnZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRl
bnNpb25zR0xPcGVuR0xDb21tb246OmdldFZlcnRleEF0dHJpYklpdlJvYnVzdEFOR0xFKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0VmVy
dGV4QXR0cmliSXVpdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4
dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0VW5pZm9ybXVpdlJvYnVzdEFOR0xFKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0QnVmZmVy
UGFyYW1ldGVyaTY0dlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4
dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6c2FtcGxlclBhcmFtZXRlcml2Um9idXN0QU5HTEUpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpzYW1w
bGVyUGFyYW1ldGVyZnZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpF
eHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFNhbXBsZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xF
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6
Z2V0U2FtcGxlclBhcmFtZXRlcmZ2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRGcmFtZWJ1ZmZlclBhcmFtZXRlcml2
Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3Bl
bkdMQ29tbW9uOjpnZXRQcm9ncmFtSW50ZXJmYWNlaXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldEJvb2xlYW5pX3ZS
b2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVu
R0xDb21tb246OmdldE11bHRpc2FtcGxlZnZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFRleExldmVsUGFyYW1ldGVy
aXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xP
cGVuR0xDb21tb246OmdldFRleExldmVsUGFyYW1ldGVyZnZSb2J1c3RBTkdMRSk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFBvaW50ZXJ2
Um9idXN0QU5HTEVSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRl
bnNpb25zR0xPcGVuR0xDb21tb246OmdldG5Vbmlmb3JtZnZSb2J1c3RBTkdMRSk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldG5Vbmlmb3Jt
aXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xP
cGVuR0xDb21tb246OmdldG5Vbmlmb3JtdWl2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjp0ZXhQYXJhbWV0ZXJJaXZSb2J1
c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xD
b21tb246OnRleFBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFRleFBhcmFtZXRlcklpdlJvYnVz
dEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTENv
bW1vbjo6Z2V0VGV4UGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6c2FtcGxlclBhcmFtZXRlcklpdlJv
YnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5H
TENvbW1vbjo6c2FtcGxlclBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFNhbXBsZXJQYXJhbWV0
ZXJJaXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25z
R0xPcGVuR0xDb21tb246OmdldFNhbXBsZXJQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRRdWVy
eU9iamVjdGl2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5z
aW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRRdWVyeU9iamVjdGk2NHZSb2J1c3RBTkdMRSk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFF1ZXJ5
T2JqZWN0dWk2NHZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5oOgorICAgICAgICAoV2ViQ29y
ZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjppc05WSURJQSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmlzQU1EIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6aXNJbnRlbCBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmlzSW1hZ2luYXRpb24gY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjp2ZW5kb3Ig
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpyZXF1
aXJlc0J1aWx0SW5GdW5jdGlvbkVtdWxhdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpF
eHRlbnNpb25zR0xPcGVuR0xDb21tb246OnJlcXVpcmVzUmVzdHJpY3RlZE1heGltdW1UZXh0dXJl
U2l6ZSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lv
bnNHTE9wZW5HTEVTLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTEVT
OjpibGl0RnJhbWVidWZmZXJBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRl
bnNpb25zR0xPcGVuR0xFUzo6aW5zZXJ0RXZlbnRNYXJrZXJFWFQpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMRVM6OnB1c2hHcm91cE1hcmtlckVYVCk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xFUzo6cG9wR3JvdXBN
YXJrZXJFWFQpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9F
eHRlbnNpb25zR0xPcGVuR0xFUy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5n
bC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEJhc2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlc2hhcGVGQk9zKToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRFeHRlbnNpb25zKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb21tb24uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnZhbGlkYXRlRGVw
dGhTdGVuY2lsKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0xFUy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6Z2V0RXh0ZW5zaW9ucyk6CisKIDIwMjAtMTItMDQgIFBlbmcgTGl1ICA8cGVuZy5s
aXU2QGFwcGxlLmNvbT4KIAogICAgICAgICBbTVNFXSBNb3ZlIHRyYWNrIGJ1ZmZlciBtYW5hZ2Vt
ZW50IGZyb20gU291cmNlQnVmZmVyIHRvIFNvdXJjZUJ1ZmZlclByaXZhdGUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5j
cHAKaW5kZXggNzJjMjY0NDY2NmNmMDNhMmY1OWYxZTA5ZmU5MzI5M2NiODBiNmJhZS4uYjkzNGMx
ZTg5YzI1MWFjMGIwMDgzNzFmZjMxZmRiNGY5OTcxMjAwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKQEAg
LTc0MiwxMCArNzQyLDYgQEAgc3RkOjp1bmlxdWVfcHRyPFdlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2U+IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmNyZWF0ZShDYW4KICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAgICAgfQogCi0gICAgYXV0byYgZXh0ZW5zaW9ucyA9IGNvbnRleHQtPmdldEV4
dGVuc2lvbnMoKTsKLSAgICBpZiAoZXh0ZW5zaW9ucy5zdXBwb3J0cygiR0xfRVhUX2RlYnVnX21h
cmtlciJfcykpCi0gICAgICAgIGV4dGVuc2lvbnMucHVzaEdyb3VwTWFya2VyRVhUKCJXZWJHTFJl
bmRlcmluZ0NvbnRleHQiX3MpOwotCiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2U+IHJlbmRlcmluZ0NvbnRleHQ7CiAjaWYgRU5BQkxFKFdFQkdMMikKICAgICBp
ZiAodHlwZSA9PSAid2ViZ2wyIikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0V4dGVuc2lvbnNHTC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvRXh0ZW5zaW9uc0dMLmgKaW5kZXggYzRlNzc3OGRiNmE0NDhmZDBhNWU2NTE1OTFmZWVhMTQ1
Mzg2MzgyMy4uNjJkNTgzMDAwYTE1YzY3ZDJmOGE1MDhiNGZjNmI3ZTg4NGM0YjRkNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRXh0ZW5zaW9uc0dMLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRXh0ZW5zaW9uc0dMLmgKQEAgLTI3
OCwxMiArMjc4LDYgQEAgcHVibGljOgogICAgIC8vIGV4dGVybmFsbHkuCiAgICAgdmlydHVhbCBH
Q0dMaW50IGdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIoKSA9IDA7CiAKLSAgICAvLyBHTF9BTkdM
RV9mcmFtZWJ1ZmZlcl9ibGl0Ci0gICAgdmlydHVhbCB2b2lkIGJsaXRGcmFtZWJ1ZmZlckFOR0xF
KEdDR0xpbnQgc3JjWDAsIEdDR0xpbnQgc3JjWTAsIEdDR0xpbnQgc3JjWDEsIEdDR0xpbnQgc3Jj
WTEsIEdDR0xpbnQgZHN0WDAsIEdDR0xpbnQgZHN0WTAsIEdDR0xpbnQgZHN0WDEsIEdDR0xpbnQg
ZHN0WTEsIEdDR0xiaXRmaWVsZCBtYXNrLCBHQ0dMZW51bSBmaWx0ZXIpID0gMDsKLQotICAgIC8v
IEdMX0FOR0xFX2ZyYW1lYnVmZmVyX211bHRpc2FtcGxlCi0gICAgdmlydHVhbCB2b2lkIHJlbmRl
cmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVp
IHNhbXBsZXMsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xz
aXplaSBoZWlnaHQpID0gMDsKLQogICAgIC8vIEdMX09FU192ZXJ0ZXhfYXJyYXlfb2JqZWN0CiAg
ICAgdmlydHVhbCBQbGF0Zm9ybUdMT2JqZWN0IGNyZWF0ZVZlcnRleEFycmF5T0VTKCkgPSAwOwog
ICAgIHZpcnR1YWwgdm9pZCBkZWxldGVWZXJ0ZXhBcnJheU9FUyhQbGF0Zm9ybUdMT2JqZWN0KSA9
IDA7CkBAIC0yOTMsMTEgKzI4Nyw2IEBAIHB1YmxpYzoKICAgICAvLyBHTF9BTkdMRV90cmFuc2xh
dGVkX3NoYWRlcl9zb3VyY2UKICAgICB2aXJ0dWFsIFN0cmluZyBnZXRUcmFuc2xhdGVkU2hhZGVy
U291cmNlQU5HTEUoUGxhdGZvcm1HTE9iamVjdCkgPSAwOwogCi0gICAgLy8gR0xfRVhUX2RlYnVn
X21hcmtlcgotICAgIHZpcnR1YWwgdm9pZCBpbnNlcnRFdmVudE1hcmtlckVYVChjb25zdCBTdHJp
bmcmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHB1c2hHcm91cE1hcmtlckVYVChjb25zdCBTdHJp
bmcmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHBvcEdyb3VwTWFya2VyRVhUKCkgPSAwOwotCiAg
ICAgLy8gR0xfQVJCX2RyYXdfYnVmZmVycyAvIEdMX0VYVF9kcmF3X2J1ZmZlcnMKICAgICB2aXJ0
dWFsIHZvaWQgZHJhd0J1ZmZlcnNFWFQoR0NHTFNwYW48Y29uc3QgR0NHTGVudW0+IGJ1ZnMpID0g
MDsKIApAQCAtMzA2LDQ3ICsyOTUsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRyYXdF
bGVtZW50c0luc3RhbmNlZEFOR0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xzaXplaSBjb3VudCwgR0NH
TGVudW0gdHlwZSwgR0NHTHZvaWRwdHIgb2Zmc2V0LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KSA9IDA7
CiAgICAgdmlydHVhbCB2b2lkIHZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRShHQ0dMdWludCBpbmRl
eCwgR0NHTHVpbnQgZGl2aXNvcikgPSAwOwogCi0gICAgLy8gR0xfQU5HTEVfcm9idXN0X2NsaWVu
dF9tZW1vcnkKLSAgICB2aXJ0dWFsIHZvaWQgcmVhZFBpeGVsc1JvYnVzdEFOR0xFKEdDR0xpbnQg
eCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVt
IGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVu
Z3RoLCBHQ0dMc2l6ZWkqIGNvbHVtbnMsIEdDR0xzaXplaSogcm93cywgR0NHTHZvaWQqIHBpeGVs
cykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCB0ZXhQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0xl
bnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dM
ZmxvYXQqIHBhcmFtcykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCB0ZXhQYXJhbWV0ZXJpdlJvYnVz
dEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXpl
LCBjb25zdCBHQ0dMaW50KiBwYXJhbXMpID0gMDsKLQotICAgIHZpcnR1YWwgdm9pZCBnZXRRdWVy
eWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVp
IGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpID0gMDsKLSAgICB2
aXJ0dWFsIHZvaWQgZ2V0UXVlcnlPYmplY3R1aXZSb2J1c3RBTkdMRShHQ0dMdWludCBpZCwgR0NH
TGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHVp
bnQqIHBhcmFtcykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRCdWZmZXJQb2ludGVydlJvYnVz
dEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXpl
LCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHZvaWQqKiBwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFs
IHZvaWQgZ2V0VmVydGV4QXR0cmliSWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0xl
bnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQq
IHBhcmFtcykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJJdWl2Um9idXN0
QU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwg
R0NHTHNpemVpKiBsZW5ndGgsIEdDR0x1aW50KiBwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZv
aWQgZ2V0VW5pZm9ybXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9j
YXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHVpbnQqIHBh
cmFtcykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRCdWZmZXJQYXJhbWV0ZXJpNjR2Um9idXN0
QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUs
IEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50NjQqIHBhcmFtcykgPSAwOwotICAgIHZpcnR1YWwg
dm9pZCBzYW1wbGVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dM
ZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xpbnQqIHBhcmFtKSA9IDA7
Ci0gICAgdmlydHVhbCB2b2lkIHNhbXBsZXJQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0x1aW50
IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGZs
b2F0KiBwYXJhbSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRTYW1wbGVyUGFyYW1ldGVyaXZS
b2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1
ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpID0gMDsKLSAgICB2aXJ0
dWFsIHZvaWQgZ2V0U2FtcGxlclBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxl
ciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwg
R0NHTGZsb2F0KiBwYXJhbXMpID0gMDsKLQotICAgIHZpcnR1YWwgdm9pZCBnZXRGcmFtZWJ1ZmZl
clBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwg
R0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpID0g
MDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0UHJvZ3JhbUludGVyZmFjZWl2Um9idXN0QU5HTEUoR0NH
THVpbnQgcHJvZ3JhbSwgR0NHTGVudW0gcHJvZ3JhbUludGVyZmFjZSwgR0NHTGVudW0gcG5hbWUs
IEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1zKSA9
IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldEJvb2xlYW5pX3ZSb2J1c3RBTkdMRShHQ0dMZW51bSB0
YXJnZXQsIEdDR0x1aW50IGluZGV4LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5n
dGgsIEdDR0xib29sZWFuKiBkYXRhKSA9IDA7IC8vIE5PTElOVAotICAgIHZpcnR1YWwgdm9pZCBn
ZXRNdWx0aXNhbXBsZWZ2Um9idXN0QU5HTEUoR0NHTGVudW0gcG5hbWUsIEdDR0x1aW50IGluZGV4
LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xmbG9hdCogdmFsKSA9
IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldFRleExldmVsUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShH
Q0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkg
YnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykgPSAwOwotICAgIHZp
cnR1YWwgdm9pZCBnZXRUZXhMZXZlbFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdD
R0xzaXplaSogbGVuZ3RoLCBHQ0dMZmxvYXQqIHBhcmFtcykgPSAwOwotCi0gICAgdmlydHVhbCB2
b2lkIGdldFBvaW50ZXJ2Um9idXN0QU5HTEVSb2J1c3RBTkdMRShHQ0dMZW51bSBwbmFtZSwgR0NH
THNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMdm9pZCoqIHBhcmFtcykgPSAw
OwotICAgIHZpcnR1YWwgdm9pZCBnZXRuVW5pZm9ybWZ2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJv
Z3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVu
Z3RoLCBHQ0dMZmxvYXQqIHBhcmFtcykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRuVW5pZm9y
bWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNp
emVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpID0gMDsKLSAg
ICB2aXJ0dWFsIHZvaWQgZ2V0blVuaWZvcm11aXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFt
LCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgs
IEdDR0x1aW50KiBwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgdGV4UGFyYW1ldGVySWl2
Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1
ZlNpemUsIGNvbnN0IEdDR0xpbnQqIHBhcmFtcykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCB0ZXhQ
YXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwg
R0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0x1aW50KiBwYXJhbXMpID0gMDsKLSAgICB2aXJ0
dWFsIHZvaWQgZ2V0VGV4UGFyYW1ldGVySWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dM
aW50KiBwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0VGV4UGFyYW1ldGVySXVpdlJv
YnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZT
aXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHVpbnQqIHBhcmFtcykgPSAwOwotICAgIHZpcnR1
YWwgdm9pZCBzYW1wbGVyUGFyYW1ldGVySWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwg
R0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMaW50KiBwYXJhbSkg
PSAwOwotICAgIHZpcnR1YWwgdm9pZCBzYW1wbGVyUGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFKEdD
R0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3Qg
R0NHTHVpbnQqIHBhcmFtKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldFNhbXBsZXJQYXJhbWV0
ZXJJaXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNp
emVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpID0gMDsKLSAg
ICB2aXJ0dWFsIHZvaWQgZ2V0U2FtcGxlclBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRShHQ0dMdWlu
dCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSog
bGVuZ3RoLCBHQ0dMdWludCogcGFyYW1zKSA9IDA7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgZ2V0UXVl
cnlPYmplY3RpdlJvYnVzdEFOR0xFKEdDR0x1aW50IGlkLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNp
emVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpID0gMDsKLSAg
ICB2aXJ0dWFsIHZvaWQgZ2V0UXVlcnlPYmplY3RpNjR2Um9idXN0QU5HTEUoR0NHTHVpbnQgaWQs
IEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdD
R0xpbnQ2NCogcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldFF1ZXJ5T2JqZWN0dWk2
NHZSb2J1c3RBTkdMRShHQ0dMdWludCBpZCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZT
aXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHVpbnQ2NCogcGFyYW1zKSA9IDA7Ci0KICAgICAv
LyBPdGhlciBmdW5jdGlvbnMuCiAjaWYgIVVTRShBTkdMRSkKICAgICAvLyBFWFQgUm9idXN0bmVz
cyAtIHVzZXMgZ2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQgpAQCAtMzU0LDE2ICszMDIsNiBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGdldG5Vbmlmb3JtZnZFWFQoR0NHTHVpbnQgcHJvZ3Jh
bSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xmbG9hdCogcGFyYW1z
KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGdldG5Vbmlmb3JtaXZFWFQoR0NHTHVpbnQgcHJvZ3Jh
bSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xpbnQqIHBhcmFtcykg
PSAwOwogCi0gICAgdmlydHVhbCBib29sIGlzTlZJRElBKCkgPSAwOwotICAgIHZpcnR1YWwgYm9v
bCBpc0FNRCgpID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgaXNJbnRlbCgpID0gMDsKLSAgICB2aXJ0
dWFsIGJvb2wgaXNJbWFnaW5hdGlvbigpID0gMDsKLSAgICB2aXJ0dWFsIFN0cmluZyB2ZW5kb3Io
KSA9IDA7Ci0KLSAgICAvLyBTb21lIGNvbmZpZ3VyYXRpb25zIGhhdmUgYnVncyByZWdhcmRpbmcg
YnVpbHQtaW4gZnVuY3Rpb25zIGluIHRoZWlyIE9wZW5HTCBkcml2ZXJzCi0gICAgLy8gdGhhdCBt
dXN0IGJlIGF2b2lkZWQuIFBvcnRzIHNob3VsZCBpbXBsZW1lbnQgdGhlc2UgZmxhZ3Mgb24gc3Vj
aCBjb25maWd1cmF0aW9ucy4KLSAgICB2aXJ0dWFsIGJvb2wgcmVxdWlyZXNCdWlsdEluRnVuY3Rp
b25FbXVsYXRpb24oKSA9IDA7Ci0gICAgdmlydHVhbCBib29sIHJlcXVpcmVzUmVzdHJpY3RlZE1h
eGltdW1UZXh0dXJlU2l6ZSgpID0gMDsKICNlbmRpZgogCiB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUu
Y3BwCmluZGV4IGI3ZGI0ZmQyMDQxYjNiYmM4YmI5YTc3MzNlODliZWVhYWViNmY3ODkuLmNlNDZj
N2E3NWE1ZTJiNjJmMmFiOWZlMDJiOWJlYzFmNmE3MGZiOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRlbnNpb25zR0xBTkdM
RS5jcHAKQEAgLTQzLDEwICs0Myw5IEBAIHR5cGVkZWYgdm9pZCogR0xlZ2xDb250ZXh0OwogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLUV4dGVuc2lvbnNHTEFOR0xFOjpFeHRlbnNpb25zR0xBTkdM
RShHcmFwaGljc0NvbnRleHRHTE9wZW5HTCogY29udGV4dCwgYm9vbCB1c2VJbmRleGVkR2V0U3Ry
aW5nKQorRXh0ZW5zaW9uc0dMQU5HTEU6OkV4dGVuc2lvbnNHTEFOR0xFKEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMKiBjb250ZXh0KQogICAgIDogbV9pbml0aWFsaXplZEF2YWlsYWJsZUV4dGVuc2lv
bnMoZmFsc2UpCiAgICAgLCBtX2NvbnRleHQoY29udGV4dCkKLSAgICAsIG1fdXNlSW5kZXhlZEdl
dFN0cmluZyh1c2VJbmRleGVkR2V0U3RyaW5nKQogewogfQogCkBAIC0xMDksNDIgKzEwOCwxNSBA
QCBTdHJpbmcgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdM
RShQbGF0Zm9ybUdMT2JqZWN0IHNoYWRlcgogCiB2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjppbml0
aWFsaXplQXZhaWxhYmxlRXh0ZW5zaW9ucygpCiB7Ci0gICAgaWYgKG1fdXNlSW5kZXhlZEdldFN0
cmluZykgewotICAgICAgICBHTGludCBudW1FeHRlbnNpb25zID0gMDsKLSAgICAgICAgZ2w6Okdl
dEludGVnZXJ2KEdMX05VTV9FWFRFTlNJT05TLCAmbnVtRXh0ZW5zaW9ucyk7Ci0gICAgICAgIGZv
ciAoR0xpbnQgaSA9IDA7IGkgPCBudW1FeHRlbnNpb25zOyArK2kpCi0gICAgICAgICAgICBtX2F2
YWlsYWJsZUV4dGVuc2lvbnMuYWRkKGdsOjpHZXRTdHJpbmdpKEdMX0VYVEVOU0lPTlMsIGkpKTsK
LSAgICAgICAgZ2w6OkdldEludGVnZXJ2KEdMX05VTV9SRVFVRVNUQUJMRV9FWFRFTlNJT05TX0FO
R0xFLCAmbnVtRXh0ZW5zaW9ucyk7Ci0gICAgICAgIGZvciAoR0xpbnQgaSA9IDA7IGkgPCBudW1F
eHRlbnNpb25zOyArK2kpCi0gICAgICAgICAgICBtX3JlcXVlc3RhYmxlRXh0ZW5zaW9ucy5hZGQo
Z2w6OkdldFN0cmluZ2koR0xfUkVRVUVTVEFCTEVfRVhURU5TSU9OU19BTkdMRSwgaSkpOwotICAg
IH0gZWxzZSB7Ci0gICAgICAgIFN0cmluZyBleHRlbnNpb25zU3RyaW5nID0gZ2V0RXh0ZW5zaW9u
cygpOwotICAgICAgICBmb3IgKGF1dG8mIGV4dGVuc2lvbiA6IGV4dGVuc2lvbnNTdHJpbmcuc3Bs
aXQoJyAnKSkKLSAgICAgICAgICAgIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5hZGQoZXh0ZW5zaW9u
KTsKLSAgICAgICAgZXh0ZW5zaW9uc1N0cmluZyA9IFN0cmluZyhyZWludGVycHJldF9jYXN0PGNv
bnN0IGNoYXIqPihnbDo6R2V0U3RyaW5nKEdMX1JFUVVFU1RBQkxFX0VYVEVOU0lPTlNfQU5HTEUp
KSk7Ci0gICAgICAgIGZvciAoYXV0byYgZXh0ZW5zaW9uIDogZXh0ZW5zaW9uc1N0cmluZy5zcGxp
dCgnICcpKQotICAgICAgICAgICAgbV9yZXF1ZXN0YWJsZUV4dGVuc2lvbnMuYWRkKGV4dGVuc2lv
bik7Ci0gICAgfQorICAgIFN0cmluZyBleHRlbnNpb25zU3RyaW5nID0gZ2V0RXh0ZW5zaW9ucygp
OworICAgIGZvciAoYXV0byYgZXh0ZW5zaW9uIDogZXh0ZW5zaW9uc1N0cmluZy5zcGxpdCgnICcp
KQorICAgICAgICBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuYWRkKGV4dGVuc2lvbik7CisgICAgZXh0
ZW5zaW9uc1N0cmluZyA9IFN0cmluZyhyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihnbDo6
R2V0U3RyaW5nKEdMX1JFUVVFU1RBQkxFX0VYVEVOU0lPTlNfQU5HTEUpKSk7CisgICAgZm9yIChh
dXRvJiBleHRlbnNpb24gOiBleHRlbnNpb25zU3RyaW5nLnNwbGl0KCcgJykpCisgICAgICAgIG1f
cmVxdWVzdGFibGVFeHRlbnNpb25zLmFkZChleHRlbnNpb24pOwogICAgIG1faW5pdGlhbGl6ZWRB
dmFpbGFibGVFeHRlbnNpb25zID0gdHJ1ZTsKIH0KIAotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6
YmxpdEZyYW1lYnVmZmVyQU5HTEUoR0NHTGludCBzcmNYMCwgR0NHTGludCBzcmNZMCwgR0NHTGlu
dCBzcmNYMSwgR0NHTGludCBzcmNZMSwgR0NHTGludCBkc3RYMCwgR0NHTGludCBkc3RZMCwgR0NH
TGludCBkc3RYMSwgR0NHTGludCBkc3RZMSwgR0NHTGJpdGZpZWxkIG1hc2ssIEdDR0xlbnVtIGZp
bHRlcikKLXsKLSAgICAvLyBGSVhNRTogY29uc2lkZXIgYWRkaW5nIHN1cHBvcnQgZm9yIEFQUExF
X2ZyYW1lYnVmZmVyX211bHRpc2FtcGxlLgotICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4
dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OkJsaXRGcmFtZWJ1ZmZlckFO
R0xFKHNyY1gwLCBzcmNZMCwgc3JjWDEsIHNyY1kxLCBkc3RYMCwgZHN0WTAsIGRzdFgxLCBkc3RZ
MSwgbWFzaywgZmlsdGVyKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6cmVuZGVyYnVm
ZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWkgc2Ft
cGxlcywgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVp
IGhlaWdodCkKLXsKLSAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0g
ICAgICAgIHJldHVybjsKLQotICAgIGdsOjpSZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVB
TkdMRSh0YXJnZXQsIHNhbXBsZXMsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0KTsKLX0K
LQogUGxhdGZvcm1HTE9iamVjdCBFeHRlbnNpb25zR0xBTkdMRTo6Y3JlYXRlVmVydGV4QXJyYXlP
RVMoKQogewogICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKQEAgLTE4
NSwyNCArMTU3LDYgQEAgdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6YmluZFZlcnRleEFycmF5T0VT
KFBsYXRmb3JtR0xPYmplY3QgYXJyYXkpCiAgICAgZ2w6OkJpbmRWZXJ0ZXhBcnJheU9FUyhhcnJh
eSk7CiB9CiAKLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6Omluc2VydEV2ZW50TWFya2VyRVhUKGNv
bnN0IFN0cmluZyYpCi17Ci0gICAgLy8gRklYTUU6IGltcGxlbWVudCB0aGlzIGZ1bmN0aW9uIGFu
ZCBhZGQgR0xfRVhUX2RlYnVnX21hcmtlciBpbiBzdXBwb3J0cygpLgotICAgIHJldHVybjsKLX0K
LQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6cHVzaEdyb3VwTWFya2VyRVhUKGNvbnN0IFN0cmlu
ZyYpCi17Ci0gICAgLy8gRklYTUU6IGltcGxlbWVudCB0aGlzIGZ1bmN0aW9uIGFuZCBhZGQgR0xf
RVhUX2RlYnVnX21hcmtlciBpbiBzdXBwb3J0cygpLgotICAgIHJldHVybjsKLX0KLQotdm9pZCBF
eHRlbnNpb25zR0xBTkdMRTo6cG9wR3JvdXBNYXJrZXJFWFQodm9pZCkKLXsKLSAgICAvLyBGSVhN
RTogaW1wbGVtZW50IHRoaXMgZnVuY3Rpb24gYW5kIGFkZCBHTF9FWFRfZGVidWdfbWFya2VyIGlu
IHN1cHBvcnRzKCkuCi0gICAgcmV0dXJuOwotfQotCiBib29sIEV4dGVuc2lvbnNHTEFOR0xFOjpz
dXBwb3J0c0V4dGVuc2lvbihjb25zdCBTdHJpbmcmIG5hbWUpCiB7CiAgICAgcmV0dXJuIG1fYXZh
aWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucyhuYW1lKSB8fCBtX3JlcXVlc3RhYmxlRXh0ZW5zaW9u
cy5jb250YWlucyhuYW1lKTsKQEAgLTI1OCwyOTEgKzIxMiw2IEBAIEdDR0xlbnVtIEV4dGVuc2lv
bnNHTEFOR0xFOjphZGp1c3RXZWJHTDFUZXh0dXJlSW50ZXJuYWxGb3JtYXQoR0NHTGVudW0gaW50
ZXJuYWxmCiAgICAgcmV0dXJuIGludGVybmFsZm9ybWF0OwogfQogCi0vLyBHTF9BTkdMRV9yb2J1
c3RfY2xpZW50X21lbW9yeQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6cmVhZFBpeGVsc1JvYnVz
dEFOR0xFKGludCB4LCBpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBH
Q0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6
ZWkgKmxlbmd0aCwgR0NHTHNpemVpICpjb2x1bW5zLCBHQ0dMc2l6ZWkgKnJvd3MsIHZvaWQgKnBp
eGVscykKLXsKLSAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAg
ICAgIHJldHVybjsKLQotICAgIGdsOjpSZWFkUGl4ZWxzUm9idXN0QU5HTEUoeCwgeSwgd2lkdGgs
IGhlaWdodCwgZm9ybWF0LCB0eXBlLCBidWZTaXplLCBsZW5ndGgsIGNvbHVtbnMsIHJvd3MsIHBp
eGVscyk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OnRleFBhcmFtZXRlcmZ2Um9idXN0
QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUs
IGNvbnN0IEdDR0xmbG9hdCAqcGFyYW1zKQotewotICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29u
dGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OlRleFBhcmFtZXRlcmZ2
Um9idXN0QU5HTEUodGFyZ2V0LCBwbmFtZSwgYnVmU2l6ZSwgcGFyYW1zKTsKLX0KLQotdm9pZCBF
eHRlbnNpb25zR0xBTkdMRTo6dGV4UGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJn
ZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGludCAqcGFy
YW1zKQotewotICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAg
ICAgcmV0dXJuOwotCi0gICAgZ2w6OlRleFBhcmFtZXRlcml2Um9idXN0QU5HTEUodGFyZ2V0LCBw
bmFtZSwgYnVmU2l6ZSwgcGFyYW1zKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0
UXVlcnlpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xz
aXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKQotewotICAg
IGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwot
Ci0gICAgZ2w6OkdldFF1ZXJ5aXZSb2J1c3RBTkdMRSh0YXJnZXQsIHBuYW1lLCBidWZTaXplLCBs
ZW5ndGgsIHBhcmFtcyk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldFF1ZXJ5T2Jq
ZWN0dWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgaWQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkg
YnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0x1aW50ICpwYXJhbXMpCi17Ci0gICAgaWYg
KCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAg
ICBnbDo6R2V0UXVlcnlPYmplY3R1aXZSb2J1c3RBTkdMRShpZCwgcG5hbWUsIGJ1ZlNpemUsIGxl
bmd0aCwgcGFyYW1zKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0QnVmZmVyUG9p
bnRlcnZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6
ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIHZvaWQgKipwYXJhbXMpCi17Ci0gICAgaWYg
KCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAg
ICBnbDo6R2V0QnVmZmVyUG9pbnRlcnZSb2J1c3RBTkdMRSh0YXJnZXQsIHBuYW1lLCBidWZTaXpl
LCBsZW5ndGgsIHBhcmFtcyk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldFZlcnRl
eEF0dHJpYklpdlJvYnVzdEFOR0xFKEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NH
THNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpCi17Ci0g
ICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47
Ci0KLSAgICBnbDo6R2V0VmVydGV4QXR0cmliSWl2Um9idXN0QU5HTEUoaW5kZXgsIHBuYW1lLCBi
dWZTaXplLCBsZW5ndGgsIHBhcmFtcyk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6Omdl
dFZlcnRleEF0dHJpYkl1aXZSb2J1c3RBTkdMRShHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5h
bWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHVpbnQgKnBhcmFt
cykKLXsKLSAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAg
IHJldHVybjsKLQotICAgIGdsOjpHZXRWZXJ0ZXhBdHRyaWJJdWl2Um9idXN0QU5HTEUoaW5kZXgs
IHBuYW1lLCBidWZTaXplLCBsZW5ndGgsIHBhcmFtcyk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dM
QU5HTEU6OmdldFVuaWZvcm11aXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMaW50
IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0x1aW50
ICpwYXJhbXMpCi17Ci0gICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQot
ICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6R2V0VW5pZm9ybXVpdlJvYnVzdEFOR0xFKHByb2dy
YW0sIGxvY2F0aW9uLCBidWZTaXplLCBsZW5ndGgsIHBhcmFtcyk7Ci19Ci0KLXZvaWQgRXh0ZW5z
aW9uc0dMQU5HTEU6OmdldEJ1ZmZlclBhcmFtZXRlcmk2NHZSb2J1c3RBTkdMRShHQ0dMZW51bSB0
YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5n
dGgsIEdDR0xpbnQ2NCAqcGFyYW1zKQotewotICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4
dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OkdldEJ1ZmZlclBhcmFtZXRl
cmk2NHZSb2J1c3RBTkdMRSh0YXJnZXQsIHBuYW1lLCBidWZTaXplLCBsZW5ndGgsIHJlaW50ZXJw
cmV0X2Nhc3Q8R0xpbnQ2NCo+KHBhcmFtcykpOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xF
OjpzYW1wbGVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51
bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xpbnQgKnBhcmFtKQotewotICAg
IGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwot
Ci0gICAgZ2w6OlNhbXBsZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKHNhbXBsZXIsIHBuYW1lLCBi
dWZTaXplLCBwYXJhbSk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OnNhbXBsZXJQYXJh
bWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dM
c2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGZsb2F0ICpwYXJhbSkKLXsKLSAgICBpZiAoIW1fY29u
dGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpT
YW1wbGVyUGFyYW1ldGVyZnZSb2J1c3RBTkdMRShzYW1wbGVyLCBwbmFtZSwgYnVmU2l6ZSwgcGFy
YW0pOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRTYW1wbGVyUGFyYW1ldGVyaXZS
b2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1
ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpCi17Ci0gICAgaWYgKCFt
X2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBn
bDo6R2V0U2FtcGxlclBhcmFtZXRlcml2Um9idXN0QU5HTEUoc2FtcGxlciwgcG5hbWUsIGJ1ZlNp
emUsIGxlbmd0aCwgcGFyYW1zKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0U2Ft
cGxlclBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5h
bWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGZsb2F0ICpwYXJh
bXMpCi17Ci0gICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAg
ICByZXR1cm47Ci0KLSAgICBnbDo6R2V0U2FtcGxlclBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoc2Ft
cGxlciwgcG5hbWUsIGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1zKTsKLX0KLQotCi12b2lkIEV4dGVu
c2lvbnNHTEFOR0xFOjpnZXRGcmFtZWJ1ZmZlclBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVu
dW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAq
bGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpCi17Ci0gICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250
ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6R2V0RnJhbWVidWZmZXJQ
YXJhbWV0ZXJpdlJvYnVzdEFOR0xFKHRhcmdldCwgcG5hbWUsIGJ1ZlNpemUsIGxlbmd0aCwgcGFy
YW1zKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0UHJvZ3JhbUludGVyZmFjZWl2
Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGVudW0gcHJvZ3JhbUludGVyZmFjZSwg
R0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NH
TGludCAqcGFyYW1zKQotewotICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQo
KSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OkdldFByb2dyYW1JbnRlcmZhY2VpdlJvYnVz
dEFOR0xFKHByb2dyYW0sIHByb2dyYW1JbnRlcmZhY2UsIHBuYW1lLCBidWZTaXplLCBsZW5ndGgs
IHBhcmFtcyk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldEJvb2xlYW5pX3ZSb2J1
c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0x1aW50IGluZGV4LCBHQ0dMc2l6ZWkgYnVmU2l6
ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xib29sZWFuICpkYXRhKQotewotICAgIGlmICghbV9j
b250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6
OkdldEJvb2xlYW5pX3ZSb2J1c3RBTkdMRSh0YXJnZXQsIGluZGV4LCBidWZTaXplLCBsZW5ndGgs
IGRhdGEpOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRNdWx0aXNhbXBsZWZ2Um9i
dXN0QU5HTEUoR0NHTGVudW0gcG5hbWUsIEdDR0x1aW50IGluZGV4LCBHQ0dMc2l6ZWkgYnVmU2l6
ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xmbG9hdCAqdmFsKQotewotICAgIGlmICghbV9jb250
ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6Okdl
dE11bHRpc2FtcGxlZnZSb2J1c3RBTkdMRShwbmFtZSwgaW5kZXgsIGJ1ZlNpemUsIGxlbmd0aCwg
dmFsKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0VGV4TGV2ZWxQYXJhbWV0ZXJp
dlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gcG5h
bWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1z
KQotewotICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgZ2w6OkdldFRleExldmVsUGFyYW1ldGVyaXZSb2J1c3RBTkdMRSh0YXJn
ZXQsIGxldmVsLCBwbmFtZSwgYnVmU2l6ZSwgbGVuZ3RoLCBwYXJhbXMpOwotfQotCi12b2lkIEV4
dGVuc2lvbnNHTEFOR0xFOjpnZXRUZXhMZXZlbFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTGVu
dW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNp
emUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMZmxvYXQgKnBhcmFtcykKLXsKLSAgICBpZiAoIW1f
Y29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGds
OjpHZXRUZXhMZXZlbFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUodGFyZ2V0LCBsZXZlbCwgcG5hbWUs
IGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1zKTsKLX0KLQotCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xF
OjpnZXRQb2ludGVydlJvYnVzdEFOR0xFUm9idXN0QU5HTEUoR0NHTGVudW0gcG5hbWUsIEdDR0xz
aXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgdm9pZCAqKnBhcmFtcykKLXsKLSAgICBp
ZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQot
ICAgIGdsOjpHZXRQb2ludGVydlJvYnVzdEFOR0xFUm9idXN0QU5HTEUocG5hbWUsIGJ1ZlNpemUs
IGxlbmd0aCwgcGFyYW1zKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0blVuaWZv
cm1mdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xz
aXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGZsb2F0ICpwYXJhbXMpCi17Ci0g
ICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47
Ci0KLSAgICBnbDo6R2V0blVuaWZvcm1mdlJvYnVzdEFOR0xFKHByb2dyYW0sIGxvY2F0aW9uLCBi
dWZTaXplLCBsZW5ndGgsIHBhcmFtcyk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6Omdl
dG5Vbmlmb3JtaXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9u
LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykK
LXsKLSAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJl
dHVybjsKLQotICAgIGdsOjpHZXRuVW5pZm9ybWl2Um9idXN0QU5HTEUocHJvZ3JhbSwgbG9jYXRp
b24sIGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1zKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdM
RTo6Z2V0blVuaWZvcm11aXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMaW50IGxv
Y2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0x1aW50ICpw
YXJhbXMpCi17Ci0gICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAg
ICAgICByZXR1cm47Ci0KLSAgICBnbDo6R2V0blVuaWZvcm11aXZSb2J1c3RBTkdMRShwcm9ncmFt
LCBsb2NhdGlvbiwgYnVmU2l6ZSwgbGVuZ3RoLCBwYXJhbXMpOwotfQotCi12b2lkIEV4dGVuc2lv
bnNHTEFOR0xFOjp0ZXhQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdD
R0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGludCAqcGFyYW1zKQot
ewotICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0
dXJuOwotCi0gICAgZ2w6OlRleFBhcmFtZXRlcklpdlJvYnVzdEFOR0xFKHRhcmdldCwgcG5hbWUs
IGJ1ZlNpemUsIHBhcmFtcyk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OnRleFBhcmFt
ZXRlckl1aXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dM
c2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTHVpbnQgKnBhcmFtcykKLXsKLSAgICBpZiAoIW1fY29u
dGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpU
ZXhQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUodGFyZ2V0LCBwbmFtZSwgYnVmU2l6ZSwgcGFyYW1z
KTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0VGV4UGFyYW1ldGVySWl2Um9idXN0
QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUs
IEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpCi17Ci0gICAgaWYgKCFtX2NvbnRl
eHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6R2V0
VGV4UGFyYW1ldGVySWl2Um9idXN0QU5HTEUodGFyZ2V0LCBwbmFtZSwgYnVmU2l6ZSwgbGVuZ3Ro
LCBwYXJhbXMpOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRUZXhQYXJhbWV0ZXJJ
dWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVp
IGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMdWludCAqcGFyYW1zKQotewotICAgIGlm
ICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0g
ICAgZ2w6OkdldFRleFBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRSh0YXJnZXQsIHBuYW1lLCBidWZT
aXplLCBsZW5ndGgsIHBhcmFtcyk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OnNhbXBs
ZXJQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFt
ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xpbnQgKnBhcmFtKQotewotICAgIGlmICgh
bV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAg
Z2w6OlNhbXBsZXJQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRShzYW1wbGVyLCBwbmFtZSwgYnVmU2l6
ZSwgcGFyYW0pOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpzYW1wbGVyUGFyYW1ldGVy
SXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6
ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTHVpbnQgKnBhcmFtKQotewotICAgIGlmICghbV9jb250ZXh0
LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OlNhbXBs
ZXJQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUoc2FtcGxlciwgcG5hbWUsIGJ1ZlNpemUsIHBhcmFt
KTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0U2FtcGxlclBhcmFtZXRlcklpdlJv
YnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVm
U2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykKLXsKLSAgICBpZiAoIW1f
Y29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGds
OjpHZXRTYW1wbGVyUGFyYW1ldGVySWl2Um9idXN0QU5HTEUoc2FtcGxlciwgcG5hbWUsIGJ1ZlNp
emUsIGxlbmd0aCwgcGFyYW1zKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0U2Ft
cGxlclBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBw
bmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMdWludCAqcGFy
YW1zKQotewotICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAg
ICAgcmV0dXJuOwotCi0gICAgZ2w6OkdldFNhbXBsZXJQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUo
c2FtcGxlciwgcG5hbWUsIGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1zKTsKLX0KLQotCi12b2lkIEV4
dGVuc2lvbnNHTEFOR0xFOjpnZXRRdWVyeU9iamVjdGl2Um9idXN0QU5HTEUoR0NHTHVpbnQgaWQs
IEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdD
R0xpbnQgKnBhcmFtcykKLXsKLSAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50
KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpHZXRRdWVyeU9iamVjdGl2Um9idXN0QU5H
TEUoaWQsIHBuYW1lLCBidWZTaXplLCBsZW5ndGgsIHBhcmFtcyk7Ci19Ci0KLXZvaWQgRXh0ZW5z
aW9uc0dMQU5HTEU6OmdldFF1ZXJ5T2JqZWN0aTY0dlJvYnVzdEFOR0xFKEdDR0x1aW50IGlkLCBH
Q0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dM
aW50NjQgKnBhcmFtcykKLXsKLSAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50
KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpHZXRRdWVyeU9iamVjdGk2NHZSb2J1c3RB
TkdMRShpZCwgcG5hbWUsIGJ1ZlNpemUsIGxlbmd0aCwgcmVpbnRlcnByZXRfY2FzdDxHTGludDY0
Kj4ocGFyYW1zKSk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldFF1ZXJ5T2JqZWN0
dWk2NHZSb2J1c3RBTkdMRShHQ0dMdWludCBpZCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBi
dWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHVpbnQ2NCAqcGFyYW1zKQotewotICAgIGlm
ICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0g
ICAgZ2w6OkdldFF1ZXJ5T2JqZWN0dWk2NHZSb2J1c3RBTkdMRShpZCwgcG5hbWUsIGJ1ZlNpemUs
IGxlbmd0aCwgcmVpbnRlcnByZXRfY2FzdDxHTHVpbnQ2NCo+KHBhcmFtcykpOwotfQotCi0KIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShHUkFQSElDU19DT05URVhU
X0dMKSAmJiBVU0UoQU5HTEUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hbmdsZS9FeHRlbnNpb25zR0xBTkdMRS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUuaAppbmRleCBiMmQyNzdiOWFjOWQy
Nzg2MGY1NWFiYWJmOGNmZTU1ZTg0YjVmNTdlLi4wMDQyMzM3NzIwMzRiZmEzZWFjMTM3ZGMzNjM0
ODA5MTZkZWFhZjdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hbmdsZS9FeHRlbnNpb25zR0xBTkdMRS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmgKQEAgLTM2LDcgKzM2LDcgQEAgY2xh
c3MgRXh0ZW5zaW9uc0dMQU5HTEUgOiBwdWJsaWMgRXh0ZW5zaW9uc0dMIHsKICAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICAvLyBUaGlzIGNsYXNzIG9ubHkgbmVlZHMg
dG8gYmUgaW5zdGFudGlhdGVkIGJ5IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMIGltcGxlbWVudGF0
aW9ucy4KLSAgICBFeHRlbnNpb25zR0xBTkdMRShHcmFwaGljc0NvbnRleHRHTE9wZW5HTCosIGJv
b2wgdXNlSW5kZXhlZEdldFN0cmluZyA9IGZhbHNlKTsKKyAgICBleHBsaWNpdCBFeHRlbnNpb25z
R0xBTkdMRShHcmFwaGljc0NvbnRleHRHTE9wZW5HTCopOwogICAgIHZpcnR1YWwgfkV4dGVuc2lv
bnNHTEFOR0xFKCk7CiAKICAgICAvLyBFeHRlbnNpb25zR0wgbWV0aG9kcy4KQEAgLTQ5LDYwICs0
OSwxNCBAQCBwdWJsaWM6CiAgICAgdm9pZCBkZWxldGVWZXJ0ZXhBcnJheU9FUyhQbGF0Zm9ybUdM
T2JqZWN0KSBvdmVycmlkZTsKICAgICBHQ0dMYm9vbGVhbiBpc1ZlcnRleEFycmF5T0VTKFBsYXRm
b3JtR0xPYmplY3QpIG92ZXJyaWRlOwogICAgIHZvaWQgYmluZFZlcnRleEFycmF5T0VTKFBsYXRm
b3JtR0xPYmplY3QpIG92ZXJyaWRlOwotICAgIHZvaWQgaW5zZXJ0RXZlbnRNYXJrZXJFWFQoY29u
c3QgU3RyaW5nJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBwdXNoR3JvdXBNYXJrZXJFWFQoY29uc3Qg
U3RyaW5nJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBwb3BHcm91cE1hcmtlckVYVCh2b2lkKSBvdmVy
cmlkZTsKICAgICB2b2lkIGRyYXdCdWZmZXJzRVhUKEdDR0xTcGFuPGNvbnN0IEdDR0xlbnVtPikg
b3ZlcnJpZGU7CiAKICAgICBTdHJpbmcgZ2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFKFBs
YXRmb3JtR0xPYmplY3QpIG92ZXJyaWRlOwogCi0gICAgdm9pZCBibGl0RnJhbWVidWZmZXJBTkdM
RShHQ0dMaW50IHNyY1gwLCBHQ0dMaW50IHNyY1kwLCBHQ0dMaW50IHNyY1gxLCBHQ0dMaW50IHNy
Y1kxLCBHQ0dMaW50IGRzdFgwLCBHQ0dMaW50IGRzdFkwLCBHQ0dMaW50IGRzdFgxLCBHQ0dMaW50
IGRzdFkxLCBHQ0dMYml0ZmllbGQgbWFzaywgR0NHTGVudW0gZmlsdGVyKSBvdmVycmlkZTsKLSAg
ICB2b2lkIHJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKEdDR0xlbnVtIHRhcmdl
dCwgR0NHTHNpemVpIHNhbXBsZXMsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkg
d2lkdGgsIEdDR0xzaXplaSBoZWlnaHQpIG92ZXJyaWRlOwotCiAgICAgdm9pZCBkcmF3QXJyYXlz
SW5zdGFuY2VkQU5HTEUoR0NHTGVudW0gbW9kZSwgR0NHTGludCBmaXJzdCwgR0NHTHNpemVpIGNv
dW50LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KSBvdmVycmlkZTsKICAgICB2b2lkIGRyYXdFbGVtZW50
c0luc3RhbmNlZEFOR0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xzaXplaSBjb3VudCwgR0NHTGVudW0g
dHlwZSwgR0NHTHZvaWRwdHIgb2Zmc2V0LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KSBvdmVycmlkZTsK
ICAgICB2b2lkIHZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRShHQ0dMdWludCBpbmRleCwgR0NHTHVp
bnQgZGl2aXNvcikgb3ZlcnJpZGU7CiAKLSAgICAvLyBHTF9BTkdMRV9yb2J1c3RfY2xpZW50X21l
bW9yeQotICAgIHZvaWQgcmVhZFBpeGVsc1JvYnVzdEFOR0xFKEdDR0xpbnQgeCwgR0NHTGludCB5
LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NH
TGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMc2l6
ZWkgKmNvbHVtbnMsIEdDR0xzaXplaSAqcm93cywgdm9pZCAqcGl4ZWxzKSBvdmVycmlkZTsKLSAg
ICB2b2lkIHRleFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51
bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xmbG9hdCAqcGFyYW1zKSBvdmVy
cmlkZTsKLSAgICB2b2lkIHRleFBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xpbnQgKnBhcmFt
cykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRRdWVyeWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3Ro
LCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0UXVlcnlPYmplY3R1aXZS
b2J1c3RBTkdMRShHQ0dMdWludCBpZCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXpl
LCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHVpbnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9p
ZCBnZXRCdWZmZXJQb2ludGVydlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0g
cG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgdm9pZCAqKnBhcmFt
cykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJJaXZSb2J1c3RBTkdMRShHQ0dM
dWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkg
Kmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldFZlcnRleEF0
dHJpYkl1aXZSb2J1c3RBTkdMRShHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xz
aXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHVpbnQgKnBhcmFtcykgb3ZlcnJp
ZGU7Ci0gICAgdm9pZCBnZXRVbmlmb3JtdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwg
R0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBH
Q0dMdWludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldEJ1ZmZlclBhcmFtZXRlcmk2
NHZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkg
YnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQ2NCAqcGFyYW1zKSBvdmVycmlkZTsK
LSAgICB2b2lkIHNhbXBsZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIs
IEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGludCAqcGFyYW0p
IG92ZXJyaWRlOwotICAgIHZvaWQgc2FtcGxlclBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTHVp
bnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dM
ZmxvYXQgKnBhcmFtKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldFNhbXBsZXJQYXJhbWV0ZXJpdlJv
YnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVm
U2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAg
dm9pZCBnZXRTYW1wbGVyUGFyYW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBH
Q0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dM
ZmxvYXQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0KLSAgICB2b2lkIGdldEZyYW1lYnVmZmVyUGFyYW1l
dGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6
ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykgb3ZlcnJpZGU7
Ci0gICAgdm9pZCBnZXRQcm9ncmFtSW50ZXJmYWNlaXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9n
cmFtLCBHQ0dMZW51bSBwcm9ncmFtSW50ZXJmYWNlLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVp
IGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJyaWRlOwot
ICAgIHZvaWQgZ2V0Qm9vbGVhbmlfdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTHVp
bnQgaW5kZXgsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGJvb2xl
YW4gKmRhdGEpIG92ZXJyaWRlOyAvLyBOT0xJTlQKLSAgICB2b2lkIGdldE11bHRpc2FtcGxlZnZS
b2J1c3RBTkdMRShHQ0dMZW51bSBwbmFtZSwgR0NHTHVpbnQgaW5kZXgsIEdDR0xzaXplaSBidWZT
aXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGZsb2F0ICp2YWwpIG92ZXJyaWRlOwotICAgIHZv
aWQgZ2V0VGV4TGV2ZWxQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NH
TGludCBsZXZlbCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkg
Kmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldFRleExldmVs
UGFyYW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdD
R0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xm
bG9hdCAqcGFyYW1zKSBvdmVycmlkZTsKLQotICAgIHZvaWQgZ2V0UG9pbnRlcnZSb2J1c3RBTkdM
RVJvYnVzdEFOR0xFKEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVp
ICpsZW5ndGgsIHZvaWQgKipwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0blVuaWZvcm1m
dlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXpl
aSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGZsb2F0ICpwYXJhbXMpIG92ZXJyaWRl
OwotICAgIHZvaWQgZ2V0blVuaWZvcm1pdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdD
R0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NH
TGludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldG5Vbmlmb3JtdWl2Um9idXN0QU5H
TEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUs
IEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMdWludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lk
IHRleFBhcmFtZXRlcklpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5h
bWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJyaWRlOwot
ICAgIHZvaWQgdGV4UGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NH
TGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMdWludCAqcGFyYW1zKSBv
dmVycmlkZTsKLSAgICB2b2lkIGdldFRleFBhcmFtZXRlcklpdlJvYnVzdEFOR0xFKEdDR0xlbnVt
IHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxl
bmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldFRleFBhcmFtZXRl
ckl1aXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6
ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0x1aW50ICpwYXJhbXMpIG92ZXJyaWRl
OwotICAgIHZvaWQgc2FtcGxlclBhcmFtZXRlcklpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBs
ZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGludCAqcGFy
YW0pIG92ZXJyaWRlOwotICAgIHZvaWQgc2FtcGxlclBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRShH
Q0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0
IEdDR0x1aW50ICpwYXJhbSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRTYW1wbGVyUGFyYW1ldGVy
SWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXpl
aSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVycmlkZTsK
LSAgICB2b2lkIGdldFNhbXBsZXJQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2Ft
cGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0
aCwgR0NHTHVpbnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0KLSAgICB2b2lkIGdldFF1ZXJ5T2JqZWN0
aXZSb2J1c3RBTkdMRShHQ0dMdWludCBpZCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZT
aXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2
b2lkIGdldFF1ZXJ5T2JqZWN0aTY0dlJvYnVzdEFOR0xFKEdDR0x1aW50IGlkLCBHQ0dMZW51bSBw
bmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50NjQgKnBh
cmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRRdWVyeU9iamVjdHVpNjR2Um9idXN0QU5HTEUo
R0NHTHVpbnQgaWQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVp
ICpsZW5ndGgsIEdDR0x1aW50NjQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0KICAgICAvLyBPbmx5IGZv
ciBub24tV2ViR0wgMi4wIGNvbnRleHRzLgogICAgIEdDR0xlbnVtIGFkanVzdFdlYkdMMVRleHR1
cmVJbnRlcm5hbEZvcm1hdChHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTGVudW0gZm9ybWF0
LCBHQ0dMZW51bSB0eXBlKTsKIApAQCAtMTE5LDggKzczLDYgQEAgcHJpdmF0ZToKICAgICAvLyBX
ZWFrIHBvaW50ZXIgYmFjayB0byBHcmFwaGljc0NvbnRleHRHTE9wZW5HTC4KICAgICBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTCogbV9jb250ZXh0OwogCi0gICAgYm9vbCBtX3VzZUluZGV4ZWRHZXRT
dHJpbmcgeyBmYWxzZSB9OwotCiAgICAgLy8gV2hldGhlciB0aGUgV2ViR0wgMS4wLXJlbGF0ZWQg
ZmxvYXRpbmctcG9pbnQgcmVuZGVyYWJpbGl0eSBleHRlbnNpb25zIGhhdmUgYmVlbiBlbmFibGVk
LgogICAgIGJvb2wgbV93ZWJnbENvbG9yQnVmZmVyRmxvYXRSR0IgeyBmYWxzZSB9OwogICAgIGJv
b2wgbV93ZWJnbENvbG9yQnVmZmVyRmxvYXRSR0JBIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNH
TE9wZW5HTC5jcHAKaW5kZXggYWRkNWYzNTJhZTRkZTZiNmQ1ZGMxOTFlNjczYjVhYWZhNTZkZTk1
Zi4uYzMwNjQ2NzQ4OGIwN2FjYWJiZDE3ZWNhYzhiNmExNTgyNjI0MjNkMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5H
TC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVu
c2lvbnNHTE9wZW5HTC5jcHAKQEAgLTQ4LDIyICs0OCw2IEBAIEV4dGVuc2lvbnNHTE9wZW5HTDo6
RXh0ZW5zaW9uc0dMT3BlbkdMKEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiBjb250ZXh0LCBib29s
IHVzCiBFeHRlbnNpb25zR0xPcGVuR0w6On5FeHRlbnNpb25zR0xPcGVuR0woKSA9IGRlZmF1bHQ7
CiAKIAotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0w6OmJsaXRGcmFtZWJ1ZmZlckFOR0xFKEdDR0xp
bnQgc3JjWDAsIEdDR0xpbnQgc3JjWTAsIEdDR0xpbnQgc3JjWDEsIEdDR0xpbnQgc3JjWTEsIEdD
R0xpbnQgZHN0WDAsIEdDR0xpbnQgZHN0WTAsIEdDR0xpbnQgZHN0WDEsIEdDR0xpbnQgZHN0WTEs
IEdDR0xiaXRmaWVsZCBtYXNrLCBHQ0dMZW51bSBmaWx0ZXIpCi17Ci0gICAgaWYgKCFtX2NvbnRl
eHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICA6OmdsQmxp
dEZyYW1lYnVmZmVyRVhUKHNyY1gwLCBzcmNZMCwgc3JjWDEsIHNyY1kxLCBkc3RYMCwgZHN0WTAs
IGRzdFgxLCBkc3RZMSwgbWFzaywgZmlsdGVyKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xPcGVu
R0w6OnJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKEdDR0xlbnVtIHRhcmdldCwg
R0NHTHNpemVpIHNhbXBsZXMsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lk
dGgsIEdDR0xzaXplaSBoZWlnaHQpCi17Ci0gICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0
Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICA6OmdsUmVuZGVyYnVmZmVyU3RvcmFn
ZU11bHRpc2FtcGxlRVhUKHRhcmdldCwgc2FtcGxlcywgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBo
ZWlnaHQpOwotfQotCiBQbGF0Zm9ybUdMT2JqZWN0IEV4dGVuc2lvbnNHTE9wZW5HTDo6Y3JlYXRl
VmVydGV4QXJyYXlPRVMoKQogewogICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJl
bnQoKSkKQEAgLTEyNywyNCArMTExLDYgQEAgdm9pZCBFeHRlbnNpb25zR0xPcGVuR0w6OmJpbmRW
ZXJ0ZXhBcnJheU9FUyhQbGF0Zm9ybUdMT2JqZWN0IGFycmF5KQogI2VuZGlmCiB9CiAKLXZvaWQg
RXh0ZW5zaW9uc0dMT3BlbkdMOjppbnNlcnRFdmVudE1hcmtlckVYVChjb25zdCBTdHJpbmcmKQot
ewotICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQgdGhpcyBmdW5jdGlvbiBhbmQgYWRkIEdMX0VYVF9k
ZWJ1Z19tYXJrZXIgaW4gc3VwcG9ydHMoKS4KLSAgICByZXR1cm47Ci19Ci0KLXZvaWQgRXh0ZW5z
aW9uc0dMT3BlbkdMOjpwdXNoR3JvdXBNYXJrZXJFWFQoY29uc3QgU3RyaW5nJikKLXsKLSAgICAv
LyBGSVhNRTogaW1wbGVtZW50IHRoaXMgZnVuY3Rpb24gYW5kIGFkZCBHTF9FWFRfZGVidWdfbWFy
a2VyIGluIHN1cHBvcnRzKCkuCi0gICAgcmV0dXJuOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9w
ZW5HTDo6cG9wR3JvdXBNYXJrZXJFWFQodm9pZCkKLXsKLSAgICAvLyBGSVhNRTogaW1wbGVtZW50
IHRoaXMgZnVuY3Rpb24gYW5kIGFkZCBHTF9FWFRfZGVidWdfbWFya2VyIGluIHN1cHBvcnRzKCku
Ci0gICAgcmV0dXJuOwotfQotCiBib29sIEV4dGVuc2lvbnNHTE9wZW5HTDo6c3VwcG9ydHNFeHRl
bnNpb24oY29uc3QgU3RyaW5nJiBuYW1lKQogewogICAgIC8vIEdMX0FOR0xFX2ZyYW1lYnVmZmVy
X2JsaXQgYW5kIEdMX0FOR0xFX2ZyYW1lYnVmZmVyX211bHRpc2FtcGxlIGFyZSAiZmFrZSIuIFRo
ZXkgYXJlIGltcGxlbWVudGVkIHVzaW5nIG90aGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMLmgKaW5k
ZXggNDc1MDIyNmVjZWNlZjQ0Mzk2ZTk5Mzg2NzZjYjYzOWJlODM0MzdiNi4uMGFkYmQ3MDUwYjdl
M2Y3N2UwMTg4OTQzMzJmZmM4N2NmMzBkOTBjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuaApA
QCAtNDAsMTYgKzQwLDEwIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5FeHRlbnNpb25zR0xPcGVu
R0woKTsKIAogICAgIC8vIEV4dGVuc2lvbnNHTCBtZXRob2RzLgotICAgIHZvaWQgYmxpdEZyYW1l
YnVmZmVyQU5HTEUoR0NHTGludCBzcmNYMCwgR0NHTGludCBzcmNZMCwgR0NHTGludCBzcmNYMSwg
R0NHTGludCBzcmNZMSwgR0NHTGludCBkc3RYMCwgR0NHTGludCBkc3RZMCwgR0NHTGludCBkc3RY
MSwgR0NHTGludCBkc3RZMSwgR0NHTGJpdGZpZWxkIG1hc2ssIEdDR0xlbnVtIGZpbHRlcikgb3Zl
cnJpZGU7Ci0gICAgdm9pZCByZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVBTkdMRShHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xzaXplaSBzYW1wbGVzLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwg
R0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KSBvdmVycmlkZTsKLQogICAgIFBsYXRm
b3JtR0xPYmplY3QgY3JlYXRlVmVydGV4QXJyYXlPRVMoKSBvdmVycmlkZTsKICAgICB2b2lkIGRl
bGV0ZVZlcnRleEFycmF5T0VTKFBsYXRmb3JtR0xPYmplY3QpIG92ZXJyaWRlOwogICAgIEdDR0xi
b29sZWFuIGlzVmVydGV4QXJyYXlPRVMoUGxhdGZvcm1HTE9iamVjdCkgb3ZlcnJpZGU7CiAgICAg
dm9pZCBiaW5kVmVydGV4QXJyYXlPRVMoUGxhdGZvcm1HTE9iamVjdCkgb3ZlcnJpZGU7Ci0gICAg
dm9pZCBpbnNlcnRFdmVudE1hcmtlckVYVChjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKLSAgICB2
b2lkIHB1c2hHcm91cE1hcmtlckVYVChjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKLSAgICB2b2lk
IHBvcEdyb3VwTWFya2VyRVhUKHZvaWQpIG92ZXJyaWRlOwogICAgIHZvaWQgZHJhd0J1ZmZlcnNF
WFQoR0NHTFNwYW48Y29uc3QgR0NHTGVudW0+KSBvdmVycmlkZTsKIAogICAgIHZvaWQgZHJhd0Fy
cmF5c0luc3RhbmNlZEFOR0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xpbnQgZmlyc3QsIEdDR0xzaXpl
aSBjb3VudCwgR0NHTHNpemVpIHByaW1jb3VudCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29t
bW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNp
b25zR0xPcGVuR0xDb21tb24uY3BwCmluZGV4IDY5M2ZiOTNhNjdmYmM4NDA3MDgwNDgyYzhlZWJl
MTY4MTcxMjczYjAuLjMzMmM4MjQyNDk3MjRiYjk2MzZlYWFiZWEwM2MyYzM3NThlMDE2ZmYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNp
b25zR0xPcGVuR0xDb21tb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uY3BwCkBAIC0yNTQsMTg1ICsyNTQs
NiBAQCB2b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0blVuaWZvcm1pdkVYVChHQ0dM
dWludCwgaW50LCBHQ0dMc2l6ZWksIEdDR0xpbgogICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdM
RXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwogfQogCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5H
TENvbW1vbjo6cmVhZFBpeGVsc1JvYnVzdEFOR0xFKGludCwgaW50LCBHQ0dMc2l6ZWksIEdDR0xz
aXplaSwgR0NHTGVudW0sIEdDR0xlbnVtLCBHQ0dMc2l6ZWksIEdDR0xzaXplaSAqLCBHQ0dMc2l6
ZWkgKiwgR0NHTHNpemVpICosIHZvaWQgKikKLXsKLSAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVH
TEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xPcGVu
R0xDb21tb246OnRleFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTGVudW0sIEdDR0xlbnVtLCBH
Q0dMc2l6ZWksIGNvbnN0IEdDR0xmbG9hdCAqKQotewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6
ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9w
ZW5HTENvbW1vbjo6dGV4UGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51bSwgR0NHTGVudW0s
IEdDR0xzaXplaSwgY29uc3QgR0NHTGludCAqKQotewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6
ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9w
ZW5HTENvbW1vbjo6Z2V0UXVlcnlpdlJvYnVzdEFOR0xFKEdDR0xlbnVtLCBHQ0dMZW51bSwgR0NH
THNpemVpLCBHQ0dMc2l6ZWkgKiwgR0NHTGludCAqKQotewotICAgIG1fY29udGV4dC0+c3ludGhl
c2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi12b2lkIEV4dGVuc2lvbnNH
TE9wZW5HTENvbW1vbjo6Z2V0UXVlcnlPYmplY3R1aXZSb2J1c3RBTkdMRShHQ0dMdWludCwgR0NH
TGVudW0sIEdDR0xzaXplaSwgR0NHTHNpemVpICosIEdDR0x1aW50ICopCi17Ci0gICAgbV9jb250
ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Ci19Ci0KLXZvaWQg
RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRCdWZmZXJQb2ludGVydlJvYnVzdEFOR0xFKEdD
R0xlbnVtLCBHQ0dMZW51bSwgR0NHTHNpemVpLCBHQ0dMc2l6ZWkgKiwgdm9pZCAqKikKLXsKLSAg
ICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLX0K
LQotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFZlcnRleEF0dHJpYklpdlJvYnVz
dEFOR0xFKEdDR0x1aW50LCBHQ0dMZW51bSwgR0NHTHNpemVpLCBHQ0dMc2l6ZWkgKiwgR0NHTGlu
dCAqKQotewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVS
QVRJT04pOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0VmVydGV4QXR0
cmliSXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50LCBHQ0dMZW51bSwgR0NHTHNpemVpLCBHQ0dMc2l6
ZWkgKiwgR0NHTHVpbnQgKikKLXsKLSAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdM
X0lOVkFMSURfT1BFUkFUSU9OKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246
OmdldFVuaWZvcm11aXZSb2J1c3RBTkdMRShHQ0dMdWludCwgaW50LCBHQ0dMc2l6ZWksIEdDR0xz
aXplaSAqLCBHQ0dMdWludCAqKQotewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3Io
R0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1v
bjo6Z2V0QnVmZmVyUGFyYW1ldGVyaTY0dlJvYnVzdEFOR0xFKEdDR0xlbnVtLCBHQ0dMZW51bSwg
R0NHTHNpemVpLCBHQ0dMc2l6ZWkgKiwgR0NHTGludDY0ICopCi17Ci0gICAgbV9jb250ZXh0LT5z
eW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Ci19Ci0KLXZvaWQgRXh0ZW5z
aW9uc0dMT3BlbkdMQ29tbW9uOjpzYW1wbGVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMdWlu
dCwgR0NHTGVudW0sIEdDR0xzaXplaSwgY29uc3QgR0NHTGludCAqKQotewotICAgIG1fY29udGV4
dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi12b2lkIEV4
dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6c2FtcGxlclBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NH
THVpbnQsIEdDR0xlbnVtLCBHQ0dMc2l6ZWksIGNvbnN0IEdDR0xmbG9hdCAqKQotewotICAgIG1f
Y29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi12
b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0U2FtcGxlclBhcmFtZXRlcml2Um9idXN0
QU5HTEUoR0NHTHVpbnQsIEdDR0xlbnVtLCBHQ0dMc2l6ZWksIEdDR0xzaXplaSAqLCBHQ0dMaW50
ICopCi17Ci0gICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJB
VElPTik7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRTYW1wbGVyUGFy
YW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dMdWludCwgR0NHTGVudW0sIEdDR0xzaXplaSwgR0NHTHNp
emVpICosIEdDR0xmbG9hdCAqKQotewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3Io
R0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi0KLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29t
bW9uOjpnZXRGcmFtZWJ1ZmZlclBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0sIEdDR0xl
bnVtLCBHQ0dMc2l6ZWksIEdDR0xzaXplaSAqLCBHQ0dMaW50ICopCi17Ci0gICAgbV9jb250ZXh0
LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Ci19Ci0KLXZvaWQgRXh0
ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRQcm9ncmFtSW50ZXJmYWNlaXZSb2J1c3RBTkdMRShH
Q0dMdWludCwgR0NHTGVudW0sIEdDR0xlbnVtLCBHQ0dMc2l6ZWksIEdDR0xzaXplaSAqLCBHQ0dM
aW50ICopCi17Ci0gICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09Q
RVJBVElPTik7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRCb29sZWFu
aV92Um9idXN0QU5HTEUoR0NHTGVudW0sIEdDR0x1aW50LCBHQ0dMc2l6ZWksIEdDR0xzaXplaSAq
LCBHQ0dMYm9vbGVhbiAqKQotewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xf
SU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6
Z2V0TXVsdGlzYW1wbGVmdlJvYnVzdEFOR0xFKEdDR0xlbnVtLCBHQ0dMdWludCwgR0NHTHNpemVp
LCBHQ0dMc2l6ZWkgKiwgR0NHTGZsb2F0ICopCi17Ci0gICAgbV9jb250ZXh0LT5zeW50aGVzaXpl
R0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMT3Bl
bkdMQ29tbW9uOjpnZXRUZXhMZXZlbFBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0sIGlu
dCwgR0NHTGVudW0sIEdDR0xzaXplaSwgR0NHTHNpemVpICosIEdDR0xpbnQgKikKLXsKLSAgICBt
X2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLX0KLQot
dm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFRleExldmVsUGFyYW1ldGVyZnZSb2J1
c3RBTkdMRShHQ0dMZW51bSwgaW50LCBHQ0dMZW51bSwgR0NHTHNpemVpLCBHQ0dMc2l6ZWkgKiwg
R0NHTGZsb2F0ICopCi17Ci0gICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZB
TElEX09QRVJBVElPTik7Ci19Ci0KLQotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246Omdl
dFBvaW50ZXJ2Um9idXN0QU5HTEVSb2J1c3RBTkdMRShHQ0dMZW51bSwgR0NHTHNpemVpLCBHQ0dM
c2l6ZWkgKiwgdm9pZCAqKikKLXsKLSAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdM
X0lOVkFMSURfT1BFUkFUSU9OKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246
OmdldG5Vbmlmb3JtZnZSb2J1c3RBTkdMRShHQ0dMdWludCwgaW50LCBHQ0dMc2l6ZWksIEdDR0xz
aXplaSAqLCBHQ0dMZmxvYXQgKikKLXsKLSAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9y
KEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21t
b246OmdldG5Vbmlmb3JtaXZSb2J1c3RBTkdMRShHQ0dMdWludCwgaW50LCBHQ0dMc2l6ZWksIEdD
R0xzaXplaSAqLCBHQ0dMaW50ICopCi17Ci0gICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJv
cihHTF9JTlZBTElEX09QRVJBVElPTik7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29t
bW9uOjpnZXRuVW5pZm9ybXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50LCBpbnQsIEdDR0xzaXplaSwg
R0NHTHNpemVpICosIEdDR0x1aW50ICopCi17Ci0gICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xF
cnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdM
Q29tbW9uOjp0ZXhQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRShHQ0dMZW51bSwgR0NHTGVudW0sIEdD
R0xzaXplaSwgY29uc3QgR0NHTGludCAqKQotewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdM
RXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5H
TENvbW1vbjo6dGV4UGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFKEdDR0xlbnVtLCBHQ0dMZW51bSwg
R0NHTHNpemVpLCBjb25zdCBHQ0dMdWludCAqKQotewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6
ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9w
ZW5HTENvbW1vbjo6Z2V0VGV4UGFyYW1ldGVySWl2Um9idXN0QU5HTEUoR0NHTGVudW0sIEdDR0xl
bnVtLCBHQ0dMc2l6ZWksIEdDR0xzaXplaSAqLCBHQ0dMaW50ICopCi17Ci0gICAgbV9jb250ZXh0
LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Ci19Ci0KLXZvaWQgRXh0
ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRUZXhQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUoR0NH
TGVudW0sIEdDR0xlbnVtLCBHQ0dMc2l6ZWksIEdDR0xzaXplaSAqLCBHQ0dMdWludCAqKQotewot
ICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwot
fQotCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6c2FtcGxlclBhcmFtZXRlcklpdlJv
YnVzdEFOR0xFKEdDR0x1aW50LCBHQ0dMZW51bSwgR0NHTHNpemVpLCBjb25zdCBHQ0dMaW50ICop
Ci17Ci0gICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElP
Tik7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpzYW1wbGVyUGFyYW1ldGVy
SXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50LCBHQ0dMZW51bSwgR0NHTHNpemVpLCBjb25zdCBHQ0dM
dWludCAqKQotewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9P
UEVSQVRJT04pOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0U2FtcGxl
clBhcmFtZXRlcklpdlJvYnVzdEFOR0xFKEdDR0x1aW50LCBHQ0dMZW51bSwgR0NHTHNpemVpLCBH
Q0dMc2l6ZWkgKiwgR0NHTGludCAqKQotewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJy
b3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENv
bW1vbjo6Z2V0U2FtcGxlclBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRShHQ0dMdWludCwgR0NHTGVu
dW0sIEdDR0xzaXplaSwgR0NHTHNpemVpICosIEdDR0x1aW50ICopCi17Ci0gICAgbV9jb250ZXh0
LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Ci19Ci0KLQotdm9pZCBF
eHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFF1ZXJ5T2JqZWN0aXZSb2J1c3RBTkdMRShHQ0dM
dWludCwgR0NHTGVudW0sIEdDR0xzaXplaSwgR0NHTHNpemVpICosIEdDR0xpbnQgKikKLXsKLSAg
ICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLX0K
LQotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFF1ZXJ5T2JqZWN0aTY0dlJvYnVz
dEFOR0xFKEdDR0x1aW50LCBHQ0dMZW51bSwgR0NHTHNpemVpLCBHQ0dMc2l6ZWkgKiwgR0NHTGlu
dDY0ICopCi17Ci0gICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09Q
RVJBVElPTik7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRRdWVyeU9i
amVjdHVpNjR2Um9idXN0QU5HTEUoR0NHTHVpbnQsIEdDR0xlbnVtLCBHQ0dMc2l6ZWksIEdDR0xz
aXplaSAqLCBHQ0dMdWludDY0ICopCi17Ci0gICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJv
cihHTF9JTlZBTElEX09QRVJBVElPTik7Ci19Ci0KLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQog
CiAjZW5kaWYgLy8gRU5BQkxFKEdSQVBISUNTX0NPTlRFWFRfR0wpICYmIChVU0UoT1BFTkdMKSB8
fCBVU0UoT1BFTkdMX0VTKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uaAppbmRl
eCAzZjEwNDAxNjJmZmEwN2EyZGMxMzBhYmIyMmZiMWIxZmZjM2ZkZjIwLi4xMDE4YTE3ZWI4OGY3
ZDE5YTI4NGU2ZDUzMzRlN2E4MmI4ZjZhYzNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5H
TENvbW1vbi5oCkBAIC01NSw1OCArNTUsMTggQEAgcHVibGljOgogICAgIFN0cmluZyBnZXRUcmFu
c2xhdGVkU2hhZGVyU291cmNlQU5HTEUoUGxhdGZvcm1HTE9iamVjdCkgb3ZlcnJpZGU7CiAKICAg
ICAvLyBFWFQgUm9idXN0bmVzcyAtIHVzZXMgZ2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQigpCi0g
ICAgdm9pZCByZWFkblBpeGVsc0VYVChpbnQgeCwgaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NH
THNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkg
YnVmU2l6ZSwgdm9pZCAqZGF0YSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRuVW5pZm9ybWZ2RVhU
KEdDR0x1aW50IHByb2dyYW0sIGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIGZsb2F0
ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0blVuaWZvcm1pdkVYVChHQ0dMdWludCBw
cm9ncmFtLCBpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBpbnQgKnBhcmFtcykgb3Zl
cnJpZGU7Ci0KLSAgICBib29sIGlzTlZJRElBKCkgb3ZlcnJpZGUgeyByZXR1cm4gbV9pc05WSURJ
QTsgfQotICAgIGJvb2wgaXNBTUQoKSBvdmVycmlkZSB7IHJldHVybiBtX2lzQU1EOyB9Ci0gICAg
Ym9vbCBpc0ludGVsKCkgb3ZlcnJpZGUgeyByZXR1cm4gbV9pc0ludGVsOyB9Ci0gICAgYm9vbCBp
c0ltYWdpbmF0aW9uKCkgb3ZlcnJpZGUgeyByZXR1cm4gbV9pc0ltYWdpbmF0aW9uOyB9Ci0gICAg
U3RyaW5nIHZlbmRvcigpIG92ZXJyaWRlIHsgcmV0dXJuIG1fdmVuZG9yOyB9Ci0KLSAgICBib29s
IHJlcXVpcmVzQnVpbHRJbkZ1bmN0aW9uRW11bGF0aW9uKCkgb3ZlcnJpZGUgeyByZXR1cm4gbV9y
ZXF1aXJlc0J1aWx0SW5GdW5jdGlvbkVtdWxhdGlvbjsgfQotICAgIGJvb2wgcmVxdWlyZXNSZXN0
cmljdGVkTWF4aW11bVRleHR1cmVTaXplKCkgb3ZlcnJpZGUgeyByZXR1cm4gbV9yZXF1aXJlc1Jl
c3RyaWN0ZWRNYXhpbXVtVGV4dHVyZVNpemU7IH0KLQotICAgIC8vIEdMX0FOR0xFX3JvYnVzdF9j
bGllbnRfbWVtb3J5Ci0gICAgdm9pZCByZWFkUGl4ZWxzUm9idXN0QU5HTEUoaW50IHgsIGludCB5
LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NH
TGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMc2l6
ZWkgKmNvbHVtbnMsIEdDR0xzaXplaSAqcm93cywgdm9pZCAqcGl4ZWxzKSBvdmVycmlkZTsKLSAg
ICB2b2lkIHRleFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51
bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xmbG9hdCAqcGFyYW1zKSBvdmVy
cmlkZTsKLSAgICB2b2lkIHRleFBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xpbnQgKnBhcmFt
cykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRRdWVyeWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3Ro
LCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0UXVlcnlPYmplY3R1aXZS
b2J1c3RBTkdMRShHQ0dMdWludCBpZCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXpl
LCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHVpbnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9p
ZCBnZXRCdWZmZXJQb2ludGVydlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0g
cG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgdm9pZCAqKnBhcmFt
cykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJJaXZSb2J1c3RBTkdMRShHQ0dM
dWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkg
Kmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldFZlcnRleEF0
dHJpYkl1aXZSb2J1c3RBTkdMRShHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xz
aXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHVpbnQgKnBhcmFtcykgb3ZlcnJp
ZGU7Ci0gICAgdm9pZCBnZXRVbmlmb3JtdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwg
aW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0x1
aW50ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0QnVmZmVyUGFyYW1ldGVyaTY0dlJv
YnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZT
aXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludDY0ICpwYXJhbXMpIG92ZXJyaWRlOwotICAg
IHZvaWQgc2FtcGxlclBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NH
TGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMaW50ICpwYXJhbSkgb3Zl
cnJpZGU7Ci0gICAgdm9pZCBzYW1wbGVyUGFyYW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dMdWludCBz
YW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xmbG9h
dCAqcGFyYW0pIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0U2FtcGxlclBhcmFtZXRlcml2Um9idXN0
QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXpl
LCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lk
IGdldFNhbXBsZXJQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xl
bnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xmbG9h
dCAqcGFyYW1zKSBvdmVycmlkZTsKLQotICAgIHZvaWQgZ2V0RnJhbWVidWZmZXJQYXJhbWV0ZXJp
dlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBi
dWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAg
ICB2b2lkIGdldFByb2dyYW1JbnRlcmZhY2VpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0s
IEdDR0xlbnVtIHByb2dyYW1JbnRlcmZhY2UsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVm
U2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAg
dm9pZCBnZXRCb29sZWFuaV92Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMdWludCBp
bmRleCwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMYm9vbGVhbiAq
ZGF0YSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRNdWx0aXNhbXBsZWZ2Um9idXN0QU5HTEUoR0NH
TGVudW0gcG5hbWUsIEdDR0x1aW50IGluZGV4LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVp
ICpsZW5ndGgsIEdDR0xmbG9hdCAqdmFsKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldFRleExldmVs
UGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIGludCBsZXZlbCwgR0NHTGVu
dW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAq
cGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldFRleExldmVsUGFyYW1ldGVyZnZSb2J1c3RB
TkdMRShHQ0dMZW51bSB0YXJnZXQsIGludCBsZXZlbCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXpl
aSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGZsb2F0ICpwYXJhbXMpIG92ZXJyaWRl
OwotCi0gICAgdm9pZCBnZXRQb2ludGVydlJvYnVzdEFOR0xFUm9idXN0QU5HTEUoR0NHTGVudW0g
cG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgdm9pZCAqKnBhcmFt
cykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRuVW5pZm9ybWZ2Um9idXN0QU5HTEUoR0NHTHVpbnQg
cHJvZ3JhbSwgaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5n
dGgsIEdDR0xmbG9hdCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldG5Vbmlmb3JtaXZS
b2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZT
aXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2
b2lkIGdldG5Vbmlmb3JtdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgaW50IGxvY2F0
aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0x1aW50ICpwYXJh
bXMpIG92ZXJyaWRlOwotICAgIHZvaWQgdGV4UGFyYW1ldGVySWl2Um9idXN0QU5HTEUoR0NHTGVu
dW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xp
bnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCB0ZXhQYXJhbWV0ZXJJdWl2Um9idXN0QU5H
TEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNv
bnN0IEdDR0x1aW50ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0VGV4UGFyYW1ldGVy
SWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVp
IGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJyaWRlOwot
ICAgIHZvaWQgZ2V0VGV4UGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwg
R0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NH
THVpbnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzYW1wbGVyUGFyYW1ldGVySWl2Um9i
dXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZT
aXplLCBjb25zdCBHQ0dMaW50ICpwYXJhbSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzYW1wbGVyUGFy
YW1ldGVySXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBH
Q0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTHVpbnQgKnBhcmFtKSBvdmVycmlkZTsKLSAgICB2
b2lkIGdldFNhbXBsZXJQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBH
Q0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dM
aW50ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0U2FtcGxlclBhcmFtZXRlckl1aXZS
b2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1
ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMdWludCAqcGFyYW1zKSBvdmVycmlkZTsKLQot
ICAgIHZvaWQgZ2V0UXVlcnlPYmplY3RpdlJvYnVzdEFOR0xFKEdDR0x1aW50IGlkLCBHQ0dMZW51
bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpw
YXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0UXVlcnlPYmplY3RpNjR2Um9idXN0QU5HTEUo
R0NHTHVpbnQgaWQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVp
ICpsZW5ndGgsIEdDR0xpbnQ2NCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldFF1ZXJ5
T2JqZWN0dWk2NHZSb2J1c3RBTkdMRShHQ0dMdWludCBpZCwgR0NHTGVudW0gcG5hbWUsIEdDR0xz
aXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHVpbnQ2NCAqcGFyYW1zKSBvdmVy
cmlkZTsKKyAgICB2b2lkIHJlYWRuUGl4ZWxzRVhUKGludCB4LCBpbnQgeSwgR0NHTHNpemVpIHdp
ZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdD
R0xzaXplaSBidWZTaXplLCB2b2lkICpkYXRhKTsKKyAgICB2b2lkIGdldG5Vbmlmb3JtZnZFWFQo
R0NHTHVpbnQgcHJvZ3JhbSwgaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgZmxvYXQg
KnBhcmFtcyk7CisgICAgdm9pZCBnZXRuVW5pZm9ybWl2RVhUKEdDR0x1aW50IHByb2dyYW0sIGlu
dCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIGludCAqcGFyYW1zKTsKKworICAgIGJvb2wg
aXNOVklESUEoKSBjb25zdCB7IHJldHVybiBtX2lzTlZJRElBOyB9CisgICAgYm9vbCBpc0FNRCgp
IGNvbnN0IHsgcmV0dXJuIG1faXNBTUQ7IH0KKyAgICBib29sIGlzSW50ZWwoKSBjb25zdCB7IHJl
dHVybiBtX2lzSW50ZWw7IH0KKyAgICBib29sIGlzSW1hZ2luYXRpb24oKSBjb25zdCB7IHJldHVy
biBtX2lzSW1hZ2luYXRpb247IH0KKyAgICBTdHJpbmcgdmVuZG9yKCkgY29uc3QgeyByZXR1cm4g
bV92ZW5kb3I7IH0KKworICAgIGJvb2wgcmVxdWlyZXNCdWlsdEluRnVuY3Rpb25FbXVsYXRpb24o
KSBjb25zdCB7IHJldHVybiBtX3JlcXVpcmVzQnVpbHRJbkZ1bmN0aW9uRW11bGF0aW9uOyB9Cisg
ICAgYm9vbCByZXF1aXJlc1Jlc3RyaWN0ZWRNYXhpbXVtVGV4dHVyZVNpemUoKSBjb25zdCB7IHJl
dHVybiBtX3JlcXVpcmVzUmVzdHJpY3RlZE1heGltdW1UZXh0dXJlU2l6ZTsgfQogCiBwcm90ZWN0
ZWQ6CiAgICAgZnJpZW5kIGNsYXNzIEV4dGVuc2lvbnNHTE9wZW5HTEVTOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5H
TEVTLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNp
b25zR0xPcGVuR0xFUy5jcHAKaW5kZXggZTFlNDNiZjUzOTI4ODVhMjRmYmIzM2NiMjZiNWY2ZTQ5
MWZiZTA3My4uMDdkMDk3YzJjNTVjMzEyMGM0ZGVmZmE5YmI2YWUyNjRiNGJlNDhkNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNH
TE9wZW5HTEVTLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVu
Z2wvRXh0ZW5zaW9uc0dMT3BlbkdMRVMuY3BwCkBAIC0xMDAsMTEgKzEwMCw2IEBAIHZvaWQgRXh0
ZW5zaW9uc0dMT3BlbkdMRVM6OnJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUlNRyh1bnNp
Z25lZCBsb25nIHRhcmdlCiAgICAgICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xf
SU5WQUxJRF9PUEVSQVRJT04pOwogfQogCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTEVTOjpibGl0
RnJhbWVidWZmZXJBTkdMRShHQ0dMaW50LCBHQ0dMaW50LCBHQ0dMaW50LCBHQ0dMaW50LCBHQ0dM
aW50LCBHQ0dMaW50LCBHQ0dMaW50LCBHQ0dMaW50LCBHQ0dMYml0ZmllbGQsIEdDR0xlbnVtKQot
ewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KIHZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMRVM6
OnJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NH
THNpemVpIHNhbXBsZXMsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgs
IEdDR0xzaXplaSBoZWlnaHQpCiB7CiAgICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3Vy
cmVudCgpKQpAQCAtMTE1LDIxICsxMTAsNiBAQCB2b2lkIEV4dGVuc2lvbnNHTE9wZW5HTEVTOjpy
ZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVBTkdMRShHQ0dMZW51bSB0YXJnZXQsCiAgICAg
ICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMRVM6Omlu
c2VydEV2ZW50TWFya2VyRVhUKGNvbnN0IFN0cmluZyYpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQo
KTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xFUzo6cHVzaEdyb3VwTWFya2VyRVhUKGNv
bnN0IFN0cmluZyYpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBFeHRlbnNp
b25zR0xPcGVuR0xFUzo6cG9wR3JvdXBNYXJrZXJFWFQodm9pZCkKLXsKLSAgICBub3RJbXBsZW1l
bnRlZCgpOwotfQotCiBQbGF0Zm9ybUdMT2JqZWN0IEV4dGVuc2lvbnNHTE9wZW5HTEVTOjpjcmVh
dGVWZXJ0ZXhBcnJheU9FUygpCiB7CiAgICAgaWYgKG1fZ2xHZW5WZXJ0ZXhBcnJheXNPRVMpIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRl
bnNpb25zR0xPcGVuR0xFUy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Bl
bmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVTLmgKaW5kZXggNWM3NjAzN2ZhN2JjNmU4ZWVlM2U2NzNm
OTlhN2RmYzJmNzhmYjRkMi4uNjkzZDAzYzczZjBlYzgzMTBiM2NkMmViOGEzZGQzYjMyNjk0NmZh
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4
dGVuc2lvbnNHTE9wZW5HTEVTLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVTLmgKQEAgLTc1LDExICs3NSw3IEBAIHB1Ymxp
YzoKIAogICAgIC8vIEV4dGVuc2lvbjNEIG1ldGhvZHMKICAgICBib29sIGlzRW5hYmxlZChjb25z
dCBTdHJpbmcmKSBvdmVycmlkZTsKLSAgICB2b2lkIGJsaXRGcmFtZWJ1ZmZlckFOR0xFKEdDR0xp
bnQgc3JjWDAsIEdDR0xpbnQgc3JjWTAsIEdDR0xpbnQgc3JjWDEsIEdDR0xpbnQgc3JjWTEsIEdD
R0xpbnQgZHN0WDAsIEdDR0xpbnQgZHN0WTAsIEdDR0xpbnQgZHN0WDEsIEdDR0xpbnQgZHN0WTEs
IEdDR0xiaXRmaWVsZCBtYXNrLCBHQ0dMZW51bSBmaWx0ZXIpIG92ZXJyaWRlOwotICAgIHZvaWQg
cmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dM
c2l6ZWkgc2FtcGxlcywgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwg
R0NHTHNpemVpIGhlaWdodCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBpbnNlcnRFdmVudE1hcmtlckVY
VChjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKLSAgICB2b2lkIHB1c2hHcm91cE1hcmtlckVYVChj
b25zdCBTdHJpbmcmKSBvdmVycmlkZTsKLSAgICB2b2lkIHBvcEdyb3VwTWFya2VyRVhUKHZvaWQp
IG92ZXJyaWRlOworICAgIHZvaWQgcmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5HTEUo
R0NHTGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWkgc2FtcGxlcywgR0NHTGVudW0gaW50ZXJuYWxmb3Jt
YXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCk7CiAKICAgICBQbGF0Zm9ybUdM
T2JqZWN0IGNyZWF0ZVZlcnRleEFycmF5T0VTKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkZWxldGVW
ZXJ0ZXhBcnJheU9FUyhQbGF0Zm9ybUdMT2JqZWN0KSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9w
ZW5HTC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNz
Q29udGV4dEdMT3BlbkdMLmgKaW5kZXggOWNlMDViZDU3ODQwOGQ5YjE4ZTg4OGE3MTAwZjdiMmIx
NTI5YjllNy4uZDM1MTYxYjZhODg0NWE2MWFkMjgyZmUzZTQzNGJlYmNjNWRlYTkxMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Bl
bmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgKQEAgLTQ4MSw3ICs0ODEsNyBAQCBwdWJsaWM6
CiAgICAgLy8gYWxsIG1ldGhvZHMgaXQgY29udGFpbnMgbWF5IG5lY2Vzc2FyaWx5IGJlIHN1cHBv
cnRlZCBvbiB0aGUKICAgICAvLyBjdXJyZW50IGhhcmR3YXJlLiBNdXN0IGNhbGwgRXh0ZW5zaW9u
c0dMOjpzdXBwb3J0cygpIHRvCiAgICAgLy8gZGV0ZXJtaW5lIHRoaXMuCi0gICAgRXh0ZW5zaW9u
c0dMJiBnZXRFeHRlbnNpb25zKCkgZmluYWw7CisgICAgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9u
JiBnZXRFeHRlbnNpb25zKCkgZmluYWw7CiAKICAgICB2b2lkIHNldEZhaWxOZXh0R1BVU3RhdHVz
Q2hlY2soKSBmaW5hbCB7IG1fZmFpbE5leHRTdGF0dXNDaGVjayA9IHRydWU7IH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMQmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9v
cGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xCYXNlLmNwcAppbmRleCAxM2JjYTc0ZWM4Njcz
NGZkZmQ2YmI3ODA5OTA0NmJhOGE4MTg1ZGFiLi41MzZjZTNhNGYyNjMwNDJlNjYzYTNjYWQzZjI4
YjJmMWUyZGFlMTU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xCYXNl
LmNwcApAQCAtMTE2LDcgKzExNiw3IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJl
c2hhcGVGQk9zKGNvbnN0IEludFNpemUmIHNpemUpCiAgICAgICAgIC8vIFdlIGRvbid0IGFsbG93
IHRoZSBsb2dpYyB3aGVyZSBzdGVuY2lsIGlzIHJlcXVpcmVkIGFuZCBkZXB0aCBpcyBub3QuCiAg
ICAgICAgIC8vIFNlZSBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmFsaWRhdGVBdHRyaWJ1dGVz
LgogCi0gICAgICAgIEV4dGVuc2lvbnNHTCYgZXh0ZW5zaW9ucyA9IGdldEV4dGVuc2lvbnMoKTsK
KyAgICAgICAgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uJiBleHRlbnNpb25zID0gZ2V0RXh0ZW5z
aW9ucygpOwogICAgICAgICAvLyBVc2UgYSAyNCBiaXQgZGVwdGggYnVmZmVyIHdoZXJlIHdlIGtu
b3cgd2UgaGF2ZSBpdC4KICAgICAgICAgaWYgKGV4dGVuc2lvbnMuc3VwcG9ydHMoIkdMX0VYVF9w
YWNrZWRfZGVwdGhfc3RlbmNpbCIpKQogICAgICAgICAgICAgaW50ZXJuYWxEZXB0aFN0ZW5jaWxG
b3JtYXQgPSBHTF9ERVBUSDI0X1NURU5DSUw4X0VYVDsKQEAgLTQxNyw3ICs0MTcsNyBAQCB2b2lk
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjbGVhckRlcHRoKEdDR0xjbGFtcGYgZGVwdGgpCiB9
CiAKICNpZiAhUExBVEZPUk0oR1RLKQotRXh0ZW5zaW9uc0dMJiBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6Z2V0RXh0ZW5zaW9ucygpCitFeHRlbnNpb25zR0xPcGVuR0xDb21tb24mIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpnZXRFeHRlbnNpb25zKCkKIHsKICAgICBpZiAoIW1fZXh0ZW5zaW9u
cykKICAgICAgICAgbV9leHRlbnNpb25zID0gbWFrZVVuaXF1ZTxFeHRlbnNpb25zR0xPcGVuR0w+
KHRoaXMsIGlzR0xFUzJDb21wbGlhbnQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb21tb24uY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4
dEdMT3BlbkdMQ29tbW9uLmNwcAppbmRleCBlNzhiZjQ3NDNiOWNlMzk0MzdmYWMxNmRiNmJlMDA5
ODViMGE1ODE1Li5lYjU1YjUxMzExMDQyMTljZTJlN2Y1NDY5NzUzNDFiM2VlN2YyZWUzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0xDb21tb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvbW1vbi5jcHAKQEAgLTExOCw3
ICsxMTgsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2YWxpZGF0ZURlcHRoU3Rl
bmNpbChjb25zdCBjaGFyKiBwYWNrZWREZXB0aFN0ZW5jaQogewogICAgIGF1dG8gYXR0cnMgPSBj
b250ZXh0QXR0cmlidXRlcygpOwogCi0gICAgRXh0ZW5zaW9uc0dMJiBleHRlbnNpb25zID0gZ2V0
RXh0ZW5zaW9ucygpOworICAgIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbiYgZXh0ZW5zaW9ucyA9
IGdldEV4dGVuc2lvbnMoKTsKICAgICBpZiAoYXR0cnMuc3RlbmNpbCkgewogICAgICAgICBpZiAo
ZXh0ZW5zaW9ucy5zdXBwb3J0cyhwYWNrZWREZXB0aFN0ZW5jaWxFeHRlbnNpb24pKSB7CiAgICAg
ICAgICAgICBleHRlbnNpb25zLmVuc3VyZUVuYWJsZWQocGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5z
aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5n
bC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEVTLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEVTLmNwcAppbmRleCBiODJk
MTY0MTdjMmY1MTkxZDA0NDI0ODc0NmU3ODM4YTg2N2FlNTAyLi4wZTc4ZDA4MzhjY2IxNmExYTAz
ZDM4YjU3MzcwOGUxOTVmZWEwYzUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xFUy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMRVMuY3BwCkBAIC0yNTQsNyArMjU0LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6Y2xlYXJEZXB0aChHQ0dMY2xhbXBmIGRlcHRoKQogfQogCiAjaWYgIVBMQVRGT1JNKEdUSykK
LUV4dGVuc2lvbnNHTCYgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEV4dGVuc2lvbnMoKQor
RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uJiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0RXh0
ZW5zaW9ucygpCiB7CiAgICAgaWYgKCFtX2V4dGVuc2lvbnMpCiAgICAgICAgIG1fZXh0ZW5zaW9u
cyA9IG1ha2VVbmlxdWU8RXh0ZW5zaW9uc0dMT3BlbkdMRVM+KHRoaXMsIGlzR0xFUzJDb21wbGlh
bnQoKSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>415464</attachid>
            <date>2020-12-04 15:07:40 -0800</date>
            <delta_ts>2020-12-04 15:42:31 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-218896-20201204150738.patch</filename>
            <type>text/plain</type>
            <size>63803</size>
            <attacher name="Rini Patel">rini_patel</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwNDQzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2FlMjg5MzBiNzRmYmZk
NzMwMWQ2OGY5YjFiMGJjZjc4YTg2YzlmNy4uNzQ5OTYzMDhjMDQyOTg4YzhlYzhkMzg2ZGExNzNl
YzE0MDdlNzViMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyOSBAQAorMjAyMC0xMi0wNCAgUmlu
aSBQYXRlbCAgPHJpbmlfcGF0ZWxAYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZSB1bnVzZWQg
ZnVuY3Rpb25zIGZyb20gR3JhcGhpY3NDb250ZXh0R0wgYW5kIEV4dGVuc2lvbnNHTAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE4ODk2CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVtb3ZlIHVudXNlZCBm
dW5jdGlvbnMgZnJvbSBHcmFwaGljc0NvbnRleHRHTCBhbmQgRXh0ZW5zaW9uc0dMCisgICAgICAg
IFRoZXkncmUgZGVhZCBjb2RlIGFuZCBtYWtlIGl0IGhhcmRlciB0byBpbXBsZW1lbnQgdGhlIEdQ
VSBQcm9jZXNzIHZlcnNpb24uCisKKyAgICAgICAgLSBJZiB0aGUgZnVuY3Rpb24gaXMgdW51c2Vk
LCByZW1vdmUgaXQgZnVsbHkKKyAgICAgICAgLSBJZiB0aGUgZnVuY3Rpb24gaXMgdW51c2VkIGlu
IFVTRShBTkdMRSkgV2ViR0wgcGFydCwgcmVtb3ZlIHRoZSBmdW5jdGlvbiBmcm9tIEdyYXBoaWNz
Q29udGV4dEdMIGFuZCBBTkdMRSBHcmFwaGljc0NvbnRleHRHTE9wZW5HTAorCisgICAgICAgICog
aHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL0V4dGVuc2lvbnNHTC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lv
bnNHTEFOR0xFOjpFeHRlbnNpb25zR0xBTkdMRSk6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNp
b25zR0xBTkdMRTo6aW5pdGlhbGl6ZUF2YWlsYWJsZUV4dGVuc2lvbnMpOgorICAgICAgICAoV2Vi
Q29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmJsaXRGcmFtZWJ1ZmZlckFOR0xFKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpyZW5kZXJidWZmZXJTdG9yYWdl
TXVsdGlzYW1wbGVBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25z
R0xBTkdMRTo6aW5zZXJ0RXZlbnRNYXJrZXJFWFQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OnB1c2hHcm91cE1hcmtlckVYVCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6cG9wR3JvdXBNYXJrZXJFWFQpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OnJlYWRQaXhlbHNSb2J1
c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6
dGV4UGFyYW1ldGVyZnZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpF
eHRlbnNpb25zR0xBTkdMRTo6dGV4UGFyYW1ldGVyaXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6Z2V0UXVlcnlpdlJvYnVzdEFOR0xF
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpnZXRRdWVy
eU9iamVjdHVpdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVu
c2lvbnNHTEFOR0xFOjpnZXRCdWZmZXJQb2ludGVydlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpnZXRWZXJ0ZXhBdHRyaWJJaXZSb2J1
c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6
Z2V0VmVydGV4QXR0cmliSXVpdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpnZXRVbmlmb3JtdWl2Um9idXN0QU5HTEUpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldEJ1ZmZlclBhcmFtZXRl
cmk2NHZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25z
R0xBTkdMRTo6c2FtcGxlclBhcmFtZXRlcml2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OnNhbXBsZXJQYXJhbWV0ZXJmdlJvYnVzdEFO
R0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpnZXRT
YW1wbGVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpFeHRlbnNpb25zR0xBTkdMRTo6Z2V0U2FtcGxlclBhcmFtZXRlcmZ2Um9idXN0QU5HTEUpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldEZyYW1lYnVm
ZmVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpF
eHRlbnNpb25zR0xBTkdMRTo6Z2V0UHJvZ3JhbUludGVyZmFjZWl2Um9idXN0QU5HTEUpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldEJvb2xlYW5pX3ZS
b2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdM
RTo6Z2V0TXVsdGlzYW1wbGVmdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpnZXRUZXhMZXZlbFBhcmFtZXRlcml2Um9idXN0QU5HTEUp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldFRleExl
dmVsUGFyYW1ldGVyZnZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpF
eHRlbnNpb25zR0xBTkdMRTo6Z2V0UG9pbnRlcnZSb2J1c3RBTkdMRVJvYnVzdEFOR0xFKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpnZXRuVW5pZm9ybWZ2
Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5H
TEU6OmdldG5Vbmlmb3JtaXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpFeHRlbnNpb25zR0xBTkdMRTo6Z2V0blVuaWZvcm11aXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6dGV4UGFyYW1ldGVySWl2Um9i
dXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6
OnRleFBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpFeHRlbnNpb25zR0xBTkdMRTo6Z2V0VGV4UGFyYW1ldGVySWl2Um9idXN0QU5HTEUpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldFRleFBhcmFtZXRl
ckl1aXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25z
R0xBTkdMRTo6c2FtcGxlclBhcmFtZXRlcklpdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpzYW1wbGVyUGFyYW1ldGVySXVpdlJvYnVz
dEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpn
ZXRTYW1wbGVyUGFyYW1ldGVySWl2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldFNhbXBsZXJQYXJhbWV0ZXJJdWl2Um9idXN0QU5H
TEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldFF1
ZXJ5T2JqZWN0aXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRl
bnNpb25zR0xBTkdMRTo6Z2V0UXVlcnlPYmplY3RpNjR2Um9idXN0QU5HTEUpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldFF1ZXJ5T2JqZWN0dWk2NHZS
b2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUv
RXh0ZW5zaW9uc0dMQU5HTEUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wv
RXh0ZW5zaW9uc0dMT3BlbkdMLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9w
ZW5HTDo6YmxpdEZyYW1lYnVmZmVyQU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
RXh0ZW5zaW9uc0dMT3BlbkdMOjpyZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVBTkdMRSk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0w6Omluc2VydEV2
ZW50TWFya2VyRVhUKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9w
ZW5HTDo6cHVzaEdyb3VwTWFya2VyRVhUKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4
dGVuc2lvbnNHTE9wZW5HTDo6cG9wR3JvdXBNYXJrZXJFWFQpOiBEZWxldGVkLgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6cmVhZFBpeGVsc1Jv
YnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5H
TENvbW1vbjo6dGV4UGFyYW1ldGVyZnZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OnRleFBhcmFtZXRlcml2Um9idXN0QU5H
TEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9u
OjpnZXRRdWVyeWl2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0
ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRRdWVyeU9iamVjdHVpdlJvYnVzdEFOR0xFKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0QnVm
ZmVyUG9pbnRlcnZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRl
bnNpb25zR0xPcGVuR0xDb21tb246OmdldFZlcnRleEF0dHJpYklpdlJvYnVzdEFOR0xFKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0VmVy
dGV4QXR0cmliSXVpdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4
dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0VW5pZm9ybXVpdlJvYnVzdEFOR0xFKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0QnVmZmVy
UGFyYW1ldGVyaTY0dlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4
dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6c2FtcGxlclBhcmFtZXRlcml2Um9idXN0QU5HTEUpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpzYW1w
bGVyUGFyYW1ldGVyZnZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpF
eHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFNhbXBsZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xF
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6
Z2V0U2FtcGxlclBhcmFtZXRlcmZ2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRGcmFtZWJ1ZmZlclBhcmFtZXRlcml2
Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3Bl
bkdMQ29tbW9uOjpnZXRQcm9ncmFtSW50ZXJmYWNlaXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldEJvb2xlYW5pX3ZS
b2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVu
R0xDb21tb246OmdldE11bHRpc2FtcGxlZnZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFRleExldmVsUGFyYW1ldGVy
aXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xP
cGVuR0xDb21tb246OmdldFRleExldmVsUGFyYW1ldGVyZnZSb2J1c3RBTkdMRSk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFBvaW50ZXJ2
Um9idXN0QU5HTEVSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRl
bnNpb25zR0xPcGVuR0xDb21tb246OmdldG5Vbmlmb3JtZnZSb2J1c3RBTkdMRSk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldG5Vbmlmb3Jt
aXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xP
cGVuR0xDb21tb246OmdldG5Vbmlmb3JtdWl2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjp0ZXhQYXJhbWV0ZXJJaXZSb2J1
c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xD
b21tb246OnRleFBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFRleFBhcmFtZXRlcklpdlJvYnVz
dEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTENv
bW1vbjo6Z2V0VGV4UGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6c2FtcGxlclBhcmFtZXRlcklpdlJv
YnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5H
TENvbW1vbjo6c2FtcGxlclBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFNhbXBsZXJQYXJhbWV0
ZXJJaXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25z
R0xPcGVuR0xDb21tb246OmdldFNhbXBsZXJQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRRdWVy
eU9iamVjdGl2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5z
aW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRRdWVyeU9iamVjdGk2NHZSb2J1c3RBTkdMRSk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFF1ZXJ5
T2JqZWN0dWk2NHZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5oOgorICAgICAgICAoV2ViQ29y
ZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjppc05WSURJQSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmlzQU1EIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6aXNJbnRlbCBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmlzSW1hZ2luYXRpb24gY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjp2ZW5kb3Ig
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpyZXF1
aXJlc0J1aWx0SW5GdW5jdGlvbkVtdWxhdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpF
eHRlbnNpb25zR0xPcGVuR0xDb21tb246OnJlcXVpcmVzUmVzdHJpY3RlZE1heGltdW1UZXh0dXJl
U2l6ZSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lv
bnNHTE9wZW5HTEVTLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTEVT
OjpibGl0RnJhbWVidWZmZXJBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRl
bnNpb25zR0xPcGVuR0xFUzo6aW5zZXJ0RXZlbnRNYXJrZXJFWFQpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMRVM6OnB1c2hHcm91cE1hcmtlckVYVCk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xFUzo6cG9wR3JvdXBN
YXJrZXJFWFQpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9F
eHRlbnNpb25zR0xPcGVuR0xFUy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5n
bC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEJhc2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlc2hhcGVGQk9zKToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRFeHRlbnNpb25zKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb21tb24uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnZhbGlkYXRlRGVw
dGhTdGVuY2lsKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0xFUy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6Z2V0RXh0ZW5zaW9ucyk6CisKIDIwMjAtMTItMDQgIFBlbmcgTGl1ICA8cGVuZy5s
aXU2QGFwcGxlLmNvbT4KIAogICAgICAgICBbTVNFXSBNb3ZlIHRyYWNrIGJ1ZmZlciBtYW5hZ2Vt
ZW50IGZyb20gU291cmNlQnVmZmVyIHRvIFNvdXJjZUJ1ZmZlclByaXZhdGUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5j
cHAKaW5kZXggNzJjMjY0NDY2NmNmMDNhMmY1OWYxZTA5ZmU5MzI5M2NiODBiNmJhZS4uYjkzNGMx
ZTg5YzI1MWFjMGIwMDgzNzFmZjMxZmRiNGY5OTcxMjAwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKQEAg
LTc0MiwxMCArNzQyLDYgQEAgc3RkOjp1bmlxdWVfcHRyPFdlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2U+IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmNyZWF0ZShDYW4KICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAgICAgfQogCi0gICAgYXV0byYgZXh0ZW5zaW9ucyA9IGNvbnRleHQtPmdldEV4
dGVuc2lvbnMoKTsKLSAgICBpZiAoZXh0ZW5zaW9ucy5zdXBwb3J0cygiR0xfRVhUX2RlYnVnX21h
cmtlciJfcykpCi0gICAgICAgIGV4dGVuc2lvbnMucHVzaEdyb3VwTWFya2VyRVhUKCJXZWJHTFJl
bmRlcmluZ0NvbnRleHQiX3MpOwotCiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2U+IHJlbmRlcmluZ0NvbnRleHQ7CiAjaWYgRU5BQkxFKFdFQkdMMikKICAgICBp
ZiAodHlwZSA9PSAid2ViZ2wyIikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0V4dGVuc2lvbnNHTC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvRXh0ZW5zaW9uc0dMLmgKaW5kZXggYzRlNzc3OGRiNmE0NDhmZDBhNWU2NTE1OTFmZWVhMTQ1
Mzg2MzgyMy4uNjJkNTgzMDAwYTE1YzY3ZDJmOGE1MDhiNGZjNmI3ZTg4NGM0YjRkNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRXh0ZW5zaW9uc0dMLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRXh0ZW5zaW9uc0dMLmgKQEAgLTI3
OCwxMiArMjc4LDYgQEAgcHVibGljOgogICAgIC8vIGV4dGVybmFsbHkuCiAgICAgdmlydHVhbCBH
Q0dMaW50IGdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIoKSA9IDA7CiAKLSAgICAvLyBHTF9BTkdM
RV9mcmFtZWJ1ZmZlcl9ibGl0Ci0gICAgdmlydHVhbCB2b2lkIGJsaXRGcmFtZWJ1ZmZlckFOR0xF
KEdDR0xpbnQgc3JjWDAsIEdDR0xpbnQgc3JjWTAsIEdDR0xpbnQgc3JjWDEsIEdDR0xpbnQgc3Jj
WTEsIEdDR0xpbnQgZHN0WDAsIEdDR0xpbnQgZHN0WTAsIEdDR0xpbnQgZHN0WDEsIEdDR0xpbnQg
ZHN0WTEsIEdDR0xiaXRmaWVsZCBtYXNrLCBHQ0dMZW51bSBmaWx0ZXIpID0gMDsKLQotICAgIC8v
IEdMX0FOR0xFX2ZyYW1lYnVmZmVyX211bHRpc2FtcGxlCi0gICAgdmlydHVhbCB2b2lkIHJlbmRl
cmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVp
IHNhbXBsZXMsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xz
aXplaSBoZWlnaHQpID0gMDsKLQogICAgIC8vIEdMX09FU192ZXJ0ZXhfYXJyYXlfb2JqZWN0CiAg
ICAgdmlydHVhbCBQbGF0Zm9ybUdMT2JqZWN0IGNyZWF0ZVZlcnRleEFycmF5T0VTKCkgPSAwOwog
ICAgIHZpcnR1YWwgdm9pZCBkZWxldGVWZXJ0ZXhBcnJheU9FUyhQbGF0Zm9ybUdMT2JqZWN0KSA9
IDA7CkBAIC0yOTMsMTEgKzI4Nyw2IEBAIHB1YmxpYzoKICAgICAvLyBHTF9BTkdMRV90cmFuc2xh
dGVkX3NoYWRlcl9zb3VyY2UKICAgICB2aXJ0dWFsIFN0cmluZyBnZXRUcmFuc2xhdGVkU2hhZGVy
U291cmNlQU5HTEUoUGxhdGZvcm1HTE9iamVjdCkgPSAwOwogCi0gICAgLy8gR0xfRVhUX2RlYnVn
X21hcmtlcgotICAgIHZpcnR1YWwgdm9pZCBpbnNlcnRFdmVudE1hcmtlckVYVChjb25zdCBTdHJp
bmcmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHB1c2hHcm91cE1hcmtlckVYVChjb25zdCBTdHJp
bmcmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHBvcEdyb3VwTWFya2VyRVhUKCkgPSAwOwotCiAg
ICAgLy8gR0xfQVJCX2RyYXdfYnVmZmVycyAvIEdMX0VYVF9kcmF3X2J1ZmZlcnMKICAgICB2aXJ0
dWFsIHZvaWQgZHJhd0J1ZmZlcnNFWFQoR0NHTFNwYW48Y29uc3QgR0NHTGVudW0+IGJ1ZnMpID0g
MDsKIApAQCAtMzA2LDQ3ICsyOTUsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRyYXdF
bGVtZW50c0luc3RhbmNlZEFOR0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xzaXplaSBjb3VudCwgR0NH
TGVudW0gdHlwZSwgR0NHTHZvaWRwdHIgb2Zmc2V0LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KSA9IDA7
CiAgICAgdmlydHVhbCB2b2lkIHZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRShHQ0dMdWludCBpbmRl
eCwgR0NHTHVpbnQgZGl2aXNvcikgPSAwOwogCi0gICAgLy8gR0xfQU5HTEVfcm9idXN0X2NsaWVu
dF9tZW1vcnkKLSAgICB2aXJ0dWFsIHZvaWQgcmVhZFBpeGVsc1JvYnVzdEFOR0xFKEdDR0xpbnQg
eCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVt
IGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVu
Z3RoLCBHQ0dMc2l6ZWkqIGNvbHVtbnMsIEdDR0xzaXplaSogcm93cywgR0NHTHZvaWQqIHBpeGVs
cykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCB0ZXhQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0xl
bnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dM
ZmxvYXQqIHBhcmFtcykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCB0ZXhQYXJhbWV0ZXJpdlJvYnVz
dEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXpl
LCBjb25zdCBHQ0dMaW50KiBwYXJhbXMpID0gMDsKLQotICAgIHZpcnR1YWwgdm9pZCBnZXRRdWVy
eWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVp
IGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpID0gMDsKLSAgICB2
aXJ0dWFsIHZvaWQgZ2V0UXVlcnlPYmplY3R1aXZSb2J1c3RBTkdMRShHQ0dMdWludCBpZCwgR0NH
TGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHVp
bnQqIHBhcmFtcykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRCdWZmZXJQb2ludGVydlJvYnVz
dEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXpl
LCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHZvaWQqKiBwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFs
IHZvaWQgZ2V0VmVydGV4QXR0cmliSWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0xl
bnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQq
IHBhcmFtcykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJJdWl2Um9idXN0
QU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwg
R0NHTHNpemVpKiBsZW5ndGgsIEdDR0x1aW50KiBwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZv
aWQgZ2V0VW5pZm9ybXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9j
YXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHVpbnQqIHBh
cmFtcykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRCdWZmZXJQYXJhbWV0ZXJpNjR2Um9idXN0
QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUs
IEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50NjQqIHBhcmFtcykgPSAwOwotICAgIHZpcnR1YWwg
dm9pZCBzYW1wbGVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dM
ZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xpbnQqIHBhcmFtKSA9IDA7
Ci0gICAgdmlydHVhbCB2b2lkIHNhbXBsZXJQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0x1aW50
IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGZs
b2F0KiBwYXJhbSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRTYW1wbGVyUGFyYW1ldGVyaXZS
b2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1
ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpID0gMDsKLSAgICB2aXJ0
dWFsIHZvaWQgZ2V0U2FtcGxlclBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxl
ciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwg
R0NHTGZsb2F0KiBwYXJhbXMpID0gMDsKLQotICAgIHZpcnR1YWwgdm9pZCBnZXRGcmFtZWJ1ZmZl
clBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwg
R0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpID0g
MDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0UHJvZ3JhbUludGVyZmFjZWl2Um9idXN0QU5HTEUoR0NH
THVpbnQgcHJvZ3JhbSwgR0NHTGVudW0gcHJvZ3JhbUludGVyZmFjZSwgR0NHTGVudW0gcG5hbWUs
IEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1zKSA9
IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldEJvb2xlYW5pX3ZSb2J1c3RBTkdMRShHQ0dMZW51bSB0
YXJnZXQsIEdDR0x1aW50IGluZGV4LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5n
dGgsIEdDR0xib29sZWFuKiBkYXRhKSA9IDA7IC8vIE5PTElOVAotICAgIHZpcnR1YWwgdm9pZCBn
ZXRNdWx0aXNhbXBsZWZ2Um9idXN0QU5HTEUoR0NHTGVudW0gcG5hbWUsIEdDR0x1aW50IGluZGV4
LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xmbG9hdCogdmFsKSA9
IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldFRleExldmVsUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShH
Q0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkg
YnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykgPSAwOwotICAgIHZp
cnR1YWwgdm9pZCBnZXRUZXhMZXZlbFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdD
R0xzaXplaSogbGVuZ3RoLCBHQ0dMZmxvYXQqIHBhcmFtcykgPSAwOwotCi0gICAgdmlydHVhbCB2
b2lkIGdldFBvaW50ZXJ2Um9idXN0QU5HTEVSb2J1c3RBTkdMRShHQ0dMZW51bSBwbmFtZSwgR0NH
THNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMdm9pZCoqIHBhcmFtcykgPSAw
OwotICAgIHZpcnR1YWwgdm9pZCBnZXRuVW5pZm9ybWZ2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJv
Z3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVu
Z3RoLCBHQ0dMZmxvYXQqIHBhcmFtcykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRuVW5pZm9y
bWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNp
emVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpID0gMDsKLSAg
ICB2aXJ0dWFsIHZvaWQgZ2V0blVuaWZvcm11aXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFt
LCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgs
IEdDR0x1aW50KiBwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgdGV4UGFyYW1ldGVySWl2
Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1
ZlNpemUsIGNvbnN0IEdDR0xpbnQqIHBhcmFtcykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCB0ZXhQ
YXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwg
R0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0x1aW50KiBwYXJhbXMpID0gMDsKLSAgICB2aXJ0
dWFsIHZvaWQgZ2V0VGV4UGFyYW1ldGVySWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dM
aW50KiBwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0VGV4UGFyYW1ldGVySXVpdlJv
YnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZT
aXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHVpbnQqIHBhcmFtcykgPSAwOwotICAgIHZpcnR1
YWwgdm9pZCBzYW1wbGVyUGFyYW1ldGVySWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwg
R0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMaW50KiBwYXJhbSkg
PSAwOwotICAgIHZpcnR1YWwgdm9pZCBzYW1wbGVyUGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFKEdD
R0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3Qg
R0NHTHVpbnQqIHBhcmFtKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldFNhbXBsZXJQYXJhbWV0
ZXJJaXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNp
emVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpID0gMDsKLSAg
ICB2aXJ0dWFsIHZvaWQgZ2V0U2FtcGxlclBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRShHQ0dMdWlu
dCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSog
bGVuZ3RoLCBHQ0dMdWludCogcGFyYW1zKSA9IDA7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgZ2V0UXVl
cnlPYmplY3RpdlJvYnVzdEFOR0xFKEdDR0x1aW50IGlkLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNp
emVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpID0gMDsKLSAg
ICB2aXJ0dWFsIHZvaWQgZ2V0UXVlcnlPYmplY3RpNjR2Um9idXN0QU5HTEUoR0NHTHVpbnQgaWQs
IEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdD
R0xpbnQ2NCogcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldFF1ZXJ5T2JqZWN0dWk2
NHZSb2J1c3RBTkdMRShHQ0dMdWludCBpZCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZT
aXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHVpbnQ2NCogcGFyYW1zKSA9IDA7Ci0KICAgICAv
LyBPdGhlciBmdW5jdGlvbnMuCiAjaWYgIVVTRShBTkdMRSkKICAgICAvLyBFWFQgUm9idXN0bmVz
cyAtIHVzZXMgZ2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQgpAQCAtMzU0LDE2ICszMDIsNiBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGdldG5Vbmlmb3JtZnZFWFQoR0NHTHVpbnQgcHJvZ3Jh
bSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xmbG9hdCogcGFyYW1z
KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGdldG5Vbmlmb3JtaXZFWFQoR0NHTHVpbnQgcHJvZ3Jh
bSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xpbnQqIHBhcmFtcykg
PSAwOwogCi0gICAgdmlydHVhbCBib29sIGlzTlZJRElBKCkgPSAwOwotICAgIHZpcnR1YWwgYm9v
bCBpc0FNRCgpID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgaXNJbnRlbCgpID0gMDsKLSAgICB2aXJ0
dWFsIGJvb2wgaXNJbWFnaW5hdGlvbigpID0gMDsKLSAgICB2aXJ0dWFsIFN0cmluZyB2ZW5kb3Io
KSA9IDA7Ci0KLSAgICAvLyBTb21lIGNvbmZpZ3VyYXRpb25zIGhhdmUgYnVncyByZWdhcmRpbmcg
YnVpbHQtaW4gZnVuY3Rpb25zIGluIHRoZWlyIE9wZW5HTCBkcml2ZXJzCi0gICAgLy8gdGhhdCBt
dXN0IGJlIGF2b2lkZWQuIFBvcnRzIHNob3VsZCBpbXBsZW1lbnQgdGhlc2UgZmxhZ3Mgb24gc3Vj
aCBjb25maWd1cmF0aW9ucy4KLSAgICB2aXJ0dWFsIGJvb2wgcmVxdWlyZXNCdWlsdEluRnVuY3Rp
b25FbXVsYXRpb24oKSA9IDA7Ci0gICAgdmlydHVhbCBib29sIHJlcXVpcmVzUmVzdHJpY3RlZE1h
eGltdW1UZXh0dXJlU2l6ZSgpID0gMDsKICNlbmRpZgogCiB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUu
Y3BwCmluZGV4IGI3ZGI0ZmQyMDQxYjNiYmM4YmI5YTc3MzNlODliZWVhYWViNmY3ODkuLmNlNDZj
N2E3NWE1ZTJiNjJmMmFiOWZlMDJiOWJlYzFmNmE3MGZiOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRlbnNpb25zR0xBTkdM
RS5jcHAKQEAgLTQzLDEwICs0Myw5IEBAIHR5cGVkZWYgdm9pZCogR0xlZ2xDb250ZXh0OwogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLUV4dGVuc2lvbnNHTEFOR0xFOjpFeHRlbnNpb25zR0xBTkdM
RShHcmFwaGljc0NvbnRleHRHTE9wZW5HTCogY29udGV4dCwgYm9vbCB1c2VJbmRleGVkR2V0U3Ry
aW5nKQorRXh0ZW5zaW9uc0dMQU5HTEU6OkV4dGVuc2lvbnNHTEFOR0xFKEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMKiBjb250ZXh0KQogICAgIDogbV9pbml0aWFsaXplZEF2YWlsYWJsZUV4dGVuc2lv
bnMoZmFsc2UpCiAgICAgLCBtX2NvbnRleHQoY29udGV4dCkKLSAgICAsIG1fdXNlSW5kZXhlZEdl
dFN0cmluZyh1c2VJbmRleGVkR2V0U3RyaW5nKQogewogfQogCkBAIC0xMDksNDIgKzEwOCwxNSBA
QCBTdHJpbmcgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdM
RShQbGF0Zm9ybUdMT2JqZWN0IHNoYWRlcgogCiB2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjppbml0
aWFsaXplQXZhaWxhYmxlRXh0ZW5zaW9ucygpCiB7Ci0gICAgaWYgKG1fdXNlSW5kZXhlZEdldFN0
cmluZykgewotICAgICAgICBHTGludCBudW1FeHRlbnNpb25zID0gMDsKLSAgICAgICAgZ2w6Okdl
dEludGVnZXJ2KEdMX05VTV9FWFRFTlNJT05TLCAmbnVtRXh0ZW5zaW9ucyk7Ci0gICAgICAgIGZv
ciAoR0xpbnQgaSA9IDA7IGkgPCBudW1FeHRlbnNpb25zOyArK2kpCi0gICAgICAgICAgICBtX2F2
YWlsYWJsZUV4dGVuc2lvbnMuYWRkKGdsOjpHZXRTdHJpbmdpKEdMX0VYVEVOU0lPTlMsIGkpKTsK
LSAgICAgICAgZ2w6OkdldEludGVnZXJ2KEdMX05VTV9SRVFVRVNUQUJMRV9FWFRFTlNJT05TX0FO
R0xFLCAmbnVtRXh0ZW5zaW9ucyk7Ci0gICAgICAgIGZvciAoR0xpbnQgaSA9IDA7IGkgPCBudW1F
eHRlbnNpb25zOyArK2kpCi0gICAgICAgICAgICBtX3JlcXVlc3RhYmxlRXh0ZW5zaW9ucy5hZGQo
Z2w6OkdldFN0cmluZ2koR0xfUkVRVUVTVEFCTEVfRVhURU5TSU9OU19BTkdMRSwgaSkpOwotICAg
IH0gZWxzZSB7Ci0gICAgICAgIFN0cmluZyBleHRlbnNpb25zU3RyaW5nID0gZ2V0RXh0ZW5zaW9u
cygpOwotICAgICAgICBmb3IgKGF1dG8mIGV4dGVuc2lvbiA6IGV4dGVuc2lvbnNTdHJpbmcuc3Bs
aXQoJyAnKSkKLSAgICAgICAgICAgIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5hZGQoZXh0ZW5zaW9u
KTsKLSAgICAgICAgZXh0ZW5zaW9uc1N0cmluZyA9IFN0cmluZyhyZWludGVycHJldF9jYXN0PGNv
bnN0IGNoYXIqPihnbDo6R2V0U3RyaW5nKEdMX1JFUVVFU1RBQkxFX0VYVEVOU0lPTlNfQU5HTEUp
KSk7Ci0gICAgICAgIGZvciAoYXV0byYgZXh0ZW5zaW9uIDogZXh0ZW5zaW9uc1N0cmluZy5zcGxp
dCgnICcpKQotICAgICAgICAgICAgbV9yZXF1ZXN0YWJsZUV4dGVuc2lvbnMuYWRkKGV4dGVuc2lv
bik7Ci0gICAgfQorICAgIFN0cmluZyBleHRlbnNpb25zU3RyaW5nID0gZ2V0RXh0ZW5zaW9ucygp
OworICAgIGZvciAoYXV0byYgZXh0ZW5zaW9uIDogZXh0ZW5zaW9uc1N0cmluZy5zcGxpdCgnICcp
KQorICAgICAgICBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuYWRkKGV4dGVuc2lvbik7CisgICAgZXh0
ZW5zaW9uc1N0cmluZyA9IFN0cmluZyhyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihnbDo6
R2V0U3RyaW5nKEdMX1JFUVVFU1RBQkxFX0VYVEVOU0lPTlNfQU5HTEUpKSk7CisgICAgZm9yIChh
dXRvJiBleHRlbnNpb24gOiBleHRlbnNpb25zU3RyaW5nLnNwbGl0KCcgJykpCisgICAgICAgIG1f
cmVxdWVzdGFibGVFeHRlbnNpb25zLmFkZChleHRlbnNpb24pOwogICAgIG1faW5pdGlhbGl6ZWRB
dmFpbGFibGVFeHRlbnNpb25zID0gdHJ1ZTsKIH0KIAotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6
YmxpdEZyYW1lYnVmZmVyQU5HTEUoR0NHTGludCBzcmNYMCwgR0NHTGludCBzcmNZMCwgR0NHTGlu
dCBzcmNYMSwgR0NHTGludCBzcmNZMSwgR0NHTGludCBkc3RYMCwgR0NHTGludCBkc3RZMCwgR0NH
TGludCBkc3RYMSwgR0NHTGludCBkc3RZMSwgR0NHTGJpdGZpZWxkIG1hc2ssIEdDR0xlbnVtIGZp
bHRlcikKLXsKLSAgICAvLyBGSVhNRTogY29uc2lkZXIgYWRkaW5nIHN1cHBvcnQgZm9yIEFQUExF
X2ZyYW1lYnVmZmVyX211bHRpc2FtcGxlLgotICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4
dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OkJsaXRGcmFtZWJ1ZmZlckFO
R0xFKHNyY1gwLCBzcmNZMCwgc3JjWDEsIHNyY1kxLCBkc3RYMCwgZHN0WTAsIGRzdFgxLCBkc3RZ
MSwgbWFzaywgZmlsdGVyKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6cmVuZGVyYnVm
ZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWkgc2Ft
cGxlcywgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVp
IGhlaWdodCkKLXsKLSAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0g
ICAgICAgIHJldHVybjsKLQotICAgIGdsOjpSZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVB
TkdMRSh0YXJnZXQsIHNhbXBsZXMsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0KTsKLX0K
LQogUGxhdGZvcm1HTE9iamVjdCBFeHRlbnNpb25zR0xBTkdMRTo6Y3JlYXRlVmVydGV4QXJyYXlP
RVMoKQogewogICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKQEAgLTE4
NSwyNCArMTU3LDYgQEAgdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6YmluZFZlcnRleEFycmF5T0VT
KFBsYXRmb3JtR0xPYmplY3QgYXJyYXkpCiAgICAgZ2w6OkJpbmRWZXJ0ZXhBcnJheU9FUyhhcnJh
eSk7CiB9CiAKLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6Omluc2VydEV2ZW50TWFya2VyRVhUKGNv
bnN0IFN0cmluZyYpCi17Ci0gICAgLy8gRklYTUU6IGltcGxlbWVudCB0aGlzIGZ1bmN0aW9uIGFu
ZCBhZGQgR0xfRVhUX2RlYnVnX21hcmtlciBpbiBzdXBwb3J0cygpLgotICAgIHJldHVybjsKLX0K
LQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6cHVzaEdyb3VwTWFya2VyRVhUKGNvbnN0IFN0cmlu
ZyYpCi17Ci0gICAgLy8gRklYTUU6IGltcGxlbWVudCB0aGlzIGZ1bmN0aW9uIGFuZCBhZGQgR0xf
RVhUX2RlYnVnX21hcmtlciBpbiBzdXBwb3J0cygpLgotICAgIHJldHVybjsKLX0KLQotdm9pZCBF
eHRlbnNpb25zR0xBTkdMRTo6cG9wR3JvdXBNYXJrZXJFWFQodm9pZCkKLXsKLSAgICAvLyBGSVhN
RTogaW1wbGVtZW50IHRoaXMgZnVuY3Rpb24gYW5kIGFkZCBHTF9FWFRfZGVidWdfbWFya2VyIGlu
IHN1cHBvcnRzKCkuCi0gICAgcmV0dXJuOwotfQotCiBib29sIEV4dGVuc2lvbnNHTEFOR0xFOjpz
dXBwb3J0c0V4dGVuc2lvbihjb25zdCBTdHJpbmcmIG5hbWUpCiB7CiAgICAgcmV0dXJuIG1fYXZh
aWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucyhuYW1lKSB8fCBtX3JlcXVlc3RhYmxlRXh0ZW5zaW9u
cy5jb250YWlucyhuYW1lKTsKQEAgLTI1OCwyOTEgKzIxMiw2IEBAIEdDR0xlbnVtIEV4dGVuc2lv
bnNHTEFOR0xFOjphZGp1c3RXZWJHTDFUZXh0dXJlSW50ZXJuYWxGb3JtYXQoR0NHTGVudW0gaW50
ZXJuYWxmCiAgICAgcmV0dXJuIGludGVybmFsZm9ybWF0OwogfQogCi0vLyBHTF9BTkdMRV9yb2J1
c3RfY2xpZW50X21lbW9yeQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6cmVhZFBpeGVsc1JvYnVz
dEFOR0xFKGludCB4LCBpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBH
Q0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6
ZWkgKmxlbmd0aCwgR0NHTHNpemVpICpjb2x1bW5zLCBHQ0dMc2l6ZWkgKnJvd3MsIHZvaWQgKnBp
eGVscykKLXsKLSAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAg
ICAgIHJldHVybjsKLQotICAgIGdsOjpSZWFkUGl4ZWxzUm9idXN0QU5HTEUoeCwgeSwgd2lkdGgs
IGhlaWdodCwgZm9ybWF0LCB0eXBlLCBidWZTaXplLCBsZW5ndGgsIGNvbHVtbnMsIHJvd3MsIHBp
eGVscyk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OnRleFBhcmFtZXRlcmZ2Um9idXN0
QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUs
IGNvbnN0IEdDR0xmbG9hdCAqcGFyYW1zKQotewotICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29u
dGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OlRleFBhcmFtZXRlcmZ2
Um9idXN0QU5HTEUodGFyZ2V0LCBwbmFtZSwgYnVmU2l6ZSwgcGFyYW1zKTsKLX0KLQotdm9pZCBF
eHRlbnNpb25zR0xBTkdMRTo6dGV4UGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJn
ZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGludCAqcGFy
YW1zKQotewotICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAg
ICAgcmV0dXJuOwotCi0gICAgZ2w6OlRleFBhcmFtZXRlcml2Um9idXN0QU5HTEUodGFyZ2V0LCBw
bmFtZSwgYnVmU2l6ZSwgcGFyYW1zKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0
UXVlcnlpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xz
aXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKQotewotICAg
IGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwot
Ci0gICAgZ2w6OkdldFF1ZXJ5aXZSb2J1c3RBTkdMRSh0YXJnZXQsIHBuYW1lLCBidWZTaXplLCBs
ZW5ndGgsIHBhcmFtcyk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldFF1ZXJ5T2Jq
ZWN0dWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgaWQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkg
YnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0x1aW50ICpwYXJhbXMpCi17Ci0gICAgaWYg
KCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAg
ICBnbDo6R2V0UXVlcnlPYmplY3R1aXZSb2J1c3RBTkdMRShpZCwgcG5hbWUsIGJ1ZlNpemUsIGxl
bmd0aCwgcGFyYW1zKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0QnVmZmVyUG9p
bnRlcnZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6
ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIHZvaWQgKipwYXJhbXMpCi17Ci0gICAgaWYg
KCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAg
ICBnbDo6R2V0QnVmZmVyUG9pbnRlcnZSb2J1c3RBTkdMRSh0YXJnZXQsIHBuYW1lLCBidWZTaXpl
LCBsZW5ndGgsIHBhcmFtcyk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldFZlcnRl
eEF0dHJpYklpdlJvYnVzdEFOR0xFKEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NH
THNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpCi17Ci0g
ICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47
Ci0KLSAgICBnbDo6R2V0VmVydGV4QXR0cmliSWl2Um9idXN0QU5HTEUoaW5kZXgsIHBuYW1lLCBi
dWZTaXplLCBsZW5ndGgsIHBhcmFtcyk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6Omdl
dFZlcnRleEF0dHJpYkl1aXZSb2J1c3RBTkdMRShHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5h
bWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHVpbnQgKnBhcmFt
cykKLXsKLSAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAg
IHJldHVybjsKLQotICAgIGdsOjpHZXRWZXJ0ZXhBdHRyaWJJdWl2Um9idXN0QU5HTEUoaW5kZXgs
IHBuYW1lLCBidWZTaXplLCBsZW5ndGgsIHBhcmFtcyk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dM
QU5HTEU6OmdldFVuaWZvcm11aXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMaW50
IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0x1aW50
ICpwYXJhbXMpCi17Ci0gICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQot
ICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6R2V0VW5pZm9ybXVpdlJvYnVzdEFOR0xFKHByb2dy
YW0sIGxvY2F0aW9uLCBidWZTaXplLCBsZW5ndGgsIHBhcmFtcyk7Ci19Ci0KLXZvaWQgRXh0ZW5z
aW9uc0dMQU5HTEU6OmdldEJ1ZmZlclBhcmFtZXRlcmk2NHZSb2J1c3RBTkdMRShHQ0dMZW51bSB0
YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5n
dGgsIEdDR0xpbnQ2NCAqcGFyYW1zKQotewotICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4
dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OkdldEJ1ZmZlclBhcmFtZXRl
cmk2NHZSb2J1c3RBTkdMRSh0YXJnZXQsIHBuYW1lLCBidWZTaXplLCBsZW5ndGgsIHJlaW50ZXJw
cmV0X2Nhc3Q8R0xpbnQ2NCo+KHBhcmFtcykpOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xF
OjpzYW1wbGVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51
bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xpbnQgKnBhcmFtKQotewotICAg
IGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwot
Ci0gICAgZ2w6OlNhbXBsZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKHNhbXBsZXIsIHBuYW1lLCBi
dWZTaXplLCBwYXJhbSk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OnNhbXBsZXJQYXJh
bWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dM
c2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGZsb2F0ICpwYXJhbSkKLXsKLSAgICBpZiAoIW1fY29u
dGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpT
YW1wbGVyUGFyYW1ldGVyZnZSb2J1c3RBTkdMRShzYW1wbGVyLCBwbmFtZSwgYnVmU2l6ZSwgcGFy
YW0pOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRTYW1wbGVyUGFyYW1ldGVyaXZS
b2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1
ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpCi17Ci0gICAgaWYgKCFt
X2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBn
bDo6R2V0U2FtcGxlclBhcmFtZXRlcml2Um9idXN0QU5HTEUoc2FtcGxlciwgcG5hbWUsIGJ1ZlNp
emUsIGxlbmd0aCwgcGFyYW1zKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0U2Ft
cGxlclBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5h
bWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGZsb2F0ICpwYXJh
bXMpCi17Ci0gICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAg
ICByZXR1cm47Ci0KLSAgICBnbDo6R2V0U2FtcGxlclBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoc2Ft
cGxlciwgcG5hbWUsIGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1zKTsKLX0KLQotCi12b2lkIEV4dGVu
c2lvbnNHTEFOR0xFOjpnZXRGcmFtZWJ1ZmZlclBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVu
dW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAq
bGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpCi17Ci0gICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250
ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6R2V0RnJhbWVidWZmZXJQ
YXJhbWV0ZXJpdlJvYnVzdEFOR0xFKHRhcmdldCwgcG5hbWUsIGJ1ZlNpemUsIGxlbmd0aCwgcGFy
YW1zKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0UHJvZ3JhbUludGVyZmFjZWl2
Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGVudW0gcHJvZ3JhbUludGVyZmFjZSwg
R0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NH
TGludCAqcGFyYW1zKQotewotICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQo
KSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OkdldFByb2dyYW1JbnRlcmZhY2VpdlJvYnVz
dEFOR0xFKHByb2dyYW0sIHByb2dyYW1JbnRlcmZhY2UsIHBuYW1lLCBidWZTaXplLCBsZW5ndGgs
IHBhcmFtcyk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldEJvb2xlYW5pX3ZSb2J1
c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0x1aW50IGluZGV4LCBHQ0dMc2l6ZWkgYnVmU2l6
ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xib29sZWFuICpkYXRhKQotewotICAgIGlmICghbV9j
b250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6
OkdldEJvb2xlYW5pX3ZSb2J1c3RBTkdMRSh0YXJnZXQsIGluZGV4LCBidWZTaXplLCBsZW5ndGgs
IGRhdGEpOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRNdWx0aXNhbXBsZWZ2Um9i
dXN0QU5HTEUoR0NHTGVudW0gcG5hbWUsIEdDR0x1aW50IGluZGV4LCBHQ0dMc2l6ZWkgYnVmU2l6
ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xmbG9hdCAqdmFsKQotewotICAgIGlmICghbV9jb250
ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6Okdl
dE11bHRpc2FtcGxlZnZSb2J1c3RBTkdMRShwbmFtZSwgaW5kZXgsIGJ1ZlNpemUsIGxlbmd0aCwg
dmFsKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0VGV4TGV2ZWxQYXJhbWV0ZXJp
dlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gcG5h
bWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1z
KQotewotICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgZ2w6OkdldFRleExldmVsUGFyYW1ldGVyaXZSb2J1c3RBTkdMRSh0YXJn
ZXQsIGxldmVsLCBwbmFtZSwgYnVmU2l6ZSwgbGVuZ3RoLCBwYXJhbXMpOwotfQotCi12b2lkIEV4
dGVuc2lvbnNHTEFOR0xFOjpnZXRUZXhMZXZlbFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTGVu
dW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNp
emUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMZmxvYXQgKnBhcmFtcykKLXsKLSAgICBpZiAoIW1f
Y29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGds
OjpHZXRUZXhMZXZlbFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUodGFyZ2V0LCBsZXZlbCwgcG5hbWUs
IGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1zKTsKLX0KLQotCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xF
OjpnZXRQb2ludGVydlJvYnVzdEFOR0xFUm9idXN0QU5HTEUoR0NHTGVudW0gcG5hbWUsIEdDR0xz
aXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgdm9pZCAqKnBhcmFtcykKLXsKLSAgICBp
ZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQot
ICAgIGdsOjpHZXRQb2ludGVydlJvYnVzdEFOR0xFUm9idXN0QU5HTEUocG5hbWUsIGJ1ZlNpemUs
IGxlbmd0aCwgcGFyYW1zKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0blVuaWZv
cm1mdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xz
aXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGZsb2F0ICpwYXJhbXMpCi17Ci0g
ICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47
Ci0KLSAgICBnbDo6R2V0blVuaWZvcm1mdlJvYnVzdEFOR0xFKHByb2dyYW0sIGxvY2F0aW9uLCBi
dWZTaXplLCBsZW5ndGgsIHBhcmFtcyk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6Omdl
dG5Vbmlmb3JtaXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9u
LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykK
LXsKLSAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJl
dHVybjsKLQotICAgIGdsOjpHZXRuVW5pZm9ybWl2Um9idXN0QU5HTEUocHJvZ3JhbSwgbG9jYXRp
b24sIGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1zKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdM
RTo6Z2V0blVuaWZvcm11aXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMaW50IGxv
Y2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0x1aW50ICpw
YXJhbXMpCi17Ci0gICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAg
ICAgICByZXR1cm47Ci0KLSAgICBnbDo6R2V0blVuaWZvcm11aXZSb2J1c3RBTkdMRShwcm9ncmFt
LCBsb2NhdGlvbiwgYnVmU2l6ZSwgbGVuZ3RoLCBwYXJhbXMpOwotfQotCi12b2lkIEV4dGVuc2lv
bnNHTEFOR0xFOjp0ZXhQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdD
R0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGludCAqcGFyYW1zKQot
ewotICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0
dXJuOwotCi0gICAgZ2w6OlRleFBhcmFtZXRlcklpdlJvYnVzdEFOR0xFKHRhcmdldCwgcG5hbWUs
IGJ1ZlNpemUsIHBhcmFtcyk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OnRleFBhcmFt
ZXRlckl1aXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dM
c2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTHVpbnQgKnBhcmFtcykKLXsKLSAgICBpZiAoIW1fY29u
dGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpU
ZXhQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUodGFyZ2V0LCBwbmFtZSwgYnVmU2l6ZSwgcGFyYW1z
KTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0VGV4UGFyYW1ldGVySWl2Um9idXN0
QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUs
IEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpCi17Ci0gICAgaWYgKCFtX2NvbnRl
eHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6R2V0
VGV4UGFyYW1ldGVySWl2Um9idXN0QU5HTEUodGFyZ2V0LCBwbmFtZSwgYnVmU2l6ZSwgbGVuZ3Ro
LCBwYXJhbXMpOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRUZXhQYXJhbWV0ZXJJ
dWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVp
IGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMdWludCAqcGFyYW1zKQotewotICAgIGlm
ICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0g
ICAgZ2w6OkdldFRleFBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRSh0YXJnZXQsIHBuYW1lLCBidWZT
aXplLCBsZW5ndGgsIHBhcmFtcyk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OnNhbXBs
ZXJQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFt
ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xpbnQgKnBhcmFtKQotewotICAgIGlmICgh
bV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAg
Z2w6OlNhbXBsZXJQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRShzYW1wbGVyLCBwbmFtZSwgYnVmU2l6
ZSwgcGFyYW0pOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpzYW1wbGVyUGFyYW1ldGVy
SXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6
ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTHVpbnQgKnBhcmFtKQotewotICAgIGlmICghbV9jb250ZXh0
LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OlNhbXBs
ZXJQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUoc2FtcGxlciwgcG5hbWUsIGJ1ZlNpemUsIHBhcmFt
KTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0U2FtcGxlclBhcmFtZXRlcklpdlJv
YnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVm
U2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykKLXsKLSAgICBpZiAoIW1f
Y29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGds
OjpHZXRTYW1wbGVyUGFyYW1ldGVySWl2Um9idXN0QU5HTEUoc2FtcGxlciwgcG5hbWUsIGJ1ZlNp
emUsIGxlbmd0aCwgcGFyYW1zKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0U2Ft
cGxlclBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBw
bmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMdWludCAqcGFy
YW1zKQotewotICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAg
ICAgcmV0dXJuOwotCi0gICAgZ2w6OkdldFNhbXBsZXJQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUo
c2FtcGxlciwgcG5hbWUsIGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1zKTsKLX0KLQotCi12b2lkIEV4
dGVuc2lvbnNHTEFOR0xFOjpnZXRRdWVyeU9iamVjdGl2Um9idXN0QU5HTEUoR0NHTHVpbnQgaWQs
IEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdD
R0xpbnQgKnBhcmFtcykKLXsKLSAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50
KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpHZXRRdWVyeU9iamVjdGl2Um9idXN0QU5H
TEUoaWQsIHBuYW1lLCBidWZTaXplLCBsZW5ndGgsIHBhcmFtcyk7Ci19Ci0KLXZvaWQgRXh0ZW5z
aW9uc0dMQU5HTEU6OmdldFF1ZXJ5T2JqZWN0aTY0dlJvYnVzdEFOR0xFKEdDR0x1aW50IGlkLCBH
Q0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dM
aW50NjQgKnBhcmFtcykKLXsKLSAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50
KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpHZXRRdWVyeU9iamVjdGk2NHZSb2J1c3RB
TkdMRShpZCwgcG5hbWUsIGJ1ZlNpemUsIGxlbmd0aCwgcmVpbnRlcnByZXRfY2FzdDxHTGludDY0
Kj4ocGFyYW1zKSk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldFF1ZXJ5T2JqZWN0
dWk2NHZSb2J1c3RBTkdMRShHQ0dMdWludCBpZCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBi
dWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHVpbnQ2NCAqcGFyYW1zKQotewotICAgIGlm
ICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0g
ICAgZ2w6OkdldFF1ZXJ5T2JqZWN0dWk2NHZSb2J1c3RBTkdMRShpZCwgcG5hbWUsIGJ1ZlNpemUs
IGxlbmd0aCwgcmVpbnRlcnByZXRfY2FzdDxHTHVpbnQ2NCo+KHBhcmFtcykpOwotfQotCi0KIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShHUkFQSElDU19DT05URVhU
X0dMKSAmJiBVU0UoQU5HTEUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hbmdsZS9FeHRlbnNpb25zR0xBTkdMRS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUuaAppbmRleCBiMmQyNzdiOWFjOWQy
Nzg2MGY1NWFiYWJmOGNmZTU1ZTg0YjVmNTdlLi4wMDQyMzM3NzIwMzRiZmEzZWFjMTM3ZGMzNjM0
ODA5MTZkZWFhZjdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hbmdsZS9FeHRlbnNpb25zR0xBTkdMRS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmgKQEAgLTM2LDcgKzM2LDcgQEAgY2xh
c3MgRXh0ZW5zaW9uc0dMQU5HTEUgOiBwdWJsaWMgRXh0ZW5zaW9uc0dMIHsKICAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICAvLyBUaGlzIGNsYXNzIG9ubHkgbmVlZHMg
dG8gYmUgaW5zdGFudGlhdGVkIGJ5IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMIGltcGxlbWVudGF0
aW9ucy4KLSAgICBFeHRlbnNpb25zR0xBTkdMRShHcmFwaGljc0NvbnRleHRHTE9wZW5HTCosIGJv
b2wgdXNlSW5kZXhlZEdldFN0cmluZyA9IGZhbHNlKTsKKyAgICBleHBsaWNpdCBFeHRlbnNpb25z
R0xBTkdMRShHcmFwaGljc0NvbnRleHRHTE9wZW5HTCopOwogICAgIHZpcnR1YWwgfkV4dGVuc2lv
bnNHTEFOR0xFKCk7CiAKICAgICAvLyBFeHRlbnNpb25zR0wgbWV0aG9kcy4KQEAgLTQ5LDYwICs0
OSwxNCBAQCBwdWJsaWM6CiAgICAgdm9pZCBkZWxldGVWZXJ0ZXhBcnJheU9FUyhQbGF0Zm9ybUdM
T2JqZWN0KSBvdmVycmlkZTsKICAgICBHQ0dMYm9vbGVhbiBpc1ZlcnRleEFycmF5T0VTKFBsYXRm
b3JtR0xPYmplY3QpIG92ZXJyaWRlOwogICAgIHZvaWQgYmluZFZlcnRleEFycmF5T0VTKFBsYXRm
b3JtR0xPYmplY3QpIG92ZXJyaWRlOwotICAgIHZvaWQgaW5zZXJ0RXZlbnRNYXJrZXJFWFQoY29u
c3QgU3RyaW5nJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBwdXNoR3JvdXBNYXJrZXJFWFQoY29uc3Qg
U3RyaW5nJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBwb3BHcm91cE1hcmtlckVYVCh2b2lkKSBvdmVy
cmlkZTsKICAgICB2b2lkIGRyYXdCdWZmZXJzRVhUKEdDR0xTcGFuPGNvbnN0IEdDR0xlbnVtPikg
b3ZlcnJpZGU7CiAKICAgICBTdHJpbmcgZ2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFKFBs
YXRmb3JtR0xPYmplY3QpIG92ZXJyaWRlOwogCi0gICAgdm9pZCBibGl0RnJhbWVidWZmZXJBTkdM
RShHQ0dMaW50IHNyY1gwLCBHQ0dMaW50IHNyY1kwLCBHQ0dMaW50IHNyY1gxLCBHQ0dMaW50IHNy
Y1kxLCBHQ0dMaW50IGRzdFgwLCBHQ0dMaW50IGRzdFkwLCBHQ0dMaW50IGRzdFgxLCBHQ0dMaW50
IGRzdFkxLCBHQ0dMYml0ZmllbGQgbWFzaywgR0NHTGVudW0gZmlsdGVyKSBvdmVycmlkZTsKLSAg
ICB2b2lkIHJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKEdDR0xlbnVtIHRhcmdl
dCwgR0NHTHNpemVpIHNhbXBsZXMsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkg
d2lkdGgsIEdDR0xzaXplaSBoZWlnaHQpIG92ZXJyaWRlOwotCiAgICAgdm9pZCBkcmF3QXJyYXlz
SW5zdGFuY2VkQU5HTEUoR0NHTGVudW0gbW9kZSwgR0NHTGludCBmaXJzdCwgR0NHTHNpemVpIGNv
dW50LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KSBvdmVycmlkZTsKICAgICB2b2lkIGRyYXdFbGVtZW50
c0luc3RhbmNlZEFOR0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xzaXplaSBjb3VudCwgR0NHTGVudW0g
dHlwZSwgR0NHTHZvaWRwdHIgb2Zmc2V0LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KSBvdmVycmlkZTsK
ICAgICB2b2lkIHZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRShHQ0dMdWludCBpbmRleCwgR0NHTHVp
bnQgZGl2aXNvcikgb3ZlcnJpZGU7CiAKLSAgICAvLyBHTF9BTkdMRV9yb2J1c3RfY2xpZW50X21l
bW9yeQotICAgIHZvaWQgcmVhZFBpeGVsc1JvYnVzdEFOR0xFKEdDR0xpbnQgeCwgR0NHTGludCB5
LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NH
TGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMc2l6
ZWkgKmNvbHVtbnMsIEdDR0xzaXplaSAqcm93cywgdm9pZCAqcGl4ZWxzKSBvdmVycmlkZTsKLSAg
ICB2b2lkIHRleFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51
bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xmbG9hdCAqcGFyYW1zKSBvdmVy
cmlkZTsKLSAgICB2b2lkIHRleFBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xpbnQgKnBhcmFt
cykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRRdWVyeWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3Ro
LCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0UXVlcnlPYmplY3R1aXZS
b2J1c3RBTkdMRShHQ0dMdWludCBpZCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXpl
LCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHVpbnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9p
ZCBnZXRCdWZmZXJQb2ludGVydlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0g
cG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgdm9pZCAqKnBhcmFt
cykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJJaXZSb2J1c3RBTkdMRShHQ0dM
dWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkg
Kmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldFZlcnRleEF0
dHJpYkl1aXZSb2J1c3RBTkdMRShHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xz
aXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHVpbnQgKnBhcmFtcykgb3ZlcnJp
ZGU7Ci0gICAgdm9pZCBnZXRVbmlmb3JtdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwg
R0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBH
Q0dMdWludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldEJ1ZmZlclBhcmFtZXRlcmk2
NHZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkg
YnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQ2NCAqcGFyYW1zKSBvdmVycmlkZTsK
LSAgICB2b2lkIHNhbXBsZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIs
IEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGludCAqcGFyYW0p
IG92ZXJyaWRlOwotICAgIHZvaWQgc2FtcGxlclBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTHVp
bnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dM
ZmxvYXQgKnBhcmFtKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldFNhbXBsZXJQYXJhbWV0ZXJpdlJv
YnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVm
U2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAg
dm9pZCBnZXRTYW1wbGVyUGFyYW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBH
Q0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dM
ZmxvYXQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0KLSAgICB2b2lkIGdldEZyYW1lYnVmZmVyUGFyYW1l
dGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6
ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykgb3ZlcnJpZGU7
Ci0gICAgdm9pZCBnZXRQcm9ncmFtSW50ZXJmYWNlaXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9n
cmFtLCBHQ0dMZW51bSBwcm9ncmFtSW50ZXJmYWNlLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVp
IGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJyaWRlOwot
ICAgIHZvaWQgZ2V0Qm9vbGVhbmlfdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTHVp
bnQgaW5kZXgsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGJvb2xl
YW4gKmRhdGEpIG92ZXJyaWRlOyAvLyBOT0xJTlQKLSAgICB2b2lkIGdldE11bHRpc2FtcGxlZnZS
b2J1c3RBTkdMRShHQ0dMZW51bSBwbmFtZSwgR0NHTHVpbnQgaW5kZXgsIEdDR0xzaXplaSBidWZT
aXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGZsb2F0ICp2YWwpIG92ZXJyaWRlOwotICAgIHZv
aWQgZ2V0VGV4TGV2ZWxQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NH
TGludCBsZXZlbCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkg
Kmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldFRleExldmVs
UGFyYW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdD
R0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xm
bG9hdCAqcGFyYW1zKSBvdmVycmlkZTsKLQotICAgIHZvaWQgZ2V0UG9pbnRlcnZSb2J1c3RBTkdM
RVJvYnVzdEFOR0xFKEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVp
ICpsZW5ndGgsIHZvaWQgKipwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0blVuaWZvcm1m
dlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXpl
aSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGZsb2F0ICpwYXJhbXMpIG92ZXJyaWRl
OwotICAgIHZvaWQgZ2V0blVuaWZvcm1pdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdD
R0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NH
TGludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldG5Vbmlmb3JtdWl2Um9idXN0QU5H
TEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUs
IEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMdWludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lk
IHRleFBhcmFtZXRlcklpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5h
bWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJyaWRlOwot
ICAgIHZvaWQgdGV4UGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NH
TGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMdWludCAqcGFyYW1zKSBv
dmVycmlkZTsKLSAgICB2b2lkIGdldFRleFBhcmFtZXRlcklpdlJvYnVzdEFOR0xFKEdDR0xlbnVt
IHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxl
bmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldFRleFBhcmFtZXRl
ckl1aXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6
ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0x1aW50ICpwYXJhbXMpIG92ZXJyaWRl
OwotICAgIHZvaWQgc2FtcGxlclBhcmFtZXRlcklpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBs
ZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGludCAqcGFy
YW0pIG92ZXJyaWRlOwotICAgIHZvaWQgc2FtcGxlclBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRShH
Q0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0
IEdDR0x1aW50ICpwYXJhbSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRTYW1wbGVyUGFyYW1ldGVy
SWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXpl
aSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVycmlkZTsK
LSAgICB2b2lkIGdldFNhbXBsZXJQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2Ft
cGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0
aCwgR0NHTHVpbnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0KLSAgICB2b2lkIGdldFF1ZXJ5T2JqZWN0
aXZSb2J1c3RBTkdMRShHQ0dMdWludCBpZCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZT
aXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2
b2lkIGdldFF1ZXJ5T2JqZWN0aTY0dlJvYnVzdEFOR0xFKEdDR0x1aW50IGlkLCBHQ0dMZW51bSBw
bmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50NjQgKnBh
cmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRRdWVyeU9iamVjdHVpNjR2Um9idXN0QU5HTEUo
R0NHTHVpbnQgaWQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVp
ICpsZW5ndGgsIEdDR0x1aW50NjQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0KICAgICAvLyBPbmx5IGZv
ciBub24tV2ViR0wgMi4wIGNvbnRleHRzLgogICAgIEdDR0xlbnVtIGFkanVzdFdlYkdMMVRleHR1
cmVJbnRlcm5hbEZvcm1hdChHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTGVudW0gZm9ybWF0
LCBHQ0dMZW51bSB0eXBlKTsKIApAQCAtMTE5LDggKzczLDYgQEAgcHJpdmF0ZToKICAgICAvLyBX
ZWFrIHBvaW50ZXIgYmFjayB0byBHcmFwaGljc0NvbnRleHRHTE9wZW5HTC4KICAgICBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTCogbV9jb250ZXh0OwogCi0gICAgYm9vbCBtX3VzZUluZGV4ZWRHZXRT
dHJpbmcgeyBmYWxzZSB9OwotCiAgICAgLy8gV2hldGhlciB0aGUgV2ViR0wgMS4wLXJlbGF0ZWQg
ZmxvYXRpbmctcG9pbnQgcmVuZGVyYWJpbGl0eSBleHRlbnNpb25zIGhhdmUgYmVlbiBlbmFibGVk
LgogICAgIGJvb2wgbV93ZWJnbENvbG9yQnVmZmVyRmxvYXRSR0IgeyBmYWxzZSB9OwogICAgIGJv
b2wgbV93ZWJnbENvbG9yQnVmZmVyRmxvYXRSR0JBIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNH
TE9wZW5HTC5jcHAKaW5kZXggYWRkNWYzNTJhZTRkZTZiNmQ1ZGMxOTFlNjczYjVhYWZhNTZkZTk1
Zi4uYzMwNjQ2NzQ4OGIwN2FjYWJiZDE3ZWNhYzhiNmExNTgyNjI0MjNkMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5H
TC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVu
c2lvbnNHTE9wZW5HTC5jcHAKQEAgLTQ4LDIyICs0OCw2IEBAIEV4dGVuc2lvbnNHTE9wZW5HTDo6
RXh0ZW5zaW9uc0dMT3BlbkdMKEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiBjb250ZXh0LCBib29s
IHVzCiBFeHRlbnNpb25zR0xPcGVuR0w6On5FeHRlbnNpb25zR0xPcGVuR0woKSA9IGRlZmF1bHQ7
CiAKIAotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0w6OmJsaXRGcmFtZWJ1ZmZlckFOR0xFKEdDR0xp
bnQgc3JjWDAsIEdDR0xpbnQgc3JjWTAsIEdDR0xpbnQgc3JjWDEsIEdDR0xpbnQgc3JjWTEsIEdD
R0xpbnQgZHN0WDAsIEdDR0xpbnQgZHN0WTAsIEdDR0xpbnQgZHN0WDEsIEdDR0xpbnQgZHN0WTEs
IEdDR0xiaXRmaWVsZCBtYXNrLCBHQ0dMZW51bSBmaWx0ZXIpCi17Ci0gICAgaWYgKCFtX2NvbnRl
eHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICA6OmdsQmxp
dEZyYW1lYnVmZmVyRVhUKHNyY1gwLCBzcmNZMCwgc3JjWDEsIHNyY1kxLCBkc3RYMCwgZHN0WTAs
IGRzdFgxLCBkc3RZMSwgbWFzaywgZmlsdGVyKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xPcGVu
R0w6OnJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKEdDR0xlbnVtIHRhcmdldCwg
R0NHTHNpemVpIHNhbXBsZXMsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lk
dGgsIEdDR0xzaXplaSBoZWlnaHQpCi17Ci0gICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0
Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICA6OmdsUmVuZGVyYnVmZmVyU3RvcmFn
ZU11bHRpc2FtcGxlRVhUKHRhcmdldCwgc2FtcGxlcywgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBo
ZWlnaHQpOwotfQotCiBQbGF0Zm9ybUdMT2JqZWN0IEV4dGVuc2lvbnNHTE9wZW5HTDo6Y3JlYXRl
VmVydGV4QXJyYXlPRVMoKQogewogICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJl
bnQoKSkKQEAgLTEyNywyNCArMTExLDYgQEAgdm9pZCBFeHRlbnNpb25zR0xPcGVuR0w6OmJpbmRW
ZXJ0ZXhBcnJheU9FUyhQbGF0Zm9ybUdMT2JqZWN0IGFycmF5KQogI2VuZGlmCiB9CiAKLXZvaWQg
RXh0ZW5zaW9uc0dMT3BlbkdMOjppbnNlcnRFdmVudE1hcmtlckVYVChjb25zdCBTdHJpbmcmKQot
ewotICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQgdGhpcyBmdW5jdGlvbiBhbmQgYWRkIEdMX0VYVF9k
ZWJ1Z19tYXJrZXIgaW4gc3VwcG9ydHMoKS4KLSAgICByZXR1cm47Ci19Ci0KLXZvaWQgRXh0ZW5z
aW9uc0dMT3BlbkdMOjpwdXNoR3JvdXBNYXJrZXJFWFQoY29uc3QgU3RyaW5nJikKLXsKLSAgICAv
LyBGSVhNRTogaW1wbGVtZW50IHRoaXMgZnVuY3Rpb24gYW5kIGFkZCBHTF9FWFRfZGVidWdfbWFy
a2VyIGluIHN1cHBvcnRzKCkuCi0gICAgcmV0dXJuOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9w
ZW5HTDo6cG9wR3JvdXBNYXJrZXJFWFQodm9pZCkKLXsKLSAgICAvLyBGSVhNRTogaW1wbGVtZW50
IHRoaXMgZnVuY3Rpb24gYW5kIGFkZCBHTF9FWFRfZGVidWdfbWFya2VyIGluIHN1cHBvcnRzKCku
Ci0gICAgcmV0dXJuOwotfQotCiBib29sIEV4dGVuc2lvbnNHTE9wZW5HTDo6c3VwcG9ydHNFeHRl
bnNpb24oY29uc3QgU3RyaW5nJiBuYW1lKQogewogICAgIC8vIEdMX0FOR0xFX2ZyYW1lYnVmZmVy
X2JsaXQgYW5kIEdMX0FOR0xFX2ZyYW1lYnVmZmVyX211bHRpc2FtcGxlIGFyZSAiZmFrZSIuIFRo
ZXkgYXJlIGltcGxlbWVudGVkIHVzaW5nIG90aGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMLmgKaW5k
ZXggNDc1MDIyNmVjZWNlZjQ0Mzk2ZTk5Mzg2NzZjYjYzOWJlODM0MzdiNi4uMGFkYmQ3MDUwYjdl
M2Y3N2UwMTg4OTQzMzJmZmM4N2NmMzBkOTBjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuaApA
QCAtNDAsMTYgKzQwLDEwIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5FeHRlbnNpb25zR0xPcGVu
R0woKTsKIAogICAgIC8vIEV4dGVuc2lvbnNHTCBtZXRob2RzLgotICAgIHZvaWQgYmxpdEZyYW1l
YnVmZmVyQU5HTEUoR0NHTGludCBzcmNYMCwgR0NHTGludCBzcmNZMCwgR0NHTGludCBzcmNYMSwg
R0NHTGludCBzcmNZMSwgR0NHTGludCBkc3RYMCwgR0NHTGludCBkc3RZMCwgR0NHTGludCBkc3RY
MSwgR0NHTGludCBkc3RZMSwgR0NHTGJpdGZpZWxkIG1hc2ssIEdDR0xlbnVtIGZpbHRlcikgb3Zl
cnJpZGU7Ci0gICAgdm9pZCByZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVBTkdMRShHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xzaXplaSBzYW1wbGVzLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwg
R0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KSBvdmVycmlkZTsKLQogICAgIFBsYXRm
b3JtR0xPYmplY3QgY3JlYXRlVmVydGV4QXJyYXlPRVMoKSBvdmVycmlkZTsKICAgICB2b2lkIGRl
bGV0ZVZlcnRleEFycmF5T0VTKFBsYXRmb3JtR0xPYmplY3QpIG92ZXJyaWRlOwogICAgIEdDR0xi
b29sZWFuIGlzVmVydGV4QXJyYXlPRVMoUGxhdGZvcm1HTE9iamVjdCkgb3ZlcnJpZGU7CiAgICAg
dm9pZCBiaW5kVmVydGV4QXJyYXlPRVMoUGxhdGZvcm1HTE9iamVjdCkgb3ZlcnJpZGU7Ci0gICAg
dm9pZCBpbnNlcnRFdmVudE1hcmtlckVYVChjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKLSAgICB2
b2lkIHB1c2hHcm91cE1hcmtlckVYVChjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKLSAgICB2b2lk
IHBvcEdyb3VwTWFya2VyRVhUKHZvaWQpIG92ZXJyaWRlOwogICAgIHZvaWQgZHJhd0J1ZmZlcnNF
WFQoR0NHTFNwYW48Y29uc3QgR0NHTGVudW0+KSBvdmVycmlkZTsKIAogICAgIHZvaWQgZHJhd0Fy
cmF5c0luc3RhbmNlZEFOR0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xpbnQgZmlyc3QsIEdDR0xzaXpl
aSBjb3VudCwgR0NHTHNpemVpIHByaW1jb3VudCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29t
bW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNp
b25zR0xPcGVuR0xDb21tb24uY3BwCmluZGV4IDY5M2ZiOTNhNjdmYmM4NDA3MDgwNDgyYzhlZWJl
MTY4MTcxMjczYjAuLjMzMmM4MjQyNDk3MjRiYjk2MzZlYWFiZWEwM2MyYzM3NThlMDE2ZmYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNp
b25zR0xPcGVuR0xDb21tb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uY3BwCkBAIC0yNTQsMTg1ICsyNTQs
NiBAQCB2b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0blVuaWZvcm1pdkVYVChHQ0dM
dWludCwgaW50LCBHQ0dMc2l6ZWksIEdDR0xpbgogICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdM
RXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwogfQogCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5H
TENvbW1vbjo6cmVhZFBpeGVsc1JvYnVzdEFOR0xFKGludCwgaW50LCBHQ0dMc2l6ZWksIEdDR0xz
aXplaSwgR0NHTGVudW0sIEdDR0xlbnVtLCBHQ0dMc2l6ZWksIEdDR0xzaXplaSAqLCBHQ0dMc2l6
ZWkgKiwgR0NHTHNpemVpICosIHZvaWQgKikKLXsKLSAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVH
TEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xPcGVu
R0xDb21tb246OnRleFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTGVudW0sIEdDR0xlbnVtLCBH
Q0dMc2l6ZWksIGNvbnN0IEdDR0xmbG9hdCAqKQotewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6
ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9w
ZW5HTENvbW1vbjo6dGV4UGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51bSwgR0NHTGVudW0s
IEdDR0xzaXplaSwgY29uc3QgR0NHTGludCAqKQotewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6
ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9w
ZW5HTENvbW1vbjo6Z2V0UXVlcnlpdlJvYnVzdEFOR0xFKEdDR0xlbnVtLCBHQ0dMZW51bSwgR0NH
THNpemVpLCBHQ0dMc2l6ZWkgKiwgR0NHTGludCAqKQotewotICAgIG1fY29udGV4dC0+c3ludGhl
c2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi12b2lkIEV4dGVuc2lvbnNH
TE9wZW5HTENvbW1vbjo6Z2V0UXVlcnlPYmplY3R1aXZSb2J1c3RBTkdMRShHQ0dMdWludCwgR0NH
TGVudW0sIEdDR0xzaXplaSwgR0NHTHNpemVpICosIEdDR0x1aW50ICopCi17Ci0gICAgbV9jb250
ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Ci19Ci0KLXZvaWQg
RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRCdWZmZXJQb2ludGVydlJvYnVzdEFOR0xFKEdD
R0xlbnVtLCBHQ0dMZW51bSwgR0NHTHNpemVpLCBHQ0dMc2l6ZWkgKiwgdm9pZCAqKikKLXsKLSAg
ICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLX0K
LQotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFZlcnRleEF0dHJpYklpdlJvYnVz
dEFOR0xFKEdDR0x1aW50LCBHQ0dMZW51bSwgR0NHTHNpemVpLCBHQ0dMc2l6ZWkgKiwgR0NHTGlu
dCAqKQotewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVS
QVRJT04pOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0VmVydGV4QXR0
cmliSXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50LCBHQ0dMZW51bSwgR0NHTHNpemVpLCBHQ0dMc2l6
ZWkgKiwgR0NHTHVpbnQgKikKLXsKLSAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdM
X0lOVkFMSURfT1BFUkFUSU9OKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246
OmdldFVuaWZvcm11aXZSb2J1c3RBTkdMRShHQ0dMdWludCwgaW50LCBHQ0dMc2l6ZWksIEdDR0xz
aXplaSAqLCBHQ0dMdWludCAqKQotewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3Io
R0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1v
bjo6Z2V0QnVmZmVyUGFyYW1ldGVyaTY0dlJvYnVzdEFOR0xFKEdDR0xlbnVtLCBHQ0dMZW51bSwg
R0NHTHNpemVpLCBHQ0dMc2l6ZWkgKiwgR0NHTGludDY0ICopCi17Ci0gICAgbV9jb250ZXh0LT5z
eW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Ci19Ci0KLXZvaWQgRXh0ZW5z
aW9uc0dMT3BlbkdMQ29tbW9uOjpzYW1wbGVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMdWlu
dCwgR0NHTGVudW0sIEdDR0xzaXplaSwgY29uc3QgR0NHTGludCAqKQotewotICAgIG1fY29udGV4
dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi12b2lkIEV4
dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6c2FtcGxlclBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NH
THVpbnQsIEdDR0xlbnVtLCBHQ0dMc2l6ZWksIGNvbnN0IEdDR0xmbG9hdCAqKQotewotICAgIG1f
Y29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi12
b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0U2FtcGxlclBhcmFtZXRlcml2Um9idXN0
QU5HTEUoR0NHTHVpbnQsIEdDR0xlbnVtLCBHQ0dMc2l6ZWksIEdDR0xzaXplaSAqLCBHQ0dMaW50
ICopCi17Ci0gICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJB
VElPTik7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRTYW1wbGVyUGFy
YW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dMdWludCwgR0NHTGVudW0sIEdDR0xzaXplaSwgR0NHTHNp
emVpICosIEdDR0xmbG9hdCAqKQotewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3Io
R0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi0KLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29t
bW9uOjpnZXRGcmFtZWJ1ZmZlclBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0sIEdDR0xl
bnVtLCBHQ0dMc2l6ZWksIEdDR0xzaXplaSAqLCBHQ0dMaW50ICopCi17Ci0gICAgbV9jb250ZXh0
LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Ci19Ci0KLXZvaWQgRXh0
ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRQcm9ncmFtSW50ZXJmYWNlaXZSb2J1c3RBTkdMRShH
Q0dMdWludCwgR0NHTGVudW0sIEdDR0xlbnVtLCBHQ0dMc2l6ZWksIEdDR0xzaXplaSAqLCBHQ0dM
aW50ICopCi17Ci0gICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09Q
RVJBVElPTik7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRCb29sZWFu
aV92Um9idXN0QU5HTEUoR0NHTGVudW0sIEdDR0x1aW50LCBHQ0dMc2l6ZWksIEdDR0xzaXplaSAq
LCBHQ0dMYm9vbGVhbiAqKQotewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xf
SU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6
Z2V0TXVsdGlzYW1wbGVmdlJvYnVzdEFOR0xFKEdDR0xlbnVtLCBHQ0dMdWludCwgR0NHTHNpemVp
LCBHQ0dMc2l6ZWkgKiwgR0NHTGZsb2F0ICopCi17Ci0gICAgbV9jb250ZXh0LT5zeW50aGVzaXpl
R0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMT3Bl
bkdMQ29tbW9uOjpnZXRUZXhMZXZlbFBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0sIGlu
dCwgR0NHTGVudW0sIEdDR0xzaXplaSwgR0NHTHNpemVpICosIEdDR0xpbnQgKikKLXsKLSAgICBt
X2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLX0KLQot
dm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFRleExldmVsUGFyYW1ldGVyZnZSb2J1
c3RBTkdMRShHQ0dMZW51bSwgaW50LCBHQ0dMZW51bSwgR0NHTHNpemVpLCBHQ0dMc2l6ZWkgKiwg
R0NHTGZsb2F0ICopCi17Ci0gICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZB
TElEX09QRVJBVElPTik7Ci19Ci0KLQotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246Omdl
dFBvaW50ZXJ2Um9idXN0QU5HTEVSb2J1c3RBTkdMRShHQ0dMZW51bSwgR0NHTHNpemVpLCBHQ0dM
c2l6ZWkgKiwgdm9pZCAqKikKLXsKLSAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdM
X0lOVkFMSURfT1BFUkFUSU9OKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246
OmdldG5Vbmlmb3JtZnZSb2J1c3RBTkdMRShHQ0dMdWludCwgaW50LCBHQ0dMc2l6ZWksIEdDR0xz
aXplaSAqLCBHQ0dMZmxvYXQgKikKLXsKLSAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9y
KEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21t
b246OmdldG5Vbmlmb3JtaXZSb2J1c3RBTkdMRShHQ0dMdWludCwgaW50LCBHQ0dMc2l6ZWksIEdD
R0xzaXplaSAqLCBHQ0dMaW50ICopCi17Ci0gICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJv
cihHTF9JTlZBTElEX09QRVJBVElPTik7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29t
bW9uOjpnZXRuVW5pZm9ybXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50LCBpbnQsIEdDR0xzaXplaSwg
R0NHTHNpemVpICosIEdDR0x1aW50ICopCi17Ci0gICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xF
cnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdM
Q29tbW9uOjp0ZXhQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRShHQ0dMZW51bSwgR0NHTGVudW0sIEdD
R0xzaXplaSwgY29uc3QgR0NHTGludCAqKQotewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdM
RXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5H
TENvbW1vbjo6dGV4UGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFKEdDR0xlbnVtLCBHQ0dMZW51bSwg
R0NHTHNpemVpLCBjb25zdCBHQ0dMdWludCAqKQotewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6
ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9w
ZW5HTENvbW1vbjo6Z2V0VGV4UGFyYW1ldGVySWl2Um9idXN0QU5HTEUoR0NHTGVudW0sIEdDR0xl
bnVtLCBHQ0dMc2l6ZWksIEdDR0xzaXplaSAqLCBHQ0dMaW50ICopCi17Ci0gICAgbV9jb250ZXh0
LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Ci19Ci0KLXZvaWQgRXh0
ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRUZXhQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUoR0NH
TGVudW0sIEdDR0xlbnVtLCBHQ0dMc2l6ZWksIEdDR0xzaXplaSAqLCBHQ0dMdWludCAqKQotewot
ICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwot
fQotCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6c2FtcGxlclBhcmFtZXRlcklpdlJv
YnVzdEFOR0xFKEdDR0x1aW50LCBHQ0dMZW51bSwgR0NHTHNpemVpLCBjb25zdCBHQ0dMaW50ICop
Ci17Ci0gICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElP
Tik7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpzYW1wbGVyUGFyYW1ldGVy
SXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50LCBHQ0dMZW51bSwgR0NHTHNpemVpLCBjb25zdCBHQ0dM
dWludCAqKQotewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9P
UEVSQVRJT04pOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0U2FtcGxl
clBhcmFtZXRlcklpdlJvYnVzdEFOR0xFKEdDR0x1aW50LCBHQ0dMZW51bSwgR0NHTHNpemVpLCBH
Q0dMc2l6ZWkgKiwgR0NHTGludCAqKQotewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJy
b3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENv
bW1vbjo6Z2V0U2FtcGxlclBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRShHQ0dMdWludCwgR0NHTGVu
dW0sIEdDR0xzaXplaSwgR0NHTHNpemVpICosIEdDR0x1aW50ICopCi17Ci0gICAgbV9jb250ZXh0
LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Ci19Ci0KLQotdm9pZCBF
eHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFF1ZXJ5T2JqZWN0aXZSb2J1c3RBTkdMRShHQ0dM
dWludCwgR0NHTGVudW0sIEdDR0xzaXplaSwgR0NHTHNpemVpICosIEdDR0xpbnQgKikKLXsKLSAg
ICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLX0K
LQotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFF1ZXJ5T2JqZWN0aTY0dlJvYnVz
dEFOR0xFKEdDR0x1aW50LCBHQ0dMZW51bSwgR0NHTHNpemVpLCBHQ0dMc2l6ZWkgKiwgR0NHTGlu
dDY0ICopCi17Ci0gICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09Q
RVJBVElPTik7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRRdWVyeU9i
amVjdHVpNjR2Um9idXN0QU5HTEUoR0NHTHVpbnQsIEdDR0xlbnVtLCBHQ0dMc2l6ZWksIEdDR0xz
aXplaSAqLCBHQ0dMdWludDY0ICopCi17Ci0gICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJv
cihHTF9JTlZBTElEX09QRVJBVElPTik7Ci19Ci0KLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQog
CiAjZW5kaWYgLy8gRU5BQkxFKEdSQVBISUNTX0NPTlRFWFRfR0wpICYmIChVU0UoT1BFTkdMKSB8
fCBVU0UoT1BFTkdMX0VTKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uaAppbmRl
eCAzZjEwNDAxNjJmZmEwN2EyZGMxMzBhYmIyMmZiMWIxZmZjM2ZkZjIwLi4xMDE4YTE3ZWI4OGY3
ZDE5YTI4NGU2ZDUzMzRlN2E4MmI4ZjZhYzNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5H
TENvbW1vbi5oCkBAIC01NSw1OCArNTUsMTggQEAgcHVibGljOgogICAgIFN0cmluZyBnZXRUcmFu
c2xhdGVkU2hhZGVyU291cmNlQU5HTEUoUGxhdGZvcm1HTE9iamVjdCkgb3ZlcnJpZGU7CiAKICAg
ICAvLyBFWFQgUm9idXN0bmVzcyAtIHVzZXMgZ2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQigpCi0g
ICAgdm9pZCByZWFkblBpeGVsc0VYVChpbnQgeCwgaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NH
THNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkg
YnVmU2l6ZSwgdm9pZCAqZGF0YSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRuVW5pZm9ybWZ2RVhU
KEdDR0x1aW50IHByb2dyYW0sIGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIGZsb2F0
ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0blVuaWZvcm1pdkVYVChHQ0dMdWludCBw
cm9ncmFtLCBpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBpbnQgKnBhcmFtcykgb3Zl
cnJpZGU7Ci0KLSAgICBib29sIGlzTlZJRElBKCkgb3ZlcnJpZGUgeyByZXR1cm4gbV9pc05WSURJ
QTsgfQotICAgIGJvb2wgaXNBTUQoKSBvdmVycmlkZSB7IHJldHVybiBtX2lzQU1EOyB9Ci0gICAg
Ym9vbCBpc0ludGVsKCkgb3ZlcnJpZGUgeyByZXR1cm4gbV9pc0ludGVsOyB9Ci0gICAgYm9vbCBp
c0ltYWdpbmF0aW9uKCkgb3ZlcnJpZGUgeyByZXR1cm4gbV9pc0ltYWdpbmF0aW9uOyB9Ci0gICAg
U3RyaW5nIHZlbmRvcigpIG92ZXJyaWRlIHsgcmV0dXJuIG1fdmVuZG9yOyB9Ci0KLSAgICBib29s
IHJlcXVpcmVzQnVpbHRJbkZ1bmN0aW9uRW11bGF0aW9uKCkgb3ZlcnJpZGUgeyByZXR1cm4gbV9y
ZXF1aXJlc0J1aWx0SW5GdW5jdGlvbkVtdWxhdGlvbjsgfQotICAgIGJvb2wgcmVxdWlyZXNSZXN0
cmljdGVkTWF4aW11bVRleHR1cmVTaXplKCkgb3ZlcnJpZGUgeyByZXR1cm4gbV9yZXF1aXJlc1Jl
c3RyaWN0ZWRNYXhpbXVtVGV4dHVyZVNpemU7IH0KLQotICAgIC8vIEdMX0FOR0xFX3JvYnVzdF9j
bGllbnRfbWVtb3J5Ci0gICAgdm9pZCByZWFkUGl4ZWxzUm9idXN0QU5HTEUoaW50IHgsIGludCB5
LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NH
TGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMc2l6
ZWkgKmNvbHVtbnMsIEdDR0xzaXplaSAqcm93cywgdm9pZCAqcGl4ZWxzKSBvdmVycmlkZTsKLSAg
ICB2b2lkIHRleFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51
bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xmbG9hdCAqcGFyYW1zKSBvdmVy
cmlkZTsKLSAgICB2b2lkIHRleFBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xpbnQgKnBhcmFt
cykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRRdWVyeWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3Ro
LCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0UXVlcnlPYmplY3R1aXZS
b2J1c3RBTkdMRShHQ0dMdWludCBpZCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXpl
LCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHVpbnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9p
ZCBnZXRCdWZmZXJQb2ludGVydlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0g
cG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgdm9pZCAqKnBhcmFt
cykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJJaXZSb2J1c3RBTkdMRShHQ0dM
dWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkg
Kmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldFZlcnRleEF0
dHJpYkl1aXZSb2J1c3RBTkdMRShHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xz
aXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHVpbnQgKnBhcmFtcykgb3ZlcnJp
ZGU7Ci0gICAgdm9pZCBnZXRVbmlmb3JtdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwg
aW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0x1
aW50ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0QnVmZmVyUGFyYW1ldGVyaTY0dlJv
YnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZT
aXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludDY0ICpwYXJhbXMpIG92ZXJyaWRlOwotICAg
IHZvaWQgc2FtcGxlclBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NH
TGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMaW50ICpwYXJhbSkgb3Zl
cnJpZGU7Ci0gICAgdm9pZCBzYW1wbGVyUGFyYW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dMdWludCBz
YW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xmbG9h
dCAqcGFyYW0pIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0U2FtcGxlclBhcmFtZXRlcml2Um9idXN0
QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXpl
LCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lk
IGdldFNhbXBsZXJQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xl
bnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xmbG9h
dCAqcGFyYW1zKSBvdmVycmlkZTsKLQotICAgIHZvaWQgZ2V0RnJhbWVidWZmZXJQYXJhbWV0ZXJp
dlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBi
dWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAg
ICB2b2lkIGdldFByb2dyYW1JbnRlcmZhY2VpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0s
IEdDR0xlbnVtIHByb2dyYW1JbnRlcmZhY2UsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVm
U2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAg
dm9pZCBnZXRCb29sZWFuaV92Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMdWludCBp
bmRleCwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMYm9vbGVhbiAq
ZGF0YSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRNdWx0aXNhbXBsZWZ2Um9idXN0QU5HTEUoR0NH
TGVudW0gcG5hbWUsIEdDR0x1aW50IGluZGV4LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVp
ICpsZW5ndGgsIEdDR0xmbG9hdCAqdmFsKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldFRleExldmVs
UGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIGludCBsZXZlbCwgR0NHTGVu
dW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAq
cGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldFRleExldmVsUGFyYW1ldGVyZnZSb2J1c3RB
TkdMRShHQ0dMZW51bSB0YXJnZXQsIGludCBsZXZlbCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXpl
aSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGZsb2F0ICpwYXJhbXMpIG92ZXJyaWRl
OwotCi0gICAgdm9pZCBnZXRQb2ludGVydlJvYnVzdEFOR0xFUm9idXN0QU5HTEUoR0NHTGVudW0g
cG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgdm9pZCAqKnBhcmFt
cykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRuVW5pZm9ybWZ2Um9idXN0QU5HTEUoR0NHTHVpbnQg
cHJvZ3JhbSwgaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5n
dGgsIEdDR0xmbG9hdCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldG5Vbmlmb3JtaXZS
b2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZT
aXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2
b2lkIGdldG5Vbmlmb3JtdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgaW50IGxvY2F0
aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0x1aW50ICpwYXJh
bXMpIG92ZXJyaWRlOwotICAgIHZvaWQgdGV4UGFyYW1ldGVySWl2Um9idXN0QU5HTEUoR0NHTGVu
dW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xp
bnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCB0ZXhQYXJhbWV0ZXJJdWl2Um9idXN0QU5H
TEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNv
bnN0IEdDR0x1aW50ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0VGV4UGFyYW1ldGVy
SWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVp
IGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJyaWRlOwot
ICAgIHZvaWQgZ2V0VGV4UGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwg
R0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NH
THVpbnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzYW1wbGVyUGFyYW1ldGVySWl2Um9i
dXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZT
aXplLCBjb25zdCBHQ0dMaW50ICpwYXJhbSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzYW1wbGVyUGFy
YW1ldGVySXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBH
Q0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTHVpbnQgKnBhcmFtKSBvdmVycmlkZTsKLSAgICB2
b2lkIGdldFNhbXBsZXJQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBH
Q0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dM
aW50ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0U2FtcGxlclBhcmFtZXRlckl1aXZS
b2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1
ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMdWludCAqcGFyYW1zKSBvdmVycmlkZTsKLQot
ICAgIHZvaWQgZ2V0UXVlcnlPYmplY3RpdlJvYnVzdEFOR0xFKEdDR0x1aW50IGlkLCBHQ0dMZW51
bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpw
YXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0UXVlcnlPYmplY3RpNjR2Um9idXN0QU5HTEUo
R0NHTHVpbnQgaWQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVp
ICpsZW5ndGgsIEdDR0xpbnQ2NCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldFF1ZXJ5
T2JqZWN0dWk2NHZSb2J1c3RBTkdMRShHQ0dMdWludCBpZCwgR0NHTGVudW0gcG5hbWUsIEdDR0xz
aXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHVpbnQ2NCAqcGFyYW1zKSBvdmVy
cmlkZTsKKyAgICB2b2lkIHJlYWRuUGl4ZWxzRVhUKGludCB4LCBpbnQgeSwgR0NHTHNpemVpIHdp
ZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdD
R0xzaXplaSBidWZTaXplLCB2b2lkICpkYXRhKTsKKyAgICB2b2lkIGdldG5Vbmlmb3JtZnZFWFQo
R0NHTHVpbnQgcHJvZ3JhbSwgaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgZmxvYXQg
KnBhcmFtcyk7CisgICAgdm9pZCBnZXRuVW5pZm9ybWl2RVhUKEdDR0x1aW50IHByb2dyYW0sIGlu
dCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIGludCAqcGFyYW1zKTsKKworICAgIGJvb2wg
aXNOVklESUEoKSBjb25zdCB7IHJldHVybiBtX2lzTlZJRElBOyB9CisgICAgYm9vbCBpc0FNRCgp
IGNvbnN0IHsgcmV0dXJuIG1faXNBTUQ7IH0KKyAgICBib29sIGlzSW50ZWwoKSBjb25zdCB7IHJl
dHVybiBtX2lzSW50ZWw7IH0KKyAgICBib29sIGlzSW1hZ2luYXRpb24oKSBjb25zdCB7IHJldHVy
biBtX2lzSW1hZ2luYXRpb247IH0KKyAgICBTdHJpbmcgdmVuZG9yKCkgY29uc3QgeyByZXR1cm4g
bV92ZW5kb3I7IH0KKworICAgIGJvb2wgcmVxdWlyZXNCdWlsdEluRnVuY3Rpb25FbXVsYXRpb24o
KSBjb25zdCB7IHJldHVybiBtX3JlcXVpcmVzQnVpbHRJbkZ1bmN0aW9uRW11bGF0aW9uOyB9Cisg
ICAgYm9vbCByZXF1aXJlc1Jlc3RyaWN0ZWRNYXhpbXVtVGV4dHVyZVNpemUoKSBjb25zdCB7IHJl
dHVybiBtX3JlcXVpcmVzUmVzdHJpY3RlZE1heGltdW1UZXh0dXJlU2l6ZTsgfQogCiBwcm90ZWN0
ZWQ6CiAgICAgZnJpZW5kIGNsYXNzIEV4dGVuc2lvbnNHTE9wZW5HTEVTOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5H
TEVTLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNp
b25zR0xPcGVuR0xFUy5jcHAKaW5kZXggZTFlNDNiZjUzOTI4ODVhMjRmYmIzM2NiMjZiNWY2ZTQ5
MWZiZTA3My4uMDdkMDk3YzJjNTVjMzEyMGM0ZGVmZmE5YmI2YWUyNjRiNGJlNDhkNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNH
TE9wZW5HTEVTLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVu
Z2wvRXh0ZW5zaW9uc0dMT3BlbkdMRVMuY3BwCkBAIC0xMDAsMTEgKzEwMCw2IEBAIHZvaWQgRXh0
ZW5zaW9uc0dMT3BlbkdMRVM6OnJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUlNRyh1bnNp
Z25lZCBsb25nIHRhcmdlCiAgICAgICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xf
SU5WQUxJRF9PUEVSQVRJT04pOwogfQogCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTEVTOjpibGl0
RnJhbWVidWZmZXJBTkdMRShHQ0dMaW50LCBHQ0dMaW50LCBHQ0dMaW50LCBHQ0dMaW50LCBHQ0dM
aW50LCBHQ0dMaW50LCBHQ0dMaW50LCBHQ0dMaW50LCBHQ0dMYml0ZmllbGQsIEdDR0xlbnVtKQot
ewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KIHZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMRVM6
OnJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NH
THNpemVpIHNhbXBsZXMsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgs
IEdDR0xzaXplaSBoZWlnaHQpCiB7CiAgICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3Vy
cmVudCgpKQpAQCAtMTE1LDIxICsxMTAsNiBAQCB2b2lkIEV4dGVuc2lvbnNHTE9wZW5HTEVTOjpy
ZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVBTkdMRShHQ0dMZW51bSB0YXJnZXQsCiAgICAg
ICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMRVM6Omlu
c2VydEV2ZW50TWFya2VyRVhUKGNvbnN0IFN0cmluZyYpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQo
KTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xFUzo6cHVzaEdyb3VwTWFya2VyRVhUKGNv
bnN0IFN0cmluZyYpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBFeHRlbnNp
b25zR0xPcGVuR0xFUzo6cG9wR3JvdXBNYXJrZXJFWFQodm9pZCkKLXsKLSAgICBub3RJbXBsZW1l
bnRlZCgpOwotfQotCiBQbGF0Zm9ybUdMT2JqZWN0IEV4dGVuc2lvbnNHTE9wZW5HTEVTOjpjcmVh
dGVWZXJ0ZXhBcnJheU9FUygpCiB7CiAgICAgaWYgKG1fZ2xHZW5WZXJ0ZXhBcnJheXNPRVMpIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRl
bnNpb25zR0xPcGVuR0xFUy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Bl
bmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVTLmgKaW5kZXggNWM3NjAzN2ZhN2JjNmU4ZWVlM2U2NzNm
OTlhN2RmYzJmNzhmYjRkMi4uNjkzZDAzYzczZjBlYzgzMTBiM2NkMmViOGEzZGQzYjMyNjk0NmZh
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4
dGVuc2lvbnNHTE9wZW5HTEVTLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVTLmgKQEAgLTc1LDExICs3NSw3IEBAIHB1Ymxp
YzoKIAogICAgIC8vIEV4dGVuc2lvbjNEIG1ldGhvZHMKICAgICBib29sIGlzRW5hYmxlZChjb25z
dCBTdHJpbmcmKSBvdmVycmlkZTsKLSAgICB2b2lkIGJsaXRGcmFtZWJ1ZmZlckFOR0xFKEdDR0xp
bnQgc3JjWDAsIEdDR0xpbnQgc3JjWTAsIEdDR0xpbnQgc3JjWDEsIEdDR0xpbnQgc3JjWTEsIEdD
R0xpbnQgZHN0WDAsIEdDR0xpbnQgZHN0WTAsIEdDR0xpbnQgZHN0WDEsIEdDR0xpbnQgZHN0WTEs
IEdDR0xiaXRmaWVsZCBtYXNrLCBHQ0dMZW51bSBmaWx0ZXIpIG92ZXJyaWRlOwotICAgIHZvaWQg
cmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dM
c2l6ZWkgc2FtcGxlcywgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwg
R0NHTHNpemVpIGhlaWdodCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBpbnNlcnRFdmVudE1hcmtlckVY
VChjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKLSAgICB2b2lkIHB1c2hHcm91cE1hcmtlckVYVChj
b25zdCBTdHJpbmcmKSBvdmVycmlkZTsKLSAgICB2b2lkIHBvcEdyb3VwTWFya2VyRVhUKHZvaWQp
IG92ZXJyaWRlOworICAgIHZvaWQgcmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5HTEUo
R0NHTGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWkgc2FtcGxlcywgR0NHTGVudW0gaW50ZXJuYWxmb3Jt
YXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCk7CiAKICAgICBQbGF0Zm9ybUdM
T2JqZWN0IGNyZWF0ZVZlcnRleEFycmF5T0VTKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkZWxldGVW
ZXJ0ZXhBcnJheU9FUyhQbGF0Zm9ybUdMT2JqZWN0KSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9w
ZW5HTC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNz
Q29udGV4dEdMT3BlbkdMLmgKaW5kZXggOWNlMDViZDU3ODQwOGQ5YjE4ZTg4OGE3MTAwZjdiMmIx
NTI5YjllNy4uZDkwNzczMDQ0Mzc4NWU0MTZiMjBjOWNlMGI2M2ZkZDA4MDQ3ZGJmOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Bl
bmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgKQEAgLTY3LDcgKzY3LDcgQEAgY2xhc3MgR0NH
TExheWVyOwogI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLWNsYXNzIEV4dGVuc2lvbnNH
TDsKK2NsYXNzIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjsKICNpZiBVU0UoQU5HTEUpCiBjbGFz
cyBFeHRlbnNpb25zR0xBTkdMRTsKICNlbGlmIFVTRShPUEVOR0xfRVMpCkBAIC00ODEsNyArNDgx
LDcgQEAgcHVibGljOgogICAgIC8vIGFsbCBtZXRob2RzIGl0IGNvbnRhaW5zIG1heSBuZWNlc3Nh
cmlseSBiZSBzdXBwb3J0ZWQgb24gdGhlCiAgICAgLy8gY3VycmVudCBoYXJkd2FyZS4gTXVzdCBj
YWxsIEV4dGVuc2lvbnNHTDo6c3VwcG9ydHMoKSB0bwogICAgIC8vIGRldGVybWluZSB0aGlzLgot
ICAgIEV4dGVuc2lvbnNHTCYgZ2V0RXh0ZW5zaW9ucygpIGZpbmFsOworICAgIEV4dGVuc2lvbnNH
TE9wZW5HTENvbW1vbiYgZ2V0RXh0ZW5zaW9ucygpIGZpbmFsOwogCiAgICAgdm9pZCBzZXRGYWls
TmV4dEdQVVN0YXR1c0NoZWNrKCkgZmluYWwgeyBtX2ZhaWxOZXh0U3RhdHVzQ2hlY2sgPSB0cnVl
OyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5n
bC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQmFzZS5jcHAKaW5kZXgg
MTNiY2E3NGVjODY3MzRmZGZkNmJiNzgwOTkwNDZiYThhODE4NWRhYi4uNTM2Y2UzYTRmMjYzMDQy
ZTY2M2EzY2FkM2YyOGIyZjFlMmRhZTE1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQmFzZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4
dEdMT3BlbkdMQmFzZS5jcHAKQEAgLTExNiw3ICsxMTYsNyBAQCBib29sIEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjpyZXNoYXBlRkJPcyhjb25zdCBJbnRTaXplJiBzaXplKQogICAgICAgICAvLyBX
ZSBkb24ndCBhbGxvdyB0aGUgbG9naWMgd2hlcmUgc3RlbmNpbCBpcyByZXF1aXJlZCBhbmQgZGVw
dGggaXMgbm90LgogICAgICAgICAvLyBTZWUgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnZhbGlk
YXRlQXR0cmlidXRlcy4KIAotICAgICAgICBFeHRlbnNpb25zR0wmIGV4dGVuc2lvbnMgPSBnZXRF
eHRlbnNpb25zKCk7CisgICAgICAgIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbiYgZXh0ZW5zaW9u
cyA9IGdldEV4dGVuc2lvbnMoKTsKICAgICAgICAgLy8gVXNlIGEgMjQgYml0IGRlcHRoIGJ1ZmZl
ciB3aGVyZSB3ZSBrbm93IHdlIGhhdmUgaXQuCiAgICAgICAgIGlmIChleHRlbnNpb25zLnN1cHBv
cnRzKCJHTF9FWFRfcGFja2VkX2RlcHRoX3N0ZW5jaWwiKSkKICAgICAgICAgICAgIGludGVybmFs
RGVwdGhTdGVuY2lsRm9ybWF0ID0gR0xfREVQVEgyNF9TVEVOQ0lMOF9FWFQ7CkBAIC00MTcsNyAr
NDE3LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y2xlYXJEZXB0aChHQ0dMY2xh
bXBmIGRlcHRoKQogfQogCiAjaWYgIVBMQVRGT1JNKEdUSykKLUV4dGVuc2lvbnNHTCYgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OmdldEV4dGVuc2lvbnMoKQorRXh0ZW5zaW9uc0dMT3BlbkdMQ29t
bW9uJiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0RXh0ZW5zaW9ucygpCiB7CiAgICAgaWYg
KCFtX2V4dGVuc2lvbnMpCiAgICAgICAgIG1fZXh0ZW5zaW9ucyA9IG1ha2VVbmlxdWU8RXh0ZW5z
aW9uc0dMT3BlbkdMPih0aGlzLCBpc0dMRVMyQ29tcGxpYW50KCkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMQ29tbW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9H
cmFwaGljc0NvbnRleHRHTE9wZW5HTENvbW1vbi5jcHAKaW5kZXggZTc4YmY0NzQzYjljZTM5NDM3
ZmFjMTZkYjZiZTAwOTg1YjBhNTgxNS4uZWI1NWI1MTMxMTA0MjE5Y2UyZTdmNTQ2OTc1MzQxYjNl
ZTdmMmVlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Bl
bmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29tbW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb21tb24u
Y3BwCkBAIC0xMTgsNyArMTE4LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmFs
aWRhdGVEZXB0aFN0ZW5jaWwoY29uc3QgY2hhciogcGFja2VkRGVwdGhTdGVuY2kKIHsKICAgICBh
dXRvIGF0dHJzID0gY29udGV4dEF0dHJpYnV0ZXMoKTsKIAotICAgIEV4dGVuc2lvbnNHTCYgZXh0
ZW5zaW9ucyA9IGdldEV4dGVuc2lvbnMoKTsKKyAgICBFeHRlbnNpb25zR0xPcGVuR0xDb21tb24m
IGV4dGVuc2lvbnMgPSBnZXRFeHRlbnNpb25zKCk7CiAgICAgaWYgKGF0dHJzLnN0ZW5jaWwpIHsK
ICAgICAgICAgaWYgKGV4dGVuc2lvbnMuc3VwcG9ydHMocGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5z
aW9uKSkgewogICAgICAgICAgICAgZXh0ZW5zaW9ucy5lbnN1cmVFbmFibGVkKHBhY2tlZERlcHRo
U3RlbmNpbEV4dGVuc2lvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xFUy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xFUy5j
cHAKaW5kZXggYjgyZDE2NDE3YzJmNTE5MWQwNDQyNDg3NDZlNzgzOGE4NjdhZTUwMi4uMGU3OGQw
ODM4Y2NiMTZhMWEwM2QzOGI1NzM3MDhlMTk1ZmVhMGM1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMRVMu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGlj
c0NvbnRleHRHTE9wZW5HTEVTLmNwcApAQCAtMjU0LDcgKzI1NCw3IEBAIHZvaWQgR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OmNsZWFyRGVwdGgoR0NHTGNsYW1wZiBkZXB0aCkKIH0KIAogI2lmICFQ
TEFURk9STShHVEspCi1FeHRlbnNpb25zR0wmIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRF
eHRlbnNpb25zKCkKK0V4dGVuc2lvbnNHTE9wZW5HTENvbW1vbiYgR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OmdldEV4dGVuc2lvbnMoKQogewogICAgIGlmICghbV9leHRlbnNpb25zKQogICAgICAg
ICBtX2V4dGVuc2lvbnMgPSBtYWtlVW5pcXVlPEV4dGVuc2lvbnNHTE9wZW5HTEVTPih0aGlzLCBp
c0dMRVMyQ29tcGxpYW50KCkpOwo=
</data>
<flag name="commit-queue"
          id="432701"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>415466</attachid>
            <date>2020-12-04 15:37:01 -0800</date>
            <delta_ts>2020-12-04 16:58:18 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-218896-20201204153659.patch</filename>
            <type>text/plain</type>
            <size>63802</size>
            <attacher name="Rini Patel">rini_patel</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwNDQzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2FlMjg5MzBiNzRmYmZk
NzMwMWQ2OGY5YjFiMGJjZjc4YTg2YzlmNy4uNzQ5OTYzMDhjMDQyOTg4YzhlYzhkMzg2ZGExNzNl
YzE0MDdlNzViMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyOSBAQAorMjAyMC0xMi0wNCAgUmlu
aSBQYXRlbCAgPHJpbmlfcGF0ZWxAYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZSB1bnVzZWQg
ZnVuY3Rpb25zIGZyb20gR3JhcGhpY3NDb250ZXh0R0wgYW5kIEV4dGVuc2lvbnNHTAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE4ODk2CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVtb3ZlIHVudXNlZCBm
dW5jdGlvbnMgZnJvbSBHcmFwaGljc0NvbnRleHRHTCBhbmQgRXh0ZW5zaW9uc0dMCisgICAgICAg
IFRoZXkncmUgZGVhZCBjb2RlIGFuZCBtYWtlIGl0IGhhcmRlciB0byBpbXBsZW1lbnQgdGhlIEdQ
VSBQcm9jZXNzIHZlcnNpb24uCisKKyAgICAgICAgLSBJZiB0aGUgZnVuY3Rpb24gaXMgdW51c2Vk
LCByZW1vdmUgaXQgZnVsbHkKKyAgICAgICAgLSBJZiB0aGUgZnVuY3Rpb24gaXMgdW51c2VkIGlu
IFVTRShBTkdMRSkgV2ViR0wgcGFydCwgcmVtb3ZlIHRoZSBmdW5jdGlvbiBmcm9tIEdyYXBoaWNz
Q29udGV4dEdMIGFuZCBBTkdMRSBHcmFwaGljc0NvbnRleHRHTE9wZW5HTAorCisgICAgICAgICog
aHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL0V4dGVuc2lvbnNHTC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lv
bnNHTEFOR0xFOjpFeHRlbnNpb25zR0xBTkdMRSk6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNp
b25zR0xBTkdMRTo6aW5pdGlhbGl6ZUF2YWlsYWJsZUV4dGVuc2lvbnMpOgorICAgICAgICAoV2Vi
Q29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmJsaXRGcmFtZWJ1ZmZlckFOR0xFKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpyZW5kZXJidWZmZXJTdG9yYWdl
TXVsdGlzYW1wbGVBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25z
R0xBTkdMRTo6aW5zZXJ0RXZlbnRNYXJrZXJFWFQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OnB1c2hHcm91cE1hcmtlckVYVCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6cG9wR3JvdXBNYXJrZXJFWFQpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OnJlYWRQaXhlbHNSb2J1
c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6
dGV4UGFyYW1ldGVyZnZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpF
eHRlbnNpb25zR0xBTkdMRTo6dGV4UGFyYW1ldGVyaXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6Z2V0UXVlcnlpdlJvYnVzdEFOR0xF
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpnZXRRdWVy
eU9iamVjdHVpdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVu
c2lvbnNHTEFOR0xFOjpnZXRCdWZmZXJQb2ludGVydlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpnZXRWZXJ0ZXhBdHRyaWJJaXZSb2J1
c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6
Z2V0VmVydGV4QXR0cmliSXVpdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpnZXRVbmlmb3JtdWl2Um9idXN0QU5HTEUpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldEJ1ZmZlclBhcmFtZXRl
cmk2NHZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25z
R0xBTkdMRTo6c2FtcGxlclBhcmFtZXRlcml2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OnNhbXBsZXJQYXJhbWV0ZXJmdlJvYnVzdEFO
R0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpnZXRT
YW1wbGVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpFeHRlbnNpb25zR0xBTkdMRTo6Z2V0U2FtcGxlclBhcmFtZXRlcmZ2Um9idXN0QU5HTEUpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldEZyYW1lYnVm
ZmVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpF
eHRlbnNpb25zR0xBTkdMRTo6Z2V0UHJvZ3JhbUludGVyZmFjZWl2Um9idXN0QU5HTEUpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldEJvb2xlYW5pX3ZS
b2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdM
RTo6Z2V0TXVsdGlzYW1wbGVmdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpnZXRUZXhMZXZlbFBhcmFtZXRlcml2Um9idXN0QU5HTEUp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldFRleExl
dmVsUGFyYW1ldGVyZnZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpF
eHRlbnNpb25zR0xBTkdMRTo6Z2V0UG9pbnRlcnZSb2J1c3RBTkdMRVJvYnVzdEFOR0xFKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpnZXRuVW5pZm9ybWZ2
Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5H
TEU6OmdldG5Vbmlmb3JtaXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpFeHRlbnNpb25zR0xBTkdMRTo6Z2V0blVuaWZvcm11aXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6dGV4UGFyYW1ldGVySWl2Um9i
dXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6
OnRleFBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpFeHRlbnNpb25zR0xBTkdMRTo6Z2V0VGV4UGFyYW1ldGVySWl2Um9idXN0QU5HTEUpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldFRleFBhcmFtZXRl
ckl1aXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25z
R0xBTkdMRTo6c2FtcGxlclBhcmFtZXRlcklpdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpzYW1wbGVyUGFyYW1ldGVySXVpdlJvYnVz
dEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpn
ZXRTYW1wbGVyUGFyYW1ldGVySWl2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldFNhbXBsZXJQYXJhbWV0ZXJJdWl2Um9idXN0QU5H
TEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldFF1
ZXJ5T2JqZWN0aXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRl
bnNpb25zR0xBTkdMRTo6Z2V0UXVlcnlPYmplY3RpNjR2Um9idXN0QU5HTEUpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldFF1ZXJ5T2JqZWN0dWk2NHZS
b2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUv
RXh0ZW5zaW9uc0dMQU5HTEUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wv
RXh0ZW5zaW9uc0dMT3BlbkdMLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9w
ZW5HTDo6YmxpdEZyYW1lYnVmZmVyQU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
RXh0ZW5zaW9uc0dMT3BlbkdMOjpyZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVBTkdMRSk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0w6Omluc2VydEV2
ZW50TWFya2VyRVhUKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9w
ZW5HTDo6cHVzaEdyb3VwTWFya2VyRVhUKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4
dGVuc2lvbnNHTE9wZW5HTDo6cG9wR3JvdXBNYXJrZXJFWFQpOiBEZWxldGVkLgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6cmVhZFBpeGVsc1Jv
YnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5H
TENvbW1vbjo6dGV4UGFyYW1ldGVyZnZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OnRleFBhcmFtZXRlcml2Um9idXN0QU5H
TEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9u
OjpnZXRRdWVyeWl2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0
ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRRdWVyeU9iamVjdHVpdlJvYnVzdEFOR0xFKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0QnVm
ZmVyUG9pbnRlcnZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRl
bnNpb25zR0xPcGVuR0xDb21tb246OmdldFZlcnRleEF0dHJpYklpdlJvYnVzdEFOR0xFKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0VmVy
dGV4QXR0cmliSXVpdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4
dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0VW5pZm9ybXVpdlJvYnVzdEFOR0xFKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0QnVmZmVy
UGFyYW1ldGVyaTY0dlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4
dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6c2FtcGxlclBhcmFtZXRlcml2Um9idXN0QU5HTEUpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpzYW1w
bGVyUGFyYW1ldGVyZnZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpF
eHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFNhbXBsZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xF
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6
Z2V0U2FtcGxlclBhcmFtZXRlcmZ2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRGcmFtZWJ1ZmZlclBhcmFtZXRlcml2
Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3Bl
bkdMQ29tbW9uOjpnZXRQcm9ncmFtSW50ZXJmYWNlaXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldEJvb2xlYW5pX3ZS
b2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVu
R0xDb21tb246OmdldE11bHRpc2FtcGxlZnZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFRleExldmVsUGFyYW1ldGVy
aXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xP
cGVuR0xDb21tb246OmdldFRleExldmVsUGFyYW1ldGVyZnZSb2J1c3RBTkdMRSk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFBvaW50ZXJ2
Um9idXN0QU5HTEVSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRl
bnNpb25zR0xPcGVuR0xDb21tb246OmdldG5Vbmlmb3JtZnZSb2J1c3RBTkdMRSk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldG5Vbmlmb3Jt
aXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xP
cGVuR0xDb21tb246OmdldG5Vbmlmb3JtdWl2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjp0ZXhQYXJhbWV0ZXJJaXZSb2J1
c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xD
b21tb246OnRleFBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFRleFBhcmFtZXRlcklpdlJvYnVz
dEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTENv
bW1vbjo6Z2V0VGV4UGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6c2FtcGxlclBhcmFtZXRlcklpdlJv
YnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5H
TENvbW1vbjo6c2FtcGxlclBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFNhbXBsZXJQYXJhbWV0
ZXJJaXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25z
R0xPcGVuR0xDb21tb246OmdldFNhbXBsZXJQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRRdWVy
eU9iamVjdGl2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5z
aW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRRdWVyeU9iamVjdGk2NHZSb2J1c3RBTkdMRSk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFF1ZXJ5
T2JqZWN0dWk2NHZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5oOgorICAgICAgICAoV2ViQ29y
ZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjppc05WSURJQSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmlzQU1EIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6aXNJbnRlbCBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmlzSW1hZ2luYXRpb24gY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjp2ZW5kb3Ig
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpyZXF1
aXJlc0J1aWx0SW5GdW5jdGlvbkVtdWxhdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpF
eHRlbnNpb25zR0xPcGVuR0xDb21tb246OnJlcXVpcmVzUmVzdHJpY3RlZE1heGltdW1UZXh0dXJl
U2l6ZSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lv
bnNHTE9wZW5HTEVTLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTEVT
OjpibGl0RnJhbWVidWZmZXJBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRl
bnNpb25zR0xPcGVuR0xFUzo6aW5zZXJ0RXZlbnRNYXJrZXJFWFQpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMRVM6OnB1c2hHcm91cE1hcmtlckVYVCk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xFUzo6cG9wR3JvdXBN
YXJrZXJFWFQpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9F
eHRlbnNpb25zR0xPcGVuR0xFUy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5n
bC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEJhc2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlc2hhcGVGQk9zKToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRFeHRlbnNpb25zKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb21tb24uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnZhbGlkYXRlRGVw
dGhTdGVuY2lsKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0xFUy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6Z2V0RXh0ZW5zaW9ucyk6CisKIDIwMjAtMTItMDQgIFBlbmcgTGl1ICA8cGVuZy5s
aXU2QGFwcGxlLmNvbT4KIAogICAgICAgICBbTVNFXSBNb3ZlIHRyYWNrIGJ1ZmZlciBtYW5hZ2Vt
ZW50IGZyb20gU291cmNlQnVmZmVyIHRvIFNvdXJjZUJ1ZmZlclByaXZhdGUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5j
cHAKaW5kZXggNzJjMjY0NDY2NmNmMDNhMmY1OWYxZTA5ZmU5MzI5M2NiODBiNmJhZS4uYjkzNGMx
ZTg5YzI1MWFjMGIwMDgzNzFmZjMxZmRiNGY5OTcxMjAwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKQEAg
LTc0MiwxMCArNzQyLDYgQEAgc3RkOjp1bmlxdWVfcHRyPFdlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2U+IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmNyZWF0ZShDYW4KICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAgICAgfQogCi0gICAgYXV0byYgZXh0ZW5zaW9ucyA9IGNvbnRleHQtPmdldEV4
dGVuc2lvbnMoKTsKLSAgICBpZiAoZXh0ZW5zaW9ucy5zdXBwb3J0cygiR0xfRVhUX2RlYnVnX21h
cmtlciJfcykpCi0gICAgICAgIGV4dGVuc2lvbnMucHVzaEdyb3VwTWFya2VyRVhUKCJXZWJHTFJl
bmRlcmluZ0NvbnRleHQiX3MpOwotCiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2U+IHJlbmRlcmluZ0NvbnRleHQ7CiAjaWYgRU5BQkxFKFdFQkdMMikKICAgICBp
ZiAodHlwZSA9PSAid2ViZ2wyIikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0V4dGVuc2lvbnNHTC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvRXh0ZW5zaW9uc0dMLmgKaW5kZXggYzRlNzc3OGRiNmE0NDhmZDBhNWU2NTE1OTFmZWVhMTQ1
Mzg2MzgyMy4uNjJkNTgzMDAwYTE1YzY3ZDJmOGE1MDhiNGZjNmI3ZTg4NGM0YjRkNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRXh0ZW5zaW9uc0dMLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRXh0ZW5zaW9uc0dMLmgKQEAgLTI3
OCwxMiArMjc4LDYgQEAgcHVibGljOgogICAgIC8vIGV4dGVybmFsbHkuCiAgICAgdmlydHVhbCBH
Q0dMaW50IGdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIoKSA9IDA7CiAKLSAgICAvLyBHTF9BTkdM
RV9mcmFtZWJ1ZmZlcl9ibGl0Ci0gICAgdmlydHVhbCB2b2lkIGJsaXRGcmFtZWJ1ZmZlckFOR0xF
KEdDR0xpbnQgc3JjWDAsIEdDR0xpbnQgc3JjWTAsIEdDR0xpbnQgc3JjWDEsIEdDR0xpbnQgc3Jj
WTEsIEdDR0xpbnQgZHN0WDAsIEdDR0xpbnQgZHN0WTAsIEdDR0xpbnQgZHN0WDEsIEdDR0xpbnQg
ZHN0WTEsIEdDR0xiaXRmaWVsZCBtYXNrLCBHQ0dMZW51bSBmaWx0ZXIpID0gMDsKLQotICAgIC8v
IEdMX0FOR0xFX2ZyYW1lYnVmZmVyX211bHRpc2FtcGxlCi0gICAgdmlydHVhbCB2b2lkIHJlbmRl
cmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVp
IHNhbXBsZXMsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xz
aXplaSBoZWlnaHQpID0gMDsKLQogICAgIC8vIEdMX09FU192ZXJ0ZXhfYXJyYXlfb2JqZWN0CiAg
ICAgdmlydHVhbCBQbGF0Zm9ybUdMT2JqZWN0IGNyZWF0ZVZlcnRleEFycmF5T0VTKCkgPSAwOwog
ICAgIHZpcnR1YWwgdm9pZCBkZWxldGVWZXJ0ZXhBcnJheU9FUyhQbGF0Zm9ybUdMT2JqZWN0KSA9
IDA7CkBAIC0yOTMsMTEgKzI4Nyw2IEBAIHB1YmxpYzoKICAgICAvLyBHTF9BTkdMRV90cmFuc2xh
dGVkX3NoYWRlcl9zb3VyY2UKICAgICB2aXJ0dWFsIFN0cmluZyBnZXRUcmFuc2xhdGVkU2hhZGVy
U291cmNlQU5HTEUoUGxhdGZvcm1HTE9iamVjdCkgPSAwOwogCi0gICAgLy8gR0xfRVhUX2RlYnVn
X21hcmtlcgotICAgIHZpcnR1YWwgdm9pZCBpbnNlcnRFdmVudE1hcmtlckVYVChjb25zdCBTdHJp
bmcmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHB1c2hHcm91cE1hcmtlckVYVChjb25zdCBTdHJp
bmcmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHBvcEdyb3VwTWFya2VyRVhUKCkgPSAwOwotCiAg
ICAgLy8gR0xfQVJCX2RyYXdfYnVmZmVycyAvIEdMX0VYVF9kcmF3X2J1ZmZlcnMKICAgICB2aXJ0
dWFsIHZvaWQgZHJhd0J1ZmZlcnNFWFQoR0NHTFNwYW48Y29uc3QgR0NHTGVudW0+IGJ1ZnMpID0g
MDsKIApAQCAtMzA2LDQ3ICsyOTUsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRyYXdF
bGVtZW50c0luc3RhbmNlZEFOR0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xzaXplaSBjb3VudCwgR0NH
TGVudW0gdHlwZSwgR0NHTHZvaWRwdHIgb2Zmc2V0LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KSA9IDA7
CiAgICAgdmlydHVhbCB2b2lkIHZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRShHQ0dMdWludCBpbmRl
eCwgR0NHTHVpbnQgZGl2aXNvcikgPSAwOwogCi0gICAgLy8gR0xfQU5HTEVfcm9idXN0X2NsaWVu
dF9tZW1vcnkKLSAgICB2aXJ0dWFsIHZvaWQgcmVhZFBpeGVsc1JvYnVzdEFOR0xFKEdDR0xpbnQg
eCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVt
IGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVu
Z3RoLCBHQ0dMc2l6ZWkqIGNvbHVtbnMsIEdDR0xzaXplaSogcm93cywgR0NHTHZvaWQqIHBpeGVs
cykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCB0ZXhQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0xl
bnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dM
ZmxvYXQqIHBhcmFtcykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCB0ZXhQYXJhbWV0ZXJpdlJvYnVz
dEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXpl
LCBjb25zdCBHQ0dMaW50KiBwYXJhbXMpID0gMDsKLQotICAgIHZpcnR1YWwgdm9pZCBnZXRRdWVy
eWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVp
IGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpID0gMDsKLSAgICB2
aXJ0dWFsIHZvaWQgZ2V0UXVlcnlPYmplY3R1aXZSb2J1c3RBTkdMRShHQ0dMdWludCBpZCwgR0NH
TGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHVp
bnQqIHBhcmFtcykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRCdWZmZXJQb2ludGVydlJvYnVz
dEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXpl
LCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHZvaWQqKiBwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFs
IHZvaWQgZ2V0VmVydGV4QXR0cmliSWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0xl
bnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQq
IHBhcmFtcykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJJdWl2Um9idXN0
QU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwg
R0NHTHNpemVpKiBsZW5ndGgsIEdDR0x1aW50KiBwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZv
aWQgZ2V0VW5pZm9ybXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9j
YXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHVpbnQqIHBh
cmFtcykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRCdWZmZXJQYXJhbWV0ZXJpNjR2Um9idXN0
QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUs
IEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50NjQqIHBhcmFtcykgPSAwOwotICAgIHZpcnR1YWwg
dm9pZCBzYW1wbGVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dM
ZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xpbnQqIHBhcmFtKSA9IDA7
Ci0gICAgdmlydHVhbCB2b2lkIHNhbXBsZXJQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0x1aW50
IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGZs
b2F0KiBwYXJhbSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRTYW1wbGVyUGFyYW1ldGVyaXZS
b2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1
ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpID0gMDsKLSAgICB2aXJ0
dWFsIHZvaWQgZ2V0U2FtcGxlclBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxl
ciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwg
R0NHTGZsb2F0KiBwYXJhbXMpID0gMDsKLQotICAgIHZpcnR1YWwgdm9pZCBnZXRGcmFtZWJ1ZmZl
clBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwg
R0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpID0g
MDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0UHJvZ3JhbUludGVyZmFjZWl2Um9idXN0QU5HTEUoR0NH
THVpbnQgcHJvZ3JhbSwgR0NHTGVudW0gcHJvZ3JhbUludGVyZmFjZSwgR0NHTGVudW0gcG5hbWUs
IEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1zKSA9
IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldEJvb2xlYW5pX3ZSb2J1c3RBTkdMRShHQ0dMZW51bSB0
YXJnZXQsIEdDR0x1aW50IGluZGV4LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5n
dGgsIEdDR0xib29sZWFuKiBkYXRhKSA9IDA7IC8vIE5PTElOVAotICAgIHZpcnR1YWwgdm9pZCBn
ZXRNdWx0aXNhbXBsZWZ2Um9idXN0QU5HTEUoR0NHTGVudW0gcG5hbWUsIEdDR0x1aW50IGluZGV4
LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xmbG9hdCogdmFsKSA9
IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldFRleExldmVsUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShH
Q0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkg
YnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykgPSAwOwotICAgIHZp
cnR1YWwgdm9pZCBnZXRUZXhMZXZlbFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdD
R0xzaXplaSogbGVuZ3RoLCBHQ0dMZmxvYXQqIHBhcmFtcykgPSAwOwotCi0gICAgdmlydHVhbCB2
b2lkIGdldFBvaW50ZXJ2Um9idXN0QU5HTEVSb2J1c3RBTkdMRShHQ0dMZW51bSBwbmFtZSwgR0NH
THNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMdm9pZCoqIHBhcmFtcykgPSAw
OwotICAgIHZpcnR1YWwgdm9pZCBnZXRuVW5pZm9ybWZ2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJv
Z3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVu
Z3RoLCBHQ0dMZmxvYXQqIHBhcmFtcykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRuVW5pZm9y
bWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNp
emVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpID0gMDsKLSAg
ICB2aXJ0dWFsIHZvaWQgZ2V0blVuaWZvcm11aXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFt
LCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgs
IEdDR0x1aW50KiBwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgdGV4UGFyYW1ldGVySWl2
Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1
ZlNpemUsIGNvbnN0IEdDR0xpbnQqIHBhcmFtcykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCB0ZXhQ
YXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwg
R0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0x1aW50KiBwYXJhbXMpID0gMDsKLSAgICB2aXJ0
dWFsIHZvaWQgZ2V0VGV4UGFyYW1ldGVySWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dM
aW50KiBwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0VGV4UGFyYW1ldGVySXVpdlJv
YnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZT
aXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHVpbnQqIHBhcmFtcykgPSAwOwotICAgIHZpcnR1
YWwgdm9pZCBzYW1wbGVyUGFyYW1ldGVySWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwg
R0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMaW50KiBwYXJhbSkg
PSAwOwotICAgIHZpcnR1YWwgdm9pZCBzYW1wbGVyUGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFKEdD
R0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3Qg
R0NHTHVpbnQqIHBhcmFtKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldFNhbXBsZXJQYXJhbWV0
ZXJJaXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNp
emVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpID0gMDsKLSAg
ICB2aXJ0dWFsIHZvaWQgZ2V0U2FtcGxlclBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRShHQ0dMdWlu
dCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSog
bGVuZ3RoLCBHQ0dMdWludCogcGFyYW1zKSA9IDA7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgZ2V0UXVl
cnlPYmplY3RpdlJvYnVzdEFOR0xFKEdDR0x1aW50IGlkLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNp
emVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpID0gMDsKLSAg
ICB2aXJ0dWFsIHZvaWQgZ2V0UXVlcnlPYmplY3RpNjR2Um9idXN0QU5HTEUoR0NHTHVpbnQgaWQs
IEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdD
R0xpbnQ2NCogcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldFF1ZXJ5T2JqZWN0dWk2
NHZSb2J1c3RBTkdMRShHQ0dMdWludCBpZCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZT
aXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHVpbnQ2NCogcGFyYW1zKSA9IDA7Ci0KICAgICAv
LyBPdGhlciBmdW5jdGlvbnMuCiAjaWYgIVVTRShBTkdMRSkKICAgICAvLyBFWFQgUm9idXN0bmVz
cyAtIHVzZXMgZ2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQgpAQCAtMzU0LDE2ICszMDIsNiBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGdldG5Vbmlmb3JtZnZFWFQoR0NHTHVpbnQgcHJvZ3Jh
bSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xmbG9hdCogcGFyYW1z
KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGdldG5Vbmlmb3JtaXZFWFQoR0NHTHVpbnQgcHJvZ3Jh
bSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xpbnQqIHBhcmFtcykg
PSAwOwogCi0gICAgdmlydHVhbCBib29sIGlzTlZJRElBKCkgPSAwOwotICAgIHZpcnR1YWwgYm9v
bCBpc0FNRCgpID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgaXNJbnRlbCgpID0gMDsKLSAgICB2aXJ0
dWFsIGJvb2wgaXNJbWFnaW5hdGlvbigpID0gMDsKLSAgICB2aXJ0dWFsIFN0cmluZyB2ZW5kb3Io
KSA9IDA7Ci0KLSAgICAvLyBTb21lIGNvbmZpZ3VyYXRpb25zIGhhdmUgYnVncyByZWdhcmRpbmcg
YnVpbHQtaW4gZnVuY3Rpb25zIGluIHRoZWlyIE9wZW5HTCBkcml2ZXJzCi0gICAgLy8gdGhhdCBt
dXN0IGJlIGF2b2lkZWQuIFBvcnRzIHNob3VsZCBpbXBsZW1lbnQgdGhlc2UgZmxhZ3Mgb24gc3Vj
aCBjb25maWd1cmF0aW9ucy4KLSAgICB2aXJ0dWFsIGJvb2wgcmVxdWlyZXNCdWlsdEluRnVuY3Rp
b25FbXVsYXRpb24oKSA9IDA7Ci0gICAgdmlydHVhbCBib29sIHJlcXVpcmVzUmVzdHJpY3RlZE1h
eGltdW1UZXh0dXJlU2l6ZSgpID0gMDsKICNlbmRpZgogCiB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUu
Y3BwCmluZGV4IGI3ZGI0ZmQyMDQxYjNiYmM4YmI5YTc3MzNlODliZWVhYWViNmY3ODkuLmNlNDZj
N2E3NWE1ZTJiNjJmMmFiOWZlMDJiOWJlYzFmNmE3MGZiOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRlbnNpb25zR0xBTkdM
RS5jcHAKQEAgLTQzLDEwICs0Myw5IEBAIHR5cGVkZWYgdm9pZCogR0xlZ2xDb250ZXh0OwogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLUV4dGVuc2lvbnNHTEFOR0xFOjpFeHRlbnNpb25zR0xBTkdM
RShHcmFwaGljc0NvbnRleHRHTE9wZW5HTCogY29udGV4dCwgYm9vbCB1c2VJbmRleGVkR2V0U3Ry
aW5nKQorRXh0ZW5zaW9uc0dMQU5HTEU6OkV4dGVuc2lvbnNHTEFOR0xFKEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMKiBjb250ZXh0KQogICAgIDogbV9pbml0aWFsaXplZEF2YWlsYWJsZUV4dGVuc2lv
bnMoZmFsc2UpCiAgICAgLCBtX2NvbnRleHQoY29udGV4dCkKLSAgICAsIG1fdXNlSW5kZXhlZEdl
dFN0cmluZyh1c2VJbmRleGVkR2V0U3RyaW5nKQogewogfQogCkBAIC0xMDksNDIgKzEwOCwxNSBA
QCBTdHJpbmcgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdM
RShQbGF0Zm9ybUdMT2JqZWN0IHNoYWRlcgogCiB2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjppbml0
aWFsaXplQXZhaWxhYmxlRXh0ZW5zaW9ucygpCiB7Ci0gICAgaWYgKG1fdXNlSW5kZXhlZEdldFN0
cmluZykgewotICAgICAgICBHTGludCBudW1FeHRlbnNpb25zID0gMDsKLSAgICAgICAgZ2w6Okdl
dEludGVnZXJ2KEdMX05VTV9FWFRFTlNJT05TLCAmbnVtRXh0ZW5zaW9ucyk7Ci0gICAgICAgIGZv
ciAoR0xpbnQgaSA9IDA7IGkgPCBudW1FeHRlbnNpb25zOyArK2kpCi0gICAgICAgICAgICBtX2F2
YWlsYWJsZUV4dGVuc2lvbnMuYWRkKGdsOjpHZXRTdHJpbmdpKEdMX0VYVEVOU0lPTlMsIGkpKTsK
LSAgICAgICAgZ2w6OkdldEludGVnZXJ2KEdMX05VTV9SRVFVRVNUQUJMRV9FWFRFTlNJT05TX0FO
R0xFLCAmbnVtRXh0ZW5zaW9ucyk7Ci0gICAgICAgIGZvciAoR0xpbnQgaSA9IDA7IGkgPCBudW1F
eHRlbnNpb25zOyArK2kpCi0gICAgICAgICAgICBtX3JlcXVlc3RhYmxlRXh0ZW5zaW9ucy5hZGQo
Z2w6OkdldFN0cmluZ2koR0xfUkVRVUVTVEFCTEVfRVhURU5TSU9OU19BTkdMRSwgaSkpOwotICAg
IH0gZWxzZSB7Ci0gICAgICAgIFN0cmluZyBleHRlbnNpb25zU3RyaW5nID0gZ2V0RXh0ZW5zaW9u
cygpOwotICAgICAgICBmb3IgKGF1dG8mIGV4dGVuc2lvbiA6IGV4dGVuc2lvbnNTdHJpbmcuc3Bs
aXQoJyAnKSkKLSAgICAgICAgICAgIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5hZGQoZXh0ZW5zaW9u
KTsKLSAgICAgICAgZXh0ZW5zaW9uc1N0cmluZyA9IFN0cmluZyhyZWludGVycHJldF9jYXN0PGNv
bnN0IGNoYXIqPihnbDo6R2V0U3RyaW5nKEdMX1JFUVVFU1RBQkxFX0VYVEVOU0lPTlNfQU5HTEUp
KSk7Ci0gICAgICAgIGZvciAoYXV0byYgZXh0ZW5zaW9uIDogZXh0ZW5zaW9uc1N0cmluZy5zcGxp
dCgnICcpKQotICAgICAgICAgICAgbV9yZXF1ZXN0YWJsZUV4dGVuc2lvbnMuYWRkKGV4dGVuc2lv
bik7Ci0gICAgfQorICAgIFN0cmluZyBleHRlbnNpb25zU3RyaW5nID0gZ2V0RXh0ZW5zaW9ucygp
OworICAgIGZvciAoYXV0byYgZXh0ZW5zaW9uIDogZXh0ZW5zaW9uc1N0cmluZy5zcGxpdCgnICcp
KQorICAgICAgICBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuYWRkKGV4dGVuc2lvbik7CisgICAgZXh0
ZW5zaW9uc1N0cmluZyA9IFN0cmluZyhyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihnbDo6
R2V0U3RyaW5nKEdMX1JFUVVFU1RBQkxFX0VYVEVOU0lPTlNfQU5HTEUpKSk7CisgICAgZm9yIChh
dXRvJiBleHRlbnNpb24gOiBleHRlbnNpb25zU3RyaW5nLnNwbGl0KCcgJykpCisgICAgICAgIG1f
cmVxdWVzdGFibGVFeHRlbnNpb25zLmFkZChleHRlbnNpb24pOwogICAgIG1faW5pdGlhbGl6ZWRB
dmFpbGFibGVFeHRlbnNpb25zID0gdHJ1ZTsKIH0KIAotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6
YmxpdEZyYW1lYnVmZmVyQU5HTEUoR0NHTGludCBzcmNYMCwgR0NHTGludCBzcmNZMCwgR0NHTGlu
dCBzcmNYMSwgR0NHTGludCBzcmNZMSwgR0NHTGludCBkc3RYMCwgR0NHTGludCBkc3RZMCwgR0NH
TGludCBkc3RYMSwgR0NHTGludCBkc3RZMSwgR0NHTGJpdGZpZWxkIG1hc2ssIEdDR0xlbnVtIGZp
bHRlcikKLXsKLSAgICAvLyBGSVhNRTogY29uc2lkZXIgYWRkaW5nIHN1cHBvcnQgZm9yIEFQUExF
X2ZyYW1lYnVmZmVyX211bHRpc2FtcGxlLgotICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4
dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OkJsaXRGcmFtZWJ1ZmZlckFO
R0xFKHNyY1gwLCBzcmNZMCwgc3JjWDEsIHNyY1kxLCBkc3RYMCwgZHN0WTAsIGRzdFgxLCBkc3RZ
MSwgbWFzaywgZmlsdGVyKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6cmVuZGVyYnVm
ZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWkgc2Ft
cGxlcywgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVp
IGhlaWdodCkKLXsKLSAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0g
ICAgICAgIHJldHVybjsKLQotICAgIGdsOjpSZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVB
TkdMRSh0YXJnZXQsIHNhbXBsZXMsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0KTsKLX0K
LQogUGxhdGZvcm1HTE9iamVjdCBFeHRlbnNpb25zR0xBTkdMRTo6Y3JlYXRlVmVydGV4QXJyYXlP
RVMoKQogewogICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKQEAgLTE4
NSwyNCArMTU3LDYgQEAgdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6YmluZFZlcnRleEFycmF5T0VT
KFBsYXRmb3JtR0xPYmplY3QgYXJyYXkpCiAgICAgZ2w6OkJpbmRWZXJ0ZXhBcnJheU9FUyhhcnJh
eSk7CiB9CiAKLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6Omluc2VydEV2ZW50TWFya2VyRVhUKGNv
bnN0IFN0cmluZyYpCi17Ci0gICAgLy8gRklYTUU6IGltcGxlbWVudCB0aGlzIGZ1bmN0aW9uIGFu
ZCBhZGQgR0xfRVhUX2RlYnVnX21hcmtlciBpbiBzdXBwb3J0cygpLgotICAgIHJldHVybjsKLX0K
LQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6cHVzaEdyb3VwTWFya2VyRVhUKGNvbnN0IFN0cmlu
ZyYpCi17Ci0gICAgLy8gRklYTUU6IGltcGxlbWVudCB0aGlzIGZ1bmN0aW9uIGFuZCBhZGQgR0xf
RVhUX2RlYnVnX21hcmtlciBpbiBzdXBwb3J0cygpLgotICAgIHJldHVybjsKLX0KLQotdm9pZCBF
eHRlbnNpb25zR0xBTkdMRTo6cG9wR3JvdXBNYXJrZXJFWFQodm9pZCkKLXsKLSAgICAvLyBGSVhN
RTogaW1wbGVtZW50IHRoaXMgZnVuY3Rpb24gYW5kIGFkZCBHTF9FWFRfZGVidWdfbWFya2VyIGlu
IHN1cHBvcnRzKCkuCi0gICAgcmV0dXJuOwotfQotCiBib29sIEV4dGVuc2lvbnNHTEFOR0xFOjpz
dXBwb3J0c0V4dGVuc2lvbihjb25zdCBTdHJpbmcmIG5hbWUpCiB7CiAgICAgcmV0dXJuIG1fYXZh
aWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucyhuYW1lKSB8fCBtX3JlcXVlc3RhYmxlRXh0ZW5zaW9u
cy5jb250YWlucyhuYW1lKTsKQEAgLTI1OCwyOTEgKzIxMiw2IEBAIEdDR0xlbnVtIEV4dGVuc2lv
bnNHTEFOR0xFOjphZGp1c3RXZWJHTDFUZXh0dXJlSW50ZXJuYWxGb3JtYXQoR0NHTGVudW0gaW50
ZXJuYWxmCiAgICAgcmV0dXJuIGludGVybmFsZm9ybWF0OwogfQogCi0vLyBHTF9BTkdMRV9yb2J1
c3RfY2xpZW50X21lbW9yeQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6cmVhZFBpeGVsc1JvYnVz
dEFOR0xFKGludCB4LCBpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBH
Q0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6
ZWkgKmxlbmd0aCwgR0NHTHNpemVpICpjb2x1bW5zLCBHQ0dMc2l6ZWkgKnJvd3MsIHZvaWQgKnBp
eGVscykKLXsKLSAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAg
ICAgIHJldHVybjsKLQotICAgIGdsOjpSZWFkUGl4ZWxzUm9idXN0QU5HTEUoeCwgeSwgd2lkdGgs
IGhlaWdodCwgZm9ybWF0LCB0eXBlLCBidWZTaXplLCBsZW5ndGgsIGNvbHVtbnMsIHJvd3MsIHBp
eGVscyk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OnRleFBhcmFtZXRlcmZ2Um9idXN0
QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUs
IGNvbnN0IEdDR0xmbG9hdCAqcGFyYW1zKQotewotICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29u
dGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OlRleFBhcmFtZXRlcmZ2
Um9idXN0QU5HTEUodGFyZ2V0LCBwbmFtZSwgYnVmU2l6ZSwgcGFyYW1zKTsKLX0KLQotdm9pZCBF
eHRlbnNpb25zR0xBTkdMRTo6dGV4UGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJn
ZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGludCAqcGFy
YW1zKQotewotICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAg
ICAgcmV0dXJuOwotCi0gICAgZ2w6OlRleFBhcmFtZXRlcml2Um9idXN0QU5HTEUodGFyZ2V0LCBw
bmFtZSwgYnVmU2l6ZSwgcGFyYW1zKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0
UXVlcnlpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xz
aXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKQotewotICAg
IGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwot
Ci0gICAgZ2w6OkdldFF1ZXJ5aXZSb2J1c3RBTkdMRSh0YXJnZXQsIHBuYW1lLCBidWZTaXplLCBs
ZW5ndGgsIHBhcmFtcyk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldFF1ZXJ5T2Jq
ZWN0dWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgaWQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkg
YnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0x1aW50ICpwYXJhbXMpCi17Ci0gICAgaWYg
KCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAg
ICBnbDo6R2V0UXVlcnlPYmplY3R1aXZSb2J1c3RBTkdMRShpZCwgcG5hbWUsIGJ1ZlNpemUsIGxl
bmd0aCwgcGFyYW1zKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0QnVmZmVyUG9p
bnRlcnZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6
ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIHZvaWQgKipwYXJhbXMpCi17Ci0gICAgaWYg
KCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAg
ICBnbDo6R2V0QnVmZmVyUG9pbnRlcnZSb2J1c3RBTkdMRSh0YXJnZXQsIHBuYW1lLCBidWZTaXpl
LCBsZW5ndGgsIHBhcmFtcyk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldFZlcnRl
eEF0dHJpYklpdlJvYnVzdEFOR0xFKEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NH
THNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpCi17Ci0g
ICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47
Ci0KLSAgICBnbDo6R2V0VmVydGV4QXR0cmliSWl2Um9idXN0QU5HTEUoaW5kZXgsIHBuYW1lLCBi
dWZTaXplLCBsZW5ndGgsIHBhcmFtcyk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6Omdl
dFZlcnRleEF0dHJpYkl1aXZSb2J1c3RBTkdMRShHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5h
bWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHVpbnQgKnBhcmFt
cykKLXsKLSAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAg
IHJldHVybjsKLQotICAgIGdsOjpHZXRWZXJ0ZXhBdHRyaWJJdWl2Um9idXN0QU5HTEUoaW5kZXgs
IHBuYW1lLCBidWZTaXplLCBsZW5ndGgsIHBhcmFtcyk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dM
QU5HTEU6OmdldFVuaWZvcm11aXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMaW50
IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0x1aW50
ICpwYXJhbXMpCi17Ci0gICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQot
ICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6R2V0VW5pZm9ybXVpdlJvYnVzdEFOR0xFKHByb2dy
YW0sIGxvY2F0aW9uLCBidWZTaXplLCBsZW5ndGgsIHBhcmFtcyk7Ci19Ci0KLXZvaWQgRXh0ZW5z
aW9uc0dMQU5HTEU6OmdldEJ1ZmZlclBhcmFtZXRlcmk2NHZSb2J1c3RBTkdMRShHQ0dMZW51bSB0
YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5n
dGgsIEdDR0xpbnQ2NCAqcGFyYW1zKQotewotICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4
dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OkdldEJ1ZmZlclBhcmFtZXRl
cmk2NHZSb2J1c3RBTkdMRSh0YXJnZXQsIHBuYW1lLCBidWZTaXplLCBsZW5ndGgsIHJlaW50ZXJw
cmV0X2Nhc3Q8R0xpbnQ2NCo+KHBhcmFtcykpOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xF
OjpzYW1wbGVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51
bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xpbnQgKnBhcmFtKQotewotICAg
IGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwot
Ci0gICAgZ2w6OlNhbXBsZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKHNhbXBsZXIsIHBuYW1lLCBi
dWZTaXplLCBwYXJhbSk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OnNhbXBsZXJQYXJh
bWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dM
c2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGZsb2F0ICpwYXJhbSkKLXsKLSAgICBpZiAoIW1fY29u
dGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpT
YW1wbGVyUGFyYW1ldGVyZnZSb2J1c3RBTkdMRShzYW1wbGVyLCBwbmFtZSwgYnVmU2l6ZSwgcGFy
YW0pOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRTYW1wbGVyUGFyYW1ldGVyaXZS
b2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1
ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpCi17Ci0gICAgaWYgKCFt
X2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBn
bDo6R2V0U2FtcGxlclBhcmFtZXRlcml2Um9idXN0QU5HTEUoc2FtcGxlciwgcG5hbWUsIGJ1ZlNp
emUsIGxlbmd0aCwgcGFyYW1zKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0U2Ft
cGxlclBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5h
bWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGZsb2F0ICpwYXJh
bXMpCi17Ci0gICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAg
ICByZXR1cm47Ci0KLSAgICBnbDo6R2V0U2FtcGxlclBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoc2Ft
cGxlciwgcG5hbWUsIGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1zKTsKLX0KLQotCi12b2lkIEV4dGVu
c2lvbnNHTEFOR0xFOjpnZXRGcmFtZWJ1ZmZlclBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVu
dW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAq
bGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpCi17Ci0gICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250
ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6R2V0RnJhbWVidWZmZXJQ
YXJhbWV0ZXJpdlJvYnVzdEFOR0xFKHRhcmdldCwgcG5hbWUsIGJ1ZlNpemUsIGxlbmd0aCwgcGFy
YW1zKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0UHJvZ3JhbUludGVyZmFjZWl2
Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGVudW0gcHJvZ3JhbUludGVyZmFjZSwg
R0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NH
TGludCAqcGFyYW1zKQotewotICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQo
KSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OkdldFByb2dyYW1JbnRlcmZhY2VpdlJvYnVz
dEFOR0xFKHByb2dyYW0sIHByb2dyYW1JbnRlcmZhY2UsIHBuYW1lLCBidWZTaXplLCBsZW5ndGgs
IHBhcmFtcyk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldEJvb2xlYW5pX3ZSb2J1
c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0x1aW50IGluZGV4LCBHQ0dMc2l6ZWkgYnVmU2l6
ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xib29sZWFuICpkYXRhKQotewotICAgIGlmICghbV9j
b250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6
OkdldEJvb2xlYW5pX3ZSb2J1c3RBTkdMRSh0YXJnZXQsIGluZGV4LCBidWZTaXplLCBsZW5ndGgs
IGRhdGEpOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRNdWx0aXNhbXBsZWZ2Um9i
dXN0QU5HTEUoR0NHTGVudW0gcG5hbWUsIEdDR0x1aW50IGluZGV4LCBHQ0dMc2l6ZWkgYnVmU2l6
ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xmbG9hdCAqdmFsKQotewotICAgIGlmICghbV9jb250
ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6Okdl
dE11bHRpc2FtcGxlZnZSb2J1c3RBTkdMRShwbmFtZSwgaW5kZXgsIGJ1ZlNpemUsIGxlbmd0aCwg
dmFsKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0VGV4TGV2ZWxQYXJhbWV0ZXJp
dlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gcG5h
bWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1z
KQotewotICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgZ2w6OkdldFRleExldmVsUGFyYW1ldGVyaXZSb2J1c3RBTkdMRSh0YXJn
ZXQsIGxldmVsLCBwbmFtZSwgYnVmU2l6ZSwgbGVuZ3RoLCBwYXJhbXMpOwotfQotCi12b2lkIEV4
dGVuc2lvbnNHTEFOR0xFOjpnZXRUZXhMZXZlbFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTGVu
dW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNp
emUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMZmxvYXQgKnBhcmFtcykKLXsKLSAgICBpZiAoIW1f
Y29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGds
OjpHZXRUZXhMZXZlbFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUodGFyZ2V0LCBsZXZlbCwgcG5hbWUs
IGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1zKTsKLX0KLQotCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xF
OjpnZXRQb2ludGVydlJvYnVzdEFOR0xFUm9idXN0QU5HTEUoR0NHTGVudW0gcG5hbWUsIEdDR0xz
aXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgdm9pZCAqKnBhcmFtcykKLXsKLSAgICBp
ZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQot
ICAgIGdsOjpHZXRQb2ludGVydlJvYnVzdEFOR0xFUm9idXN0QU5HTEUocG5hbWUsIGJ1ZlNpemUs
IGxlbmd0aCwgcGFyYW1zKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0blVuaWZv
cm1mdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xz
aXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGZsb2F0ICpwYXJhbXMpCi17Ci0g
ICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47
Ci0KLSAgICBnbDo6R2V0blVuaWZvcm1mdlJvYnVzdEFOR0xFKHByb2dyYW0sIGxvY2F0aW9uLCBi
dWZTaXplLCBsZW5ndGgsIHBhcmFtcyk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6Omdl
dG5Vbmlmb3JtaXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9u
LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykK
LXsKLSAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJl
dHVybjsKLQotICAgIGdsOjpHZXRuVW5pZm9ybWl2Um9idXN0QU5HTEUocHJvZ3JhbSwgbG9jYXRp
b24sIGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1zKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdM
RTo6Z2V0blVuaWZvcm11aXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMaW50IGxv
Y2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0x1aW50ICpw
YXJhbXMpCi17Ci0gICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAg
ICAgICByZXR1cm47Ci0KLSAgICBnbDo6R2V0blVuaWZvcm11aXZSb2J1c3RBTkdMRShwcm9ncmFt
LCBsb2NhdGlvbiwgYnVmU2l6ZSwgbGVuZ3RoLCBwYXJhbXMpOwotfQotCi12b2lkIEV4dGVuc2lv
bnNHTEFOR0xFOjp0ZXhQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdD
R0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGludCAqcGFyYW1zKQot
ewotICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0
dXJuOwotCi0gICAgZ2w6OlRleFBhcmFtZXRlcklpdlJvYnVzdEFOR0xFKHRhcmdldCwgcG5hbWUs
IGJ1ZlNpemUsIHBhcmFtcyk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OnRleFBhcmFt
ZXRlckl1aXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dM
c2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTHVpbnQgKnBhcmFtcykKLXsKLSAgICBpZiAoIW1fY29u
dGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpU
ZXhQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUodGFyZ2V0LCBwbmFtZSwgYnVmU2l6ZSwgcGFyYW1z
KTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0VGV4UGFyYW1ldGVySWl2Um9idXN0
QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUs
IEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpCi17Ci0gICAgaWYgKCFtX2NvbnRl
eHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6R2V0
VGV4UGFyYW1ldGVySWl2Um9idXN0QU5HTEUodGFyZ2V0LCBwbmFtZSwgYnVmU2l6ZSwgbGVuZ3Ro
LCBwYXJhbXMpOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRUZXhQYXJhbWV0ZXJJ
dWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVp
IGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMdWludCAqcGFyYW1zKQotewotICAgIGlm
ICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0g
ICAgZ2w6OkdldFRleFBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRSh0YXJnZXQsIHBuYW1lLCBidWZT
aXplLCBsZW5ndGgsIHBhcmFtcyk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OnNhbXBs
ZXJQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFt
ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xpbnQgKnBhcmFtKQotewotICAgIGlmICgh
bV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAg
Z2w6OlNhbXBsZXJQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRShzYW1wbGVyLCBwbmFtZSwgYnVmU2l6
ZSwgcGFyYW0pOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpzYW1wbGVyUGFyYW1ldGVy
SXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6
ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTHVpbnQgKnBhcmFtKQotewotICAgIGlmICghbV9jb250ZXh0
LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OlNhbXBs
ZXJQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUoc2FtcGxlciwgcG5hbWUsIGJ1ZlNpemUsIHBhcmFt
KTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0U2FtcGxlclBhcmFtZXRlcklpdlJv
YnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVm
U2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykKLXsKLSAgICBpZiAoIW1f
Y29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGds
OjpHZXRTYW1wbGVyUGFyYW1ldGVySWl2Um9idXN0QU5HTEUoc2FtcGxlciwgcG5hbWUsIGJ1ZlNp
emUsIGxlbmd0aCwgcGFyYW1zKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0U2Ft
cGxlclBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBw
bmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMdWludCAqcGFy
YW1zKQotewotICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAg
ICAgcmV0dXJuOwotCi0gICAgZ2w6OkdldFNhbXBsZXJQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUo
c2FtcGxlciwgcG5hbWUsIGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1zKTsKLX0KLQotCi12b2lkIEV4
dGVuc2lvbnNHTEFOR0xFOjpnZXRRdWVyeU9iamVjdGl2Um9idXN0QU5HTEUoR0NHTHVpbnQgaWQs
IEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdD
R0xpbnQgKnBhcmFtcykKLXsKLSAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50
KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpHZXRRdWVyeU9iamVjdGl2Um9idXN0QU5H
TEUoaWQsIHBuYW1lLCBidWZTaXplLCBsZW5ndGgsIHBhcmFtcyk7Ci19Ci0KLXZvaWQgRXh0ZW5z
aW9uc0dMQU5HTEU6OmdldFF1ZXJ5T2JqZWN0aTY0dlJvYnVzdEFOR0xFKEdDR0x1aW50IGlkLCBH
Q0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dM
aW50NjQgKnBhcmFtcykKLXsKLSAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50
KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpHZXRRdWVyeU9iamVjdGk2NHZSb2J1c3RB
TkdMRShpZCwgcG5hbWUsIGJ1ZlNpemUsIGxlbmd0aCwgcmVpbnRlcnByZXRfY2FzdDxHTGludDY0
Kj4ocGFyYW1zKSk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldFF1ZXJ5T2JqZWN0
dWk2NHZSb2J1c3RBTkdMRShHQ0dMdWludCBpZCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBi
dWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHVpbnQ2NCAqcGFyYW1zKQotewotICAgIGlm
ICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0g
ICAgZ2w6OkdldFF1ZXJ5T2JqZWN0dWk2NHZSb2J1c3RBTkdMRShpZCwgcG5hbWUsIGJ1ZlNpemUs
IGxlbmd0aCwgcmVpbnRlcnByZXRfY2FzdDxHTHVpbnQ2NCo+KHBhcmFtcykpOwotfQotCi0KIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShHUkFQSElDU19DT05URVhU
X0dMKSAmJiBVU0UoQU5HTEUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hbmdsZS9FeHRlbnNpb25zR0xBTkdMRS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUuaAppbmRleCBiMmQyNzdiOWFjOWQy
Nzg2MGY1NWFiYWJmOGNmZTU1ZTg0YjVmNTdlLi4wMDQyMzM3NzIwMzRiZmEzZWFjMTM3ZGMzNjM0
ODA5MTZkZWFhZjdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hbmdsZS9FeHRlbnNpb25zR0xBTkdMRS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmgKQEAgLTM2LDcgKzM2LDcgQEAgY2xh
c3MgRXh0ZW5zaW9uc0dMQU5HTEUgOiBwdWJsaWMgRXh0ZW5zaW9uc0dMIHsKICAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICAvLyBUaGlzIGNsYXNzIG9ubHkgbmVlZHMg
dG8gYmUgaW5zdGFudGlhdGVkIGJ5IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMIGltcGxlbWVudGF0
aW9ucy4KLSAgICBFeHRlbnNpb25zR0xBTkdMRShHcmFwaGljc0NvbnRleHRHTE9wZW5HTCosIGJv
b2wgdXNlSW5kZXhlZEdldFN0cmluZyA9IGZhbHNlKTsKKyAgICBleHBsaWNpdCBFeHRlbnNpb25z
R0xBTkdMRShHcmFwaGljc0NvbnRleHRHTE9wZW5HTCopOwogICAgIHZpcnR1YWwgfkV4dGVuc2lv
bnNHTEFOR0xFKCk7CiAKICAgICAvLyBFeHRlbnNpb25zR0wgbWV0aG9kcy4KQEAgLTQ5LDYwICs0
OSwxNCBAQCBwdWJsaWM6CiAgICAgdm9pZCBkZWxldGVWZXJ0ZXhBcnJheU9FUyhQbGF0Zm9ybUdM
T2JqZWN0KSBvdmVycmlkZTsKICAgICBHQ0dMYm9vbGVhbiBpc1ZlcnRleEFycmF5T0VTKFBsYXRm
b3JtR0xPYmplY3QpIG92ZXJyaWRlOwogICAgIHZvaWQgYmluZFZlcnRleEFycmF5T0VTKFBsYXRm
b3JtR0xPYmplY3QpIG92ZXJyaWRlOwotICAgIHZvaWQgaW5zZXJ0RXZlbnRNYXJrZXJFWFQoY29u
c3QgU3RyaW5nJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBwdXNoR3JvdXBNYXJrZXJFWFQoY29uc3Qg
U3RyaW5nJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBwb3BHcm91cE1hcmtlckVYVCh2b2lkKSBvdmVy
cmlkZTsKICAgICB2b2lkIGRyYXdCdWZmZXJzRVhUKEdDR0xTcGFuPGNvbnN0IEdDR0xlbnVtPikg
b3ZlcnJpZGU7CiAKICAgICBTdHJpbmcgZ2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFKFBs
YXRmb3JtR0xPYmplY3QpIG92ZXJyaWRlOwogCi0gICAgdm9pZCBibGl0RnJhbWVidWZmZXJBTkdM
RShHQ0dMaW50IHNyY1gwLCBHQ0dMaW50IHNyY1kwLCBHQ0dMaW50IHNyY1gxLCBHQ0dMaW50IHNy
Y1kxLCBHQ0dMaW50IGRzdFgwLCBHQ0dMaW50IGRzdFkwLCBHQ0dMaW50IGRzdFgxLCBHQ0dMaW50
IGRzdFkxLCBHQ0dMYml0ZmllbGQgbWFzaywgR0NHTGVudW0gZmlsdGVyKSBvdmVycmlkZTsKLSAg
ICB2b2lkIHJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKEdDR0xlbnVtIHRhcmdl
dCwgR0NHTHNpemVpIHNhbXBsZXMsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkg
d2lkdGgsIEdDR0xzaXplaSBoZWlnaHQpIG92ZXJyaWRlOwotCiAgICAgdm9pZCBkcmF3QXJyYXlz
SW5zdGFuY2VkQU5HTEUoR0NHTGVudW0gbW9kZSwgR0NHTGludCBmaXJzdCwgR0NHTHNpemVpIGNv
dW50LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KSBvdmVycmlkZTsKICAgICB2b2lkIGRyYXdFbGVtZW50
c0luc3RhbmNlZEFOR0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xzaXplaSBjb3VudCwgR0NHTGVudW0g
dHlwZSwgR0NHTHZvaWRwdHIgb2Zmc2V0LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KSBvdmVycmlkZTsK
ICAgICB2b2lkIHZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRShHQ0dMdWludCBpbmRleCwgR0NHTHVp
bnQgZGl2aXNvcikgb3ZlcnJpZGU7CiAKLSAgICAvLyBHTF9BTkdMRV9yb2J1c3RfY2xpZW50X21l
bW9yeQotICAgIHZvaWQgcmVhZFBpeGVsc1JvYnVzdEFOR0xFKEdDR0xpbnQgeCwgR0NHTGludCB5
LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NH
TGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMc2l6
ZWkgKmNvbHVtbnMsIEdDR0xzaXplaSAqcm93cywgdm9pZCAqcGl4ZWxzKSBvdmVycmlkZTsKLSAg
ICB2b2lkIHRleFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51
bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xmbG9hdCAqcGFyYW1zKSBvdmVy
cmlkZTsKLSAgICB2b2lkIHRleFBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xpbnQgKnBhcmFt
cykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRRdWVyeWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3Ro
LCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0UXVlcnlPYmplY3R1aXZS
b2J1c3RBTkdMRShHQ0dMdWludCBpZCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXpl
LCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHVpbnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9p
ZCBnZXRCdWZmZXJQb2ludGVydlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0g
cG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgdm9pZCAqKnBhcmFt
cykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJJaXZSb2J1c3RBTkdMRShHQ0dM
dWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkg
Kmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldFZlcnRleEF0
dHJpYkl1aXZSb2J1c3RBTkdMRShHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xz
aXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHVpbnQgKnBhcmFtcykgb3ZlcnJp
ZGU7Ci0gICAgdm9pZCBnZXRVbmlmb3JtdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwg
R0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBH
Q0dMdWludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldEJ1ZmZlclBhcmFtZXRlcmk2
NHZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkg
YnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQ2NCAqcGFyYW1zKSBvdmVycmlkZTsK
LSAgICB2b2lkIHNhbXBsZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIs
IEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGludCAqcGFyYW0p
IG92ZXJyaWRlOwotICAgIHZvaWQgc2FtcGxlclBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTHVp
bnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dM
ZmxvYXQgKnBhcmFtKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldFNhbXBsZXJQYXJhbWV0ZXJpdlJv
YnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVm
U2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAg
dm9pZCBnZXRTYW1wbGVyUGFyYW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBH
Q0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dM
ZmxvYXQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0KLSAgICB2b2lkIGdldEZyYW1lYnVmZmVyUGFyYW1l
dGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6
ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykgb3ZlcnJpZGU7
Ci0gICAgdm9pZCBnZXRQcm9ncmFtSW50ZXJmYWNlaXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9n
cmFtLCBHQ0dMZW51bSBwcm9ncmFtSW50ZXJmYWNlLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVp
IGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJyaWRlOwot
ICAgIHZvaWQgZ2V0Qm9vbGVhbmlfdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTHVp
bnQgaW5kZXgsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGJvb2xl
YW4gKmRhdGEpIG92ZXJyaWRlOyAvLyBOT0xJTlQKLSAgICB2b2lkIGdldE11bHRpc2FtcGxlZnZS
b2J1c3RBTkdMRShHQ0dMZW51bSBwbmFtZSwgR0NHTHVpbnQgaW5kZXgsIEdDR0xzaXplaSBidWZT
aXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGZsb2F0ICp2YWwpIG92ZXJyaWRlOwotICAgIHZv
aWQgZ2V0VGV4TGV2ZWxQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NH
TGludCBsZXZlbCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkg
Kmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldFRleExldmVs
UGFyYW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdD
R0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xm
bG9hdCAqcGFyYW1zKSBvdmVycmlkZTsKLQotICAgIHZvaWQgZ2V0UG9pbnRlcnZSb2J1c3RBTkdM
RVJvYnVzdEFOR0xFKEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVp
ICpsZW5ndGgsIHZvaWQgKipwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0blVuaWZvcm1m
dlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXpl
aSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGZsb2F0ICpwYXJhbXMpIG92ZXJyaWRl
OwotICAgIHZvaWQgZ2V0blVuaWZvcm1pdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdD
R0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NH
TGludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldG5Vbmlmb3JtdWl2Um9idXN0QU5H
TEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUs
IEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMdWludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lk
IHRleFBhcmFtZXRlcklpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5h
bWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJyaWRlOwot
ICAgIHZvaWQgdGV4UGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NH
TGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMdWludCAqcGFyYW1zKSBv
dmVycmlkZTsKLSAgICB2b2lkIGdldFRleFBhcmFtZXRlcklpdlJvYnVzdEFOR0xFKEdDR0xlbnVt
IHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxl
bmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldFRleFBhcmFtZXRl
ckl1aXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6
ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0x1aW50ICpwYXJhbXMpIG92ZXJyaWRl
OwotICAgIHZvaWQgc2FtcGxlclBhcmFtZXRlcklpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBs
ZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGludCAqcGFy
YW0pIG92ZXJyaWRlOwotICAgIHZvaWQgc2FtcGxlclBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRShH
Q0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0
IEdDR0x1aW50ICpwYXJhbSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRTYW1wbGVyUGFyYW1ldGVy
SWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXpl
aSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVycmlkZTsK
LSAgICB2b2lkIGdldFNhbXBsZXJQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2Ft
cGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0
aCwgR0NHTHVpbnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0KLSAgICB2b2lkIGdldFF1ZXJ5T2JqZWN0
aXZSb2J1c3RBTkdMRShHQ0dMdWludCBpZCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZT
aXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2
b2lkIGdldFF1ZXJ5T2JqZWN0aTY0dlJvYnVzdEFOR0xFKEdDR0x1aW50IGlkLCBHQ0dMZW51bSBw
bmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50NjQgKnBh
cmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRRdWVyeU9iamVjdHVpNjR2Um9idXN0QU5HTEUo
R0NHTHVpbnQgaWQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVp
ICpsZW5ndGgsIEdDR0x1aW50NjQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0KICAgICAvLyBPbmx5IGZv
ciBub24tV2ViR0wgMi4wIGNvbnRleHRzLgogICAgIEdDR0xlbnVtIGFkanVzdFdlYkdMMVRleHR1
cmVJbnRlcm5hbEZvcm1hdChHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTGVudW0gZm9ybWF0
LCBHQ0dMZW51bSB0eXBlKTsKIApAQCAtMTE5LDggKzczLDYgQEAgcHJpdmF0ZToKICAgICAvLyBX
ZWFrIHBvaW50ZXIgYmFjayB0byBHcmFwaGljc0NvbnRleHRHTE9wZW5HTC4KICAgICBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTCogbV9jb250ZXh0OwogCi0gICAgYm9vbCBtX3VzZUluZGV4ZWRHZXRT
dHJpbmcgeyBmYWxzZSB9OwotCiAgICAgLy8gV2hldGhlciB0aGUgV2ViR0wgMS4wLXJlbGF0ZWQg
ZmxvYXRpbmctcG9pbnQgcmVuZGVyYWJpbGl0eSBleHRlbnNpb25zIGhhdmUgYmVlbiBlbmFibGVk
LgogICAgIGJvb2wgbV93ZWJnbENvbG9yQnVmZmVyRmxvYXRSR0IgeyBmYWxzZSB9OwogICAgIGJv
b2wgbV93ZWJnbENvbG9yQnVmZmVyRmxvYXRSR0JBIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNH
TE9wZW5HTC5jcHAKaW5kZXggYWRkNWYzNTJhZTRkZTZiNmQ1ZGMxOTFlNjczYjVhYWZhNTZkZTk1
Zi4uYzMwNjQ2NzQ4OGIwN2FjYWJiZDE3ZWNhYzhiNmExNTgyNjI0MjNkMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5H
TC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVu
c2lvbnNHTE9wZW5HTC5jcHAKQEAgLTQ4LDIyICs0OCw2IEBAIEV4dGVuc2lvbnNHTE9wZW5HTDo6
RXh0ZW5zaW9uc0dMT3BlbkdMKEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiBjb250ZXh0LCBib29s
IHVzCiBFeHRlbnNpb25zR0xPcGVuR0w6On5FeHRlbnNpb25zR0xPcGVuR0woKSA9IGRlZmF1bHQ7
CiAKIAotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0w6OmJsaXRGcmFtZWJ1ZmZlckFOR0xFKEdDR0xp
bnQgc3JjWDAsIEdDR0xpbnQgc3JjWTAsIEdDR0xpbnQgc3JjWDEsIEdDR0xpbnQgc3JjWTEsIEdD
R0xpbnQgZHN0WDAsIEdDR0xpbnQgZHN0WTAsIEdDR0xpbnQgZHN0WDEsIEdDR0xpbnQgZHN0WTEs
IEdDR0xiaXRmaWVsZCBtYXNrLCBHQ0dMZW51bSBmaWx0ZXIpCi17Ci0gICAgaWYgKCFtX2NvbnRl
eHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICA6OmdsQmxp
dEZyYW1lYnVmZmVyRVhUKHNyY1gwLCBzcmNZMCwgc3JjWDEsIHNyY1kxLCBkc3RYMCwgZHN0WTAs
IGRzdFgxLCBkc3RZMSwgbWFzaywgZmlsdGVyKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xPcGVu
R0w6OnJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKEdDR0xlbnVtIHRhcmdldCwg
R0NHTHNpemVpIHNhbXBsZXMsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lk
dGgsIEdDR0xzaXplaSBoZWlnaHQpCi17Ci0gICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0
Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICA6OmdsUmVuZGVyYnVmZmVyU3RvcmFn
ZU11bHRpc2FtcGxlRVhUKHRhcmdldCwgc2FtcGxlcywgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBo
ZWlnaHQpOwotfQotCiBQbGF0Zm9ybUdMT2JqZWN0IEV4dGVuc2lvbnNHTE9wZW5HTDo6Y3JlYXRl
VmVydGV4QXJyYXlPRVMoKQogewogICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJl
bnQoKSkKQEAgLTEyNywyNCArMTExLDYgQEAgdm9pZCBFeHRlbnNpb25zR0xPcGVuR0w6OmJpbmRW
ZXJ0ZXhBcnJheU9FUyhQbGF0Zm9ybUdMT2JqZWN0IGFycmF5KQogI2VuZGlmCiB9CiAKLXZvaWQg
RXh0ZW5zaW9uc0dMT3BlbkdMOjppbnNlcnRFdmVudE1hcmtlckVYVChjb25zdCBTdHJpbmcmKQot
ewotICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQgdGhpcyBmdW5jdGlvbiBhbmQgYWRkIEdMX0VYVF9k
ZWJ1Z19tYXJrZXIgaW4gc3VwcG9ydHMoKS4KLSAgICByZXR1cm47Ci19Ci0KLXZvaWQgRXh0ZW5z
aW9uc0dMT3BlbkdMOjpwdXNoR3JvdXBNYXJrZXJFWFQoY29uc3QgU3RyaW5nJikKLXsKLSAgICAv
LyBGSVhNRTogaW1wbGVtZW50IHRoaXMgZnVuY3Rpb24gYW5kIGFkZCBHTF9FWFRfZGVidWdfbWFy
a2VyIGluIHN1cHBvcnRzKCkuCi0gICAgcmV0dXJuOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9w
ZW5HTDo6cG9wR3JvdXBNYXJrZXJFWFQodm9pZCkKLXsKLSAgICAvLyBGSVhNRTogaW1wbGVtZW50
IHRoaXMgZnVuY3Rpb24gYW5kIGFkZCBHTF9FWFRfZGVidWdfbWFya2VyIGluIHN1cHBvcnRzKCku
Ci0gICAgcmV0dXJuOwotfQotCiBib29sIEV4dGVuc2lvbnNHTE9wZW5HTDo6c3VwcG9ydHNFeHRl
bnNpb24oY29uc3QgU3RyaW5nJiBuYW1lKQogewogICAgIC8vIEdMX0FOR0xFX2ZyYW1lYnVmZmVy
X2JsaXQgYW5kIEdMX0FOR0xFX2ZyYW1lYnVmZmVyX211bHRpc2FtcGxlIGFyZSAiZmFrZSIuIFRo
ZXkgYXJlIGltcGxlbWVudGVkIHVzaW5nIG90aGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMLmgKaW5k
ZXggNDc1MDIyNmVjZWNlZjQ0Mzk2ZTk5Mzg2NzZjYjYzOWJlODM0MzdiNi4uMGFkYmQ3MDUwYjdl
M2Y3N2UwMTg4OTQzMzJmZmM4N2NmMzBkOTBjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuaApA
QCAtNDAsMTYgKzQwLDEwIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5FeHRlbnNpb25zR0xPcGVu
R0woKTsKIAogICAgIC8vIEV4dGVuc2lvbnNHTCBtZXRob2RzLgotICAgIHZvaWQgYmxpdEZyYW1l
YnVmZmVyQU5HTEUoR0NHTGludCBzcmNYMCwgR0NHTGludCBzcmNZMCwgR0NHTGludCBzcmNYMSwg
R0NHTGludCBzcmNZMSwgR0NHTGludCBkc3RYMCwgR0NHTGludCBkc3RZMCwgR0NHTGludCBkc3RY
MSwgR0NHTGludCBkc3RZMSwgR0NHTGJpdGZpZWxkIG1hc2ssIEdDR0xlbnVtIGZpbHRlcikgb3Zl
cnJpZGU7Ci0gICAgdm9pZCByZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVBTkdMRShHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xzaXplaSBzYW1wbGVzLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwg
R0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KSBvdmVycmlkZTsKLQogICAgIFBsYXRm
b3JtR0xPYmplY3QgY3JlYXRlVmVydGV4QXJyYXlPRVMoKSBvdmVycmlkZTsKICAgICB2b2lkIGRl
bGV0ZVZlcnRleEFycmF5T0VTKFBsYXRmb3JtR0xPYmplY3QpIG92ZXJyaWRlOwogICAgIEdDR0xi
b29sZWFuIGlzVmVydGV4QXJyYXlPRVMoUGxhdGZvcm1HTE9iamVjdCkgb3ZlcnJpZGU7CiAgICAg
dm9pZCBiaW5kVmVydGV4QXJyYXlPRVMoUGxhdGZvcm1HTE9iamVjdCkgb3ZlcnJpZGU7Ci0gICAg
dm9pZCBpbnNlcnRFdmVudE1hcmtlckVYVChjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKLSAgICB2
b2lkIHB1c2hHcm91cE1hcmtlckVYVChjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKLSAgICB2b2lk
IHBvcEdyb3VwTWFya2VyRVhUKHZvaWQpIG92ZXJyaWRlOwogICAgIHZvaWQgZHJhd0J1ZmZlcnNF
WFQoR0NHTFNwYW48Y29uc3QgR0NHTGVudW0+KSBvdmVycmlkZTsKIAogICAgIHZvaWQgZHJhd0Fy
cmF5c0luc3RhbmNlZEFOR0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xpbnQgZmlyc3QsIEdDR0xzaXpl
aSBjb3VudCwgR0NHTHNpemVpIHByaW1jb3VudCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29t
bW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNp
b25zR0xPcGVuR0xDb21tb24uY3BwCmluZGV4IDY5M2ZiOTNhNjdmYmM4NDA3MDgwNDgyYzhlZWJl
MTY4MTcxMjczYjAuLjMzMmM4MjQyNDk3MjRiYjk2MzZlYWFiZWEwM2MyYzM3NThlMDE2ZmYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNp
b25zR0xPcGVuR0xDb21tb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uY3BwCkBAIC0yNTQsMTg1ICsyNTQs
NiBAQCB2b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0blVuaWZvcm1pdkVYVChHQ0dM
dWludCwgaW50LCBHQ0dMc2l6ZWksIEdDR0xpbgogICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdM
RXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwogfQogCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5H
TENvbW1vbjo6cmVhZFBpeGVsc1JvYnVzdEFOR0xFKGludCwgaW50LCBHQ0dMc2l6ZWksIEdDR0xz
aXplaSwgR0NHTGVudW0sIEdDR0xlbnVtLCBHQ0dMc2l6ZWksIEdDR0xzaXplaSAqLCBHQ0dMc2l6
ZWkgKiwgR0NHTHNpemVpICosIHZvaWQgKikKLXsKLSAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVH
TEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xPcGVu
R0xDb21tb246OnRleFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTGVudW0sIEdDR0xlbnVtLCBH
Q0dMc2l6ZWksIGNvbnN0IEdDR0xmbG9hdCAqKQotewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6
ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9w
ZW5HTENvbW1vbjo6dGV4UGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51bSwgR0NHTGVudW0s
IEdDR0xzaXplaSwgY29uc3QgR0NHTGludCAqKQotewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6
ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9w
ZW5HTENvbW1vbjo6Z2V0UXVlcnlpdlJvYnVzdEFOR0xFKEdDR0xlbnVtLCBHQ0dMZW51bSwgR0NH
THNpemVpLCBHQ0dMc2l6ZWkgKiwgR0NHTGludCAqKQotewotICAgIG1fY29udGV4dC0+c3ludGhl
c2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi12b2lkIEV4dGVuc2lvbnNH
TE9wZW5HTENvbW1vbjo6Z2V0UXVlcnlPYmplY3R1aXZSb2J1c3RBTkdMRShHQ0dMdWludCwgR0NH
TGVudW0sIEdDR0xzaXplaSwgR0NHTHNpemVpICosIEdDR0x1aW50ICopCi17Ci0gICAgbV9jb250
ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Ci19Ci0KLXZvaWQg
RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRCdWZmZXJQb2ludGVydlJvYnVzdEFOR0xFKEdD
R0xlbnVtLCBHQ0dMZW51bSwgR0NHTHNpemVpLCBHQ0dMc2l6ZWkgKiwgdm9pZCAqKikKLXsKLSAg
ICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLX0K
LQotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFZlcnRleEF0dHJpYklpdlJvYnVz
dEFOR0xFKEdDR0x1aW50LCBHQ0dMZW51bSwgR0NHTHNpemVpLCBHQ0dMc2l6ZWkgKiwgR0NHTGlu
dCAqKQotewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVS
QVRJT04pOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0VmVydGV4QXR0
cmliSXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50LCBHQ0dMZW51bSwgR0NHTHNpemVpLCBHQ0dMc2l6
ZWkgKiwgR0NHTHVpbnQgKikKLXsKLSAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdM
X0lOVkFMSURfT1BFUkFUSU9OKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246
OmdldFVuaWZvcm11aXZSb2J1c3RBTkdMRShHQ0dMdWludCwgaW50LCBHQ0dMc2l6ZWksIEdDR0xz
aXplaSAqLCBHQ0dMdWludCAqKQotewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3Io
R0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1v
bjo6Z2V0QnVmZmVyUGFyYW1ldGVyaTY0dlJvYnVzdEFOR0xFKEdDR0xlbnVtLCBHQ0dMZW51bSwg
R0NHTHNpemVpLCBHQ0dMc2l6ZWkgKiwgR0NHTGludDY0ICopCi17Ci0gICAgbV9jb250ZXh0LT5z
eW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Ci19Ci0KLXZvaWQgRXh0ZW5z
aW9uc0dMT3BlbkdMQ29tbW9uOjpzYW1wbGVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMdWlu
dCwgR0NHTGVudW0sIEdDR0xzaXplaSwgY29uc3QgR0NHTGludCAqKQotewotICAgIG1fY29udGV4
dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi12b2lkIEV4
dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6c2FtcGxlclBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NH
THVpbnQsIEdDR0xlbnVtLCBHQ0dMc2l6ZWksIGNvbnN0IEdDR0xmbG9hdCAqKQotewotICAgIG1f
Y29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi12
b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0U2FtcGxlclBhcmFtZXRlcml2Um9idXN0
QU5HTEUoR0NHTHVpbnQsIEdDR0xlbnVtLCBHQ0dMc2l6ZWksIEdDR0xzaXplaSAqLCBHQ0dMaW50
ICopCi17Ci0gICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJB
VElPTik7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRTYW1wbGVyUGFy
YW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dMdWludCwgR0NHTGVudW0sIEdDR0xzaXplaSwgR0NHTHNp
emVpICosIEdDR0xmbG9hdCAqKQotewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3Io
R0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi0KLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29t
bW9uOjpnZXRGcmFtZWJ1ZmZlclBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0sIEdDR0xl
bnVtLCBHQ0dMc2l6ZWksIEdDR0xzaXplaSAqLCBHQ0dMaW50ICopCi17Ci0gICAgbV9jb250ZXh0
LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Ci19Ci0KLXZvaWQgRXh0
ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRQcm9ncmFtSW50ZXJmYWNlaXZSb2J1c3RBTkdMRShH
Q0dMdWludCwgR0NHTGVudW0sIEdDR0xlbnVtLCBHQ0dMc2l6ZWksIEdDR0xzaXplaSAqLCBHQ0dM
aW50ICopCi17Ci0gICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09Q
RVJBVElPTik7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRCb29sZWFu
aV92Um9idXN0QU5HTEUoR0NHTGVudW0sIEdDR0x1aW50LCBHQ0dMc2l6ZWksIEdDR0xzaXplaSAq
LCBHQ0dMYm9vbGVhbiAqKQotewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xf
SU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6
Z2V0TXVsdGlzYW1wbGVmdlJvYnVzdEFOR0xFKEdDR0xlbnVtLCBHQ0dMdWludCwgR0NHTHNpemVp
LCBHQ0dMc2l6ZWkgKiwgR0NHTGZsb2F0ICopCi17Ci0gICAgbV9jb250ZXh0LT5zeW50aGVzaXpl
R0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMT3Bl
bkdMQ29tbW9uOjpnZXRUZXhMZXZlbFBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0sIGlu
dCwgR0NHTGVudW0sIEdDR0xzaXplaSwgR0NHTHNpemVpICosIEdDR0xpbnQgKikKLXsKLSAgICBt
X2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLX0KLQot
dm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFRleExldmVsUGFyYW1ldGVyZnZSb2J1
c3RBTkdMRShHQ0dMZW51bSwgaW50LCBHQ0dMZW51bSwgR0NHTHNpemVpLCBHQ0dMc2l6ZWkgKiwg
R0NHTGZsb2F0ICopCi17Ci0gICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZB
TElEX09QRVJBVElPTik7Ci19Ci0KLQotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246Omdl
dFBvaW50ZXJ2Um9idXN0QU5HTEVSb2J1c3RBTkdMRShHQ0dMZW51bSwgR0NHTHNpemVpLCBHQ0dM
c2l6ZWkgKiwgdm9pZCAqKikKLXsKLSAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdM
X0lOVkFMSURfT1BFUkFUSU9OKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246
OmdldG5Vbmlmb3JtZnZSb2J1c3RBTkdMRShHQ0dMdWludCwgaW50LCBHQ0dMc2l6ZWksIEdDR0xz
aXplaSAqLCBHQ0dMZmxvYXQgKikKLXsKLSAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9y
KEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21t
b246OmdldG5Vbmlmb3JtaXZSb2J1c3RBTkdMRShHQ0dMdWludCwgaW50LCBHQ0dMc2l6ZWksIEdD
R0xzaXplaSAqLCBHQ0dMaW50ICopCi17Ci0gICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJv
cihHTF9JTlZBTElEX09QRVJBVElPTik7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29t
bW9uOjpnZXRuVW5pZm9ybXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50LCBpbnQsIEdDR0xzaXplaSwg
R0NHTHNpemVpICosIEdDR0x1aW50ICopCi17Ci0gICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xF
cnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdM
Q29tbW9uOjp0ZXhQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRShHQ0dMZW51bSwgR0NHTGVudW0sIEdD
R0xzaXplaSwgY29uc3QgR0NHTGludCAqKQotewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdM
RXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5H
TENvbW1vbjo6dGV4UGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFKEdDR0xlbnVtLCBHQ0dMZW51bSwg
R0NHTHNpemVpLCBjb25zdCBHQ0dMdWludCAqKQotewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6
ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9w
ZW5HTENvbW1vbjo6Z2V0VGV4UGFyYW1ldGVySWl2Um9idXN0QU5HTEUoR0NHTGVudW0sIEdDR0xl
bnVtLCBHQ0dMc2l6ZWksIEdDR0xzaXplaSAqLCBHQ0dMaW50ICopCi17Ci0gICAgbV9jb250ZXh0
LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Ci19Ci0KLXZvaWQgRXh0
ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRUZXhQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUoR0NH
TGVudW0sIEdDR0xlbnVtLCBHQ0dMc2l6ZWksIEdDR0xzaXplaSAqLCBHQ0dMdWludCAqKQotewot
ICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwot
fQotCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6c2FtcGxlclBhcmFtZXRlcklpdlJv
YnVzdEFOR0xFKEdDR0x1aW50LCBHQ0dMZW51bSwgR0NHTHNpemVpLCBjb25zdCBHQ0dMaW50ICop
Ci17Ci0gICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElP
Tik7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpzYW1wbGVyUGFyYW1ldGVy
SXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50LCBHQ0dMZW51bSwgR0NHTHNpemVpLCBjb25zdCBHQ0dM
dWludCAqKQotewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9P
UEVSQVRJT04pOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0U2FtcGxl
clBhcmFtZXRlcklpdlJvYnVzdEFOR0xFKEdDR0x1aW50LCBHQ0dMZW51bSwgR0NHTHNpemVpLCBH
Q0dMc2l6ZWkgKiwgR0NHTGludCAqKQotewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJy
b3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENv
bW1vbjo6Z2V0U2FtcGxlclBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRShHQ0dMdWludCwgR0NHTGVu
dW0sIEdDR0xzaXplaSwgR0NHTHNpemVpICosIEdDR0x1aW50ICopCi17Ci0gICAgbV9jb250ZXh0
LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Ci19Ci0KLQotdm9pZCBF
eHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFF1ZXJ5T2JqZWN0aXZSb2J1c3RBTkdMRShHQ0dM
dWludCwgR0NHTGVudW0sIEdDR0xzaXplaSwgR0NHTHNpemVpICosIEdDR0xpbnQgKikKLXsKLSAg
ICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLX0K
LQotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFF1ZXJ5T2JqZWN0aTY0dlJvYnVz
dEFOR0xFKEdDR0x1aW50LCBHQ0dMZW51bSwgR0NHTHNpemVpLCBHQ0dMc2l6ZWkgKiwgR0NHTGlu
dDY0ICopCi17Ci0gICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09Q
RVJBVElPTik7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRRdWVyeU9i
amVjdHVpNjR2Um9idXN0QU5HTEUoR0NHTHVpbnQsIEdDR0xlbnVtLCBHQ0dMc2l6ZWksIEdDR0xz
aXplaSAqLCBHQ0dMdWludDY0ICopCi17Ci0gICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJv
cihHTF9JTlZBTElEX09QRVJBVElPTik7Ci19Ci0KLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQog
CiAjZW5kaWYgLy8gRU5BQkxFKEdSQVBISUNTX0NPTlRFWFRfR0wpICYmIChVU0UoT1BFTkdMKSB8
fCBVU0UoT1BFTkdMX0VTKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uaAppbmRl
eCAzZjEwNDAxNjJmZmEwN2EyZGMxMzBhYmIyMmZiMWIxZmZjM2ZkZjIwLi4xMDE4YTE3ZWI4OGY3
ZDE5YTI4NGU2ZDUzMzRlN2E4MmI4ZjZhYzNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5H
TENvbW1vbi5oCkBAIC01NSw1OCArNTUsMTggQEAgcHVibGljOgogICAgIFN0cmluZyBnZXRUcmFu
c2xhdGVkU2hhZGVyU291cmNlQU5HTEUoUGxhdGZvcm1HTE9iamVjdCkgb3ZlcnJpZGU7CiAKICAg
ICAvLyBFWFQgUm9idXN0bmVzcyAtIHVzZXMgZ2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQigpCi0g
ICAgdm9pZCByZWFkblBpeGVsc0VYVChpbnQgeCwgaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NH
THNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkg
YnVmU2l6ZSwgdm9pZCAqZGF0YSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRuVW5pZm9ybWZ2RVhU
KEdDR0x1aW50IHByb2dyYW0sIGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIGZsb2F0
ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0blVuaWZvcm1pdkVYVChHQ0dMdWludCBw
cm9ncmFtLCBpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBpbnQgKnBhcmFtcykgb3Zl
cnJpZGU7Ci0KLSAgICBib29sIGlzTlZJRElBKCkgb3ZlcnJpZGUgeyByZXR1cm4gbV9pc05WSURJ
QTsgfQotICAgIGJvb2wgaXNBTUQoKSBvdmVycmlkZSB7IHJldHVybiBtX2lzQU1EOyB9Ci0gICAg
Ym9vbCBpc0ludGVsKCkgb3ZlcnJpZGUgeyByZXR1cm4gbV9pc0ludGVsOyB9Ci0gICAgYm9vbCBp
c0ltYWdpbmF0aW9uKCkgb3ZlcnJpZGUgeyByZXR1cm4gbV9pc0ltYWdpbmF0aW9uOyB9Ci0gICAg
U3RyaW5nIHZlbmRvcigpIG92ZXJyaWRlIHsgcmV0dXJuIG1fdmVuZG9yOyB9Ci0KLSAgICBib29s
IHJlcXVpcmVzQnVpbHRJbkZ1bmN0aW9uRW11bGF0aW9uKCkgb3ZlcnJpZGUgeyByZXR1cm4gbV9y
ZXF1aXJlc0J1aWx0SW5GdW5jdGlvbkVtdWxhdGlvbjsgfQotICAgIGJvb2wgcmVxdWlyZXNSZXN0
cmljdGVkTWF4aW11bVRleHR1cmVTaXplKCkgb3ZlcnJpZGUgeyByZXR1cm4gbV9yZXF1aXJlc1Jl
c3RyaWN0ZWRNYXhpbXVtVGV4dHVyZVNpemU7IH0KLQotICAgIC8vIEdMX0FOR0xFX3JvYnVzdF9j
bGllbnRfbWVtb3J5Ci0gICAgdm9pZCByZWFkUGl4ZWxzUm9idXN0QU5HTEUoaW50IHgsIGludCB5
LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NH
TGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMc2l6
ZWkgKmNvbHVtbnMsIEdDR0xzaXplaSAqcm93cywgdm9pZCAqcGl4ZWxzKSBvdmVycmlkZTsKLSAg
ICB2b2lkIHRleFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51
bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xmbG9hdCAqcGFyYW1zKSBvdmVy
cmlkZTsKLSAgICB2b2lkIHRleFBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xpbnQgKnBhcmFt
cykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRRdWVyeWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3Ro
LCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0UXVlcnlPYmplY3R1aXZS
b2J1c3RBTkdMRShHQ0dMdWludCBpZCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXpl
LCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHVpbnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9p
ZCBnZXRCdWZmZXJQb2ludGVydlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0g
cG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgdm9pZCAqKnBhcmFt
cykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJJaXZSb2J1c3RBTkdMRShHQ0dM
dWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkg
Kmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldFZlcnRleEF0
dHJpYkl1aXZSb2J1c3RBTkdMRShHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xz
aXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHVpbnQgKnBhcmFtcykgb3ZlcnJp
ZGU7Ci0gICAgdm9pZCBnZXRVbmlmb3JtdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwg
aW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0x1
aW50ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0QnVmZmVyUGFyYW1ldGVyaTY0dlJv
YnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZT
aXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludDY0ICpwYXJhbXMpIG92ZXJyaWRlOwotICAg
IHZvaWQgc2FtcGxlclBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NH
TGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMaW50ICpwYXJhbSkgb3Zl
cnJpZGU7Ci0gICAgdm9pZCBzYW1wbGVyUGFyYW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dMdWludCBz
YW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xmbG9h
dCAqcGFyYW0pIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0U2FtcGxlclBhcmFtZXRlcml2Um9idXN0
QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXpl
LCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lk
IGdldFNhbXBsZXJQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xl
bnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xmbG9h
dCAqcGFyYW1zKSBvdmVycmlkZTsKLQotICAgIHZvaWQgZ2V0RnJhbWVidWZmZXJQYXJhbWV0ZXJp
dlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBi
dWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAg
ICB2b2lkIGdldFByb2dyYW1JbnRlcmZhY2VpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0s
IEdDR0xlbnVtIHByb2dyYW1JbnRlcmZhY2UsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVm
U2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAg
dm9pZCBnZXRCb29sZWFuaV92Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMdWludCBp
bmRleCwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMYm9vbGVhbiAq
ZGF0YSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRNdWx0aXNhbXBsZWZ2Um9idXN0QU5HTEUoR0NH
TGVudW0gcG5hbWUsIEdDR0x1aW50IGluZGV4LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVp
ICpsZW5ndGgsIEdDR0xmbG9hdCAqdmFsKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldFRleExldmVs
UGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIGludCBsZXZlbCwgR0NHTGVu
dW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAq
cGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldFRleExldmVsUGFyYW1ldGVyZnZSb2J1c3RB
TkdMRShHQ0dMZW51bSB0YXJnZXQsIGludCBsZXZlbCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXpl
aSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGZsb2F0ICpwYXJhbXMpIG92ZXJyaWRl
OwotCi0gICAgdm9pZCBnZXRQb2ludGVydlJvYnVzdEFOR0xFUm9idXN0QU5HTEUoR0NHTGVudW0g
cG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgdm9pZCAqKnBhcmFt
cykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRuVW5pZm9ybWZ2Um9idXN0QU5HTEUoR0NHTHVpbnQg
cHJvZ3JhbSwgaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5n
dGgsIEdDR0xmbG9hdCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldG5Vbmlmb3JtaXZS
b2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZT
aXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2
b2lkIGdldG5Vbmlmb3JtdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgaW50IGxvY2F0
aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0x1aW50ICpwYXJh
bXMpIG92ZXJyaWRlOwotICAgIHZvaWQgdGV4UGFyYW1ldGVySWl2Um9idXN0QU5HTEUoR0NHTGVu
dW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xp
bnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCB0ZXhQYXJhbWV0ZXJJdWl2Um9idXN0QU5H
TEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNv
bnN0IEdDR0x1aW50ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0VGV4UGFyYW1ldGVy
SWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVp
IGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJyaWRlOwot
ICAgIHZvaWQgZ2V0VGV4UGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwg
R0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NH
THVpbnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzYW1wbGVyUGFyYW1ldGVySWl2Um9i
dXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZT
aXplLCBjb25zdCBHQ0dMaW50ICpwYXJhbSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzYW1wbGVyUGFy
YW1ldGVySXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBH
Q0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTHVpbnQgKnBhcmFtKSBvdmVycmlkZTsKLSAgICB2
b2lkIGdldFNhbXBsZXJQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBH
Q0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dM
aW50ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0U2FtcGxlclBhcmFtZXRlckl1aXZS
b2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1
ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMdWludCAqcGFyYW1zKSBvdmVycmlkZTsKLQot
ICAgIHZvaWQgZ2V0UXVlcnlPYmplY3RpdlJvYnVzdEFOR0xFKEdDR0x1aW50IGlkLCBHQ0dMZW51
bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpw
YXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0UXVlcnlPYmplY3RpNjR2Um9idXN0QU5HTEUo
R0NHTHVpbnQgaWQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVp
ICpsZW5ndGgsIEdDR0xpbnQ2NCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldFF1ZXJ5
T2JqZWN0dWk2NHZSb2J1c3RBTkdMRShHQ0dMdWludCBpZCwgR0NHTGVudW0gcG5hbWUsIEdDR0xz
aXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHVpbnQ2NCAqcGFyYW1zKSBvdmVy
cmlkZTsKKyAgICB2b2lkIHJlYWRuUGl4ZWxzRVhUKGludCB4LCBpbnQgeSwgR0NHTHNpemVpIHdp
ZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdD
R0xzaXplaSBidWZTaXplLCB2b2lkICpkYXRhKTsKKyAgICB2b2lkIGdldG5Vbmlmb3JtZnZFWFQo
R0NHTHVpbnQgcHJvZ3JhbSwgaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgZmxvYXQg
KnBhcmFtcyk7CisgICAgdm9pZCBnZXRuVW5pZm9ybWl2RVhUKEdDR0x1aW50IHByb2dyYW0sIGlu
dCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIGludCAqcGFyYW1zKTsKKworICAgIGJvb2wg
aXNOVklESUEoKSBjb25zdCB7IHJldHVybiBtX2lzTlZJRElBOyB9CisgICAgYm9vbCBpc0FNRCgp
IGNvbnN0IHsgcmV0dXJuIG1faXNBTUQ7IH0KKyAgICBib29sIGlzSW50ZWwoKSBjb25zdCB7IHJl
dHVybiBtX2lzSW50ZWw7IH0KKyAgICBib29sIGlzSW1hZ2luYXRpb24oKSBjb25zdCB7IHJldHVy
biBtX2lzSW1hZ2luYXRpb247IH0KKyAgICBTdHJpbmcgdmVuZG9yKCkgY29uc3QgeyByZXR1cm4g
bV92ZW5kb3I7IH0KKworICAgIGJvb2wgcmVxdWlyZXNCdWlsdEluRnVuY3Rpb25FbXVsYXRpb24o
KSBjb25zdCB7IHJldHVybiBtX3JlcXVpcmVzQnVpbHRJbkZ1bmN0aW9uRW11bGF0aW9uOyB9Cisg
ICAgYm9vbCByZXF1aXJlc1Jlc3RyaWN0ZWRNYXhpbXVtVGV4dHVyZVNpemUoKSBjb25zdCB7IHJl
dHVybiBtX3JlcXVpcmVzUmVzdHJpY3RlZE1heGltdW1UZXh0dXJlU2l6ZTsgfQogCiBwcm90ZWN0
ZWQ6CiAgICAgZnJpZW5kIGNsYXNzIEV4dGVuc2lvbnNHTE9wZW5HTEVTOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5H
TEVTLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNp
b25zR0xPcGVuR0xFUy5jcHAKaW5kZXggZTFlNDNiZjUzOTI4ODVhMjRmYmIzM2NiMjZiNWY2ZTQ5
MWZiZTA3My4uMDdkMDk3YzJjNTVjMzEyMGM0ZGVmZmE5YmI2YWUyNjRiNGJlNDhkNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNH
TE9wZW5HTEVTLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVu
Z2wvRXh0ZW5zaW9uc0dMT3BlbkdMRVMuY3BwCkBAIC0xMDAsMTEgKzEwMCw2IEBAIHZvaWQgRXh0
ZW5zaW9uc0dMT3BlbkdMRVM6OnJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUlNRyh1bnNp
Z25lZCBsb25nIHRhcmdlCiAgICAgICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xf
SU5WQUxJRF9PUEVSQVRJT04pOwogfQogCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTEVTOjpibGl0
RnJhbWVidWZmZXJBTkdMRShHQ0dMaW50LCBHQ0dMaW50LCBHQ0dMaW50LCBHQ0dMaW50LCBHQ0dM
aW50LCBHQ0dMaW50LCBHQ0dMaW50LCBHQ0dMaW50LCBHQ0dMYml0ZmllbGQsIEdDR0xlbnVtKQot
ewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KIHZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMRVM6
OnJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NH
THNpemVpIHNhbXBsZXMsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgs
IEdDR0xzaXplaSBoZWlnaHQpCiB7CiAgICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3Vy
cmVudCgpKQpAQCAtMTE1LDIxICsxMTAsNiBAQCB2b2lkIEV4dGVuc2lvbnNHTE9wZW5HTEVTOjpy
ZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVBTkdMRShHQ0dMZW51bSB0YXJnZXQsCiAgICAg
ICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMRVM6Omlu
c2VydEV2ZW50TWFya2VyRVhUKGNvbnN0IFN0cmluZyYpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQo
KTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xFUzo6cHVzaEdyb3VwTWFya2VyRVhUKGNv
bnN0IFN0cmluZyYpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBFeHRlbnNp
b25zR0xPcGVuR0xFUzo6cG9wR3JvdXBNYXJrZXJFWFQodm9pZCkKLXsKLSAgICBub3RJbXBsZW1l
bnRlZCgpOwotfQotCiBQbGF0Zm9ybUdMT2JqZWN0IEV4dGVuc2lvbnNHTE9wZW5HTEVTOjpjcmVh
dGVWZXJ0ZXhBcnJheU9FUygpCiB7CiAgICAgaWYgKG1fZ2xHZW5WZXJ0ZXhBcnJheXNPRVMpIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRl
bnNpb25zR0xPcGVuR0xFUy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Bl
bmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVTLmgKaW5kZXggNWM3NjAzN2ZhN2JjNmU4ZWVlM2U2NzNm
OTlhN2RmYzJmNzhmYjRkMi4uNjkzZDAzYzczZjBlYzgzMTBiM2NkMmViOGEzZGQzYjMyNjk0NmZh
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4
dGVuc2lvbnNHTE9wZW5HTEVTLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVTLmgKQEAgLTc1LDExICs3NSw3IEBAIHB1Ymxp
YzoKIAogICAgIC8vIEV4dGVuc2lvbjNEIG1ldGhvZHMKICAgICBib29sIGlzRW5hYmxlZChjb25z
dCBTdHJpbmcmKSBvdmVycmlkZTsKLSAgICB2b2lkIGJsaXRGcmFtZWJ1ZmZlckFOR0xFKEdDR0xp
bnQgc3JjWDAsIEdDR0xpbnQgc3JjWTAsIEdDR0xpbnQgc3JjWDEsIEdDR0xpbnQgc3JjWTEsIEdD
R0xpbnQgZHN0WDAsIEdDR0xpbnQgZHN0WTAsIEdDR0xpbnQgZHN0WDEsIEdDR0xpbnQgZHN0WTEs
IEdDR0xiaXRmaWVsZCBtYXNrLCBHQ0dMZW51bSBmaWx0ZXIpIG92ZXJyaWRlOwotICAgIHZvaWQg
cmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dM
c2l6ZWkgc2FtcGxlcywgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwg
R0NHTHNpemVpIGhlaWdodCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBpbnNlcnRFdmVudE1hcmtlckVY
VChjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKLSAgICB2b2lkIHB1c2hHcm91cE1hcmtlckVYVChj
b25zdCBTdHJpbmcmKSBvdmVycmlkZTsKLSAgICB2b2lkIHBvcEdyb3VwTWFya2VyRVhUKHZvaWQp
IG92ZXJyaWRlOworICAgIHZvaWQgcmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5HTEUo
R0NHTGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWkgc2FtcGxlcywgR0NHTGVudW0gaW50ZXJuYWxmb3Jt
YXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCk7CiAKICAgICBQbGF0Zm9ybUdM
T2JqZWN0IGNyZWF0ZVZlcnRleEFycmF5T0VTKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkZWxldGVW
ZXJ0ZXhBcnJheU9FUyhQbGF0Zm9ybUdMT2JqZWN0KSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9w
ZW5HTC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNz
Q29udGV4dEdMT3BlbkdMLmgKaW5kZXggOWNlMDViZDU3ODQwOGQ5YjE4ZTg4OGE3MTAwZjdiMmIx
NTI5YjllNy4uZTM4YzUxM2NmNTViMTQzM2U4OTE4ZGM1Nzg4MDZlYjBhMTVlNGEzOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Bl
bmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgKQEAgLTQ4MSw4ICs0ODEsMTIgQEAgcHVibGlj
OgogICAgIC8vIGFsbCBtZXRob2RzIGl0IGNvbnRhaW5zIG1heSBuZWNlc3NhcmlseSBiZSBzdXBw
b3J0ZWQgb24gdGhlCiAgICAgLy8gY3VycmVudCBoYXJkd2FyZS4gTXVzdCBjYWxsIEV4dGVuc2lv
bnNHTDo6c3VwcG9ydHMoKSB0bwogICAgIC8vIGRldGVybWluZSB0aGlzLgorI2lmIFVTRShBTkdM
RSkKICAgICBFeHRlbnNpb25zR0wmIGdldEV4dGVuc2lvbnMoKSBmaW5hbDsKLQorI2Vsc2UKKyAg
ICAvLyBVc2UgY292YXJpYW50IHJldHVybiB0eXBlIGZvciBPUEVOR0wvT1BFTkdMX0VTCisgICAg
RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uJiBnZXRFeHRlbnNpb25zKCkgZmluYWw7CisjZW5kaWYK
ICAgICB2b2lkIHNldEZhaWxOZXh0R1BVU3RhdHVzQ2hlY2soKSBmaW5hbCB7IG1fZmFpbE5leHRT
dGF0dXNDaGVjayA9IHRydWU7IH0KIAogICAgIHVuc2lnbmVkIHRleHR1cmVTZWVkKEdDR0x1aW50
IHRleHR1cmUpIHsgcmV0dXJuIG1fc3RhdGUudGV4dHVyZVNlZWRDb3VudC5jb3VudCh0ZXh0dXJl
KTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Blbmds
L0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xCYXNlLmNwcAppbmRleCAx
M2JjYTc0ZWM4NjczNGZkZmQ2YmI3ODA5OTA0NmJhOGE4MTg1ZGFiLi41MzZjZTNhNGYyNjMwNDJl
NjYzYTNjYWQzZjI4YjJmMWUyZGFlMTU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xCYXNlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0xCYXNlLmNwcApAQCAtMTE2LDcgKzExNiw3IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OnJlc2hhcGVGQk9zKGNvbnN0IEludFNpemUmIHNpemUpCiAgICAgICAgIC8vIFdl
IGRvbid0IGFsbG93IHRoZSBsb2dpYyB3aGVyZSBzdGVuY2lsIGlzIHJlcXVpcmVkIGFuZCBkZXB0
aCBpcyBub3QuCiAgICAgICAgIC8vIFNlZSBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmFsaWRh
dGVBdHRyaWJ1dGVzLgogCi0gICAgICAgIEV4dGVuc2lvbnNHTCYgZXh0ZW5zaW9ucyA9IGdldEV4
dGVuc2lvbnMoKTsKKyAgICAgICAgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uJiBleHRlbnNpb25z
ID0gZ2V0RXh0ZW5zaW9ucygpOwogICAgICAgICAvLyBVc2UgYSAyNCBiaXQgZGVwdGggYnVmZmVy
IHdoZXJlIHdlIGtub3cgd2UgaGF2ZSBpdC4KICAgICAgICAgaWYgKGV4dGVuc2lvbnMuc3VwcG9y
dHMoIkdMX0VYVF9wYWNrZWRfZGVwdGhfc3RlbmNpbCIpKQogICAgICAgICAgICAgaW50ZXJuYWxE
ZXB0aFN0ZW5jaWxGb3JtYXQgPSBHTF9ERVBUSDI0X1NURU5DSUw4X0VYVDsKQEAgLTQxNyw3ICs0
MTcsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjbGVhckRlcHRoKEdDR0xjbGFt
cGYgZGVwdGgpCiB9CiAKICNpZiAhUExBVEZPUk0oR1RLKQotRXh0ZW5zaW9uc0dMJiBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6Z2V0RXh0ZW5zaW9ucygpCitFeHRlbnNpb25zR0xPcGVuR0xDb21t
b24mIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRFeHRlbnNpb25zKCkKIHsKICAgICBpZiAo
IW1fZXh0ZW5zaW9ucykKICAgICAgICAgbV9leHRlbnNpb25zID0gbWFrZVVuaXF1ZTxFeHRlbnNp
b25zR0xPcGVuR0w+KHRoaXMsIGlzR0xFUzJDb21wbGlhbnQoKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0xDb21tb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dy
YXBoaWNzQ29udGV4dEdMT3BlbkdMQ29tbW9uLmNwcAppbmRleCBlNzhiZjQ3NDNiOWNlMzk0Mzdm
YWMxNmRiNmJlMDA5ODViMGE1ODE1Li5lYjU1YjUxMzExMDQyMTljZTJlN2Y1NDY5NzUzNDFiM2Vl
N2YyZWUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVu
Z2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb21tb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvbW1vbi5j
cHAKQEAgLTExOCw3ICsxMTgsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2YWxp
ZGF0ZURlcHRoU3RlbmNpbChjb25zdCBjaGFyKiBwYWNrZWREZXB0aFN0ZW5jaQogewogICAgIGF1
dG8gYXR0cnMgPSBjb250ZXh0QXR0cmlidXRlcygpOwogCi0gICAgRXh0ZW5zaW9uc0dMJiBleHRl
bnNpb25zID0gZ2V0RXh0ZW5zaW9ucygpOworICAgIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbiYg
ZXh0ZW5zaW9ucyA9IGdldEV4dGVuc2lvbnMoKTsKICAgICBpZiAoYXR0cnMuc3RlbmNpbCkgewog
ICAgICAgICBpZiAoZXh0ZW5zaW9ucy5zdXBwb3J0cyhwYWNrZWREZXB0aFN0ZW5jaWxFeHRlbnNp
b24pKSB7CiAgICAgICAgICAgICBleHRlbnNpb25zLmVuc3VyZUVuYWJsZWQocGFja2VkRGVwdGhT
dGVuY2lsRXh0ZW5zaW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEVTLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEVTLmNw
cAppbmRleCBiODJkMTY0MTdjMmY1MTkxZDA0NDI0ODc0NmU3ODM4YTg2N2FlNTAyLi4wZTc4ZDA4
MzhjY2IxNmExYTAzZDM4YjU3MzcwOGUxOTVmZWEwYzUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xFUy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNz
Q29udGV4dEdMT3BlbkdMRVMuY3BwCkBAIC0yNTQsNyArMjU0LDcgQEAgdm9pZCBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6Y2xlYXJEZXB0aChHQ0dMY2xhbXBmIGRlcHRoKQogfQogCiAjaWYgIVBM
QVRGT1JNKEdUSykKLUV4dGVuc2lvbnNHTCYgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEV4
dGVuc2lvbnMoKQorRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uJiBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6Z2V0RXh0ZW5zaW9ucygpCiB7CiAgICAgaWYgKCFtX2V4dGVuc2lvbnMpCiAgICAgICAg
IG1fZXh0ZW5zaW9ucyA9IG1ha2VVbmlxdWU8RXh0ZW5zaW9uc0dMT3BlbkdMRVM+KHRoaXMsIGlz
R0xFUzJDb21wbGlhbnQoKSk7Cg==
</data>
<flag name="commit-queue"
          id="432712"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>415473</attachid>
            <date>2020-12-04 16:18:53 -0800</date>
            <delta_ts>2020-12-04 17:49:17 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-218896-20201204161851.patch</filename>
            <type>text/plain</type>
            <size>64077</size>
            <attacher name="Rini Patel">rini_patel</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwNDQzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2FlMjg5MzBiNzRmYmZk
NzMwMWQ2OGY5YjFiMGJjZjc4YTg2YzlmNy4uNzQ5OTYzMDhjMDQyOTg4YzhlYzhkMzg2ZGExNzNl
YzE0MDdlNzViMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyOSBAQAorMjAyMC0xMi0wNCAgUmlu
aSBQYXRlbCAgPHJpbmlfcGF0ZWxAYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZSB1bnVzZWQg
ZnVuY3Rpb25zIGZyb20gR3JhcGhpY3NDb250ZXh0R0wgYW5kIEV4dGVuc2lvbnNHTAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE4ODk2CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVtb3ZlIHVudXNlZCBm
dW5jdGlvbnMgZnJvbSBHcmFwaGljc0NvbnRleHRHTCBhbmQgRXh0ZW5zaW9uc0dMCisgICAgICAg
IFRoZXkncmUgZGVhZCBjb2RlIGFuZCBtYWtlIGl0IGhhcmRlciB0byBpbXBsZW1lbnQgdGhlIEdQ
VSBQcm9jZXNzIHZlcnNpb24uCisKKyAgICAgICAgLSBJZiB0aGUgZnVuY3Rpb24gaXMgdW51c2Vk
LCByZW1vdmUgaXQgZnVsbHkKKyAgICAgICAgLSBJZiB0aGUgZnVuY3Rpb24gaXMgdW51c2VkIGlu
IFVTRShBTkdMRSkgV2ViR0wgcGFydCwgcmVtb3ZlIHRoZSBmdW5jdGlvbiBmcm9tIEdyYXBoaWNz
Q29udGV4dEdMIGFuZCBBTkdMRSBHcmFwaGljc0NvbnRleHRHTE9wZW5HTAorCisgICAgICAgICog
aHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL0V4dGVuc2lvbnNHTC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lv
bnNHTEFOR0xFOjpFeHRlbnNpb25zR0xBTkdMRSk6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNp
b25zR0xBTkdMRTo6aW5pdGlhbGl6ZUF2YWlsYWJsZUV4dGVuc2lvbnMpOgorICAgICAgICAoV2Vi
Q29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmJsaXRGcmFtZWJ1ZmZlckFOR0xFKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpyZW5kZXJidWZmZXJTdG9yYWdl
TXVsdGlzYW1wbGVBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25z
R0xBTkdMRTo6aW5zZXJ0RXZlbnRNYXJrZXJFWFQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OnB1c2hHcm91cE1hcmtlckVYVCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6cG9wR3JvdXBNYXJrZXJFWFQpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OnJlYWRQaXhlbHNSb2J1
c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6
dGV4UGFyYW1ldGVyZnZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpF
eHRlbnNpb25zR0xBTkdMRTo6dGV4UGFyYW1ldGVyaXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6Z2V0UXVlcnlpdlJvYnVzdEFOR0xF
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpnZXRRdWVy
eU9iamVjdHVpdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVu
c2lvbnNHTEFOR0xFOjpnZXRCdWZmZXJQb2ludGVydlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpnZXRWZXJ0ZXhBdHRyaWJJaXZSb2J1
c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6
Z2V0VmVydGV4QXR0cmliSXVpdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpnZXRVbmlmb3JtdWl2Um9idXN0QU5HTEUpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldEJ1ZmZlclBhcmFtZXRl
cmk2NHZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25z
R0xBTkdMRTo6c2FtcGxlclBhcmFtZXRlcml2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OnNhbXBsZXJQYXJhbWV0ZXJmdlJvYnVzdEFO
R0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpnZXRT
YW1wbGVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpFeHRlbnNpb25zR0xBTkdMRTo6Z2V0U2FtcGxlclBhcmFtZXRlcmZ2Um9idXN0QU5HTEUpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldEZyYW1lYnVm
ZmVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpF
eHRlbnNpb25zR0xBTkdMRTo6Z2V0UHJvZ3JhbUludGVyZmFjZWl2Um9idXN0QU5HTEUpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldEJvb2xlYW5pX3ZS
b2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdM
RTo6Z2V0TXVsdGlzYW1wbGVmdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpnZXRUZXhMZXZlbFBhcmFtZXRlcml2Um9idXN0QU5HTEUp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldFRleExl
dmVsUGFyYW1ldGVyZnZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpF
eHRlbnNpb25zR0xBTkdMRTo6Z2V0UG9pbnRlcnZSb2J1c3RBTkdMRVJvYnVzdEFOR0xFKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpnZXRuVW5pZm9ybWZ2
Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5H
TEU6OmdldG5Vbmlmb3JtaXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpFeHRlbnNpb25zR0xBTkdMRTo6Z2V0blVuaWZvcm11aXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6dGV4UGFyYW1ldGVySWl2Um9i
dXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6
OnRleFBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpFeHRlbnNpb25zR0xBTkdMRTo6Z2V0VGV4UGFyYW1ldGVySWl2Um9idXN0QU5HTEUpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldFRleFBhcmFtZXRl
ckl1aXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25z
R0xBTkdMRTo6c2FtcGxlclBhcmFtZXRlcklpdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpzYW1wbGVyUGFyYW1ldGVySXVpdlJvYnVz
dEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpn
ZXRTYW1wbGVyUGFyYW1ldGVySWl2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldFNhbXBsZXJQYXJhbWV0ZXJJdWl2Um9idXN0QU5H
TEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldFF1
ZXJ5T2JqZWN0aXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRl
bnNpb25zR0xBTkdMRTo6Z2V0UXVlcnlPYmplY3RpNjR2Um9idXN0QU5HTEUpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldFF1ZXJ5T2JqZWN0dWk2NHZS
b2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUv
RXh0ZW5zaW9uc0dMQU5HTEUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wv
RXh0ZW5zaW9uc0dMT3BlbkdMLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9w
ZW5HTDo6YmxpdEZyYW1lYnVmZmVyQU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
RXh0ZW5zaW9uc0dMT3BlbkdMOjpyZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVBTkdMRSk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0w6Omluc2VydEV2
ZW50TWFya2VyRVhUKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9w
ZW5HTDo6cHVzaEdyb3VwTWFya2VyRVhUKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4
dGVuc2lvbnNHTE9wZW5HTDo6cG9wR3JvdXBNYXJrZXJFWFQpOiBEZWxldGVkLgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6cmVhZFBpeGVsc1Jv
YnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5H
TENvbW1vbjo6dGV4UGFyYW1ldGVyZnZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OnRleFBhcmFtZXRlcml2Um9idXN0QU5H
TEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9u
OjpnZXRRdWVyeWl2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0
ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRRdWVyeU9iamVjdHVpdlJvYnVzdEFOR0xFKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0QnVm
ZmVyUG9pbnRlcnZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRl
bnNpb25zR0xPcGVuR0xDb21tb246OmdldFZlcnRleEF0dHJpYklpdlJvYnVzdEFOR0xFKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0VmVy
dGV4QXR0cmliSXVpdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4
dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0VW5pZm9ybXVpdlJvYnVzdEFOR0xFKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0QnVmZmVy
UGFyYW1ldGVyaTY0dlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4
dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6c2FtcGxlclBhcmFtZXRlcml2Um9idXN0QU5HTEUpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpzYW1w
bGVyUGFyYW1ldGVyZnZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpF
eHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFNhbXBsZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xF
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6
Z2V0U2FtcGxlclBhcmFtZXRlcmZ2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRGcmFtZWJ1ZmZlclBhcmFtZXRlcml2
Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3Bl
bkdMQ29tbW9uOjpnZXRQcm9ncmFtSW50ZXJmYWNlaXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldEJvb2xlYW5pX3ZS
b2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVu
R0xDb21tb246OmdldE11bHRpc2FtcGxlZnZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFRleExldmVsUGFyYW1ldGVy
aXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xP
cGVuR0xDb21tb246OmdldFRleExldmVsUGFyYW1ldGVyZnZSb2J1c3RBTkdMRSk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFBvaW50ZXJ2
Um9idXN0QU5HTEVSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRl
bnNpb25zR0xPcGVuR0xDb21tb246OmdldG5Vbmlmb3JtZnZSb2J1c3RBTkdMRSk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldG5Vbmlmb3Jt
aXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xP
cGVuR0xDb21tb246OmdldG5Vbmlmb3JtdWl2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjp0ZXhQYXJhbWV0ZXJJaXZSb2J1
c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xD
b21tb246OnRleFBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFRleFBhcmFtZXRlcklpdlJvYnVz
dEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTENv
bW1vbjo6Z2V0VGV4UGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6c2FtcGxlclBhcmFtZXRlcklpdlJv
YnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5H
TENvbW1vbjo6c2FtcGxlclBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFNhbXBsZXJQYXJhbWV0
ZXJJaXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25z
R0xPcGVuR0xDb21tb246OmdldFNhbXBsZXJQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRRdWVy
eU9iamVjdGl2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5z
aW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRRdWVyeU9iamVjdGk2NHZSb2J1c3RBTkdMRSk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFF1ZXJ5
T2JqZWN0dWk2NHZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5oOgorICAgICAgICAoV2ViQ29y
ZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjppc05WSURJQSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmlzQU1EIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6aXNJbnRlbCBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmlzSW1hZ2luYXRpb24gY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjp2ZW5kb3Ig
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpyZXF1
aXJlc0J1aWx0SW5GdW5jdGlvbkVtdWxhdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpF
eHRlbnNpb25zR0xPcGVuR0xDb21tb246OnJlcXVpcmVzUmVzdHJpY3RlZE1heGltdW1UZXh0dXJl
U2l6ZSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lv
bnNHTE9wZW5HTEVTLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTEVT
OjpibGl0RnJhbWVidWZmZXJBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRl
bnNpb25zR0xPcGVuR0xFUzo6aW5zZXJ0RXZlbnRNYXJrZXJFWFQpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMRVM6OnB1c2hHcm91cE1hcmtlckVYVCk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xFUzo6cG9wR3JvdXBN
YXJrZXJFWFQpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9F
eHRlbnNpb25zR0xPcGVuR0xFUy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5n
bC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEJhc2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlc2hhcGVGQk9zKToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRFeHRlbnNpb25zKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb21tb24uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnZhbGlkYXRlRGVw
dGhTdGVuY2lsKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0xFUy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6Z2V0RXh0ZW5zaW9ucyk6CisKIDIwMjAtMTItMDQgIFBlbmcgTGl1ICA8cGVuZy5s
aXU2QGFwcGxlLmNvbT4KIAogICAgICAgICBbTVNFXSBNb3ZlIHRyYWNrIGJ1ZmZlciBtYW5hZ2Vt
ZW50IGZyb20gU291cmNlQnVmZmVyIHRvIFNvdXJjZUJ1ZmZlclByaXZhdGUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5j
cHAKaW5kZXggNzJjMjY0NDY2NmNmMDNhMmY1OWYxZTA5ZmU5MzI5M2NiODBiNmJhZS4uYjkzNGMx
ZTg5YzI1MWFjMGIwMDgzNzFmZjMxZmRiNGY5OTcxMjAwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKQEAg
LTc0MiwxMCArNzQyLDYgQEAgc3RkOjp1bmlxdWVfcHRyPFdlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2U+IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmNyZWF0ZShDYW4KICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAgICAgfQogCi0gICAgYXV0byYgZXh0ZW5zaW9ucyA9IGNvbnRleHQtPmdldEV4
dGVuc2lvbnMoKTsKLSAgICBpZiAoZXh0ZW5zaW9ucy5zdXBwb3J0cygiR0xfRVhUX2RlYnVnX21h
cmtlciJfcykpCi0gICAgICAgIGV4dGVuc2lvbnMucHVzaEdyb3VwTWFya2VyRVhUKCJXZWJHTFJl
bmRlcmluZ0NvbnRleHQiX3MpOwotCiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2U+IHJlbmRlcmluZ0NvbnRleHQ7CiAjaWYgRU5BQkxFKFdFQkdMMikKICAgICBp
ZiAodHlwZSA9PSAid2ViZ2wyIikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0V4dGVuc2lvbnNHTC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvRXh0ZW5zaW9uc0dMLmgKaW5kZXggYzRlNzc3OGRiNmE0NDhmZDBhNWU2NTE1OTFmZWVhMTQ1
Mzg2MzgyMy4uNjJkNTgzMDAwYTE1YzY3ZDJmOGE1MDhiNGZjNmI3ZTg4NGM0YjRkNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRXh0ZW5zaW9uc0dMLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRXh0ZW5zaW9uc0dMLmgKQEAgLTI3
OCwxMiArMjc4LDYgQEAgcHVibGljOgogICAgIC8vIGV4dGVybmFsbHkuCiAgICAgdmlydHVhbCBH
Q0dMaW50IGdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIoKSA9IDA7CiAKLSAgICAvLyBHTF9BTkdM
RV9mcmFtZWJ1ZmZlcl9ibGl0Ci0gICAgdmlydHVhbCB2b2lkIGJsaXRGcmFtZWJ1ZmZlckFOR0xF
KEdDR0xpbnQgc3JjWDAsIEdDR0xpbnQgc3JjWTAsIEdDR0xpbnQgc3JjWDEsIEdDR0xpbnQgc3Jj
WTEsIEdDR0xpbnQgZHN0WDAsIEdDR0xpbnQgZHN0WTAsIEdDR0xpbnQgZHN0WDEsIEdDR0xpbnQg
ZHN0WTEsIEdDR0xiaXRmaWVsZCBtYXNrLCBHQ0dMZW51bSBmaWx0ZXIpID0gMDsKLQotICAgIC8v
IEdMX0FOR0xFX2ZyYW1lYnVmZmVyX211bHRpc2FtcGxlCi0gICAgdmlydHVhbCB2b2lkIHJlbmRl
cmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVp
IHNhbXBsZXMsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xz
aXplaSBoZWlnaHQpID0gMDsKLQogICAgIC8vIEdMX09FU192ZXJ0ZXhfYXJyYXlfb2JqZWN0CiAg
ICAgdmlydHVhbCBQbGF0Zm9ybUdMT2JqZWN0IGNyZWF0ZVZlcnRleEFycmF5T0VTKCkgPSAwOwog
ICAgIHZpcnR1YWwgdm9pZCBkZWxldGVWZXJ0ZXhBcnJheU9FUyhQbGF0Zm9ybUdMT2JqZWN0KSA9
IDA7CkBAIC0yOTMsMTEgKzI4Nyw2IEBAIHB1YmxpYzoKICAgICAvLyBHTF9BTkdMRV90cmFuc2xh
dGVkX3NoYWRlcl9zb3VyY2UKICAgICB2aXJ0dWFsIFN0cmluZyBnZXRUcmFuc2xhdGVkU2hhZGVy
U291cmNlQU5HTEUoUGxhdGZvcm1HTE9iamVjdCkgPSAwOwogCi0gICAgLy8gR0xfRVhUX2RlYnVn
X21hcmtlcgotICAgIHZpcnR1YWwgdm9pZCBpbnNlcnRFdmVudE1hcmtlckVYVChjb25zdCBTdHJp
bmcmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHB1c2hHcm91cE1hcmtlckVYVChjb25zdCBTdHJp
bmcmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHBvcEdyb3VwTWFya2VyRVhUKCkgPSAwOwotCiAg
ICAgLy8gR0xfQVJCX2RyYXdfYnVmZmVycyAvIEdMX0VYVF9kcmF3X2J1ZmZlcnMKICAgICB2aXJ0
dWFsIHZvaWQgZHJhd0J1ZmZlcnNFWFQoR0NHTFNwYW48Y29uc3QgR0NHTGVudW0+IGJ1ZnMpID0g
MDsKIApAQCAtMzA2LDQ3ICsyOTUsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRyYXdF
bGVtZW50c0luc3RhbmNlZEFOR0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xzaXplaSBjb3VudCwgR0NH
TGVudW0gdHlwZSwgR0NHTHZvaWRwdHIgb2Zmc2V0LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KSA9IDA7
CiAgICAgdmlydHVhbCB2b2lkIHZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRShHQ0dMdWludCBpbmRl
eCwgR0NHTHVpbnQgZGl2aXNvcikgPSAwOwogCi0gICAgLy8gR0xfQU5HTEVfcm9idXN0X2NsaWVu
dF9tZW1vcnkKLSAgICB2aXJ0dWFsIHZvaWQgcmVhZFBpeGVsc1JvYnVzdEFOR0xFKEdDR0xpbnQg
eCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVt
IGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVu
Z3RoLCBHQ0dMc2l6ZWkqIGNvbHVtbnMsIEdDR0xzaXplaSogcm93cywgR0NHTHZvaWQqIHBpeGVs
cykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCB0ZXhQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0xl
bnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dM
ZmxvYXQqIHBhcmFtcykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCB0ZXhQYXJhbWV0ZXJpdlJvYnVz
dEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXpl
LCBjb25zdCBHQ0dMaW50KiBwYXJhbXMpID0gMDsKLQotICAgIHZpcnR1YWwgdm9pZCBnZXRRdWVy
eWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVp
IGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpID0gMDsKLSAgICB2
aXJ0dWFsIHZvaWQgZ2V0UXVlcnlPYmplY3R1aXZSb2J1c3RBTkdMRShHQ0dMdWludCBpZCwgR0NH
TGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHVp
bnQqIHBhcmFtcykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRCdWZmZXJQb2ludGVydlJvYnVz
dEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXpl
LCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHZvaWQqKiBwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFs
IHZvaWQgZ2V0VmVydGV4QXR0cmliSWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0xl
bnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQq
IHBhcmFtcykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJJdWl2Um9idXN0
QU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwg
R0NHTHNpemVpKiBsZW5ndGgsIEdDR0x1aW50KiBwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZv
aWQgZ2V0VW5pZm9ybXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9j
YXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHVpbnQqIHBh
cmFtcykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRCdWZmZXJQYXJhbWV0ZXJpNjR2Um9idXN0
QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUs
IEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50NjQqIHBhcmFtcykgPSAwOwotICAgIHZpcnR1YWwg
dm9pZCBzYW1wbGVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dM
ZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xpbnQqIHBhcmFtKSA9IDA7
Ci0gICAgdmlydHVhbCB2b2lkIHNhbXBsZXJQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0x1aW50
IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGZs
b2F0KiBwYXJhbSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRTYW1wbGVyUGFyYW1ldGVyaXZS
b2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1
ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpID0gMDsKLSAgICB2aXJ0
dWFsIHZvaWQgZ2V0U2FtcGxlclBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxl
ciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwg
R0NHTGZsb2F0KiBwYXJhbXMpID0gMDsKLQotICAgIHZpcnR1YWwgdm9pZCBnZXRGcmFtZWJ1ZmZl
clBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwg
R0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpID0g
MDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0UHJvZ3JhbUludGVyZmFjZWl2Um9idXN0QU5HTEUoR0NH
THVpbnQgcHJvZ3JhbSwgR0NHTGVudW0gcHJvZ3JhbUludGVyZmFjZSwgR0NHTGVudW0gcG5hbWUs
IEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1zKSA9
IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldEJvb2xlYW5pX3ZSb2J1c3RBTkdMRShHQ0dMZW51bSB0
YXJnZXQsIEdDR0x1aW50IGluZGV4LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5n
dGgsIEdDR0xib29sZWFuKiBkYXRhKSA9IDA7IC8vIE5PTElOVAotICAgIHZpcnR1YWwgdm9pZCBn
ZXRNdWx0aXNhbXBsZWZ2Um9idXN0QU5HTEUoR0NHTGVudW0gcG5hbWUsIEdDR0x1aW50IGluZGV4
LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xmbG9hdCogdmFsKSA9
IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldFRleExldmVsUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShH
Q0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkg
YnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykgPSAwOwotICAgIHZp
cnR1YWwgdm9pZCBnZXRUZXhMZXZlbFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdD
R0xzaXplaSogbGVuZ3RoLCBHQ0dMZmxvYXQqIHBhcmFtcykgPSAwOwotCi0gICAgdmlydHVhbCB2
b2lkIGdldFBvaW50ZXJ2Um9idXN0QU5HTEVSb2J1c3RBTkdMRShHQ0dMZW51bSBwbmFtZSwgR0NH
THNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMdm9pZCoqIHBhcmFtcykgPSAw
OwotICAgIHZpcnR1YWwgdm9pZCBnZXRuVW5pZm9ybWZ2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJv
Z3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVu
Z3RoLCBHQ0dMZmxvYXQqIHBhcmFtcykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRuVW5pZm9y
bWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNp
emVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpID0gMDsKLSAg
ICB2aXJ0dWFsIHZvaWQgZ2V0blVuaWZvcm11aXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFt
LCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgs
IEdDR0x1aW50KiBwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgdGV4UGFyYW1ldGVySWl2
Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1
ZlNpemUsIGNvbnN0IEdDR0xpbnQqIHBhcmFtcykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCB0ZXhQ
YXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwg
R0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0x1aW50KiBwYXJhbXMpID0gMDsKLSAgICB2aXJ0
dWFsIHZvaWQgZ2V0VGV4UGFyYW1ldGVySWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dM
aW50KiBwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0VGV4UGFyYW1ldGVySXVpdlJv
YnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZT
aXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHVpbnQqIHBhcmFtcykgPSAwOwotICAgIHZpcnR1
YWwgdm9pZCBzYW1wbGVyUGFyYW1ldGVySWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwg
R0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMaW50KiBwYXJhbSkg
PSAwOwotICAgIHZpcnR1YWwgdm9pZCBzYW1wbGVyUGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFKEdD
R0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3Qg
R0NHTHVpbnQqIHBhcmFtKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldFNhbXBsZXJQYXJhbWV0
ZXJJaXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNp
emVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpID0gMDsKLSAg
ICB2aXJ0dWFsIHZvaWQgZ2V0U2FtcGxlclBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRShHQ0dMdWlu
dCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSog
bGVuZ3RoLCBHQ0dMdWludCogcGFyYW1zKSA9IDA7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgZ2V0UXVl
cnlPYmplY3RpdlJvYnVzdEFOR0xFKEdDR0x1aW50IGlkLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNp
emVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpID0gMDsKLSAg
ICB2aXJ0dWFsIHZvaWQgZ2V0UXVlcnlPYmplY3RpNjR2Um9idXN0QU5HTEUoR0NHTHVpbnQgaWQs
IEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdD
R0xpbnQ2NCogcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldFF1ZXJ5T2JqZWN0dWk2
NHZSb2J1c3RBTkdMRShHQ0dMdWludCBpZCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZT
aXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHVpbnQ2NCogcGFyYW1zKSA9IDA7Ci0KICAgICAv
LyBPdGhlciBmdW5jdGlvbnMuCiAjaWYgIVVTRShBTkdMRSkKICAgICAvLyBFWFQgUm9idXN0bmVz
cyAtIHVzZXMgZ2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQgpAQCAtMzU0LDE2ICszMDIsNiBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGdldG5Vbmlmb3JtZnZFWFQoR0NHTHVpbnQgcHJvZ3Jh
bSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xmbG9hdCogcGFyYW1z
KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGdldG5Vbmlmb3JtaXZFWFQoR0NHTHVpbnQgcHJvZ3Jh
bSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xpbnQqIHBhcmFtcykg
PSAwOwogCi0gICAgdmlydHVhbCBib29sIGlzTlZJRElBKCkgPSAwOwotICAgIHZpcnR1YWwgYm9v
bCBpc0FNRCgpID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgaXNJbnRlbCgpID0gMDsKLSAgICB2aXJ0
dWFsIGJvb2wgaXNJbWFnaW5hdGlvbigpID0gMDsKLSAgICB2aXJ0dWFsIFN0cmluZyB2ZW5kb3Io
KSA9IDA7Ci0KLSAgICAvLyBTb21lIGNvbmZpZ3VyYXRpb25zIGhhdmUgYnVncyByZWdhcmRpbmcg
YnVpbHQtaW4gZnVuY3Rpb25zIGluIHRoZWlyIE9wZW5HTCBkcml2ZXJzCi0gICAgLy8gdGhhdCBt
dXN0IGJlIGF2b2lkZWQuIFBvcnRzIHNob3VsZCBpbXBsZW1lbnQgdGhlc2UgZmxhZ3Mgb24gc3Vj
aCBjb25maWd1cmF0aW9ucy4KLSAgICB2aXJ0dWFsIGJvb2wgcmVxdWlyZXNCdWlsdEluRnVuY3Rp
b25FbXVsYXRpb24oKSA9IDA7Ci0gICAgdmlydHVhbCBib29sIHJlcXVpcmVzUmVzdHJpY3RlZE1h
eGltdW1UZXh0dXJlU2l6ZSgpID0gMDsKICNlbmRpZgogCiB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUu
Y3BwCmluZGV4IGI3ZGI0ZmQyMDQxYjNiYmM4YmI5YTc3MzNlODliZWVhYWViNmY3ODkuLmNlNDZj
N2E3NWE1ZTJiNjJmMmFiOWZlMDJiOWJlYzFmNmE3MGZiOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRlbnNpb25zR0xBTkdM
RS5jcHAKQEAgLTQzLDEwICs0Myw5IEBAIHR5cGVkZWYgdm9pZCogR0xlZ2xDb250ZXh0OwogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLUV4dGVuc2lvbnNHTEFOR0xFOjpFeHRlbnNpb25zR0xBTkdM
RShHcmFwaGljc0NvbnRleHRHTE9wZW5HTCogY29udGV4dCwgYm9vbCB1c2VJbmRleGVkR2V0U3Ry
aW5nKQorRXh0ZW5zaW9uc0dMQU5HTEU6OkV4dGVuc2lvbnNHTEFOR0xFKEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMKiBjb250ZXh0KQogICAgIDogbV9pbml0aWFsaXplZEF2YWlsYWJsZUV4dGVuc2lv
bnMoZmFsc2UpCiAgICAgLCBtX2NvbnRleHQoY29udGV4dCkKLSAgICAsIG1fdXNlSW5kZXhlZEdl
dFN0cmluZyh1c2VJbmRleGVkR2V0U3RyaW5nKQogewogfQogCkBAIC0xMDksNDIgKzEwOCwxNSBA
QCBTdHJpbmcgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdM
RShQbGF0Zm9ybUdMT2JqZWN0IHNoYWRlcgogCiB2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjppbml0
aWFsaXplQXZhaWxhYmxlRXh0ZW5zaW9ucygpCiB7Ci0gICAgaWYgKG1fdXNlSW5kZXhlZEdldFN0
cmluZykgewotICAgICAgICBHTGludCBudW1FeHRlbnNpb25zID0gMDsKLSAgICAgICAgZ2w6Okdl
dEludGVnZXJ2KEdMX05VTV9FWFRFTlNJT05TLCAmbnVtRXh0ZW5zaW9ucyk7Ci0gICAgICAgIGZv
ciAoR0xpbnQgaSA9IDA7IGkgPCBudW1FeHRlbnNpb25zOyArK2kpCi0gICAgICAgICAgICBtX2F2
YWlsYWJsZUV4dGVuc2lvbnMuYWRkKGdsOjpHZXRTdHJpbmdpKEdMX0VYVEVOU0lPTlMsIGkpKTsK
LSAgICAgICAgZ2w6OkdldEludGVnZXJ2KEdMX05VTV9SRVFVRVNUQUJMRV9FWFRFTlNJT05TX0FO
R0xFLCAmbnVtRXh0ZW5zaW9ucyk7Ci0gICAgICAgIGZvciAoR0xpbnQgaSA9IDA7IGkgPCBudW1F
eHRlbnNpb25zOyArK2kpCi0gICAgICAgICAgICBtX3JlcXVlc3RhYmxlRXh0ZW5zaW9ucy5hZGQo
Z2w6OkdldFN0cmluZ2koR0xfUkVRVUVTVEFCTEVfRVhURU5TSU9OU19BTkdMRSwgaSkpOwotICAg
IH0gZWxzZSB7Ci0gICAgICAgIFN0cmluZyBleHRlbnNpb25zU3RyaW5nID0gZ2V0RXh0ZW5zaW9u
cygpOwotICAgICAgICBmb3IgKGF1dG8mIGV4dGVuc2lvbiA6IGV4dGVuc2lvbnNTdHJpbmcuc3Bs
aXQoJyAnKSkKLSAgICAgICAgICAgIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5hZGQoZXh0ZW5zaW9u
KTsKLSAgICAgICAgZXh0ZW5zaW9uc1N0cmluZyA9IFN0cmluZyhyZWludGVycHJldF9jYXN0PGNv
bnN0IGNoYXIqPihnbDo6R2V0U3RyaW5nKEdMX1JFUVVFU1RBQkxFX0VYVEVOU0lPTlNfQU5HTEUp
KSk7Ci0gICAgICAgIGZvciAoYXV0byYgZXh0ZW5zaW9uIDogZXh0ZW5zaW9uc1N0cmluZy5zcGxp
dCgnICcpKQotICAgICAgICAgICAgbV9yZXF1ZXN0YWJsZUV4dGVuc2lvbnMuYWRkKGV4dGVuc2lv
bik7Ci0gICAgfQorICAgIFN0cmluZyBleHRlbnNpb25zU3RyaW5nID0gZ2V0RXh0ZW5zaW9ucygp
OworICAgIGZvciAoYXV0byYgZXh0ZW5zaW9uIDogZXh0ZW5zaW9uc1N0cmluZy5zcGxpdCgnICcp
KQorICAgICAgICBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuYWRkKGV4dGVuc2lvbik7CisgICAgZXh0
ZW5zaW9uc1N0cmluZyA9IFN0cmluZyhyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihnbDo6
R2V0U3RyaW5nKEdMX1JFUVVFU1RBQkxFX0VYVEVOU0lPTlNfQU5HTEUpKSk7CisgICAgZm9yIChh
dXRvJiBleHRlbnNpb24gOiBleHRlbnNpb25zU3RyaW5nLnNwbGl0KCcgJykpCisgICAgICAgIG1f
cmVxdWVzdGFibGVFeHRlbnNpb25zLmFkZChleHRlbnNpb24pOwogICAgIG1faW5pdGlhbGl6ZWRB
dmFpbGFibGVFeHRlbnNpb25zID0gdHJ1ZTsKIH0KIAotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6
YmxpdEZyYW1lYnVmZmVyQU5HTEUoR0NHTGludCBzcmNYMCwgR0NHTGludCBzcmNZMCwgR0NHTGlu
dCBzcmNYMSwgR0NHTGludCBzcmNZMSwgR0NHTGludCBkc3RYMCwgR0NHTGludCBkc3RZMCwgR0NH
TGludCBkc3RYMSwgR0NHTGludCBkc3RZMSwgR0NHTGJpdGZpZWxkIG1hc2ssIEdDR0xlbnVtIGZp
bHRlcikKLXsKLSAgICAvLyBGSVhNRTogY29uc2lkZXIgYWRkaW5nIHN1cHBvcnQgZm9yIEFQUExF
X2ZyYW1lYnVmZmVyX211bHRpc2FtcGxlLgotICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4
dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OkJsaXRGcmFtZWJ1ZmZlckFO
R0xFKHNyY1gwLCBzcmNZMCwgc3JjWDEsIHNyY1kxLCBkc3RYMCwgZHN0WTAsIGRzdFgxLCBkc3RZ
MSwgbWFzaywgZmlsdGVyKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6cmVuZGVyYnVm
ZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWkgc2Ft
cGxlcywgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVp
IGhlaWdodCkKLXsKLSAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0g
ICAgICAgIHJldHVybjsKLQotICAgIGdsOjpSZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVB
TkdMRSh0YXJnZXQsIHNhbXBsZXMsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0KTsKLX0K
LQogUGxhdGZvcm1HTE9iamVjdCBFeHRlbnNpb25zR0xBTkdMRTo6Y3JlYXRlVmVydGV4QXJyYXlP
RVMoKQogewogICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKQEAgLTE4
NSwyNCArMTU3LDYgQEAgdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6YmluZFZlcnRleEFycmF5T0VT
KFBsYXRmb3JtR0xPYmplY3QgYXJyYXkpCiAgICAgZ2w6OkJpbmRWZXJ0ZXhBcnJheU9FUyhhcnJh
eSk7CiB9CiAKLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6Omluc2VydEV2ZW50TWFya2VyRVhUKGNv
bnN0IFN0cmluZyYpCi17Ci0gICAgLy8gRklYTUU6IGltcGxlbWVudCB0aGlzIGZ1bmN0aW9uIGFu
ZCBhZGQgR0xfRVhUX2RlYnVnX21hcmtlciBpbiBzdXBwb3J0cygpLgotICAgIHJldHVybjsKLX0K
LQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6cHVzaEdyb3VwTWFya2VyRVhUKGNvbnN0IFN0cmlu
ZyYpCi17Ci0gICAgLy8gRklYTUU6IGltcGxlbWVudCB0aGlzIGZ1bmN0aW9uIGFuZCBhZGQgR0xf
RVhUX2RlYnVnX21hcmtlciBpbiBzdXBwb3J0cygpLgotICAgIHJldHVybjsKLX0KLQotdm9pZCBF
eHRlbnNpb25zR0xBTkdMRTo6cG9wR3JvdXBNYXJrZXJFWFQodm9pZCkKLXsKLSAgICAvLyBGSVhN
RTogaW1wbGVtZW50IHRoaXMgZnVuY3Rpb24gYW5kIGFkZCBHTF9FWFRfZGVidWdfbWFya2VyIGlu
IHN1cHBvcnRzKCkuCi0gICAgcmV0dXJuOwotfQotCiBib29sIEV4dGVuc2lvbnNHTEFOR0xFOjpz
dXBwb3J0c0V4dGVuc2lvbihjb25zdCBTdHJpbmcmIG5hbWUpCiB7CiAgICAgcmV0dXJuIG1fYXZh
aWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucyhuYW1lKSB8fCBtX3JlcXVlc3RhYmxlRXh0ZW5zaW9u
cy5jb250YWlucyhuYW1lKTsKQEAgLTI1OCwyOTEgKzIxMiw2IEBAIEdDR0xlbnVtIEV4dGVuc2lv
bnNHTEFOR0xFOjphZGp1c3RXZWJHTDFUZXh0dXJlSW50ZXJuYWxGb3JtYXQoR0NHTGVudW0gaW50
ZXJuYWxmCiAgICAgcmV0dXJuIGludGVybmFsZm9ybWF0OwogfQogCi0vLyBHTF9BTkdMRV9yb2J1
c3RfY2xpZW50X21lbW9yeQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6cmVhZFBpeGVsc1JvYnVz
dEFOR0xFKGludCB4LCBpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBH
Q0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6
ZWkgKmxlbmd0aCwgR0NHTHNpemVpICpjb2x1bW5zLCBHQ0dMc2l6ZWkgKnJvd3MsIHZvaWQgKnBp
eGVscykKLXsKLSAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAg
ICAgIHJldHVybjsKLQotICAgIGdsOjpSZWFkUGl4ZWxzUm9idXN0QU5HTEUoeCwgeSwgd2lkdGgs
IGhlaWdodCwgZm9ybWF0LCB0eXBlLCBidWZTaXplLCBsZW5ndGgsIGNvbHVtbnMsIHJvd3MsIHBp
eGVscyk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OnRleFBhcmFtZXRlcmZ2Um9idXN0
QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUs
IGNvbnN0IEdDR0xmbG9hdCAqcGFyYW1zKQotewotICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29u
dGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OlRleFBhcmFtZXRlcmZ2
Um9idXN0QU5HTEUodGFyZ2V0LCBwbmFtZSwgYnVmU2l6ZSwgcGFyYW1zKTsKLX0KLQotdm9pZCBF
eHRlbnNpb25zR0xBTkdMRTo6dGV4UGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJn
ZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGludCAqcGFy
YW1zKQotewotICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAg
ICAgcmV0dXJuOwotCi0gICAgZ2w6OlRleFBhcmFtZXRlcml2Um9idXN0QU5HTEUodGFyZ2V0LCBw
bmFtZSwgYnVmU2l6ZSwgcGFyYW1zKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0
UXVlcnlpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xz
aXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKQotewotICAg
IGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwot
Ci0gICAgZ2w6OkdldFF1ZXJ5aXZSb2J1c3RBTkdMRSh0YXJnZXQsIHBuYW1lLCBidWZTaXplLCBs
ZW5ndGgsIHBhcmFtcyk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldFF1ZXJ5T2Jq
ZWN0dWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgaWQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkg
YnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0x1aW50ICpwYXJhbXMpCi17Ci0gICAgaWYg
KCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAg
ICBnbDo6R2V0UXVlcnlPYmplY3R1aXZSb2J1c3RBTkdMRShpZCwgcG5hbWUsIGJ1ZlNpemUsIGxl
bmd0aCwgcGFyYW1zKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0QnVmZmVyUG9p
bnRlcnZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6
ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIHZvaWQgKipwYXJhbXMpCi17Ci0gICAgaWYg
KCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAg
ICBnbDo6R2V0QnVmZmVyUG9pbnRlcnZSb2J1c3RBTkdMRSh0YXJnZXQsIHBuYW1lLCBidWZTaXpl
LCBsZW5ndGgsIHBhcmFtcyk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldFZlcnRl
eEF0dHJpYklpdlJvYnVzdEFOR0xFKEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NH
THNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpCi17Ci0g
ICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47
Ci0KLSAgICBnbDo6R2V0VmVydGV4QXR0cmliSWl2Um9idXN0QU5HTEUoaW5kZXgsIHBuYW1lLCBi
dWZTaXplLCBsZW5ndGgsIHBhcmFtcyk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6Omdl
dFZlcnRleEF0dHJpYkl1aXZSb2J1c3RBTkdMRShHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5h
bWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHVpbnQgKnBhcmFt
cykKLXsKLSAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAg
IHJldHVybjsKLQotICAgIGdsOjpHZXRWZXJ0ZXhBdHRyaWJJdWl2Um9idXN0QU5HTEUoaW5kZXgs
IHBuYW1lLCBidWZTaXplLCBsZW5ndGgsIHBhcmFtcyk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dM
QU5HTEU6OmdldFVuaWZvcm11aXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMaW50
IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0x1aW50
ICpwYXJhbXMpCi17Ci0gICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQot
ICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6R2V0VW5pZm9ybXVpdlJvYnVzdEFOR0xFKHByb2dy
YW0sIGxvY2F0aW9uLCBidWZTaXplLCBsZW5ndGgsIHBhcmFtcyk7Ci19Ci0KLXZvaWQgRXh0ZW5z
aW9uc0dMQU5HTEU6OmdldEJ1ZmZlclBhcmFtZXRlcmk2NHZSb2J1c3RBTkdMRShHQ0dMZW51bSB0
YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5n
dGgsIEdDR0xpbnQ2NCAqcGFyYW1zKQotewotICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4
dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OkdldEJ1ZmZlclBhcmFtZXRl
cmk2NHZSb2J1c3RBTkdMRSh0YXJnZXQsIHBuYW1lLCBidWZTaXplLCBsZW5ndGgsIHJlaW50ZXJw
cmV0X2Nhc3Q8R0xpbnQ2NCo+KHBhcmFtcykpOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xF
OjpzYW1wbGVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51
bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xpbnQgKnBhcmFtKQotewotICAg
IGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwot
Ci0gICAgZ2w6OlNhbXBsZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKHNhbXBsZXIsIHBuYW1lLCBi
dWZTaXplLCBwYXJhbSk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OnNhbXBsZXJQYXJh
bWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dM
c2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGZsb2F0ICpwYXJhbSkKLXsKLSAgICBpZiAoIW1fY29u
dGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpT
YW1wbGVyUGFyYW1ldGVyZnZSb2J1c3RBTkdMRShzYW1wbGVyLCBwbmFtZSwgYnVmU2l6ZSwgcGFy
YW0pOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRTYW1wbGVyUGFyYW1ldGVyaXZS
b2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1
ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpCi17Ci0gICAgaWYgKCFt
X2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBn
bDo6R2V0U2FtcGxlclBhcmFtZXRlcml2Um9idXN0QU5HTEUoc2FtcGxlciwgcG5hbWUsIGJ1ZlNp
emUsIGxlbmd0aCwgcGFyYW1zKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0U2Ft
cGxlclBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5h
bWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGZsb2F0ICpwYXJh
bXMpCi17Ci0gICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAg
ICByZXR1cm47Ci0KLSAgICBnbDo6R2V0U2FtcGxlclBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoc2Ft
cGxlciwgcG5hbWUsIGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1zKTsKLX0KLQotCi12b2lkIEV4dGVu
c2lvbnNHTEFOR0xFOjpnZXRGcmFtZWJ1ZmZlclBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVu
dW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAq
bGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpCi17Ci0gICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250
ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6R2V0RnJhbWVidWZmZXJQ
YXJhbWV0ZXJpdlJvYnVzdEFOR0xFKHRhcmdldCwgcG5hbWUsIGJ1ZlNpemUsIGxlbmd0aCwgcGFy
YW1zKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0UHJvZ3JhbUludGVyZmFjZWl2
Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGVudW0gcHJvZ3JhbUludGVyZmFjZSwg
R0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NH
TGludCAqcGFyYW1zKQotewotICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQo
KSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OkdldFByb2dyYW1JbnRlcmZhY2VpdlJvYnVz
dEFOR0xFKHByb2dyYW0sIHByb2dyYW1JbnRlcmZhY2UsIHBuYW1lLCBidWZTaXplLCBsZW5ndGgs
IHBhcmFtcyk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldEJvb2xlYW5pX3ZSb2J1
c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0x1aW50IGluZGV4LCBHQ0dMc2l6ZWkgYnVmU2l6
ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xib29sZWFuICpkYXRhKQotewotICAgIGlmICghbV9j
b250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6
OkdldEJvb2xlYW5pX3ZSb2J1c3RBTkdMRSh0YXJnZXQsIGluZGV4LCBidWZTaXplLCBsZW5ndGgs
IGRhdGEpOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRNdWx0aXNhbXBsZWZ2Um9i
dXN0QU5HTEUoR0NHTGVudW0gcG5hbWUsIEdDR0x1aW50IGluZGV4LCBHQ0dMc2l6ZWkgYnVmU2l6
ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xmbG9hdCAqdmFsKQotewotICAgIGlmICghbV9jb250
ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6Okdl
dE11bHRpc2FtcGxlZnZSb2J1c3RBTkdMRShwbmFtZSwgaW5kZXgsIGJ1ZlNpemUsIGxlbmd0aCwg
dmFsKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0VGV4TGV2ZWxQYXJhbWV0ZXJp
dlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gcG5h
bWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1z
KQotewotICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgZ2w6OkdldFRleExldmVsUGFyYW1ldGVyaXZSb2J1c3RBTkdMRSh0YXJn
ZXQsIGxldmVsLCBwbmFtZSwgYnVmU2l6ZSwgbGVuZ3RoLCBwYXJhbXMpOwotfQotCi12b2lkIEV4
dGVuc2lvbnNHTEFOR0xFOjpnZXRUZXhMZXZlbFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTGVu
dW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNp
emUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMZmxvYXQgKnBhcmFtcykKLXsKLSAgICBpZiAoIW1f
Y29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGds
OjpHZXRUZXhMZXZlbFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUodGFyZ2V0LCBsZXZlbCwgcG5hbWUs
IGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1zKTsKLX0KLQotCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xF
OjpnZXRQb2ludGVydlJvYnVzdEFOR0xFUm9idXN0QU5HTEUoR0NHTGVudW0gcG5hbWUsIEdDR0xz
aXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgdm9pZCAqKnBhcmFtcykKLXsKLSAgICBp
ZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQot
ICAgIGdsOjpHZXRQb2ludGVydlJvYnVzdEFOR0xFUm9idXN0QU5HTEUocG5hbWUsIGJ1ZlNpemUs
IGxlbmd0aCwgcGFyYW1zKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0blVuaWZv
cm1mdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xz
aXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGZsb2F0ICpwYXJhbXMpCi17Ci0g
ICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47
Ci0KLSAgICBnbDo6R2V0blVuaWZvcm1mdlJvYnVzdEFOR0xFKHByb2dyYW0sIGxvY2F0aW9uLCBi
dWZTaXplLCBsZW5ndGgsIHBhcmFtcyk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6Omdl
dG5Vbmlmb3JtaXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9u
LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykK
LXsKLSAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJl
dHVybjsKLQotICAgIGdsOjpHZXRuVW5pZm9ybWl2Um9idXN0QU5HTEUocHJvZ3JhbSwgbG9jYXRp
b24sIGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1zKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdM
RTo6Z2V0blVuaWZvcm11aXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMaW50IGxv
Y2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0x1aW50ICpw
YXJhbXMpCi17Ci0gICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAg
ICAgICByZXR1cm47Ci0KLSAgICBnbDo6R2V0blVuaWZvcm11aXZSb2J1c3RBTkdMRShwcm9ncmFt
LCBsb2NhdGlvbiwgYnVmU2l6ZSwgbGVuZ3RoLCBwYXJhbXMpOwotfQotCi12b2lkIEV4dGVuc2lv
bnNHTEFOR0xFOjp0ZXhQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdD
R0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGludCAqcGFyYW1zKQot
ewotICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0
dXJuOwotCi0gICAgZ2w6OlRleFBhcmFtZXRlcklpdlJvYnVzdEFOR0xFKHRhcmdldCwgcG5hbWUs
IGJ1ZlNpemUsIHBhcmFtcyk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OnRleFBhcmFt
ZXRlckl1aXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dM
c2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTHVpbnQgKnBhcmFtcykKLXsKLSAgICBpZiAoIW1fY29u
dGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpU
ZXhQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUodGFyZ2V0LCBwbmFtZSwgYnVmU2l6ZSwgcGFyYW1z
KTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0VGV4UGFyYW1ldGVySWl2Um9idXN0
QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUs
IEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpCi17Ci0gICAgaWYgKCFtX2NvbnRl
eHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6R2V0
VGV4UGFyYW1ldGVySWl2Um9idXN0QU5HTEUodGFyZ2V0LCBwbmFtZSwgYnVmU2l6ZSwgbGVuZ3Ro
LCBwYXJhbXMpOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRUZXhQYXJhbWV0ZXJJ
dWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVp
IGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMdWludCAqcGFyYW1zKQotewotICAgIGlm
ICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0g
ICAgZ2w6OkdldFRleFBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRSh0YXJnZXQsIHBuYW1lLCBidWZT
aXplLCBsZW5ndGgsIHBhcmFtcyk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OnNhbXBs
ZXJQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFt
ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xpbnQgKnBhcmFtKQotewotICAgIGlmICgh
bV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAg
Z2w6OlNhbXBsZXJQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRShzYW1wbGVyLCBwbmFtZSwgYnVmU2l6
ZSwgcGFyYW0pOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpzYW1wbGVyUGFyYW1ldGVy
SXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6
ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTHVpbnQgKnBhcmFtKQotewotICAgIGlmICghbV9jb250ZXh0
LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OlNhbXBs
ZXJQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUoc2FtcGxlciwgcG5hbWUsIGJ1ZlNpemUsIHBhcmFt
KTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0U2FtcGxlclBhcmFtZXRlcklpdlJv
YnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVm
U2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykKLXsKLSAgICBpZiAoIW1f
Y29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGds
OjpHZXRTYW1wbGVyUGFyYW1ldGVySWl2Um9idXN0QU5HTEUoc2FtcGxlciwgcG5hbWUsIGJ1ZlNp
emUsIGxlbmd0aCwgcGFyYW1zKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0U2Ft
cGxlclBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBw
bmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMdWludCAqcGFy
YW1zKQotewotICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAg
ICAgcmV0dXJuOwotCi0gICAgZ2w6OkdldFNhbXBsZXJQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUo
c2FtcGxlciwgcG5hbWUsIGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1zKTsKLX0KLQotCi12b2lkIEV4
dGVuc2lvbnNHTEFOR0xFOjpnZXRRdWVyeU9iamVjdGl2Um9idXN0QU5HTEUoR0NHTHVpbnQgaWQs
IEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdD
R0xpbnQgKnBhcmFtcykKLXsKLSAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50
KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpHZXRRdWVyeU9iamVjdGl2Um9idXN0QU5H
TEUoaWQsIHBuYW1lLCBidWZTaXplLCBsZW5ndGgsIHBhcmFtcyk7Ci19Ci0KLXZvaWQgRXh0ZW5z
aW9uc0dMQU5HTEU6OmdldFF1ZXJ5T2JqZWN0aTY0dlJvYnVzdEFOR0xFKEdDR0x1aW50IGlkLCBH
Q0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dM
aW50NjQgKnBhcmFtcykKLXsKLSAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50
KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpHZXRRdWVyeU9iamVjdGk2NHZSb2J1c3RB
TkdMRShpZCwgcG5hbWUsIGJ1ZlNpemUsIGxlbmd0aCwgcmVpbnRlcnByZXRfY2FzdDxHTGludDY0
Kj4ocGFyYW1zKSk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldFF1ZXJ5T2JqZWN0
dWk2NHZSb2J1c3RBTkdMRShHQ0dMdWludCBpZCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBi
dWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHVpbnQ2NCAqcGFyYW1zKQotewotICAgIGlm
ICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0g
ICAgZ2w6OkdldFF1ZXJ5T2JqZWN0dWk2NHZSb2J1c3RBTkdMRShpZCwgcG5hbWUsIGJ1ZlNpemUs
IGxlbmd0aCwgcmVpbnRlcnByZXRfY2FzdDxHTHVpbnQ2NCo+KHBhcmFtcykpOwotfQotCi0KIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShHUkFQSElDU19DT05URVhU
X0dMKSAmJiBVU0UoQU5HTEUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hbmdsZS9FeHRlbnNpb25zR0xBTkdMRS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUuaAppbmRleCBiMmQyNzdiOWFjOWQy
Nzg2MGY1NWFiYWJmOGNmZTU1ZTg0YjVmNTdlLi4wMDQyMzM3NzIwMzRiZmEzZWFjMTM3ZGMzNjM0
ODA5MTZkZWFhZjdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hbmdsZS9FeHRlbnNpb25zR0xBTkdMRS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmgKQEAgLTM2LDcgKzM2LDcgQEAgY2xh
c3MgRXh0ZW5zaW9uc0dMQU5HTEUgOiBwdWJsaWMgRXh0ZW5zaW9uc0dMIHsKICAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICAvLyBUaGlzIGNsYXNzIG9ubHkgbmVlZHMg
dG8gYmUgaW5zdGFudGlhdGVkIGJ5IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMIGltcGxlbWVudGF0
aW9ucy4KLSAgICBFeHRlbnNpb25zR0xBTkdMRShHcmFwaGljc0NvbnRleHRHTE9wZW5HTCosIGJv
b2wgdXNlSW5kZXhlZEdldFN0cmluZyA9IGZhbHNlKTsKKyAgICBleHBsaWNpdCBFeHRlbnNpb25z
R0xBTkdMRShHcmFwaGljc0NvbnRleHRHTE9wZW5HTCopOwogICAgIHZpcnR1YWwgfkV4dGVuc2lv
bnNHTEFOR0xFKCk7CiAKICAgICAvLyBFeHRlbnNpb25zR0wgbWV0aG9kcy4KQEAgLTQ5LDYwICs0
OSwxNCBAQCBwdWJsaWM6CiAgICAgdm9pZCBkZWxldGVWZXJ0ZXhBcnJheU9FUyhQbGF0Zm9ybUdM
T2JqZWN0KSBvdmVycmlkZTsKICAgICBHQ0dMYm9vbGVhbiBpc1ZlcnRleEFycmF5T0VTKFBsYXRm
b3JtR0xPYmplY3QpIG92ZXJyaWRlOwogICAgIHZvaWQgYmluZFZlcnRleEFycmF5T0VTKFBsYXRm
b3JtR0xPYmplY3QpIG92ZXJyaWRlOwotICAgIHZvaWQgaW5zZXJ0RXZlbnRNYXJrZXJFWFQoY29u
c3QgU3RyaW5nJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBwdXNoR3JvdXBNYXJrZXJFWFQoY29uc3Qg
U3RyaW5nJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBwb3BHcm91cE1hcmtlckVYVCh2b2lkKSBvdmVy
cmlkZTsKICAgICB2b2lkIGRyYXdCdWZmZXJzRVhUKEdDR0xTcGFuPGNvbnN0IEdDR0xlbnVtPikg
b3ZlcnJpZGU7CiAKICAgICBTdHJpbmcgZ2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFKFBs
YXRmb3JtR0xPYmplY3QpIG92ZXJyaWRlOwogCi0gICAgdm9pZCBibGl0RnJhbWVidWZmZXJBTkdM
RShHQ0dMaW50IHNyY1gwLCBHQ0dMaW50IHNyY1kwLCBHQ0dMaW50IHNyY1gxLCBHQ0dMaW50IHNy
Y1kxLCBHQ0dMaW50IGRzdFgwLCBHQ0dMaW50IGRzdFkwLCBHQ0dMaW50IGRzdFgxLCBHQ0dMaW50
IGRzdFkxLCBHQ0dMYml0ZmllbGQgbWFzaywgR0NHTGVudW0gZmlsdGVyKSBvdmVycmlkZTsKLSAg
ICB2b2lkIHJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKEdDR0xlbnVtIHRhcmdl
dCwgR0NHTHNpemVpIHNhbXBsZXMsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkg
d2lkdGgsIEdDR0xzaXplaSBoZWlnaHQpIG92ZXJyaWRlOwotCiAgICAgdm9pZCBkcmF3QXJyYXlz
SW5zdGFuY2VkQU5HTEUoR0NHTGVudW0gbW9kZSwgR0NHTGludCBmaXJzdCwgR0NHTHNpemVpIGNv
dW50LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KSBvdmVycmlkZTsKICAgICB2b2lkIGRyYXdFbGVtZW50
c0luc3RhbmNlZEFOR0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xzaXplaSBjb3VudCwgR0NHTGVudW0g
dHlwZSwgR0NHTHZvaWRwdHIgb2Zmc2V0LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KSBvdmVycmlkZTsK
ICAgICB2b2lkIHZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRShHQ0dMdWludCBpbmRleCwgR0NHTHVp
bnQgZGl2aXNvcikgb3ZlcnJpZGU7CiAKLSAgICAvLyBHTF9BTkdMRV9yb2J1c3RfY2xpZW50X21l
bW9yeQotICAgIHZvaWQgcmVhZFBpeGVsc1JvYnVzdEFOR0xFKEdDR0xpbnQgeCwgR0NHTGludCB5
LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NH
TGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMc2l6
ZWkgKmNvbHVtbnMsIEdDR0xzaXplaSAqcm93cywgdm9pZCAqcGl4ZWxzKSBvdmVycmlkZTsKLSAg
ICB2b2lkIHRleFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51
bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xmbG9hdCAqcGFyYW1zKSBvdmVy
cmlkZTsKLSAgICB2b2lkIHRleFBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xpbnQgKnBhcmFt
cykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRRdWVyeWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3Ro
LCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0UXVlcnlPYmplY3R1aXZS
b2J1c3RBTkdMRShHQ0dMdWludCBpZCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXpl
LCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHVpbnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9p
ZCBnZXRCdWZmZXJQb2ludGVydlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0g
cG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgdm9pZCAqKnBhcmFt
cykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJJaXZSb2J1c3RBTkdMRShHQ0dM
dWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkg
Kmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldFZlcnRleEF0
dHJpYkl1aXZSb2J1c3RBTkdMRShHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xz
aXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHVpbnQgKnBhcmFtcykgb3ZlcnJp
ZGU7Ci0gICAgdm9pZCBnZXRVbmlmb3JtdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwg
R0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBH
Q0dMdWludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldEJ1ZmZlclBhcmFtZXRlcmk2
NHZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkg
YnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQ2NCAqcGFyYW1zKSBvdmVycmlkZTsK
LSAgICB2b2lkIHNhbXBsZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIs
IEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGludCAqcGFyYW0p
IG92ZXJyaWRlOwotICAgIHZvaWQgc2FtcGxlclBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTHVp
bnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dM
ZmxvYXQgKnBhcmFtKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldFNhbXBsZXJQYXJhbWV0ZXJpdlJv
YnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVm
U2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAg
dm9pZCBnZXRTYW1wbGVyUGFyYW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBH
Q0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dM
ZmxvYXQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0KLSAgICB2b2lkIGdldEZyYW1lYnVmZmVyUGFyYW1l
dGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6
ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykgb3ZlcnJpZGU7
Ci0gICAgdm9pZCBnZXRQcm9ncmFtSW50ZXJmYWNlaXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9n
cmFtLCBHQ0dMZW51bSBwcm9ncmFtSW50ZXJmYWNlLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVp
IGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJyaWRlOwot
ICAgIHZvaWQgZ2V0Qm9vbGVhbmlfdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTHVp
bnQgaW5kZXgsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGJvb2xl
YW4gKmRhdGEpIG92ZXJyaWRlOyAvLyBOT0xJTlQKLSAgICB2b2lkIGdldE11bHRpc2FtcGxlZnZS
b2J1c3RBTkdMRShHQ0dMZW51bSBwbmFtZSwgR0NHTHVpbnQgaW5kZXgsIEdDR0xzaXplaSBidWZT
aXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGZsb2F0ICp2YWwpIG92ZXJyaWRlOwotICAgIHZv
aWQgZ2V0VGV4TGV2ZWxQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NH
TGludCBsZXZlbCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkg
Kmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldFRleExldmVs
UGFyYW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdD
R0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xm
bG9hdCAqcGFyYW1zKSBvdmVycmlkZTsKLQotICAgIHZvaWQgZ2V0UG9pbnRlcnZSb2J1c3RBTkdM
RVJvYnVzdEFOR0xFKEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVp
ICpsZW5ndGgsIHZvaWQgKipwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0blVuaWZvcm1m
dlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXpl
aSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGZsb2F0ICpwYXJhbXMpIG92ZXJyaWRl
OwotICAgIHZvaWQgZ2V0blVuaWZvcm1pdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdD
R0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NH
TGludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldG5Vbmlmb3JtdWl2Um9idXN0QU5H
TEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUs
IEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMdWludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lk
IHRleFBhcmFtZXRlcklpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5h
bWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJyaWRlOwot
ICAgIHZvaWQgdGV4UGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NH
TGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMdWludCAqcGFyYW1zKSBv
dmVycmlkZTsKLSAgICB2b2lkIGdldFRleFBhcmFtZXRlcklpdlJvYnVzdEFOR0xFKEdDR0xlbnVt
IHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxl
bmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldFRleFBhcmFtZXRl
ckl1aXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6
ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0x1aW50ICpwYXJhbXMpIG92ZXJyaWRl
OwotICAgIHZvaWQgc2FtcGxlclBhcmFtZXRlcklpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBs
ZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGludCAqcGFy
YW0pIG92ZXJyaWRlOwotICAgIHZvaWQgc2FtcGxlclBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRShH
Q0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0
IEdDR0x1aW50ICpwYXJhbSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRTYW1wbGVyUGFyYW1ldGVy
SWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXpl
aSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVycmlkZTsK
LSAgICB2b2lkIGdldFNhbXBsZXJQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2Ft
cGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0
aCwgR0NHTHVpbnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0KLSAgICB2b2lkIGdldFF1ZXJ5T2JqZWN0
aXZSb2J1c3RBTkdMRShHQ0dMdWludCBpZCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZT
aXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2
b2lkIGdldFF1ZXJ5T2JqZWN0aTY0dlJvYnVzdEFOR0xFKEdDR0x1aW50IGlkLCBHQ0dMZW51bSBw
bmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50NjQgKnBh
cmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRRdWVyeU9iamVjdHVpNjR2Um9idXN0QU5HTEUo
R0NHTHVpbnQgaWQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVp
ICpsZW5ndGgsIEdDR0x1aW50NjQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0KICAgICAvLyBPbmx5IGZv
ciBub24tV2ViR0wgMi4wIGNvbnRleHRzLgogICAgIEdDR0xlbnVtIGFkanVzdFdlYkdMMVRleHR1
cmVJbnRlcm5hbEZvcm1hdChHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTGVudW0gZm9ybWF0
LCBHQ0dMZW51bSB0eXBlKTsKIApAQCAtMTE5LDggKzczLDYgQEAgcHJpdmF0ZToKICAgICAvLyBX
ZWFrIHBvaW50ZXIgYmFjayB0byBHcmFwaGljc0NvbnRleHRHTE9wZW5HTC4KICAgICBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTCogbV9jb250ZXh0OwogCi0gICAgYm9vbCBtX3VzZUluZGV4ZWRHZXRT
dHJpbmcgeyBmYWxzZSB9OwotCiAgICAgLy8gV2hldGhlciB0aGUgV2ViR0wgMS4wLXJlbGF0ZWQg
ZmxvYXRpbmctcG9pbnQgcmVuZGVyYWJpbGl0eSBleHRlbnNpb25zIGhhdmUgYmVlbiBlbmFibGVk
LgogICAgIGJvb2wgbV93ZWJnbENvbG9yQnVmZmVyRmxvYXRSR0IgeyBmYWxzZSB9OwogICAgIGJv
b2wgbV93ZWJnbENvbG9yQnVmZmVyRmxvYXRSR0JBIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNH
TE9wZW5HTC5jcHAKaW5kZXggYWRkNWYzNTJhZTRkZTZiNmQ1ZGMxOTFlNjczYjVhYWZhNTZkZTk1
Zi4uYzMwNjQ2NzQ4OGIwN2FjYWJiZDE3ZWNhYzhiNmExNTgyNjI0MjNkMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5H
TC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVu
c2lvbnNHTE9wZW5HTC5jcHAKQEAgLTQ4LDIyICs0OCw2IEBAIEV4dGVuc2lvbnNHTE9wZW5HTDo6
RXh0ZW5zaW9uc0dMT3BlbkdMKEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiBjb250ZXh0LCBib29s
IHVzCiBFeHRlbnNpb25zR0xPcGVuR0w6On5FeHRlbnNpb25zR0xPcGVuR0woKSA9IGRlZmF1bHQ7
CiAKIAotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0w6OmJsaXRGcmFtZWJ1ZmZlckFOR0xFKEdDR0xp
bnQgc3JjWDAsIEdDR0xpbnQgc3JjWTAsIEdDR0xpbnQgc3JjWDEsIEdDR0xpbnQgc3JjWTEsIEdD
R0xpbnQgZHN0WDAsIEdDR0xpbnQgZHN0WTAsIEdDR0xpbnQgZHN0WDEsIEdDR0xpbnQgZHN0WTEs
IEdDR0xiaXRmaWVsZCBtYXNrLCBHQ0dMZW51bSBmaWx0ZXIpCi17Ci0gICAgaWYgKCFtX2NvbnRl
eHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICA6OmdsQmxp
dEZyYW1lYnVmZmVyRVhUKHNyY1gwLCBzcmNZMCwgc3JjWDEsIHNyY1kxLCBkc3RYMCwgZHN0WTAs
IGRzdFgxLCBkc3RZMSwgbWFzaywgZmlsdGVyKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xPcGVu
R0w6OnJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKEdDR0xlbnVtIHRhcmdldCwg
R0NHTHNpemVpIHNhbXBsZXMsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lk
dGgsIEdDR0xzaXplaSBoZWlnaHQpCi17Ci0gICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0
Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICA6OmdsUmVuZGVyYnVmZmVyU3RvcmFn
ZU11bHRpc2FtcGxlRVhUKHRhcmdldCwgc2FtcGxlcywgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBo
ZWlnaHQpOwotfQotCiBQbGF0Zm9ybUdMT2JqZWN0IEV4dGVuc2lvbnNHTE9wZW5HTDo6Y3JlYXRl
VmVydGV4QXJyYXlPRVMoKQogewogICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJl
bnQoKSkKQEAgLTEyNywyNCArMTExLDYgQEAgdm9pZCBFeHRlbnNpb25zR0xPcGVuR0w6OmJpbmRW
ZXJ0ZXhBcnJheU9FUyhQbGF0Zm9ybUdMT2JqZWN0IGFycmF5KQogI2VuZGlmCiB9CiAKLXZvaWQg
RXh0ZW5zaW9uc0dMT3BlbkdMOjppbnNlcnRFdmVudE1hcmtlckVYVChjb25zdCBTdHJpbmcmKQot
ewotICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQgdGhpcyBmdW5jdGlvbiBhbmQgYWRkIEdMX0VYVF9k
ZWJ1Z19tYXJrZXIgaW4gc3VwcG9ydHMoKS4KLSAgICByZXR1cm47Ci19Ci0KLXZvaWQgRXh0ZW5z
aW9uc0dMT3BlbkdMOjpwdXNoR3JvdXBNYXJrZXJFWFQoY29uc3QgU3RyaW5nJikKLXsKLSAgICAv
LyBGSVhNRTogaW1wbGVtZW50IHRoaXMgZnVuY3Rpb24gYW5kIGFkZCBHTF9FWFRfZGVidWdfbWFy
a2VyIGluIHN1cHBvcnRzKCkuCi0gICAgcmV0dXJuOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9w
ZW5HTDo6cG9wR3JvdXBNYXJrZXJFWFQodm9pZCkKLXsKLSAgICAvLyBGSVhNRTogaW1wbGVtZW50
IHRoaXMgZnVuY3Rpb24gYW5kIGFkZCBHTF9FWFRfZGVidWdfbWFya2VyIGluIHN1cHBvcnRzKCku
Ci0gICAgcmV0dXJuOwotfQotCiBib29sIEV4dGVuc2lvbnNHTE9wZW5HTDo6c3VwcG9ydHNFeHRl
bnNpb24oY29uc3QgU3RyaW5nJiBuYW1lKQogewogICAgIC8vIEdMX0FOR0xFX2ZyYW1lYnVmZmVy
X2JsaXQgYW5kIEdMX0FOR0xFX2ZyYW1lYnVmZmVyX211bHRpc2FtcGxlIGFyZSAiZmFrZSIuIFRo
ZXkgYXJlIGltcGxlbWVudGVkIHVzaW5nIG90aGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMLmgKaW5k
ZXggNDc1MDIyNmVjZWNlZjQ0Mzk2ZTk5Mzg2NzZjYjYzOWJlODM0MzdiNi4uMGFkYmQ3MDUwYjdl
M2Y3N2UwMTg4OTQzMzJmZmM4N2NmMzBkOTBjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuaApA
QCAtNDAsMTYgKzQwLDEwIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5FeHRlbnNpb25zR0xPcGVu
R0woKTsKIAogICAgIC8vIEV4dGVuc2lvbnNHTCBtZXRob2RzLgotICAgIHZvaWQgYmxpdEZyYW1l
YnVmZmVyQU5HTEUoR0NHTGludCBzcmNYMCwgR0NHTGludCBzcmNZMCwgR0NHTGludCBzcmNYMSwg
R0NHTGludCBzcmNZMSwgR0NHTGludCBkc3RYMCwgR0NHTGludCBkc3RZMCwgR0NHTGludCBkc3RY
MSwgR0NHTGludCBkc3RZMSwgR0NHTGJpdGZpZWxkIG1hc2ssIEdDR0xlbnVtIGZpbHRlcikgb3Zl
cnJpZGU7Ci0gICAgdm9pZCByZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVBTkdMRShHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xzaXplaSBzYW1wbGVzLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwg
R0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KSBvdmVycmlkZTsKLQogICAgIFBsYXRm
b3JtR0xPYmplY3QgY3JlYXRlVmVydGV4QXJyYXlPRVMoKSBvdmVycmlkZTsKICAgICB2b2lkIGRl
bGV0ZVZlcnRleEFycmF5T0VTKFBsYXRmb3JtR0xPYmplY3QpIG92ZXJyaWRlOwogICAgIEdDR0xi
b29sZWFuIGlzVmVydGV4QXJyYXlPRVMoUGxhdGZvcm1HTE9iamVjdCkgb3ZlcnJpZGU7CiAgICAg
dm9pZCBiaW5kVmVydGV4QXJyYXlPRVMoUGxhdGZvcm1HTE9iamVjdCkgb3ZlcnJpZGU7Ci0gICAg
dm9pZCBpbnNlcnRFdmVudE1hcmtlckVYVChjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKLSAgICB2
b2lkIHB1c2hHcm91cE1hcmtlckVYVChjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKLSAgICB2b2lk
IHBvcEdyb3VwTWFya2VyRVhUKHZvaWQpIG92ZXJyaWRlOwogICAgIHZvaWQgZHJhd0J1ZmZlcnNF
WFQoR0NHTFNwYW48Y29uc3QgR0NHTGVudW0+KSBvdmVycmlkZTsKIAogICAgIHZvaWQgZHJhd0Fy
cmF5c0luc3RhbmNlZEFOR0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xpbnQgZmlyc3QsIEdDR0xzaXpl
aSBjb3VudCwgR0NHTHNpemVpIHByaW1jb3VudCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29t
bW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNp
b25zR0xPcGVuR0xDb21tb24uY3BwCmluZGV4IDY5M2ZiOTNhNjdmYmM4NDA3MDgwNDgyYzhlZWJl
MTY4MTcxMjczYjAuLjMzMmM4MjQyNDk3MjRiYjk2MzZlYWFiZWEwM2MyYzM3NThlMDE2ZmYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNp
b25zR0xPcGVuR0xDb21tb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uY3BwCkBAIC0yNTQsMTg1ICsyNTQs
NiBAQCB2b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0blVuaWZvcm1pdkVYVChHQ0dM
dWludCwgaW50LCBHQ0dMc2l6ZWksIEdDR0xpbgogICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdM
RXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwogfQogCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5H
TENvbW1vbjo6cmVhZFBpeGVsc1JvYnVzdEFOR0xFKGludCwgaW50LCBHQ0dMc2l6ZWksIEdDR0xz
aXplaSwgR0NHTGVudW0sIEdDR0xlbnVtLCBHQ0dMc2l6ZWksIEdDR0xzaXplaSAqLCBHQ0dMc2l6
ZWkgKiwgR0NHTHNpemVpICosIHZvaWQgKikKLXsKLSAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVH
TEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xPcGVu
R0xDb21tb246OnRleFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTGVudW0sIEdDR0xlbnVtLCBH
Q0dMc2l6ZWksIGNvbnN0IEdDR0xmbG9hdCAqKQotewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6
ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9w
ZW5HTENvbW1vbjo6dGV4UGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51bSwgR0NHTGVudW0s
IEdDR0xzaXplaSwgY29uc3QgR0NHTGludCAqKQotewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6
ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9w
ZW5HTENvbW1vbjo6Z2V0UXVlcnlpdlJvYnVzdEFOR0xFKEdDR0xlbnVtLCBHQ0dMZW51bSwgR0NH
THNpemVpLCBHQ0dMc2l6ZWkgKiwgR0NHTGludCAqKQotewotICAgIG1fY29udGV4dC0+c3ludGhl
c2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi12b2lkIEV4dGVuc2lvbnNH
TE9wZW5HTENvbW1vbjo6Z2V0UXVlcnlPYmplY3R1aXZSb2J1c3RBTkdMRShHQ0dMdWludCwgR0NH
TGVudW0sIEdDR0xzaXplaSwgR0NHTHNpemVpICosIEdDR0x1aW50ICopCi17Ci0gICAgbV9jb250
ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Ci19Ci0KLXZvaWQg
RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRCdWZmZXJQb2ludGVydlJvYnVzdEFOR0xFKEdD
R0xlbnVtLCBHQ0dMZW51bSwgR0NHTHNpemVpLCBHQ0dMc2l6ZWkgKiwgdm9pZCAqKikKLXsKLSAg
ICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLX0K
LQotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFZlcnRleEF0dHJpYklpdlJvYnVz
dEFOR0xFKEdDR0x1aW50LCBHQ0dMZW51bSwgR0NHTHNpemVpLCBHQ0dMc2l6ZWkgKiwgR0NHTGlu
dCAqKQotewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVS
QVRJT04pOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0VmVydGV4QXR0
cmliSXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50LCBHQ0dMZW51bSwgR0NHTHNpemVpLCBHQ0dMc2l6
ZWkgKiwgR0NHTHVpbnQgKikKLXsKLSAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdM
X0lOVkFMSURfT1BFUkFUSU9OKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246
OmdldFVuaWZvcm11aXZSb2J1c3RBTkdMRShHQ0dMdWludCwgaW50LCBHQ0dMc2l6ZWksIEdDR0xz
aXplaSAqLCBHQ0dMdWludCAqKQotewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3Io
R0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1v
bjo6Z2V0QnVmZmVyUGFyYW1ldGVyaTY0dlJvYnVzdEFOR0xFKEdDR0xlbnVtLCBHQ0dMZW51bSwg
R0NHTHNpemVpLCBHQ0dMc2l6ZWkgKiwgR0NHTGludDY0ICopCi17Ci0gICAgbV9jb250ZXh0LT5z
eW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Ci19Ci0KLXZvaWQgRXh0ZW5z
aW9uc0dMT3BlbkdMQ29tbW9uOjpzYW1wbGVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMdWlu
dCwgR0NHTGVudW0sIEdDR0xzaXplaSwgY29uc3QgR0NHTGludCAqKQotewotICAgIG1fY29udGV4
dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi12b2lkIEV4
dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6c2FtcGxlclBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NH
THVpbnQsIEdDR0xlbnVtLCBHQ0dMc2l6ZWksIGNvbnN0IEdDR0xmbG9hdCAqKQotewotICAgIG1f
Y29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi12
b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0U2FtcGxlclBhcmFtZXRlcml2Um9idXN0
QU5HTEUoR0NHTHVpbnQsIEdDR0xlbnVtLCBHQ0dMc2l6ZWksIEdDR0xzaXplaSAqLCBHQ0dMaW50
ICopCi17Ci0gICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJB
VElPTik7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRTYW1wbGVyUGFy
YW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dMdWludCwgR0NHTGVudW0sIEdDR0xzaXplaSwgR0NHTHNp
emVpICosIEdDR0xmbG9hdCAqKQotewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3Io
R0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi0KLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29t
bW9uOjpnZXRGcmFtZWJ1ZmZlclBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0sIEdDR0xl
bnVtLCBHQ0dMc2l6ZWksIEdDR0xzaXplaSAqLCBHQ0dMaW50ICopCi17Ci0gICAgbV9jb250ZXh0
LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Ci19Ci0KLXZvaWQgRXh0
ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRQcm9ncmFtSW50ZXJmYWNlaXZSb2J1c3RBTkdMRShH
Q0dMdWludCwgR0NHTGVudW0sIEdDR0xlbnVtLCBHQ0dMc2l6ZWksIEdDR0xzaXplaSAqLCBHQ0dM
aW50ICopCi17Ci0gICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09Q
RVJBVElPTik7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRCb29sZWFu
aV92Um9idXN0QU5HTEUoR0NHTGVudW0sIEdDR0x1aW50LCBHQ0dMc2l6ZWksIEdDR0xzaXplaSAq
LCBHQ0dMYm9vbGVhbiAqKQotewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xf
SU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6
Z2V0TXVsdGlzYW1wbGVmdlJvYnVzdEFOR0xFKEdDR0xlbnVtLCBHQ0dMdWludCwgR0NHTHNpemVp
LCBHQ0dMc2l6ZWkgKiwgR0NHTGZsb2F0ICopCi17Ci0gICAgbV9jb250ZXh0LT5zeW50aGVzaXpl
R0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMT3Bl
bkdMQ29tbW9uOjpnZXRUZXhMZXZlbFBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0sIGlu
dCwgR0NHTGVudW0sIEdDR0xzaXplaSwgR0NHTHNpemVpICosIEdDR0xpbnQgKikKLXsKLSAgICBt
X2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLX0KLQot
dm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFRleExldmVsUGFyYW1ldGVyZnZSb2J1
c3RBTkdMRShHQ0dMZW51bSwgaW50LCBHQ0dMZW51bSwgR0NHTHNpemVpLCBHQ0dMc2l6ZWkgKiwg
R0NHTGZsb2F0ICopCi17Ci0gICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZB
TElEX09QRVJBVElPTik7Ci19Ci0KLQotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246Omdl
dFBvaW50ZXJ2Um9idXN0QU5HTEVSb2J1c3RBTkdMRShHQ0dMZW51bSwgR0NHTHNpemVpLCBHQ0dM
c2l6ZWkgKiwgdm9pZCAqKikKLXsKLSAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdM
X0lOVkFMSURfT1BFUkFUSU9OKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246
OmdldG5Vbmlmb3JtZnZSb2J1c3RBTkdMRShHQ0dMdWludCwgaW50LCBHQ0dMc2l6ZWksIEdDR0xz
aXplaSAqLCBHQ0dMZmxvYXQgKikKLXsKLSAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9y
KEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21t
b246OmdldG5Vbmlmb3JtaXZSb2J1c3RBTkdMRShHQ0dMdWludCwgaW50LCBHQ0dMc2l6ZWksIEdD
R0xzaXplaSAqLCBHQ0dMaW50ICopCi17Ci0gICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJv
cihHTF9JTlZBTElEX09QRVJBVElPTik7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29t
bW9uOjpnZXRuVW5pZm9ybXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50LCBpbnQsIEdDR0xzaXplaSwg
R0NHTHNpemVpICosIEdDR0x1aW50ICopCi17Ci0gICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xF
cnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdM
Q29tbW9uOjp0ZXhQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRShHQ0dMZW51bSwgR0NHTGVudW0sIEdD
R0xzaXplaSwgY29uc3QgR0NHTGludCAqKQotewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdM
RXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5H
TENvbW1vbjo6dGV4UGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFKEdDR0xlbnVtLCBHQ0dMZW51bSwg
R0NHTHNpemVpLCBjb25zdCBHQ0dMdWludCAqKQotewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6
ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9w
ZW5HTENvbW1vbjo6Z2V0VGV4UGFyYW1ldGVySWl2Um9idXN0QU5HTEUoR0NHTGVudW0sIEdDR0xl
bnVtLCBHQ0dMc2l6ZWksIEdDR0xzaXplaSAqLCBHQ0dMaW50ICopCi17Ci0gICAgbV9jb250ZXh0
LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Ci19Ci0KLXZvaWQgRXh0
ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRUZXhQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUoR0NH
TGVudW0sIEdDR0xlbnVtLCBHQ0dMc2l6ZWksIEdDR0xzaXplaSAqLCBHQ0dMdWludCAqKQotewot
ICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwot
fQotCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6c2FtcGxlclBhcmFtZXRlcklpdlJv
YnVzdEFOR0xFKEdDR0x1aW50LCBHQ0dMZW51bSwgR0NHTHNpemVpLCBjb25zdCBHQ0dMaW50ICop
Ci17Ci0gICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElP
Tik7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpzYW1wbGVyUGFyYW1ldGVy
SXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50LCBHQ0dMZW51bSwgR0NHTHNpemVpLCBjb25zdCBHQ0dM
dWludCAqKQotewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9P
UEVSQVRJT04pOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0U2FtcGxl
clBhcmFtZXRlcklpdlJvYnVzdEFOR0xFKEdDR0x1aW50LCBHQ0dMZW51bSwgR0NHTHNpemVpLCBH
Q0dMc2l6ZWkgKiwgR0NHTGludCAqKQotewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJy
b3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENv
bW1vbjo6Z2V0U2FtcGxlclBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRShHQ0dMdWludCwgR0NHTGVu
dW0sIEdDR0xzaXplaSwgR0NHTHNpemVpICosIEdDR0x1aW50ICopCi17Ci0gICAgbV9jb250ZXh0
LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Ci19Ci0KLQotdm9pZCBF
eHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFF1ZXJ5T2JqZWN0aXZSb2J1c3RBTkdMRShHQ0dM
dWludCwgR0NHTGVudW0sIEdDR0xzaXplaSwgR0NHTHNpemVpICosIEdDR0xpbnQgKikKLXsKLSAg
ICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLX0K
LQotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFF1ZXJ5T2JqZWN0aTY0dlJvYnVz
dEFOR0xFKEdDR0x1aW50LCBHQ0dMZW51bSwgR0NHTHNpemVpLCBHQ0dMc2l6ZWkgKiwgR0NHTGlu
dDY0ICopCi17Ci0gICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09Q
RVJBVElPTik7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRRdWVyeU9i
amVjdHVpNjR2Um9idXN0QU5HTEUoR0NHTHVpbnQsIEdDR0xlbnVtLCBHQ0dMc2l6ZWksIEdDR0xz
aXplaSAqLCBHQ0dMdWludDY0ICopCi17Ci0gICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJv
cihHTF9JTlZBTElEX09QRVJBVElPTik7Ci19Ci0KLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQog
CiAjZW5kaWYgLy8gRU5BQkxFKEdSQVBISUNTX0NPTlRFWFRfR0wpICYmIChVU0UoT1BFTkdMKSB8
fCBVU0UoT1BFTkdMX0VTKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uaAppbmRl
eCAzZjEwNDAxNjJmZmEwN2EyZGMxMzBhYmIyMmZiMWIxZmZjM2ZkZjIwLi4xMDE4YTE3ZWI4OGY3
ZDE5YTI4NGU2ZDUzMzRlN2E4MmI4ZjZhYzNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5H
TENvbW1vbi5oCkBAIC01NSw1OCArNTUsMTggQEAgcHVibGljOgogICAgIFN0cmluZyBnZXRUcmFu
c2xhdGVkU2hhZGVyU291cmNlQU5HTEUoUGxhdGZvcm1HTE9iamVjdCkgb3ZlcnJpZGU7CiAKICAg
ICAvLyBFWFQgUm9idXN0bmVzcyAtIHVzZXMgZ2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQigpCi0g
ICAgdm9pZCByZWFkblBpeGVsc0VYVChpbnQgeCwgaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NH
THNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkg
YnVmU2l6ZSwgdm9pZCAqZGF0YSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRuVW5pZm9ybWZ2RVhU
KEdDR0x1aW50IHByb2dyYW0sIGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIGZsb2F0
ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0blVuaWZvcm1pdkVYVChHQ0dMdWludCBw
cm9ncmFtLCBpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBpbnQgKnBhcmFtcykgb3Zl
cnJpZGU7Ci0KLSAgICBib29sIGlzTlZJRElBKCkgb3ZlcnJpZGUgeyByZXR1cm4gbV9pc05WSURJ
QTsgfQotICAgIGJvb2wgaXNBTUQoKSBvdmVycmlkZSB7IHJldHVybiBtX2lzQU1EOyB9Ci0gICAg
Ym9vbCBpc0ludGVsKCkgb3ZlcnJpZGUgeyByZXR1cm4gbV9pc0ludGVsOyB9Ci0gICAgYm9vbCBp
c0ltYWdpbmF0aW9uKCkgb3ZlcnJpZGUgeyByZXR1cm4gbV9pc0ltYWdpbmF0aW9uOyB9Ci0gICAg
U3RyaW5nIHZlbmRvcigpIG92ZXJyaWRlIHsgcmV0dXJuIG1fdmVuZG9yOyB9Ci0KLSAgICBib29s
IHJlcXVpcmVzQnVpbHRJbkZ1bmN0aW9uRW11bGF0aW9uKCkgb3ZlcnJpZGUgeyByZXR1cm4gbV9y
ZXF1aXJlc0J1aWx0SW5GdW5jdGlvbkVtdWxhdGlvbjsgfQotICAgIGJvb2wgcmVxdWlyZXNSZXN0
cmljdGVkTWF4aW11bVRleHR1cmVTaXplKCkgb3ZlcnJpZGUgeyByZXR1cm4gbV9yZXF1aXJlc1Jl
c3RyaWN0ZWRNYXhpbXVtVGV4dHVyZVNpemU7IH0KLQotICAgIC8vIEdMX0FOR0xFX3JvYnVzdF9j
bGllbnRfbWVtb3J5Ci0gICAgdm9pZCByZWFkUGl4ZWxzUm9idXN0QU5HTEUoaW50IHgsIGludCB5
LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NH
TGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMc2l6
ZWkgKmNvbHVtbnMsIEdDR0xzaXplaSAqcm93cywgdm9pZCAqcGl4ZWxzKSBvdmVycmlkZTsKLSAg
ICB2b2lkIHRleFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51
bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xmbG9hdCAqcGFyYW1zKSBvdmVy
cmlkZTsKLSAgICB2b2lkIHRleFBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xpbnQgKnBhcmFt
cykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRRdWVyeWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3Ro
LCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0UXVlcnlPYmplY3R1aXZS
b2J1c3RBTkdMRShHQ0dMdWludCBpZCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXpl
LCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHVpbnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9p
ZCBnZXRCdWZmZXJQb2ludGVydlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0g
cG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgdm9pZCAqKnBhcmFt
cykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJJaXZSb2J1c3RBTkdMRShHQ0dM
dWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkg
Kmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldFZlcnRleEF0
dHJpYkl1aXZSb2J1c3RBTkdMRShHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xz
aXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHVpbnQgKnBhcmFtcykgb3ZlcnJp
ZGU7Ci0gICAgdm9pZCBnZXRVbmlmb3JtdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwg
aW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0x1
aW50ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0QnVmZmVyUGFyYW1ldGVyaTY0dlJv
YnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZT
aXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludDY0ICpwYXJhbXMpIG92ZXJyaWRlOwotICAg
IHZvaWQgc2FtcGxlclBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NH
TGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMaW50ICpwYXJhbSkgb3Zl
cnJpZGU7Ci0gICAgdm9pZCBzYW1wbGVyUGFyYW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dMdWludCBz
YW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xmbG9h
dCAqcGFyYW0pIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0U2FtcGxlclBhcmFtZXRlcml2Um9idXN0
QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXpl
LCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lk
IGdldFNhbXBsZXJQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xl
bnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xmbG9h
dCAqcGFyYW1zKSBvdmVycmlkZTsKLQotICAgIHZvaWQgZ2V0RnJhbWVidWZmZXJQYXJhbWV0ZXJp
dlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBi
dWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAg
ICB2b2lkIGdldFByb2dyYW1JbnRlcmZhY2VpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0s
IEdDR0xlbnVtIHByb2dyYW1JbnRlcmZhY2UsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVm
U2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAg
dm9pZCBnZXRCb29sZWFuaV92Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMdWludCBp
bmRleCwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMYm9vbGVhbiAq
ZGF0YSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRNdWx0aXNhbXBsZWZ2Um9idXN0QU5HTEUoR0NH
TGVudW0gcG5hbWUsIEdDR0x1aW50IGluZGV4LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVp
ICpsZW5ndGgsIEdDR0xmbG9hdCAqdmFsKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldFRleExldmVs
UGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIGludCBsZXZlbCwgR0NHTGVu
dW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAq
cGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldFRleExldmVsUGFyYW1ldGVyZnZSb2J1c3RB
TkdMRShHQ0dMZW51bSB0YXJnZXQsIGludCBsZXZlbCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXpl
aSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGZsb2F0ICpwYXJhbXMpIG92ZXJyaWRl
OwotCi0gICAgdm9pZCBnZXRQb2ludGVydlJvYnVzdEFOR0xFUm9idXN0QU5HTEUoR0NHTGVudW0g
cG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgdm9pZCAqKnBhcmFt
cykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRuVW5pZm9ybWZ2Um9idXN0QU5HTEUoR0NHTHVpbnQg
cHJvZ3JhbSwgaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5n
dGgsIEdDR0xmbG9hdCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldG5Vbmlmb3JtaXZS
b2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZT
aXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2
b2lkIGdldG5Vbmlmb3JtdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgaW50IGxvY2F0
aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0x1aW50ICpwYXJh
bXMpIG92ZXJyaWRlOwotICAgIHZvaWQgdGV4UGFyYW1ldGVySWl2Um9idXN0QU5HTEUoR0NHTGVu
dW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xp
bnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCB0ZXhQYXJhbWV0ZXJJdWl2Um9idXN0QU5H
TEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNv
bnN0IEdDR0x1aW50ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0VGV4UGFyYW1ldGVy
SWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVp
IGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJyaWRlOwot
ICAgIHZvaWQgZ2V0VGV4UGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwg
R0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NH
THVpbnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzYW1wbGVyUGFyYW1ldGVySWl2Um9i
dXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZT
aXplLCBjb25zdCBHQ0dMaW50ICpwYXJhbSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzYW1wbGVyUGFy
YW1ldGVySXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBH
Q0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTHVpbnQgKnBhcmFtKSBvdmVycmlkZTsKLSAgICB2
b2lkIGdldFNhbXBsZXJQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBH
Q0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dM
aW50ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0U2FtcGxlclBhcmFtZXRlckl1aXZS
b2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1
ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMdWludCAqcGFyYW1zKSBvdmVycmlkZTsKLQot
ICAgIHZvaWQgZ2V0UXVlcnlPYmplY3RpdlJvYnVzdEFOR0xFKEdDR0x1aW50IGlkLCBHQ0dMZW51
bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpw
YXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0UXVlcnlPYmplY3RpNjR2Um9idXN0QU5HTEUo
R0NHTHVpbnQgaWQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVp
ICpsZW5ndGgsIEdDR0xpbnQ2NCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldFF1ZXJ5
T2JqZWN0dWk2NHZSb2J1c3RBTkdMRShHQ0dMdWludCBpZCwgR0NHTGVudW0gcG5hbWUsIEdDR0xz
aXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHVpbnQ2NCAqcGFyYW1zKSBvdmVy
cmlkZTsKKyAgICB2b2lkIHJlYWRuUGl4ZWxzRVhUKGludCB4LCBpbnQgeSwgR0NHTHNpemVpIHdp
ZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdD
R0xzaXplaSBidWZTaXplLCB2b2lkICpkYXRhKTsKKyAgICB2b2lkIGdldG5Vbmlmb3JtZnZFWFQo
R0NHTHVpbnQgcHJvZ3JhbSwgaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgZmxvYXQg
KnBhcmFtcyk7CisgICAgdm9pZCBnZXRuVW5pZm9ybWl2RVhUKEdDR0x1aW50IHByb2dyYW0sIGlu
dCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIGludCAqcGFyYW1zKTsKKworICAgIGJvb2wg
aXNOVklESUEoKSBjb25zdCB7IHJldHVybiBtX2lzTlZJRElBOyB9CisgICAgYm9vbCBpc0FNRCgp
IGNvbnN0IHsgcmV0dXJuIG1faXNBTUQ7IH0KKyAgICBib29sIGlzSW50ZWwoKSBjb25zdCB7IHJl
dHVybiBtX2lzSW50ZWw7IH0KKyAgICBib29sIGlzSW1hZ2luYXRpb24oKSBjb25zdCB7IHJldHVy
biBtX2lzSW1hZ2luYXRpb247IH0KKyAgICBTdHJpbmcgdmVuZG9yKCkgY29uc3QgeyByZXR1cm4g
bV92ZW5kb3I7IH0KKworICAgIGJvb2wgcmVxdWlyZXNCdWlsdEluRnVuY3Rpb25FbXVsYXRpb24o
KSBjb25zdCB7IHJldHVybiBtX3JlcXVpcmVzQnVpbHRJbkZ1bmN0aW9uRW11bGF0aW9uOyB9Cisg
ICAgYm9vbCByZXF1aXJlc1Jlc3RyaWN0ZWRNYXhpbXVtVGV4dHVyZVNpemUoKSBjb25zdCB7IHJl
dHVybiBtX3JlcXVpcmVzUmVzdHJpY3RlZE1heGltdW1UZXh0dXJlU2l6ZTsgfQogCiBwcm90ZWN0
ZWQ6CiAgICAgZnJpZW5kIGNsYXNzIEV4dGVuc2lvbnNHTE9wZW5HTEVTOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5H
TEVTLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNp
b25zR0xPcGVuR0xFUy5jcHAKaW5kZXggZTFlNDNiZjUzOTI4ODVhMjRmYmIzM2NiMjZiNWY2ZTQ5
MWZiZTA3My4uMDdkMDk3YzJjNTVjMzEyMGM0ZGVmZmE5YmI2YWUyNjRiNGJlNDhkNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNH
TE9wZW5HTEVTLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVu
Z2wvRXh0ZW5zaW9uc0dMT3BlbkdMRVMuY3BwCkBAIC0xMDAsMTEgKzEwMCw2IEBAIHZvaWQgRXh0
ZW5zaW9uc0dMT3BlbkdMRVM6OnJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUlNRyh1bnNp
Z25lZCBsb25nIHRhcmdlCiAgICAgICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xf
SU5WQUxJRF9PUEVSQVRJT04pOwogfQogCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTEVTOjpibGl0
RnJhbWVidWZmZXJBTkdMRShHQ0dMaW50LCBHQ0dMaW50LCBHQ0dMaW50LCBHQ0dMaW50LCBHQ0dM
aW50LCBHQ0dMaW50LCBHQ0dMaW50LCBHQ0dMaW50LCBHQ0dMYml0ZmllbGQsIEdDR0xlbnVtKQot
ewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KIHZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMRVM6
OnJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NH
THNpemVpIHNhbXBsZXMsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgs
IEdDR0xzaXplaSBoZWlnaHQpCiB7CiAgICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3Vy
cmVudCgpKQpAQCAtMTE1LDIxICsxMTAsNiBAQCB2b2lkIEV4dGVuc2lvbnNHTE9wZW5HTEVTOjpy
ZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVBTkdMRShHQ0dMZW51bSB0YXJnZXQsCiAgICAg
ICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMRVM6Omlu
c2VydEV2ZW50TWFya2VyRVhUKGNvbnN0IFN0cmluZyYpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQo
KTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xFUzo6cHVzaEdyb3VwTWFya2VyRVhUKGNv
bnN0IFN0cmluZyYpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBFeHRlbnNp
b25zR0xPcGVuR0xFUzo6cG9wR3JvdXBNYXJrZXJFWFQodm9pZCkKLXsKLSAgICBub3RJbXBsZW1l
bnRlZCgpOwotfQotCiBQbGF0Zm9ybUdMT2JqZWN0IEV4dGVuc2lvbnNHTE9wZW5HTEVTOjpjcmVh
dGVWZXJ0ZXhBcnJheU9FUygpCiB7CiAgICAgaWYgKG1fZ2xHZW5WZXJ0ZXhBcnJheXNPRVMpIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRl
bnNpb25zR0xPcGVuR0xFUy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Bl
bmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVTLmgKaW5kZXggNWM3NjAzN2ZhN2JjNmU4ZWVlM2U2NzNm
OTlhN2RmYzJmNzhmYjRkMi4uNjkzZDAzYzczZjBlYzgzMTBiM2NkMmViOGEzZGQzYjMyNjk0NmZh
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4
dGVuc2lvbnNHTE9wZW5HTEVTLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVTLmgKQEAgLTc1LDExICs3NSw3IEBAIHB1Ymxp
YzoKIAogICAgIC8vIEV4dGVuc2lvbjNEIG1ldGhvZHMKICAgICBib29sIGlzRW5hYmxlZChjb25z
dCBTdHJpbmcmKSBvdmVycmlkZTsKLSAgICB2b2lkIGJsaXRGcmFtZWJ1ZmZlckFOR0xFKEdDR0xp
bnQgc3JjWDAsIEdDR0xpbnQgc3JjWTAsIEdDR0xpbnQgc3JjWDEsIEdDR0xpbnQgc3JjWTEsIEdD
R0xpbnQgZHN0WDAsIEdDR0xpbnQgZHN0WTAsIEdDR0xpbnQgZHN0WDEsIEdDR0xpbnQgZHN0WTEs
IEdDR0xiaXRmaWVsZCBtYXNrLCBHQ0dMZW51bSBmaWx0ZXIpIG92ZXJyaWRlOwotICAgIHZvaWQg
cmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dM
c2l6ZWkgc2FtcGxlcywgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwg
R0NHTHNpemVpIGhlaWdodCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBpbnNlcnRFdmVudE1hcmtlckVY
VChjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKLSAgICB2b2lkIHB1c2hHcm91cE1hcmtlckVYVChj
b25zdCBTdHJpbmcmKSBvdmVycmlkZTsKLSAgICB2b2lkIHBvcEdyb3VwTWFya2VyRVhUKHZvaWQp
IG92ZXJyaWRlOworICAgIHZvaWQgcmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5HTEUo
R0NHTGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWkgc2FtcGxlcywgR0NHTGVudW0gaW50ZXJuYWxmb3Jt
YXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCk7CiAKICAgICBQbGF0Zm9ybUdM
T2JqZWN0IGNyZWF0ZVZlcnRleEFycmF5T0VTKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkZWxldGVW
ZXJ0ZXhBcnJheU9FUyhQbGF0Zm9ybUdMT2JqZWN0KSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9w
ZW5HTC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNz
Q29udGV4dEdMT3BlbkdMLmgKaW5kZXggOWNlMDViZDU3ODQwOGQ5YjE4ZTg4OGE3MTAwZjdiMmIx
NTI5YjllNy4uOGVjZmE4YTEzMjBhZGE2MDFjMjQyNWNiYWViZGEzNDVhOTUxODU2NiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Bl
bmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgKQEAgLTcyLDggKzcyLDEwIEBAIGNsYXNzIEV4
dGVuc2lvbnNHTDsKIGNsYXNzIEV4dGVuc2lvbnNHTEFOR0xFOwogI2VsaWYgVVNFKE9QRU5HTF9F
UykKIGNsYXNzIEV4dGVuc2lvbnNHTE9wZW5HTEVTOworY2xhc3MgRXh0ZW5zaW9uc0dMT3BlbkdM
Q29tbW9uOwogI2VsaWYgVVNFKE9QRU5HTCkKIGNsYXNzIEV4dGVuc2lvbnNHTE9wZW5HTDsKK2Ns
YXNzIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjsKICNlbmRpZgogY2xhc3MgSG9zdFdpbmRvdzsK
IGNsYXNzIEltYWdlQnVmZmVyOwpAQCAtNDgxLDggKzQ4MywxMiBAQCBwdWJsaWM6CiAgICAgLy8g
YWxsIG1ldGhvZHMgaXQgY29udGFpbnMgbWF5IG5lY2Vzc2FyaWx5IGJlIHN1cHBvcnRlZCBvbiB0
aGUKICAgICAvLyBjdXJyZW50IGhhcmR3YXJlLiBNdXN0IGNhbGwgRXh0ZW5zaW9uc0dMOjpzdXBw
b3J0cygpIHRvCiAgICAgLy8gZGV0ZXJtaW5lIHRoaXMuCisjaWYgVVNFKEFOR0xFKQogICAgIEV4
dGVuc2lvbnNHTCYgZ2V0RXh0ZW5zaW9ucygpIGZpbmFsOwotCisjZWxzZQorICAgIC8vIFVzZSBj
b3ZhcmlhbnQgcmV0dXJuIHR5cGUgZm9yIE9QRU5HTC9PUEVOR0xfRVMKKyAgICBFeHRlbnNpb25z
R0xPcGVuR0xDb21tb24mIGdldEV4dGVuc2lvbnMoKSBmaW5hbDsKKyNlbmRpZgogICAgIHZvaWQg
c2V0RmFpbE5leHRHUFVTdGF0dXNDaGVjaygpIGZpbmFsIHsgbV9mYWlsTmV4dFN0YXR1c0NoZWNr
ID0gdHJ1ZTsgfQogCiAgICAgdW5zaWduZWQgdGV4dHVyZVNlZWQoR0NHTHVpbnQgdGV4dHVyZSkg
eyByZXR1cm4gbV9zdGF0ZS50ZXh0dXJlU2VlZENvdW50LmNvdW50KHRleHR1cmUpOyB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0xCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEJhc2UuY3BwCmluZGV4IDEzYmNhNzRlYzg2
NzM0ZmRmZDZiYjc4MDk5MDQ2YmE4YTgxODVkYWIuLjUzNmNlM2E0ZjI2MzA0MmU2NjNhM2NhZDNm
MjhiMmYxZTJkYWUxNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEJhc2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEJh
c2UuY3BwCkBAIC0xMTYsNyArMTE2LDcgQEAgYm9vbCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
cmVzaGFwZUZCT3MoY29uc3QgSW50U2l6ZSYgc2l6ZSkKICAgICAgICAgLy8gV2UgZG9uJ3QgYWxs
b3cgdGhlIGxvZ2ljIHdoZXJlIHN0ZW5jaWwgaXMgcmVxdWlyZWQgYW5kIGRlcHRoIGlzIG5vdC4K
ICAgICAgICAgLy8gU2VlIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2YWxpZGF0ZUF0dHJpYnV0
ZXMuCiAKLSAgICAgICAgRXh0ZW5zaW9uc0dMJiBleHRlbnNpb25zID0gZ2V0RXh0ZW5zaW9ucygp
OworICAgICAgICBFeHRlbnNpb25zR0xPcGVuR0xDb21tb24mIGV4dGVuc2lvbnMgPSBnZXRFeHRl
bnNpb25zKCk7CiAgICAgICAgIC8vIFVzZSBhIDI0IGJpdCBkZXB0aCBidWZmZXIgd2hlcmUgd2Ug
a25vdyB3ZSBoYXZlIGl0LgogICAgICAgICBpZiAoZXh0ZW5zaW9ucy5zdXBwb3J0cygiR0xfRVhU
X3BhY2tlZF9kZXB0aF9zdGVuY2lsIikpCiAgICAgICAgICAgICBpbnRlcm5hbERlcHRoU3RlbmNp
bEZvcm1hdCA9IEdMX0RFUFRIMjRfU1RFTkNJTDhfRVhUOwpAQCAtNDE3LDcgKzQxNyw3IEBAIHZv
aWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNsZWFyRGVwdGgoR0NHTGNsYW1wZiBkZXB0aCkK
IH0KIAogI2lmICFQTEFURk9STShHVEspCi1FeHRlbnNpb25zR0wmIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpnZXRFeHRlbnNpb25zKCkKK0V4dGVuc2lvbnNHTE9wZW5HTENvbW1vbiYgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OmdldEV4dGVuc2lvbnMoKQogewogICAgIGlmICghbV9leHRlbnNp
b25zKQogICAgICAgICBtX2V4dGVuc2lvbnMgPSBtYWtlVW5pcXVlPEV4dGVuc2lvbnNHTE9wZW5H
TD4odGhpcywgaXNHTEVTMkNvbXBsaWFudCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvbW1vbi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0xDb21tb24uY3BwCmluZGV4IGU3OGJmNDc0M2I5Y2UzOTQzN2ZhYzE2ZGI2YmUw
MDk4NWIwYTU4MTUuLmViNTViNTEzMTEwNDIxOWNlMmU3ZjU0Njk3NTM0MWIzZWU3ZjJlZTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGlj
c0NvbnRleHRHTE9wZW5HTENvbW1vbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29tbW9uLmNwcApAQCAtMTE4
LDcgKzExOCw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnZhbGlkYXRlRGVwdGhT
dGVuY2lsKGNvbnN0IGNoYXIqIHBhY2tlZERlcHRoU3RlbmNpCiB7CiAgICAgYXV0byBhdHRycyA9
IGNvbnRleHRBdHRyaWJ1dGVzKCk7CiAKLSAgICBFeHRlbnNpb25zR0wmIGV4dGVuc2lvbnMgPSBn
ZXRFeHRlbnNpb25zKCk7CisgICAgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uJiBleHRlbnNpb25z
ID0gZ2V0RXh0ZW5zaW9ucygpOwogICAgIGlmIChhdHRycy5zdGVuY2lsKSB7CiAgICAgICAgIGlm
IChleHRlbnNpb25zLnN1cHBvcnRzKHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvbikpIHsKICAg
ICAgICAgICAgIGV4dGVuc2lvbnMuZW5zdXJlRW5hYmxlZChwYWNrZWREZXB0aFN0ZW5jaWxFeHRl
bnNpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Bl
bmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMRVMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMRVMuY3BwCmluZGV4IGI4
MmQxNjQxN2MyZjUxOTFkMDQ0MjQ4NzQ2ZTc4MzhhODY3YWU1MDIuLjBlNzhkMDgzOGNjYjE2YTFh
MDNkMzhiNTczNzA4ZTE5NWZlYTBjNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEVTLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0xFUy5jcHAKQEAgLTI1NCw3ICsyNTQsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjpjbGVhckRlcHRoKEdDR0xjbGFtcGYgZGVwdGgpCiB9CiAKICNpZiAhUExBVEZPUk0oR1RL
KQotRXh0ZW5zaW9uc0dMJiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0RXh0ZW5zaW9ucygp
CitFeHRlbnNpb25zR0xPcGVuR0xDb21tb24mIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRF
eHRlbnNpb25zKCkKIHsKICAgICBpZiAoIW1fZXh0ZW5zaW9ucykKICAgICAgICAgbV9leHRlbnNp
b25zID0gbWFrZVVuaXF1ZTxFeHRlbnNpb25zR0xPcGVuR0xFUz4odGhpcywgaXNHTEVTMkNvbXBs
aWFudCgpKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>415480</attachid>
            <date>2020-12-04 17:49:20 -0800</date>
            <delta_ts>2020-12-07 17:06:35 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-218896-20201204174917.patch</filename>
            <type>text/plain</type>
            <size>63982</size>
            <attacher name="Rini Patel">rini_patel</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwNDQzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2FlMjg5MzBiNzRmYmZk
NzMwMWQ2OGY5YjFiMGJjZjc4YTg2YzlmNy4uNzQ5OTYzMDhjMDQyOTg4YzhlYzhkMzg2ZGExNzNl
YzE0MDdlNzViMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyOSBAQAorMjAyMC0xMi0wNCAgUmlu
aSBQYXRlbCAgPHJpbmlfcGF0ZWxAYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZSB1bnVzZWQg
ZnVuY3Rpb25zIGZyb20gR3JhcGhpY3NDb250ZXh0R0wgYW5kIEV4dGVuc2lvbnNHTAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE4ODk2CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVtb3ZlIHVudXNlZCBm
dW5jdGlvbnMgZnJvbSBHcmFwaGljc0NvbnRleHRHTCBhbmQgRXh0ZW5zaW9uc0dMCisgICAgICAg
IFRoZXkncmUgZGVhZCBjb2RlIGFuZCBtYWtlIGl0IGhhcmRlciB0byBpbXBsZW1lbnQgdGhlIEdQ
VSBQcm9jZXNzIHZlcnNpb24uCisKKyAgICAgICAgLSBJZiB0aGUgZnVuY3Rpb24gaXMgdW51c2Vk
LCByZW1vdmUgaXQgZnVsbHkKKyAgICAgICAgLSBJZiB0aGUgZnVuY3Rpb24gaXMgdW51c2VkIGlu
IFVTRShBTkdMRSkgV2ViR0wgcGFydCwgcmVtb3ZlIHRoZSBmdW5jdGlvbiBmcm9tIEdyYXBoaWNz
Q29udGV4dEdMIGFuZCBBTkdMRSBHcmFwaGljc0NvbnRleHRHTE9wZW5HTAorCisgICAgICAgICog
aHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL0V4dGVuc2lvbnNHTC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lv
bnNHTEFOR0xFOjpFeHRlbnNpb25zR0xBTkdMRSk6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNp
b25zR0xBTkdMRTo6aW5pdGlhbGl6ZUF2YWlsYWJsZUV4dGVuc2lvbnMpOgorICAgICAgICAoV2Vi
Q29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmJsaXRGcmFtZWJ1ZmZlckFOR0xFKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpyZW5kZXJidWZmZXJTdG9yYWdl
TXVsdGlzYW1wbGVBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25z
R0xBTkdMRTo6aW5zZXJ0RXZlbnRNYXJrZXJFWFQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OnB1c2hHcm91cE1hcmtlckVYVCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6cG9wR3JvdXBNYXJrZXJFWFQpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OnJlYWRQaXhlbHNSb2J1
c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6
dGV4UGFyYW1ldGVyZnZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpF
eHRlbnNpb25zR0xBTkdMRTo6dGV4UGFyYW1ldGVyaXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6Z2V0UXVlcnlpdlJvYnVzdEFOR0xF
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpnZXRRdWVy
eU9iamVjdHVpdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVu
c2lvbnNHTEFOR0xFOjpnZXRCdWZmZXJQb2ludGVydlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpnZXRWZXJ0ZXhBdHRyaWJJaXZSb2J1
c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6
Z2V0VmVydGV4QXR0cmliSXVpdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpnZXRVbmlmb3JtdWl2Um9idXN0QU5HTEUpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldEJ1ZmZlclBhcmFtZXRl
cmk2NHZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25z
R0xBTkdMRTo6c2FtcGxlclBhcmFtZXRlcml2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OnNhbXBsZXJQYXJhbWV0ZXJmdlJvYnVzdEFO
R0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpnZXRT
YW1wbGVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpFeHRlbnNpb25zR0xBTkdMRTo6Z2V0U2FtcGxlclBhcmFtZXRlcmZ2Um9idXN0QU5HTEUpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldEZyYW1lYnVm
ZmVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpF
eHRlbnNpb25zR0xBTkdMRTo6Z2V0UHJvZ3JhbUludGVyZmFjZWl2Um9idXN0QU5HTEUpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldEJvb2xlYW5pX3ZS
b2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdM
RTo6Z2V0TXVsdGlzYW1wbGVmdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpnZXRUZXhMZXZlbFBhcmFtZXRlcml2Um9idXN0QU5HTEUp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldFRleExl
dmVsUGFyYW1ldGVyZnZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpF
eHRlbnNpb25zR0xBTkdMRTo6Z2V0UG9pbnRlcnZSb2J1c3RBTkdMRVJvYnVzdEFOR0xFKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpnZXRuVW5pZm9ybWZ2
Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5H
TEU6OmdldG5Vbmlmb3JtaXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpFeHRlbnNpb25zR0xBTkdMRTo6Z2V0blVuaWZvcm11aXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6dGV4UGFyYW1ldGVySWl2Um9i
dXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6
OnRleFBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpFeHRlbnNpb25zR0xBTkdMRTo6Z2V0VGV4UGFyYW1ldGVySWl2Um9idXN0QU5HTEUpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldFRleFBhcmFtZXRl
ckl1aXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25z
R0xBTkdMRTo6c2FtcGxlclBhcmFtZXRlcklpdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpzYW1wbGVyUGFyYW1ldGVySXVpdlJvYnVz
dEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpn
ZXRTYW1wbGVyUGFyYW1ldGVySWl2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldFNhbXBsZXJQYXJhbWV0ZXJJdWl2Um9idXN0QU5H
TEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldFF1
ZXJ5T2JqZWN0aXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRl
bnNpb25zR0xBTkdMRTo6Z2V0UXVlcnlPYmplY3RpNjR2Um9idXN0QU5HTEUpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldFF1ZXJ5T2JqZWN0dWk2NHZS
b2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUv
RXh0ZW5zaW9uc0dMQU5HTEUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wv
RXh0ZW5zaW9uc0dMT3BlbkdMLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9w
ZW5HTDo6YmxpdEZyYW1lYnVmZmVyQU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
RXh0ZW5zaW9uc0dMT3BlbkdMOjpyZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVBTkdMRSk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0w6Omluc2VydEV2
ZW50TWFya2VyRVhUKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9w
ZW5HTDo6cHVzaEdyb3VwTWFya2VyRVhUKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4
dGVuc2lvbnNHTE9wZW5HTDo6cG9wR3JvdXBNYXJrZXJFWFQpOiBEZWxldGVkLgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6cmVhZFBpeGVsc1Jv
YnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5H
TENvbW1vbjo6dGV4UGFyYW1ldGVyZnZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OnRleFBhcmFtZXRlcml2Um9idXN0QU5H
TEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9u
OjpnZXRRdWVyeWl2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0
ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRRdWVyeU9iamVjdHVpdlJvYnVzdEFOR0xFKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0QnVm
ZmVyUG9pbnRlcnZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRl
bnNpb25zR0xPcGVuR0xDb21tb246OmdldFZlcnRleEF0dHJpYklpdlJvYnVzdEFOR0xFKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0VmVy
dGV4QXR0cmliSXVpdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4
dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0VW5pZm9ybXVpdlJvYnVzdEFOR0xFKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0QnVmZmVy
UGFyYW1ldGVyaTY0dlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4
dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6c2FtcGxlclBhcmFtZXRlcml2Um9idXN0QU5HTEUpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpzYW1w
bGVyUGFyYW1ldGVyZnZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpF
eHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFNhbXBsZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xF
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6
Z2V0U2FtcGxlclBhcmFtZXRlcmZ2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRGcmFtZWJ1ZmZlclBhcmFtZXRlcml2
Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3Bl
bkdMQ29tbW9uOjpnZXRQcm9ncmFtSW50ZXJmYWNlaXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldEJvb2xlYW5pX3ZS
b2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVu
R0xDb21tb246OmdldE11bHRpc2FtcGxlZnZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFRleExldmVsUGFyYW1ldGVy
aXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xP
cGVuR0xDb21tb246OmdldFRleExldmVsUGFyYW1ldGVyZnZSb2J1c3RBTkdMRSk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFBvaW50ZXJ2
Um9idXN0QU5HTEVSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRl
bnNpb25zR0xPcGVuR0xDb21tb246OmdldG5Vbmlmb3JtZnZSb2J1c3RBTkdMRSk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldG5Vbmlmb3Jt
aXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xP
cGVuR0xDb21tb246OmdldG5Vbmlmb3JtdWl2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjp0ZXhQYXJhbWV0ZXJJaXZSb2J1
c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xD
b21tb246OnRleFBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFRleFBhcmFtZXRlcklpdlJvYnVz
dEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTENv
bW1vbjo6Z2V0VGV4UGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6c2FtcGxlclBhcmFtZXRlcklpdlJv
YnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5H
TENvbW1vbjo6c2FtcGxlclBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFNhbXBsZXJQYXJhbWV0
ZXJJaXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25z
R0xPcGVuR0xDb21tb246OmdldFNhbXBsZXJQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRRdWVy
eU9iamVjdGl2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5z
aW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRRdWVyeU9iamVjdGk2NHZSb2J1c3RBTkdMRSk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFF1ZXJ5
T2JqZWN0dWk2NHZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5oOgorICAgICAgICAoV2ViQ29y
ZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjppc05WSURJQSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmlzQU1EIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6aXNJbnRlbCBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmlzSW1hZ2luYXRpb24gY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjp2ZW5kb3Ig
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpyZXF1
aXJlc0J1aWx0SW5GdW5jdGlvbkVtdWxhdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpF
eHRlbnNpb25zR0xPcGVuR0xDb21tb246OnJlcXVpcmVzUmVzdHJpY3RlZE1heGltdW1UZXh0dXJl
U2l6ZSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lv
bnNHTE9wZW5HTEVTLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTEVT
OjpibGl0RnJhbWVidWZmZXJBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRl
bnNpb25zR0xPcGVuR0xFUzo6aW5zZXJ0RXZlbnRNYXJrZXJFWFQpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMRVM6OnB1c2hHcm91cE1hcmtlckVYVCk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xFUzo6cG9wR3JvdXBN
YXJrZXJFWFQpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9F
eHRlbnNpb25zR0xPcGVuR0xFUy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5n
bC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEJhc2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlc2hhcGVGQk9zKToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRFeHRlbnNpb25zKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb21tb24uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnZhbGlkYXRlRGVw
dGhTdGVuY2lsKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0xFUy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6Z2V0RXh0ZW5zaW9ucyk6CisKIDIwMjAtMTItMDQgIFBlbmcgTGl1ICA8cGVuZy5s
aXU2QGFwcGxlLmNvbT4KIAogICAgICAgICBbTVNFXSBNb3ZlIHRyYWNrIGJ1ZmZlciBtYW5hZ2Vt
ZW50IGZyb20gU291cmNlQnVmZmVyIHRvIFNvdXJjZUJ1ZmZlclByaXZhdGUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5j
cHAKaW5kZXggNzJjMjY0NDY2NmNmMDNhMmY1OWYxZTA5ZmU5MzI5M2NiODBiNmJhZS4uYjkzNGMx
ZTg5YzI1MWFjMGIwMDgzNzFmZjMxZmRiNGY5OTcxMjAwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKQEAg
LTc0MiwxMCArNzQyLDYgQEAgc3RkOjp1bmlxdWVfcHRyPFdlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2U+IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmNyZWF0ZShDYW4KICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAgICAgfQogCi0gICAgYXV0byYgZXh0ZW5zaW9ucyA9IGNvbnRleHQtPmdldEV4
dGVuc2lvbnMoKTsKLSAgICBpZiAoZXh0ZW5zaW9ucy5zdXBwb3J0cygiR0xfRVhUX2RlYnVnX21h
cmtlciJfcykpCi0gICAgICAgIGV4dGVuc2lvbnMucHVzaEdyb3VwTWFya2VyRVhUKCJXZWJHTFJl
bmRlcmluZ0NvbnRleHQiX3MpOwotCiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2U+IHJlbmRlcmluZ0NvbnRleHQ7CiAjaWYgRU5BQkxFKFdFQkdMMikKICAgICBp
ZiAodHlwZSA9PSAid2ViZ2wyIikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0V4dGVuc2lvbnNHTC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvRXh0ZW5zaW9uc0dMLmgKaW5kZXggYzRlNzc3OGRiNmE0NDhmZDBhNWU2NTE1OTFmZWVhMTQ1
Mzg2MzgyMy4uNjJkNTgzMDAwYTE1YzY3ZDJmOGE1MDhiNGZjNmI3ZTg4NGM0YjRkNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRXh0ZW5zaW9uc0dMLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRXh0ZW5zaW9uc0dMLmgKQEAgLTI3
OCwxMiArMjc4LDYgQEAgcHVibGljOgogICAgIC8vIGV4dGVybmFsbHkuCiAgICAgdmlydHVhbCBH
Q0dMaW50IGdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIoKSA9IDA7CiAKLSAgICAvLyBHTF9BTkdM
RV9mcmFtZWJ1ZmZlcl9ibGl0Ci0gICAgdmlydHVhbCB2b2lkIGJsaXRGcmFtZWJ1ZmZlckFOR0xF
KEdDR0xpbnQgc3JjWDAsIEdDR0xpbnQgc3JjWTAsIEdDR0xpbnQgc3JjWDEsIEdDR0xpbnQgc3Jj
WTEsIEdDR0xpbnQgZHN0WDAsIEdDR0xpbnQgZHN0WTAsIEdDR0xpbnQgZHN0WDEsIEdDR0xpbnQg
ZHN0WTEsIEdDR0xiaXRmaWVsZCBtYXNrLCBHQ0dMZW51bSBmaWx0ZXIpID0gMDsKLQotICAgIC8v
IEdMX0FOR0xFX2ZyYW1lYnVmZmVyX211bHRpc2FtcGxlCi0gICAgdmlydHVhbCB2b2lkIHJlbmRl
cmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVp
IHNhbXBsZXMsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xz
aXplaSBoZWlnaHQpID0gMDsKLQogICAgIC8vIEdMX09FU192ZXJ0ZXhfYXJyYXlfb2JqZWN0CiAg
ICAgdmlydHVhbCBQbGF0Zm9ybUdMT2JqZWN0IGNyZWF0ZVZlcnRleEFycmF5T0VTKCkgPSAwOwog
ICAgIHZpcnR1YWwgdm9pZCBkZWxldGVWZXJ0ZXhBcnJheU9FUyhQbGF0Zm9ybUdMT2JqZWN0KSA9
IDA7CkBAIC0yOTMsMTEgKzI4Nyw2IEBAIHB1YmxpYzoKICAgICAvLyBHTF9BTkdMRV90cmFuc2xh
dGVkX3NoYWRlcl9zb3VyY2UKICAgICB2aXJ0dWFsIFN0cmluZyBnZXRUcmFuc2xhdGVkU2hhZGVy
U291cmNlQU5HTEUoUGxhdGZvcm1HTE9iamVjdCkgPSAwOwogCi0gICAgLy8gR0xfRVhUX2RlYnVn
X21hcmtlcgotICAgIHZpcnR1YWwgdm9pZCBpbnNlcnRFdmVudE1hcmtlckVYVChjb25zdCBTdHJp
bmcmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHB1c2hHcm91cE1hcmtlckVYVChjb25zdCBTdHJp
bmcmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHBvcEdyb3VwTWFya2VyRVhUKCkgPSAwOwotCiAg
ICAgLy8gR0xfQVJCX2RyYXdfYnVmZmVycyAvIEdMX0VYVF9kcmF3X2J1ZmZlcnMKICAgICB2aXJ0
dWFsIHZvaWQgZHJhd0J1ZmZlcnNFWFQoR0NHTFNwYW48Y29uc3QgR0NHTGVudW0+IGJ1ZnMpID0g
MDsKIApAQCAtMzA2LDQ3ICsyOTUsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRyYXdF
bGVtZW50c0luc3RhbmNlZEFOR0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xzaXplaSBjb3VudCwgR0NH
TGVudW0gdHlwZSwgR0NHTHZvaWRwdHIgb2Zmc2V0LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KSA9IDA7
CiAgICAgdmlydHVhbCB2b2lkIHZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRShHQ0dMdWludCBpbmRl
eCwgR0NHTHVpbnQgZGl2aXNvcikgPSAwOwogCi0gICAgLy8gR0xfQU5HTEVfcm9idXN0X2NsaWVu
dF9tZW1vcnkKLSAgICB2aXJ0dWFsIHZvaWQgcmVhZFBpeGVsc1JvYnVzdEFOR0xFKEdDR0xpbnQg
eCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVt
IGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVu
Z3RoLCBHQ0dMc2l6ZWkqIGNvbHVtbnMsIEdDR0xzaXplaSogcm93cywgR0NHTHZvaWQqIHBpeGVs
cykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCB0ZXhQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0xl
bnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dM
ZmxvYXQqIHBhcmFtcykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCB0ZXhQYXJhbWV0ZXJpdlJvYnVz
dEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXpl
LCBjb25zdCBHQ0dMaW50KiBwYXJhbXMpID0gMDsKLQotICAgIHZpcnR1YWwgdm9pZCBnZXRRdWVy
eWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVp
IGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpID0gMDsKLSAgICB2
aXJ0dWFsIHZvaWQgZ2V0UXVlcnlPYmplY3R1aXZSb2J1c3RBTkdMRShHQ0dMdWludCBpZCwgR0NH
TGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHVp
bnQqIHBhcmFtcykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRCdWZmZXJQb2ludGVydlJvYnVz
dEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXpl
LCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHZvaWQqKiBwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFs
IHZvaWQgZ2V0VmVydGV4QXR0cmliSWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0xl
bnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQq
IHBhcmFtcykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJJdWl2Um9idXN0
QU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwg
R0NHTHNpemVpKiBsZW5ndGgsIEdDR0x1aW50KiBwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZv
aWQgZ2V0VW5pZm9ybXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9j
YXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHVpbnQqIHBh
cmFtcykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRCdWZmZXJQYXJhbWV0ZXJpNjR2Um9idXN0
QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUs
IEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50NjQqIHBhcmFtcykgPSAwOwotICAgIHZpcnR1YWwg
dm9pZCBzYW1wbGVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dM
ZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xpbnQqIHBhcmFtKSA9IDA7
Ci0gICAgdmlydHVhbCB2b2lkIHNhbXBsZXJQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0x1aW50
IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGZs
b2F0KiBwYXJhbSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRTYW1wbGVyUGFyYW1ldGVyaXZS
b2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1
ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpID0gMDsKLSAgICB2aXJ0
dWFsIHZvaWQgZ2V0U2FtcGxlclBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxl
ciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwg
R0NHTGZsb2F0KiBwYXJhbXMpID0gMDsKLQotICAgIHZpcnR1YWwgdm9pZCBnZXRGcmFtZWJ1ZmZl
clBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwg
R0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpID0g
MDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0UHJvZ3JhbUludGVyZmFjZWl2Um9idXN0QU5HTEUoR0NH
THVpbnQgcHJvZ3JhbSwgR0NHTGVudW0gcHJvZ3JhbUludGVyZmFjZSwgR0NHTGVudW0gcG5hbWUs
IEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1zKSA9
IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldEJvb2xlYW5pX3ZSb2J1c3RBTkdMRShHQ0dMZW51bSB0
YXJnZXQsIEdDR0x1aW50IGluZGV4LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5n
dGgsIEdDR0xib29sZWFuKiBkYXRhKSA9IDA7IC8vIE5PTElOVAotICAgIHZpcnR1YWwgdm9pZCBn
ZXRNdWx0aXNhbXBsZWZ2Um9idXN0QU5HTEUoR0NHTGVudW0gcG5hbWUsIEdDR0x1aW50IGluZGV4
LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xmbG9hdCogdmFsKSA9
IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldFRleExldmVsUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShH
Q0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkg
YnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykgPSAwOwotICAgIHZp
cnR1YWwgdm9pZCBnZXRUZXhMZXZlbFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdD
R0xzaXplaSogbGVuZ3RoLCBHQ0dMZmxvYXQqIHBhcmFtcykgPSAwOwotCi0gICAgdmlydHVhbCB2
b2lkIGdldFBvaW50ZXJ2Um9idXN0QU5HTEVSb2J1c3RBTkdMRShHQ0dMZW51bSBwbmFtZSwgR0NH
THNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMdm9pZCoqIHBhcmFtcykgPSAw
OwotICAgIHZpcnR1YWwgdm9pZCBnZXRuVW5pZm9ybWZ2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJv
Z3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVu
Z3RoLCBHQ0dMZmxvYXQqIHBhcmFtcykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRuVW5pZm9y
bWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNp
emVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpID0gMDsKLSAg
ICB2aXJ0dWFsIHZvaWQgZ2V0blVuaWZvcm11aXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFt
LCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgs
IEdDR0x1aW50KiBwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgdGV4UGFyYW1ldGVySWl2
Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1
ZlNpemUsIGNvbnN0IEdDR0xpbnQqIHBhcmFtcykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCB0ZXhQ
YXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwg
R0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0x1aW50KiBwYXJhbXMpID0gMDsKLSAgICB2aXJ0
dWFsIHZvaWQgZ2V0VGV4UGFyYW1ldGVySWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dM
aW50KiBwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0VGV4UGFyYW1ldGVySXVpdlJv
YnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZT
aXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHVpbnQqIHBhcmFtcykgPSAwOwotICAgIHZpcnR1
YWwgdm9pZCBzYW1wbGVyUGFyYW1ldGVySWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwg
R0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMaW50KiBwYXJhbSkg
PSAwOwotICAgIHZpcnR1YWwgdm9pZCBzYW1wbGVyUGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFKEdD
R0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3Qg
R0NHTHVpbnQqIHBhcmFtKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldFNhbXBsZXJQYXJhbWV0
ZXJJaXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNp
emVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpID0gMDsKLSAg
ICB2aXJ0dWFsIHZvaWQgZ2V0U2FtcGxlclBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRShHQ0dMdWlu
dCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSog
bGVuZ3RoLCBHQ0dMdWludCogcGFyYW1zKSA9IDA7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgZ2V0UXVl
cnlPYmplY3RpdlJvYnVzdEFOR0xFKEdDR0x1aW50IGlkLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNp
emVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpID0gMDsKLSAg
ICB2aXJ0dWFsIHZvaWQgZ2V0UXVlcnlPYmplY3RpNjR2Um9idXN0QU5HTEUoR0NHTHVpbnQgaWQs
IEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdD
R0xpbnQ2NCogcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldFF1ZXJ5T2JqZWN0dWk2
NHZSb2J1c3RBTkdMRShHQ0dMdWludCBpZCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZT
aXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHVpbnQ2NCogcGFyYW1zKSA9IDA7Ci0KICAgICAv
LyBPdGhlciBmdW5jdGlvbnMuCiAjaWYgIVVTRShBTkdMRSkKICAgICAvLyBFWFQgUm9idXN0bmVz
cyAtIHVzZXMgZ2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQgpAQCAtMzU0LDE2ICszMDIsNiBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGdldG5Vbmlmb3JtZnZFWFQoR0NHTHVpbnQgcHJvZ3Jh
bSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xmbG9hdCogcGFyYW1z
KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGdldG5Vbmlmb3JtaXZFWFQoR0NHTHVpbnQgcHJvZ3Jh
bSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xpbnQqIHBhcmFtcykg
PSAwOwogCi0gICAgdmlydHVhbCBib29sIGlzTlZJRElBKCkgPSAwOwotICAgIHZpcnR1YWwgYm9v
bCBpc0FNRCgpID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgaXNJbnRlbCgpID0gMDsKLSAgICB2aXJ0
dWFsIGJvb2wgaXNJbWFnaW5hdGlvbigpID0gMDsKLSAgICB2aXJ0dWFsIFN0cmluZyB2ZW5kb3Io
KSA9IDA7Ci0KLSAgICAvLyBTb21lIGNvbmZpZ3VyYXRpb25zIGhhdmUgYnVncyByZWdhcmRpbmcg
YnVpbHQtaW4gZnVuY3Rpb25zIGluIHRoZWlyIE9wZW5HTCBkcml2ZXJzCi0gICAgLy8gdGhhdCBt
dXN0IGJlIGF2b2lkZWQuIFBvcnRzIHNob3VsZCBpbXBsZW1lbnQgdGhlc2UgZmxhZ3Mgb24gc3Vj
aCBjb25maWd1cmF0aW9ucy4KLSAgICB2aXJ0dWFsIGJvb2wgcmVxdWlyZXNCdWlsdEluRnVuY3Rp
b25FbXVsYXRpb24oKSA9IDA7Ci0gICAgdmlydHVhbCBib29sIHJlcXVpcmVzUmVzdHJpY3RlZE1h
eGltdW1UZXh0dXJlU2l6ZSgpID0gMDsKICNlbmRpZgogCiB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUu
Y3BwCmluZGV4IGI3ZGI0ZmQyMDQxYjNiYmM4YmI5YTc3MzNlODliZWVhYWViNmY3ODkuLmNlNDZj
N2E3NWE1ZTJiNjJmMmFiOWZlMDJiOWJlYzFmNmE3MGZiOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRlbnNpb25zR0xBTkdM
RS5jcHAKQEAgLTQzLDEwICs0Myw5IEBAIHR5cGVkZWYgdm9pZCogR0xlZ2xDb250ZXh0OwogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLUV4dGVuc2lvbnNHTEFOR0xFOjpFeHRlbnNpb25zR0xBTkdM
RShHcmFwaGljc0NvbnRleHRHTE9wZW5HTCogY29udGV4dCwgYm9vbCB1c2VJbmRleGVkR2V0U3Ry
aW5nKQorRXh0ZW5zaW9uc0dMQU5HTEU6OkV4dGVuc2lvbnNHTEFOR0xFKEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMKiBjb250ZXh0KQogICAgIDogbV9pbml0aWFsaXplZEF2YWlsYWJsZUV4dGVuc2lv
bnMoZmFsc2UpCiAgICAgLCBtX2NvbnRleHQoY29udGV4dCkKLSAgICAsIG1fdXNlSW5kZXhlZEdl
dFN0cmluZyh1c2VJbmRleGVkR2V0U3RyaW5nKQogewogfQogCkBAIC0xMDksNDIgKzEwOCwxNSBA
QCBTdHJpbmcgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdM
RShQbGF0Zm9ybUdMT2JqZWN0IHNoYWRlcgogCiB2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjppbml0
aWFsaXplQXZhaWxhYmxlRXh0ZW5zaW9ucygpCiB7Ci0gICAgaWYgKG1fdXNlSW5kZXhlZEdldFN0
cmluZykgewotICAgICAgICBHTGludCBudW1FeHRlbnNpb25zID0gMDsKLSAgICAgICAgZ2w6Okdl
dEludGVnZXJ2KEdMX05VTV9FWFRFTlNJT05TLCAmbnVtRXh0ZW5zaW9ucyk7Ci0gICAgICAgIGZv
ciAoR0xpbnQgaSA9IDA7IGkgPCBudW1FeHRlbnNpb25zOyArK2kpCi0gICAgICAgICAgICBtX2F2
YWlsYWJsZUV4dGVuc2lvbnMuYWRkKGdsOjpHZXRTdHJpbmdpKEdMX0VYVEVOU0lPTlMsIGkpKTsK
LSAgICAgICAgZ2w6OkdldEludGVnZXJ2KEdMX05VTV9SRVFVRVNUQUJMRV9FWFRFTlNJT05TX0FO
R0xFLCAmbnVtRXh0ZW5zaW9ucyk7Ci0gICAgICAgIGZvciAoR0xpbnQgaSA9IDA7IGkgPCBudW1F
eHRlbnNpb25zOyArK2kpCi0gICAgICAgICAgICBtX3JlcXVlc3RhYmxlRXh0ZW5zaW9ucy5hZGQo
Z2w6OkdldFN0cmluZ2koR0xfUkVRVUVTVEFCTEVfRVhURU5TSU9OU19BTkdMRSwgaSkpOwotICAg
IH0gZWxzZSB7Ci0gICAgICAgIFN0cmluZyBleHRlbnNpb25zU3RyaW5nID0gZ2V0RXh0ZW5zaW9u
cygpOwotICAgICAgICBmb3IgKGF1dG8mIGV4dGVuc2lvbiA6IGV4dGVuc2lvbnNTdHJpbmcuc3Bs
aXQoJyAnKSkKLSAgICAgICAgICAgIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5hZGQoZXh0ZW5zaW9u
KTsKLSAgICAgICAgZXh0ZW5zaW9uc1N0cmluZyA9IFN0cmluZyhyZWludGVycHJldF9jYXN0PGNv
bnN0IGNoYXIqPihnbDo6R2V0U3RyaW5nKEdMX1JFUVVFU1RBQkxFX0VYVEVOU0lPTlNfQU5HTEUp
KSk7Ci0gICAgICAgIGZvciAoYXV0byYgZXh0ZW5zaW9uIDogZXh0ZW5zaW9uc1N0cmluZy5zcGxp
dCgnICcpKQotICAgICAgICAgICAgbV9yZXF1ZXN0YWJsZUV4dGVuc2lvbnMuYWRkKGV4dGVuc2lv
bik7Ci0gICAgfQorICAgIFN0cmluZyBleHRlbnNpb25zU3RyaW5nID0gZ2V0RXh0ZW5zaW9ucygp
OworICAgIGZvciAoYXV0byYgZXh0ZW5zaW9uIDogZXh0ZW5zaW9uc1N0cmluZy5zcGxpdCgnICcp
KQorICAgICAgICBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuYWRkKGV4dGVuc2lvbik7CisgICAgZXh0
ZW5zaW9uc1N0cmluZyA9IFN0cmluZyhyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihnbDo6
R2V0U3RyaW5nKEdMX1JFUVVFU1RBQkxFX0VYVEVOU0lPTlNfQU5HTEUpKSk7CisgICAgZm9yIChh
dXRvJiBleHRlbnNpb24gOiBleHRlbnNpb25zU3RyaW5nLnNwbGl0KCcgJykpCisgICAgICAgIG1f
cmVxdWVzdGFibGVFeHRlbnNpb25zLmFkZChleHRlbnNpb24pOwogICAgIG1faW5pdGlhbGl6ZWRB
dmFpbGFibGVFeHRlbnNpb25zID0gdHJ1ZTsKIH0KIAotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6
YmxpdEZyYW1lYnVmZmVyQU5HTEUoR0NHTGludCBzcmNYMCwgR0NHTGludCBzcmNZMCwgR0NHTGlu
dCBzcmNYMSwgR0NHTGludCBzcmNZMSwgR0NHTGludCBkc3RYMCwgR0NHTGludCBkc3RZMCwgR0NH
TGludCBkc3RYMSwgR0NHTGludCBkc3RZMSwgR0NHTGJpdGZpZWxkIG1hc2ssIEdDR0xlbnVtIGZp
bHRlcikKLXsKLSAgICAvLyBGSVhNRTogY29uc2lkZXIgYWRkaW5nIHN1cHBvcnQgZm9yIEFQUExF
X2ZyYW1lYnVmZmVyX211bHRpc2FtcGxlLgotICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4
dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OkJsaXRGcmFtZWJ1ZmZlckFO
R0xFKHNyY1gwLCBzcmNZMCwgc3JjWDEsIHNyY1kxLCBkc3RYMCwgZHN0WTAsIGRzdFgxLCBkc3RZ
MSwgbWFzaywgZmlsdGVyKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6cmVuZGVyYnVm
ZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWkgc2Ft
cGxlcywgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVp
IGhlaWdodCkKLXsKLSAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0g
ICAgICAgIHJldHVybjsKLQotICAgIGdsOjpSZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVB
TkdMRSh0YXJnZXQsIHNhbXBsZXMsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0KTsKLX0K
LQogUGxhdGZvcm1HTE9iamVjdCBFeHRlbnNpb25zR0xBTkdMRTo6Y3JlYXRlVmVydGV4QXJyYXlP
RVMoKQogewogICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKQEAgLTE4
NSwyNCArMTU3LDYgQEAgdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6YmluZFZlcnRleEFycmF5T0VT
KFBsYXRmb3JtR0xPYmplY3QgYXJyYXkpCiAgICAgZ2w6OkJpbmRWZXJ0ZXhBcnJheU9FUyhhcnJh
eSk7CiB9CiAKLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6Omluc2VydEV2ZW50TWFya2VyRVhUKGNv
bnN0IFN0cmluZyYpCi17Ci0gICAgLy8gRklYTUU6IGltcGxlbWVudCB0aGlzIGZ1bmN0aW9uIGFu
ZCBhZGQgR0xfRVhUX2RlYnVnX21hcmtlciBpbiBzdXBwb3J0cygpLgotICAgIHJldHVybjsKLX0K
LQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6cHVzaEdyb3VwTWFya2VyRVhUKGNvbnN0IFN0cmlu
ZyYpCi17Ci0gICAgLy8gRklYTUU6IGltcGxlbWVudCB0aGlzIGZ1bmN0aW9uIGFuZCBhZGQgR0xf
RVhUX2RlYnVnX21hcmtlciBpbiBzdXBwb3J0cygpLgotICAgIHJldHVybjsKLX0KLQotdm9pZCBF
eHRlbnNpb25zR0xBTkdMRTo6cG9wR3JvdXBNYXJrZXJFWFQodm9pZCkKLXsKLSAgICAvLyBGSVhN
RTogaW1wbGVtZW50IHRoaXMgZnVuY3Rpb24gYW5kIGFkZCBHTF9FWFRfZGVidWdfbWFya2VyIGlu
IHN1cHBvcnRzKCkuCi0gICAgcmV0dXJuOwotfQotCiBib29sIEV4dGVuc2lvbnNHTEFOR0xFOjpz
dXBwb3J0c0V4dGVuc2lvbihjb25zdCBTdHJpbmcmIG5hbWUpCiB7CiAgICAgcmV0dXJuIG1fYXZh
aWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucyhuYW1lKSB8fCBtX3JlcXVlc3RhYmxlRXh0ZW5zaW9u
cy5jb250YWlucyhuYW1lKTsKQEAgLTI1OCwyOTEgKzIxMiw2IEBAIEdDR0xlbnVtIEV4dGVuc2lv
bnNHTEFOR0xFOjphZGp1c3RXZWJHTDFUZXh0dXJlSW50ZXJuYWxGb3JtYXQoR0NHTGVudW0gaW50
ZXJuYWxmCiAgICAgcmV0dXJuIGludGVybmFsZm9ybWF0OwogfQogCi0vLyBHTF9BTkdMRV9yb2J1
c3RfY2xpZW50X21lbW9yeQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6cmVhZFBpeGVsc1JvYnVz
dEFOR0xFKGludCB4LCBpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBH
Q0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6
ZWkgKmxlbmd0aCwgR0NHTHNpemVpICpjb2x1bW5zLCBHQ0dMc2l6ZWkgKnJvd3MsIHZvaWQgKnBp
eGVscykKLXsKLSAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAg
ICAgIHJldHVybjsKLQotICAgIGdsOjpSZWFkUGl4ZWxzUm9idXN0QU5HTEUoeCwgeSwgd2lkdGgs
IGhlaWdodCwgZm9ybWF0LCB0eXBlLCBidWZTaXplLCBsZW5ndGgsIGNvbHVtbnMsIHJvd3MsIHBp
eGVscyk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OnRleFBhcmFtZXRlcmZ2Um9idXN0
QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUs
IGNvbnN0IEdDR0xmbG9hdCAqcGFyYW1zKQotewotICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29u
dGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OlRleFBhcmFtZXRlcmZ2
Um9idXN0QU5HTEUodGFyZ2V0LCBwbmFtZSwgYnVmU2l6ZSwgcGFyYW1zKTsKLX0KLQotdm9pZCBF
eHRlbnNpb25zR0xBTkdMRTo6dGV4UGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJn
ZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGludCAqcGFy
YW1zKQotewotICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAg
ICAgcmV0dXJuOwotCi0gICAgZ2w6OlRleFBhcmFtZXRlcml2Um9idXN0QU5HTEUodGFyZ2V0LCBw
bmFtZSwgYnVmU2l6ZSwgcGFyYW1zKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0
UXVlcnlpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xz
aXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKQotewotICAg
IGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwot
Ci0gICAgZ2w6OkdldFF1ZXJ5aXZSb2J1c3RBTkdMRSh0YXJnZXQsIHBuYW1lLCBidWZTaXplLCBs
ZW5ndGgsIHBhcmFtcyk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldFF1ZXJ5T2Jq
ZWN0dWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgaWQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkg
YnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0x1aW50ICpwYXJhbXMpCi17Ci0gICAgaWYg
KCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAg
ICBnbDo6R2V0UXVlcnlPYmplY3R1aXZSb2J1c3RBTkdMRShpZCwgcG5hbWUsIGJ1ZlNpemUsIGxl
bmd0aCwgcGFyYW1zKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0QnVmZmVyUG9p
bnRlcnZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6
ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIHZvaWQgKipwYXJhbXMpCi17Ci0gICAgaWYg
KCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAg
ICBnbDo6R2V0QnVmZmVyUG9pbnRlcnZSb2J1c3RBTkdMRSh0YXJnZXQsIHBuYW1lLCBidWZTaXpl
LCBsZW5ndGgsIHBhcmFtcyk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldFZlcnRl
eEF0dHJpYklpdlJvYnVzdEFOR0xFKEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NH
THNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpCi17Ci0g
ICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47
Ci0KLSAgICBnbDo6R2V0VmVydGV4QXR0cmliSWl2Um9idXN0QU5HTEUoaW5kZXgsIHBuYW1lLCBi
dWZTaXplLCBsZW5ndGgsIHBhcmFtcyk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6Omdl
dFZlcnRleEF0dHJpYkl1aXZSb2J1c3RBTkdMRShHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5h
bWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHVpbnQgKnBhcmFt
cykKLXsKLSAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAg
IHJldHVybjsKLQotICAgIGdsOjpHZXRWZXJ0ZXhBdHRyaWJJdWl2Um9idXN0QU5HTEUoaW5kZXgs
IHBuYW1lLCBidWZTaXplLCBsZW5ndGgsIHBhcmFtcyk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dM
QU5HTEU6OmdldFVuaWZvcm11aXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMaW50
IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0x1aW50
ICpwYXJhbXMpCi17Ci0gICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQot
ICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6R2V0VW5pZm9ybXVpdlJvYnVzdEFOR0xFKHByb2dy
YW0sIGxvY2F0aW9uLCBidWZTaXplLCBsZW5ndGgsIHBhcmFtcyk7Ci19Ci0KLXZvaWQgRXh0ZW5z
aW9uc0dMQU5HTEU6OmdldEJ1ZmZlclBhcmFtZXRlcmk2NHZSb2J1c3RBTkdMRShHQ0dMZW51bSB0
YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5n
dGgsIEdDR0xpbnQ2NCAqcGFyYW1zKQotewotICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4
dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OkdldEJ1ZmZlclBhcmFtZXRl
cmk2NHZSb2J1c3RBTkdMRSh0YXJnZXQsIHBuYW1lLCBidWZTaXplLCBsZW5ndGgsIHJlaW50ZXJw
cmV0X2Nhc3Q8R0xpbnQ2NCo+KHBhcmFtcykpOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xF
OjpzYW1wbGVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51
bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xpbnQgKnBhcmFtKQotewotICAg
IGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwot
Ci0gICAgZ2w6OlNhbXBsZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKHNhbXBsZXIsIHBuYW1lLCBi
dWZTaXplLCBwYXJhbSk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OnNhbXBsZXJQYXJh
bWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dM
c2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGZsb2F0ICpwYXJhbSkKLXsKLSAgICBpZiAoIW1fY29u
dGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpT
YW1wbGVyUGFyYW1ldGVyZnZSb2J1c3RBTkdMRShzYW1wbGVyLCBwbmFtZSwgYnVmU2l6ZSwgcGFy
YW0pOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRTYW1wbGVyUGFyYW1ldGVyaXZS
b2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1
ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpCi17Ci0gICAgaWYgKCFt
X2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBn
bDo6R2V0U2FtcGxlclBhcmFtZXRlcml2Um9idXN0QU5HTEUoc2FtcGxlciwgcG5hbWUsIGJ1ZlNp
emUsIGxlbmd0aCwgcGFyYW1zKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0U2Ft
cGxlclBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5h
bWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGZsb2F0ICpwYXJh
bXMpCi17Ci0gICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAg
ICByZXR1cm47Ci0KLSAgICBnbDo6R2V0U2FtcGxlclBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoc2Ft
cGxlciwgcG5hbWUsIGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1zKTsKLX0KLQotCi12b2lkIEV4dGVu
c2lvbnNHTEFOR0xFOjpnZXRGcmFtZWJ1ZmZlclBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVu
dW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAq
bGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpCi17Ci0gICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250
ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6R2V0RnJhbWVidWZmZXJQ
YXJhbWV0ZXJpdlJvYnVzdEFOR0xFKHRhcmdldCwgcG5hbWUsIGJ1ZlNpemUsIGxlbmd0aCwgcGFy
YW1zKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0UHJvZ3JhbUludGVyZmFjZWl2
Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGVudW0gcHJvZ3JhbUludGVyZmFjZSwg
R0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NH
TGludCAqcGFyYW1zKQotewotICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQo
KSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OkdldFByb2dyYW1JbnRlcmZhY2VpdlJvYnVz
dEFOR0xFKHByb2dyYW0sIHByb2dyYW1JbnRlcmZhY2UsIHBuYW1lLCBidWZTaXplLCBsZW5ndGgs
IHBhcmFtcyk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldEJvb2xlYW5pX3ZSb2J1
c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0x1aW50IGluZGV4LCBHQ0dMc2l6ZWkgYnVmU2l6
ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xib29sZWFuICpkYXRhKQotewotICAgIGlmICghbV9j
b250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6
OkdldEJvb2xlYW5pX3ZSb2J1c3RBTkdMRSh0YXJnZXQsIGluZGV4LCBidWZTaXplLCBsZW5ndGgs
IGRhdGEpOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRNdWx0aXNhbXBsZWZ2Um9i
dXN0QU5HTEUoR0NHTGVudW0gcG5hbWUsIEdDR0x1aW50IGluZGV4LCBHQ0dMc2l6ZWkgYnVmU2l6
ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xmbG9hdCAqdmFsKQotewotICAgIGlmICghbV9jb250
ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6Okdl
dE11bHRpc2FtcGxlZnZSb2J1c3RBTkdMRShwbmFtZSwgaW5kZXgsIGJ1ZlNpemUsIGxlbmd0aCwg
dmFsKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0VGV4TGV2ZWxQYXJhbWV0ZXJp
dlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gcG5h
bWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1z
KQotewotICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgZ2w6OkdldFRleExldmVsUGFyYW1ldGVyaXZSb2J1c3RBTkdMRSh0YXJn
ZXQsIGxldmVsLCBwbmFtZSwgYnVmU2l6ZSwgbGVuZ3RoLCBwYXJhbXMpOwotfQotCi12b2lkIEV4
dGVuc2lvbnNHTEFOR0xFOjpnZXRUZXhMZXZlbFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTGVu
dW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNp
emUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMZmxvYXQgKnBhcmFtcykKLXsKLSAgICBpZiAoIW1f
Y29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGds
OjpHZXRUZXhMZXZlbFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUodGFyZ2V0LCBsZXZlbCwgcG5hbWUs
IGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1zKTsKLX0KLQotCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xF
OjpnZXRQb2ludGVydlJvYnVzdEFOR0xFUm9idXN0QU5HTEUoR0NHTGVudW0gcG5hbWUsIEdDR0xz
aXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgdm9pZCAqKnBhcmFtcykKLXsKLSAgICBp
ZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQot
ICAgIGdsOjpHZXRQb2ludGVydlJvYnVzdEFOR0xFUm9idXN0QU5HTEUocG5hbWUsIGJ1ZlNpemUs
IGxlbmd0aCwgcGFyYW1zKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0blVuaWZv
cm1mdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xz
aXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGZsb2F0ICpwYXJhbXMpCi17Ci0g
ICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47
Ci0KLSAgICBnbDo6R2V0blVuaWZvcm1mdlJvYnVzdEFOR0xFKHByb2dyYW0sIGxvY2F0aW9uLCBi
dWZTaXplLCBsZW5ndGgsIHBhcmFtcyk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6Omdl
dG5Vbmlmb3JtaXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9u
LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykK
LXsKLSAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJl
dHVybjsKLQotICAgIGdsOjpHZXRuVW5pZm9ybWl2Um9idXN0QU5HTEUocHJvZ3JhbSwgbG9jYXRp
b24sIGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1zKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdM
RTo6Z2V0blVuaWZvcm11aXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMaW50IGxv
Y2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0x1aW50ICpw
YXJhbXMpCi17Ci0gICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAg
ICAgICByZXR1cm47Ci0KLSAgICBnbDo6R2V0blVuaWZvcm11aXZSb2J1c3RBTkdMRShwcm9ncmFt
LCBsb2NhdGlvbiwgYnVmU2l6ZSwgbGVuZ3RoLCBwYXJhbXMpOwotfQotCi12b2lkIEV4dGVuc2lv
bnNHTEFOR0xFOjp0ZXhQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdD
R0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGludCAqcGFyYW1zKQot
ewotICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0
dXJuOwotCi0gICAgZ2w6OlRleFBhcmFtZXRlcklpdlJvYnVzdEFOR0xFKHRhcmdldCwgcG5hbWUs
IGJ1ZlNpemUsIHBhcmFtcyk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OnRleFBhcmFt
ZXRlckl1aXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dM
c2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTHVpbnQgKnBhcmFtcykKLXsKLSAgICBpZiAoIW1fY29u
dGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpU
ZXhQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUodGFyZ2V0LCBwbmFtZSwgYnVmU2l6ZSwgcGFyYW1z
KTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0VGV4UGFyYW1ldGVySWl2Um9idXN0
QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUs
IEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpCi17Ci0gICAgaWYgKCFtX2NvbnRl
eHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6R2V0
VGV4UGFyYW1ldGVySWl2Um9idXN0QU5HTEUodGFyZ2V0LCBwbmFtZSwgYnVmU2l6ZSwgbGVuZ3Ro
LCBwYXJhbXMpOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRUZXhQYXJhbWV0ZXJJ
dWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVp
IGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMdWludCAqcGFyYW1zKQotewotICAgIGlm
ICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0g
ICAgZ2w6OkdldFRleFBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRSh0YXJnZXQsIHBuYW1lLCBidWZT
aXplLCBsZW5ndGgsIHBhcmFtcyk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OnNhbXBs
ZXJQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFt
ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xpbnQgKnBhcmFtKQotewotICAgIGlmICgh
bV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAg
Z2w6OlNhbXBsZXJQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRShzYW1wbGVyLCBwbmFtZSwgYnVmU2l6
ZSwgcGFyYW0pOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpzYW1wbGVyUGFyYW1ldGVy
SXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6
ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTHVpbnQgKnBhcmFtKQotewotICAgIGlmICghbV9jb250ZXh0
LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OlNhbXBs
ZXJQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUoc2FtcGxlciwgcG5hbWUsIGJ1ZlNpemUsIHBhcmFt
KTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0U2FtcGxlclBhcmFtZXRlcklpdlJv
YnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVm
U2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykKLXsKLSAgICBpZiAoIW1f
Y29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGds
OjpHZXRTYW1wbGVyUGFyYW1ldGVySWl2Um9idXN0QU5HTEUoc2FtcGxlciwgcG5hbWUsIGJ1ZlNp
emUsIGxlbmd0aCwgcGFyYW1zKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0U2Ft
cGxlclBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBw
bmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMdWludCAqcGFy
YW1zKQotewotICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAg
ICAgcmV0dXJuOwotCi0gICAgZ2w6OkdldFNhbXBsZXJQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUo
c2FtcGxlciwgcG5hbWUsIGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1zKTsKLX0KLQotCi12b2lkIEV4
dGVuc2lvbnNHTEFOR0xFOjpnZXRRdWVyeU9iamVjdGl2Um9idXN0QU5HTEUoR0NHTHVpbnQgaWQs
IEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdD
R0xpbnQgKnBhcmFtcykKLXsKLSAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50
KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpHZXRRdWVyeU9iamVjdGl2Um9idXN0QU5H
TEUoaWQsIHBuYW1lLCBidWZTaXplLCBsZW5ndGgsIHBhcmFtcyk7Ci19Ci0KLXZvaWQgRXh0ZW5z
aW9uc0dMQU5HTEU6OmdldFF1ZXJ5T2JqZWN0aTY0dlJvYnVzdEFOR0xFKEdDR0x1aW50IGlkLCBH
Q0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dM
aW50NjQgKnBhcmFtcykKLXsKLSAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50
KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpHZXRRdWVyeU9iamVjdGk2NHZSb2J1c3RB
TkdMRShpZCwgcG5hbWUsIGJ1ZlNpemUsIGxlbmd0aCwgcmVpbnRlcnByZXRfY2FzdDxHTGludDY0
Kj4ocGFyYW1zKSk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldFF1ZXJ5T2JqZWN0
dWk2NHZSb2J1c3RBTkdMRShHQ0dMdWludCBpZCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBi
dWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHVpbnQ2NCAqcGFyYW1zKQotewotICAgIGlm
ICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0g
ICAgZ2w6OkdldFF1ZXJ5T2JqZWN0dWk2NHZSb2J1c3RBTkdMRShpZCwgcG5hbWUsIGJ1ZlNpemUs
IGxlbmd0aCwgcmVpbnRlcnByZXRfY2FzdDxHTHVpbnQ2NCo+KHBhcmFtcykpOwotfQotCi0KIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShHUkFQSElDU19DT05URVhU
X0dMKSAmJiBVU0UoQU5HTEUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hbmdsZS9FeHRlbnNpb25zR0xBTkdMRS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUuaAppbmRleCBiMmQyNzdiOWFjOWQy
Nzg2MGY1NWFiYWJmOGNmZTU1ZTg0YjVmNTdlLi4wMDQyMzM3NzIwMzRiZmEzZWFjMTM3ZGMzNjM0
ODA5MTZkZWFhZjdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hbmdsZS9FeHRlbnNpb25zR0xBTkdMRS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmgKQEAgLTM2LDcgKzM2LDcgQEAgY2xh
c3MgRXh0ZW5zaW9uc0dMQU5HTEUgOiBwdWJsaWMgRXh0ZW5zaW9uc0dMIHsKICAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICAvLyBUaGlzIGNsYXNzIG9ubHkgbmVlZHMg
dG8gYmUgaW5zdGFudGlhdGVkIGJ5IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMIGltcGxlbWVudGF0
aW9ucy4KLSAgICBFeHRlbnNpb25zR0xBTkdMRShHcmFwaGljc0NvbnRleHRHTE9wZW5HTCosIGJv
b2wgdXNlSW5kZXhlZEdldFN0cmluZyA9IGZhbHNlKTsKKyAgICBleHBsaWNpdCBFeHRlbnNpb25z
R0xBTkdMRShHcmFwaGljc0NvbnRleHRHTE9wZW5HTCopOwogICAgIHZpcnR1YWwgfkV4dGVuc2lv
bnNHTEFOR0xFKCk7CiAKICAgICAvLyBFeHRlbnNpb25zR0wgbWV0aG9kcy4KQEAgLTQ5LDYwICs0
OSwxNCBAQCBwdWJsaWM6CiAgICAgdm9pZCBkZWxldGVWZXJ0ZXhBcnJheU9FUyhQbGF0Zm9ybUdM
T2JqZWN0KSBvdmVycmlkZTsKICAgICBHQ0dMYm9vbGVhbiBpc1ZlcnRleEFycmF5T0VTKFBsYXRm
b3JtR0xPYmplY3QpIG92ZXJyaWRlOwogICAgIHZvaWQgYmluZFZlcnRleEFycmF5T0VTKFBsYXRm
b3JtR0xPYmplY3QpIG92ZXJyaWRlOwotICAgIHZvaWQgaW5zZXJ0RXZlbnRNYXJrZXJFWFQoY29u
c3QgU3RyaW5nJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBwdXNoR3JvdXBNYXJrZXJFWFQoY29uc3Qg
U3RyaW5nJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBwb3BHcm91cE1hcmtlckVYVCh2b2lkKSBvdmVy
cmlkZTsKICAgICB2b2lkIGRyYXdCdWZmZXJzRVhUKEdDR0xTcGFuPGNvbnN0IEdDR0xlbnVtPikg
b3ZlcnJpZGU7CiAKICAgICBTdHJpbmcgZ2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFKFBs
YXRmb3JtR0xPYmplY3QpIG92ZXJyaWRlOwogCi0gICAgdm9pZCBibGl0RnJhbWVidWZmZXJBTkdM
RShHQ0dMaW50IHNyY1gwLCBHQ0dMaW50IHNyY1kwLCBHQ0dMaW50IHNyY1gxLCBHQ0dMaW50IHNy
Y1kxLCBHQ0dMaW50IGRzdFgwLCBHQ0dMaW50IGRzdFkwLCBHQ0dMaW50IGRzdFgxLCBHQ0dMaW50
IGRzdFkxLCBHQ0dMYml0ZmllbGQgbWFzaywgR0NHTGVudW0gZmlsdGVyKSBvdmVycmlkZTsKLSAg
ICB2b2lkIHJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKEdDR0xlbnVtIHRhcmdl
dCwgR0NHTHNpemVpIHNhbXBsZXMsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkg
d2lkdGgsIEdDR0xzaXplaSBoZWlnaHQpIG92ZXJyaWRlOwotCiAgICAgdm9pZCBkcmF3QXJyYXlz
SW5zdGFuY2VkQU5HTEUoR0NHTGVudW0gbW9kZSwgR0NHTGludCBmaXJzdCwgR0NHTHNpemVpIGNv
dW50LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KSBvdmVycmlkZTsKICAgICB2b2lkIGRyYXdFbGVtZW50
c0luc3RhbmNlZEFOR0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xzaXplaSBjb3VudCwgR0NHTGVudW0g
dHlwZSwgR0NHTHZvaWRwdHIgb2Zmc2V0LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KSBvdmVycmlkZTsK
ICAgICB2b2lkIHZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRShHQ0dMdWludCBpbmRleCwgR0NHTHVp
bnQgZGl2aXNvcikgb3ZlcnJpZGU7CiAKLSAgICAvLyBHTF9BTkdMRV9yb2J1c3RfY2xpZW50X21l
bW9yeQotICAgIHZvaWQgcmVhZFBpeGVsc1JvYnVzdEFOR0xFKEdDR0xpbnQgeCwgR0NHTGludCB5
LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NH
TGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMc2l6
ZWkgKmNvbHVtbnMsIEdDR0xzaXplaSAqcm93cywgdm9pZCAqcGl4ZWxzKSBvdmVycmlkZTsKLSAg
ICB2b2lkIHRleFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51
bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xmbG9hdCAqcGFyYW1zKSBvdmVy
cmlkZTsKLSAgICB2b2lkIHRleFBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xpbnQgKnBhcmFt
cykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRRdWVyeWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3Ro
LCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0UXVlcnlPYmplY3R1aXZS
b2J1c3RBTkdMRShHQ0dMdWludCBpZCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXpl
LCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHVpbnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9p
ZCBnZXRCdWZmZXJQb2ludGVydlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0g
cG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgdm9pZCAqKnBhcmFt
cykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJJaXZSb2J1c3RBTkdMRShHQ0dM
dWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkg
Kmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldFZlcnRleEF0
dHJpYkl1aXZSb2J1c3RBTkdMRShHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xz
aXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHVpbnQgKnBhcmFtcykgb3ZlcnJp
ZGU7Ci0gICAgdm9pZCBnZXRVbmlmb3JtdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwg
R0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBH
Q0dMdWludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldEJ1ZmZlclBhcmFtZXRlcmk2
NHZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkg
YnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQ2NCAqcGFyYW1zKSBvdmVycmlkZTsK
LSAgICB2b2lkIHNhbXBsZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIs
IEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGludCAqcGFyYW0p
IG92ZXJyaWRlOwotICAgIHZvaWQgc2FtcGxlclBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTHVp
bnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dM
ZmxvYXQgKnBhcmFtKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldFNhbXBsZXJQYXJhbWV0ZXJpdlJv
YnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVm
U2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAg
dm9pZCBnZXRTYW1wbGVyUGFyYW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBH
Q0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dM
ZmxvYXQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0KLSAgICB2b2lkIGdldEZyYW1lYnVmZmVyUGFyYW1l
dGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6
ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykgb3ZlcnJpZGU7
Ci0gICAgdm9pZCBnZXRQcm9ncmFtSW50ZXJmYWNlaXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9n
cmFtLCBHQ0dMZW51bSBwcm9ncmFtSW50ZXJmYWNlLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVp
IGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJyaWRlOwot
ICAgIHZvaWQgZ2V0Qm9vbGVhbmlfdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTHVp
bnQgaW5kZXgsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGJvb2xl
YW4gKmRhdGEpIG92ZXJyaWRlOyAvLyBOT0xJTlQKLSAgICB2b2lkIGdldE11bHRpc2FtcGxlZnZS
b2J1c3RBTkdMRShHQ0dMZW51bSBwbmFtZSwgR0NHTHVpbnQgaW5kZXgsIEdDR0xzaXplaSBidWZT
aXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGZsb2F0ICp2YWwpIG92ZXJyaWRlOwotICAgIHZv
aWQgZ2V0VGV4TGV2ZWxQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NH
TGludCBsZXZlbCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkg
Kmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldFRleExldmVs
UGFyYW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdD
R0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xm
bG9hdCAqcGFyYW1zKSBvdmVycmlkZTsKLQotICAgIHZvaWQgZ2V0UG9pbnRlcnZSb2J1c3RBTkdM
RVJvYnVzdEFOR0xFKEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVp
ICpsZW5ndGgsIHZvaWQgKipwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0blVuaWZvcm1m
dlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXpl
aSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGZsb2F0ICpwYXJhbXMpIG92ZXJyaWRl
OwotICAgIHZvaWQgZ2V0blVuaWZvcm1pdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdD
R0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NH
TGludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldG5Vbmlmb3JtdWl2Um9idXN0QU5H
TEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUs
IEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMdWludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lk
IHRleFBhcmFtZXRlcklpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5h
bWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJyaWRlOwot
ICAgIHZvaWQgdGV4UGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NH
TGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMdWludCAqcGFyYW1zKSBv
dmVycmlkZTsKLSAgICB2b2lkIGdldFRleFBhcmFtZXRlcklpdlJvYnVzdEFOR0xFKEdDR0xlbnVt
IHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxl
bmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldFRleFBhcmFtZXRl
ckl1aXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6
ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0x1aW50ICpwYXJhbXMpIG92ZXJyaWRl
OwotICAgIHZvaWQgc2FtcGxlclBhcmFtZXRlcklpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBs
ZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGludCAqcGFy
YW0pIG92ZXJyaWRlOwotICAgIHZvaWQgc2FtcGxlclBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRShH
Q0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0
IEdDR0x1aW50ICpwYXJhbSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRTYW1wbGVyUGFyYW1ldGVy
SWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXpl
aSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVycmlkZTsK
LSAgICB2b2lkIGdldFNhbXBsZXJQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2Ft
cGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0
aCwgR0NHTHVpbnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0KLSAgICB2b2lkIGdldFF1ZXJ5T2JqZWN0
aXZSb2J1c3RBTkdMRShHQ0dMdWludCBpZCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZT
aXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2
b2lkIGdldFF1ZXJ5T2JqZWN0aTY0dlJvYnVzdEFOR0xFKEdDR0x1aW50IGlkLCBHQ0dMZW51bSBw
bmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50NjQgKnBh
cmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRRdWVyeU9iamVjdHVpNjR2Um9idXN0QU5HTEUo
R0NHTHVpbnQgaWQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVp
ICpsZW5ndGgsIEdDR0x1aW50NjQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0KICAgICAvLyBPbmx5IGZv
ciBub24tV2ViR0wgMi4wIGNvbnRleHRzLgogICAgIEdDR0xlbnVtIGFkanVzdFdlYkdMMVRleHR1
cmVJbnRlcm5hbEZvcm1hdChHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTGVudW0gZm9ybWF0
LCBHQ0dMZW51bSB0eXBlKTsKIApAQCAtMTE5LDggKzczLDYgQEAgcHJpdmF0ZToKICAgICAvLyBX
ZWFrIHBvaW50ZXIgYmFjayB0byBHcmFwaGljc0NvbnRleHRHTE9wZW5HTC4KICAgICBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTCogbV9jb250ZXh0OwogCi0gICAgYm9vbCBtX3VzZUluZGV4ZWRHZXRT
dHJpbmcgeyBmYWxzZSB9OwotCiAgICAgLy8gV2hldGhlciB0aGUgV2ViR0wgMS4wLXJlbGF0ZWQg
ZmxvYXRpbmctcG9pbnQgcmVuZGVyYWJpbGl0eSBleHRlbnNpb25zIGhhdmUgYmVlbiBlbmFibGVk
LgogICAgIGJvb2wgbV93ZWJnbENvbG9yQnVmZmVyRmxvYXRSR0IgeyBmYWxzZSB9OwogICAgIGJv
b2wgbV93ZWJnbENvbG9yQnVmZmVyRmxvYXRSR0JBIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNH
TE9wZW5HTC5jcHAKaW5kZXggYWRkNWYzNTJhZTRkZTZiNmQ1ZGMxOTFlNjczYjVhYWZhNTZkZTk1
Zi4uYzMwNjQ2NzQ4OGIwN2FjYWJiZDE3ZWNhYzhiNmExNTgyNjI0MjNkMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5H
TC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVu
c2lvbnNHTE9wZW5HTC5jcHAKQEAgLTQ4LDIyICs0OCw2IEBAIEV4dGVuc2lvbnNHTE9wZW5HTDo6
RXh0ZW5zaW9uc0dMT3BlbkdMKEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiBjb250ZXh0LCBib29s
IHVzCiBFeHRlbnNpb25zR0xPcGVuR0w6On5FeHRlbnNpb25zR0xPcGVuR0woKSA9IGRlZmF1bHQ7
CiAKIAotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0w6OmJsaXRGcmFtZWJ1ZmZlckFOR0xFKEdDR0xp
bnQgc3JjWDAsIEdDR0xpbnQgc3JjWTAsIEdDR0xpbnQgc3JjWDEsIEdDR0xpbnQgc3JjWTEsIEdD
R0xpbnQgZHN0WDAsIEdDR0xpbnQgZHN0WTAsIEdDR0xpbnQgZHN0WDEsIEdDR0xpbnQgZHN0WTEs
IEdDR0xiaXRmaWVsZCBtYXNrLCBHQ0dMZW51bSBmaWx0ZXIpCi17Ci0gICAgaWYgKCFtX2NvbnRl
eHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICA6OmdsQmxp
dEZyYW1lYnVmZmVyRVhUKHNyY1gwLCBzcmNZMCwgc3JjWDEsIHNyY1kxLCBkc3RYMCwgZHN0WTAs
IGRzdFgxLCBkc3RZMSwgbWFzaywgZmlsdGVyKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xPcGVu
R0w6OnJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKEdDR0xlbnVtIHRhcmdldCwg
R0NHTHNpemVpIHNhbXBsZXMsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lk
dGgsIEdDR0xzaXplaSBoZWlnaHQpCi17Ci0gICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0
Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICA6OmdsUmVuZGVyYnVmZmVyU3RvcmFn
ZU11bHRpc2FtcGxlRVhUKHRhcmdldCwgc2FtcGxlcywgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBo
ZWlnaHQpOwotfQotCiBQbGF0Zm9ybUdMT2JqZWN0IEV4dGVuc2lvbnNHTE9wZW5HTDo6Y3JlYXRl
VmVydGV4QXJyYXlPRVMoKQogewogICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJl
bnQoKSkKQEAgLTEyNywyNCArMTExLDYgQEAgdm9pZCBFeHRlbnNpb25zR0xPcGVuR0w6OmJpbmRW
ZXJ0ZXhBcnJheU9FUyhQbGF0Zm9ybUdMT2JqZWN0IGFycmF5KQogI2VuZGlmCiB9CiAKLXZvaWQg
RXh0ZW5zaW9uc0dMT3BlbkdMOjppbnNlcnRFdmVudE1hcmtlckVYVChjb25zdCBTdHJpbmcmKQot
ewotICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQgdGhpcyBmdW5jdGlvbiBhbmQgYWRkIEdMX0VYVF9k
ZWJ1Z19tYXJrZXIgaW4gc3VwcG9ydHMoKS4KLSAgICByZXR1cm47Ci19Ci0KLXZvaWQgRXh0ZW5z
aW9uc0dMT3BlbkdMOjpwdXNoR3JvdXBNYXJrZXJFWFQoY29uc3QgU3RyaW5nJikKLXsKLSAgICAv
LyBGSVhNRTogaW1wbGVtZW50IHRoaXMgZnVuY3Rpb24gYW5kIGFkZCBHTF9FWFRfZGVidWdfbWFy
a2VyIGluIHN1cHBvcnRzKCkuCi0gICAgcmV0dXJuOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9w
ZW5HTDo6cG9wR3JvdXBNYXJrZXJFWFQodm9pZCkKLXsKLSAgICAvLyBGSVhNRTogaW1wbGVtZW50
IHRoaXMgZnVuY3Rpb24gYW5kIGFkZCBHTF9FWFRfZGVidWdfbWFya2VyIGluIHN1cHBvcnRzKCku
Ci0gICAgcmV0dXJuOwotfQotCiBib29sIEV4dGVuc2lvbnNHTE9wZW5HTDo6c3VwcG9ydHNFeHRl
bnNpb24oY29uc3QgU3RyaW5nJiBuYW1lKQogewogICAgIC8vIEdMX0FOR0xFX2ZyYW1lYnVmZmVy
X2JsaXQgYW5kIEdMX0FOR0xFX2ZyYW1lYnVmZmVyX211bHRpc2FtcGxlIGFyZSAiZmFrZSIuIFRo
ZXkgYXJlIGltcGxlbWVudGVkIHVzaW5nIG90aGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMLmgKaW5k
ZXggNDc1MDIyNmVjZWNlZjQ0Mzk2ZTk5Mzg2NzZjYjYzOWJlODM0MzdiNi4uMGFkYmQ3MDUwYjdl
M2Y3N2UwMTg4OTQzMzJmZmM4N2NmMzBkOTBjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuaApA
QCAtNDAsMTYgKzQwLDEwIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5FeHRlbnNpb25zR0xPcGVu
R0woKTsKIAogICAgIC8vIEV4dGVuc2lvbnNHTCBtZXRob2RzLgotICAgIHZvaWQgYmxpdEZyYW1l
YnVmZmVyQU5HTEUoR0NHTGludCBzcmNYMCwgR0NHTGludCBzcmNZMCwgR0NHTGludCBzcmNYMSwg
R0NHTGludCBzcmNZMSwgR0NHTGludCBkc3RYMCwgR0NHTGludCBkc3RZMCwgR0NHTGludCBkc3RY
MSwgR0NHTGludCBkc3RZMSwgR0NHTGJpdGZpZWxkIG1hc2ssIEdDR0xlbnVtIGZpbHRlcikgb3Zl
cnJpZGU7Ci0gICAgdm9pZCByZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVBTkdMRShHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xzaXplaSBzYW1wbGVzLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwg
R0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KSBvdmVycmlkZTsKLQogICAgIFBsYXRm
b3JtR0xPYmplY3QgY3JlYXRlVmVydGV4QXJyYXlPRVMoKSBvdmVycmlkZTsKICAgICB2b2lkIGRl
bGV0ZVZlcnRleEFycmF5T0VTKFBsYXRmb3JtR0xPYmplY3QpIG92ZXJyaWRlOwogICAgIEdDR0xi
b29sZWFuIGlzVmVydGV4QXJyYXlPRVMoUGxhdGZvcm1HTE9iamVjdCkgb3ZlcnJpZGU7CiAgICAg
dm9pZCBiaW5kVmVydGV4QXJyYXlPRVMoUGxhdGZvcm1HTE9iamVjdCkgb3ZlcnJpZGU7Ci0gICAg
dm9pZCBpbnNlcnRFdmVudE1hcmtlckVYVChjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKLSAgICB2
b2lkIHB1c2hHcm91cE1hcmtlckVYVChjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKLSAgICB2b2lk
IHBvcEdyb3VwTWFya2VyRVhUKHZvaWQpIG92ZXJyaWRlOwogICAgIHZvaWQgZHJhd0J1ZmZlcnNF
WFQoR0NHTFNwYW48Y29uc3QgR0NHTGVudW0+KSBvdmVycmlkZTsKIAogICAgIHZvaWQgZHJhd0Fy
cmF5c0luc3RhbmNlZEFOR0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xpbnQgZmlyc3QsIEdDR0xzaXpl
aSBjb3VudCwgR0NHTHNpemVpIHByaW1jb3VudCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29t
bW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNp
b25zR0xPcGVuR0xDb21tb24uY3BwCmluZGV4IDY5M2ZiOTNhNjdmYmM4NDA3MDgwNDgyYzhlZWJl
MTY4MTcxMjczYjAuLjMzMmM4MjQyNDk3MjRiYjk2MzZlYWFiZWEwM2MyYzM3NThlMDE2ZmYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNp
b25zR0xPcGVuR0xDb21tb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uY3BwCkBAIC0yNTQsMTg1ICsyNTQs
NiBAQCB2b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0blVuaWZvcm1pdkVYVChHQ0dM
dWludCwgaW50LCBHQ0dMc2l6ZWksIEdDR0xpbgogICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdM
RXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwogfQogCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5H
TENvbW1vbjo6cmVhZFBpeGVsc1JvYnVzdEFOR0xFKGludCwgaW50LCBHQ0dMc2l6ZWksIEdDR0xz
aXplaSwgR0NHTGVudW0sIEdDR0xlbnVtLCBHQ0dMc2l6ZWksIEdDR0xzaXplaSAqLCBHQ0dMc2l6
ZWkgKiwgR0NHTHNpemVpICosIHZvaWQgKikKLXsKLSAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVH
TEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xPcGVu
R0xDb21tb246OnRleFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTGVudW0sIEdDR0xlbnVtLCBH
Q0dMc2l6ZWksIGNvbnN0IEdDR0xmbG9hdCAqKQotewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6
ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9w
ZW5HTENvbW1vbjo6dGV4UGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51bSwgR0NHTGVudW0s
IEdDR0xzaXplaSwgY29uc3QgR0NHTGludCAqKQotewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6
ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9w
ZW5HTENvbW1vbjo6Z2V0UXVlcnlpdlJvYnVzdEFOR0xFKEdDR0xlbnVtLCBHQ0dMZW51bSwgR0NH
THNpemVpLCBHQ0dMc2l6ZWkgKiwgR0NHTGludCAqKQotewotICAgIG1fY29udGV4dC0+c3ludGhl
c2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi12b2lkIEV4dGVuc2lvbnNH
TE9wZW5HTENvbW1vbjo6Z2V0UXVlcnlPYmplY3R1aXZSb2J1c3RBTkdMRShHQ0dMdWludCwgR0NH
TGVudW0sIEdDR0xzaXplaSwgR0NHTHNpemVpICosIEdDR0x1aW50ICopCi17Ci0gICAgbV9jb250
ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Ci19Ci0KLXZvaWQg
RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRCdWZmZXJQb2ludGVydlJvYnVzdEFOR0xFKEdD
R0xlbnVtLCBHQ0dMZW51bSwgR0NHTHNpemVpLCBHQ0dMc2l6ZWkgKiwgdm9pZCAqKikKLXsKLSAg
ICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLX0K
LQotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFZlcnRleEF0dHJpYklpdlJvYnVz
dEFOR0xFKEdDR0x1aW50LCBHQ0dMZW51bSwgR0NHTHNpemVpLCBHQ0dMc2l6ZWkgKiwgR0NHTGlu
dCAqKQotewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVS
QVRJT04pOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0VmVydGV4QXR0
cmliSXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50LCBHQ0dMZW51bSwgR0NHTHNpemVpLCBHQ0dMc2l6
ZWkgKiwgR0NHTHVpbnQgKikKLXsKLSAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdM
X0lOVkFMSURfT1BFUkFUSU9OKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246
OmdldFVuaWZvcm11aXZSb2J1c3RBTkdMRShHQ0dMdWludCwgaW50LCBHQ0dMc2l6ZWksIEdDR0xz
aXplaSAqLCBHQ0dMdWludCAqKQotewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3Io
R0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1v
bjo6Z2V0QnVmZmVyUGFyYW1ldGVyaTY0dlJvYnVzdEFOR0xFKEdDR0xlbnVtLCBHQ0dMZW51bSwg
R0NHTHNpemVpLCBHQ0dMc2l6ZWkgKiwgR0NHTGludDY0ICopCi17Ci0gICAgbV9jb250ZXh0LT5z
eW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Ci19Ci0KLXZvaWQgRXh0ZW5z
aW9uc0dMT3BlbkdMQ29tbW9uOjpzYW1wbGVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMdWlu
dCwgR0NHTGVudW0sIEdDR0xzaXplaSwgY29uc3QgR0NHTGludCAqKQotewotICAgIG1fY29udGV4
dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi12b2lkIEV4
dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6c2FtcGxlclBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NH
THVpbnQsIEdDR0xlbnVtLCBHQ0dMc2l6ZWksIGNvbnN0IEdDR0xmbG9hdCAqKQotewotICAgIG1f
Y29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi12
b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0U2FtcGxlclBhcmFtZXRlcml2Um9idXN0
QU5HTEUoR0NHTHVpbnQsIEdDR0xlbnVtLCBHQ0dMc2l6ZWksIEdDR0xzaXplaSAqLCBHQ0dMaW50
ICopCi17Ci0gICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJB
VElPTik7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRTYW1wbGVyUGFy
YW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dMdWludCwgR0NHTGVudW0sIEdDR0xzaXplaSwgR0NHTHNp
emVpICosIEdDR0xmbG9hdCAqKQotewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3Io
R0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi0KLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29t
bW9uOjpnZXRGcmFtZWJ1ZmZlclBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0sIEdDR0xl
bnVtLCBHQ0dMc2l6ZWksIEdDR0xzaXplaSAqLCBHQ0dMaW50ICopCi17Ci0gICAgbV9jb250ZXh0
LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Ci19Ci0KLXZvaWQgRXh0
ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRQcm9ncmFtSW50ZXJmYWNlaXZSb2J1c3RBTkdMRShH
Q0dMdWludCwgR0NHTGVudW0sIEdDR0xlbnVtLCBHQ0dMc2l6ZWksIEdDR0xzaXplaSAqLCBHQ0dM
aW50ICopCi17Ci0gICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09Q
RVJBVElPTik7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRCb29sZWFu
aV92Um9idXN0QU5HTEUoR0NHTGVudW0sIEdDR0x1aW50LCBHQ0dMc2l6ZWksIEdDR0xzaXplaSAq
LCBHQ0dMYm9vbGVhbiAqKQotewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xf
SU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6
Z2V0TXVsdGlzYW1wbGVmdlJvYnVzdEFOR0xFKEdDR0xlbnVtLCBHQ0dMdWludCwgR0NHTHNpemVp
LCBHQ0dMc2l6ZWkgKiwgR0NHTGZsb2F0ICopCi17Ci0gICAgbV9jb250ZXh0LT5zeW50aGVzaXpl
R0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMT3Bl
bkdMQ29tbW9uOjpnZXRUZXhMZXZlbFBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0sIGlu
dCwgR0NHTGVudW0sIEdDR0xzaXplaSwgR0NHTHNpemVpICosIEdDR0xpbnQgKikKLXsKLSAgICBt
X2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLX0KLQot
dm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFRleExldmVsUGFyYW1ldGVyZnZSb2J1
c3RBTkdMRShHQ0dMZW51bSwgaW50LCBHQ0dMZW51bSwgR0NHTHNpemVpLCBHQ0dMc2l6ZWkgKiwg
R0NHTGZsb2F0ICopCi17Ci0gICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZB
TElEX09QRVJBVElPTik7Ci19Ci0KLQotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246Omdl
dFBvaW50ZXJ2Um9idXN0QU5HTEVSb2J1c3RBTkdMRShHQ0dMZW51bSwgR0NHTHNpemVpLCBHQ0dM
c2l6ZWkgKiwgdm9pZCAqKikKLXsKLSAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdM
X0lOVkFMSURfT1BFUkFUSU9OKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246
OmdldG5Vbmlmb3JtZnZSb2J1c3RBTkdMRShHQ0dMdWludCwgaW50LCBHQ0dMc2l6ZWksIEdDR0xz
aXplaSAqLCBHQ0dMZmxvYXQgKikKLXsKLSAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9y
KEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21t
b246OmdldG5Vbmlmb3JtaXZSb2J1c3RBTkdMRShHQ0dMdWludCwgaW50LCBHQ0dMc2l6ZWksIEdD
R0xzaXplaSAqLCBHQ0dMaW50ICopCi17Ci0gICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJv
cihHTF9JTlZBTElEX09QRVJBVElPTik7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29t
bW9uOjpnZXRuVW5pZm9ybXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50LCBpbnQsIEdDR0xzaXplaSwg
R0NHTHNpemVpICosIEdDR0x1aW50ICopCi17Ci0gICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xF
cnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdM
Q29tbW9uOjp0ZXhQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRShHQ0dMZW51bSwgR0NHTGVudW0sIEdD
R0xzaXplaSwgY29uc3QgR0NHTGludCAqKQotewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdM
RXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5H
TENvbW1vbjo6dGV4UGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFKEdDR0xlbnVtLCBHQ0dMZW51bSwg
R0NHTHNpemVpLCBjb25zdCBHQ0dMdWludCAqKQotewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6
ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9w
ZW5HTENvbW1vbjo6Z2V0VGV4UGFyYW1ldGVySWl2Um9idXN0QU5HTEUoR0NHTGVudW0sIEdDR0xl
bnVtLCBHQ0dMc2l6ZWksIEdDR0xzaXplaSAqLCBHQ0dMaW50ICopCi17Ci0gICAgbV9jb250ZXh0
LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Ci19Ci0KLXZvaWQgRXh0
ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRUZXhQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUoR0NH
TGVudW0sIEdDR0xlbnVtLCBHQ0dMc2l6ZWksIEdDR0xzaXplaSAqLCBHQ0dMdWludCAqKQotewot
ICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwot
fQotCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6c2FtcGxlclBhcmFtZXRlcklpdlJv
YnVzdEFOR0xFKEdDR0x1aW50LCBHQ0dMZW51bSwgR0NHTHNpemVpLCBjb25zdCBHQ0dMaW50ICop
Ci17Ci0gICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElP
Tik7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpzYW1wbGVyUGFyYW1ldGVy
SXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50LCBHQ0dMZW51bSwgR0NHTHNpemVpLCBjb25zdCBHQ0dM
dWludCAqKQotewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9P
UEVSQVRJT04pOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0U2FtcGxl
clBhcmFtZXRlcklpdlJvYnVzdEFOR0xFKEdDR0x1aW50LCBHQ0dMZW51bSwgR0NHTHNpemVpLCBH
Q0dMc2l6ZWkgKiwgR0NHTGludCAqKQotewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJy
b3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENv
bW1vbjo6Z2V0U2FtcGxlclBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRShHQ0dMdWludCwgR0NHTGVu
dW0sIEdDR0xzaXplaSwgR0NHTHNpemVpICosIEdDR0x1aW50ICopCi17Ci0gICAgbV9jb250ZXh0
LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Ci19Ci0KLQotdm9pZCBF
eHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFF1ZXJ5T2JqZWN0aXZSb2J1c3RBTkdMRShHQ0dM
dWludCwgR0NHTGVudW0sIEdDR0xzaXplaSwgR0NHTHNpemVpICosIEdDR0xpbnQgKikKLXsKLSAg
ICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLX0K
LQotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFF1ZXJ5T2JqZWN0aTY0dlJvYnVz
dEFOR0xFKEdDR0x1aW50LCBHQ0dMZW51bSwgR0NHTHNpemVpLCBHQ0dMc2l6ZWkgKiwgR0NHTGlu
dDY0ICopCi17Ci0gICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09Q
RVJBVElPTik7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRRdWVyeU9i
amVjdHVpNjR2Um9idXN0QU5HTEUoR0NHTHVpbnQsIEdDR0xlbnVtLCBHQ0dMc2l6ZWksIEdDR0xz
aXplaSAqLCBHQ0dMdWludDY0ICopCi17Ci0gICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJv
cihHTF9JTlZBTElEX09QRVJBVElPTik7Ci19Ci0KLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQog
CiAjZW5kaWYgLy8gRU5BQkxFKEdSQVBISUNTX0NPTlRFWFRfR0wpICYmIChVU0UoT1BFTkdMKSB8
fCBVU0UoT1BFTkdMX0VTKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uaAppbmRl
eCAzZjEwNDAxNjJmZmEwN2EyZGMxMzBhYmIyMmZiMWIxZmZjM2ZkZjIwLi4xMDE4YTE3ZWI4OGY3
ZDE5YTI4NGU2ZDUzMzRlN2E4MmI4ZjZhYzNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5H
TENvbW1vbi5oCkBAIC01NSw1OCArNTUsMTggQEAgcHVibGljOgogICAgIFN0cmluZyBnZXRUcmFu
c2xhdGVkU2hhZGVyU291cmNlQU5HTEUoUGxhdGZvcm1HTE9iamVjdCkgb3ZlcnJpZGU7CiAKICAg
ICAvLyBFWFQgUm9idXN0bmVzcyAtIHVzZXMgZ2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQigpCi0g
ICAgdm9pZCByZWFkblBpeGVsc0VYVChpbnQgeCwgaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NH
THNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkg
YnVmU2l6ZSwgdm9pZCAqZGF0YSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRuVW5pZm9ybWZ2RVhU
KEdDR0x1aW50IHByb2dyYW0sIGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIGZsb2F0
ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0blVuaWZvcm1pdkVYVChHQ0dMdWludCBw
cm9ncmFtLCBpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBpbnQgKnBhcmFtcykgb3Zl
cnJpZGU7Ci0KLSAgICBib29sIGlzTlZJRElBKCkgb3ZlcnJpZGUgeyByZXR1cm4gbV9pc05WSURJ
QTsgfQotICAgIGJvb2wgaXNBTUQoKSBvdmVycmlkZSB7IHJldHVybiBtX2lzQU1EOyB9Ci0gICAg
Ym9vbCBpc0ludGVsKCkgb3ZlcnJpZGUgeyByZXR1cm4gbV9pc0ludGVsOyB9Ci0gICAgYm9vbCBp
c0ltYWdpbmF0aW9uKCkgb3ZlcnJpZGUgeyByZXR1cm4gbV9pc0ltYWdpbmF0aW9uOyB9Ci0gICAg
U3RyaW5nIHZlbmRvcigpIG92ZXJyaWRlIHsgcmV0dXJuIG1fdmVuZG9yOyB9Ci0KLSAgICBib29s
IHJlcXVpcmVzQnVpbHRJbkZ1bmN0aW9uRW11bGF0aW9uKCkgb3ZlcnJpZGUgeyByZXR1cm4gbV9y
ZXF1aXJlc0J1aWx0SW5GdW5jdGlvbkVtdWxhdGlvbjsgfQotICAgIGJvb2wgcmVxdWlyZXNSZXN0
cmljdGVkTWF4aW11bVRleHR1cmVTaXplKCkgb3ZlcnJpZGUgeyByZXR1cm4gbV9yZXF1aXJlc1Jl
c3RyaWN0ZWRNYXhpbXVtVGV4dHVyZVNpemU7IH0KLQotICAgIC8vIEdMX0FOR0xFX3JvYnVzdF9j
bGllbnRfbWVtb3J5Ci0gICAgdm9pZCByZWFkUGl4ZWxzUm9idXN0QU5HTEUoaW50IHgsIGludCB5
LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NH
TGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMc2l6
ZWkgKmNvbHVtbnMsIEdDR0xzaXplaSAqcm93cywgdm9pZCAqcGl4ZWxzKSBvdmVycmlkZTsKLSAg
ICB2b2lkIHRleFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51
bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xmbG9hdCAqcGFyYW1zKSBvdmVy
cmlkZTsKLSAgICB2b2lkIHRleFBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xpbnQgKnBhcmFt
cykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRRdWVyeWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3Ro
LCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0UXVlcnlPYmplY3R1aXZS
b2J1c3RBTkdMRShHQ0dMdWludCBpZCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXpl
LCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHVpbnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9p
ZCBnZXRCdWZmZXJQb2ludGVydlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0g
cG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgdm9pZCAqKnBhcmFt
cykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJJaXZSb2J1c3RBTkdMRShHQ0dM
dWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkg
Kmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldFZlcnRleEF0
dHJpYkl1aXZSb2J1c3RBTkdMRShHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xz
aXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHVpbnQgKnBhcmFtcykgb3ZlcnJp
ZGU7Ci0gICAgdm9pZCBnZXRVbmlmb3JtdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwg
aW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0x1
aW50ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0QnVmZmVyUGFyYW1ldGVyaTY0dlJv
YnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZT
aXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludDY0ICpwYXJhbXMpIG92ZXJyaWRlOwotICAg
IHZvaWQgc2FtcGxlclBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NH
TGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMaW50ICpwYXJhbSkgb3Zl
cnJpZGU7Ci0gICAgdm9pZCBzYW1wbGVyUGFyYW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dMdWludCBz
YW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xmbG9h
dCAqcGFyYW0pIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0U2FtcGxlclBhcmFtZXRlcml2Um9idXN0
QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXpl
LCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lk
IGdldFNhbXBsZXJQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xl
bnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xmbG9h
dCAqcGFyYW1zKSBvdmVycmlkZTsKLQotICAgIHZvaWQgZ2V0RnJhbWVidWZmZXJQYXJhbWV0ZXJp
dlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBi
dWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAg
ICB2b2lkIGdldFByb2dyYW1JbnRlcmZhY2VpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0s
IEdDR0xlbnVtIHByb2dyYW1JbnRlcmZhY2UsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVm
U2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAg
dm9pZCBnZXRCb29sZWFuaV92Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMdWludCBp
bmRleCwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMYm9vbGVhbiAq
ZGF0YSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRNdWx0aXNhbXBsZWZ2Um9idXN0QU5HTEUoR0NH
TGVudW0gcG5hbWUsIEdDR0x1aW50IGluZGV4LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVp
ICpsZW5ndGgsIEdDR0xmbG9hdCAqdmFsKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldFRleExldmVs
UGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIGludCBsZXZlbCwgR0NHTGVu
dW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAq
cGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldFRleExldmVsUGFyYW1ldGVyZnZSb2J1c3RB
TkdMRShHQ0dMZW51bSB0YXJnZXQsIGludCBsZXZlbCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXpl
aSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGZsb2F0ICpwYXJhbXMpIG92ZXJyaWRl
OwotCi0gICAgdm9pZCBnZXRQb2ludGVydlJvYnVzdEFOR0xFUm9idXN0QU5HTEUoR0NHTGVudW0g
cG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgdm9pZCAqKnBhcmFt
cykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRuVW5pZm9ybWZ2Um9idXN0QU5HTEUoR0NHTHVpbnQg
cHJvZ3JhbSwgaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5n
dGgsIEdDR0xmbG9hdCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldG5Vbmlmb3JtaXZS
b2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZT
aXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2
b2lkIGdldG5Vbmlmb3JtdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgaW50IGxvY2F0
aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0x1aW50ICpwYXJh
bXMpIG92ZXJyaWRlOwotICAgIHZvaWQgdGV4UGFyYW1ldGVySWl2Um9idXN0QU5HTEUoR0NHTGVu
dW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xp
bnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCB0ZXhQYXJhbWV0ZXJJdWl2Um9idXN0QU5H
TEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNv
bnN0IEdDR0x1aW50ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0VGV4UGFyYW1ldGVy
SWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVp
IGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJyaWRlOwot
ICAgIHZvaWQgZ2V0VGV4UGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwg
R0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NH
THVpbnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzYW1wbGVyUGFyYW1ldGVySWl2Um9i
dXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZT
aXplLCBjb25zdCBHQ0dMaW50ICpwYXJhbSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzYW1wbGVyUGFy
YW1ldGVySXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBH
Q0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTHVpbnQgKnBhcmFtKSBvdmVycmlkZTsKLSAgICB2
b2lkIGdldFNhbXBsZXJQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBH
Q0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dM
aW50ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0U2FtcGxlclBhcmFtZXRlckl1aXZS
b2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1
ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMdWludCAqcGFyYW1zKSBvdmVycmlkZTsKLQot
ICAgIHZvaWQgZ2V0UXVlcnlPYmplY3RpdlJvYnVzdEFOR0xFKEdDR0x1aW50IGlkLCBHQ0dMZW51
bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpw
YXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0UXVlcnlPYmplY3RpNjR2Um9idXN0QU5HTEUo
R0NHTHVpbnQgaWQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVp
ICpsZW5ndGgsIEdDR0xpbnQ2NCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldFF1ZXJ5
T2JqZWN0dWk2NHZSb2J1c3RBTkdMRShHQ0dMdWludCBpZCwgR0NHTGVudW0gcG5hbWUsIEdDR0xz
aXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHVpbnQ2NCAqcGFyYW1zKSBvdmVy
cmlkZTsKKyAgICB2b2lkIHJlYWRuUGl4ZWxzRVhUKGludCB4LCBpbnQgeSwgR0NHTHNpemVpIHdp
ZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdD
R0xzaXplaSBidWZTaXplLCB2b2lkICpkYXRhKTsKKyAgICB2b2lkIGdldG5Vbmlmb3JtZnZFWFQo
R0NHTHVpbnQgcHJvZ3JhbSwgaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgZmxvYXQg
KnBhcmFtcyk7CisgICAgdm9pZCBnZXRuVW5pZm9ybWl2RVhUKEdDR0x1aW50IHByb2dyYW0sIGlu
dCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIGludCAqcGFyYW1zKTsKKworICAgIGJvb2wg
aXNOVklESUEoKSBjb25zdCB7IHJldHVybiBtX2lzTlZJRElBOyB9CisgICAgYm9vbCBpc0FNRCgp
IGNvbnN0IHsgcmV0dXJuIG1faXNBTUQ7IH0KKyAgICBib29sIGlzSW50ZWwoKSBjb25zdCB7IHJl
dHVybiBtX2lzSW50ZWw7IH0KKyAgICBib29sIGlzSW1hZ2luYXRpb24oKSBjb25zdCB7IHJldHVy
biBtX2lzSW1hZ2luYXRpb247IH0KKyAgICBTdHJpbmcgdmVuZG9yKCkgY29uc3QgeyByZXR1cm4g
bV92ZW5kb3I7IH0KKworICAgIGJvb2wgcmVxdWlyZXNCdWlsdEluRnVuY3Rpb25FbXVsYXRpb24o
KSBjb25zdCB7IHJldHVybiBtX3JlcXVpcmVzQnVpbHRJbkZ1bmN0aW9uRW11bGF0aW9uOyB9Cisg
ICAgYm9vbCByZXF1aXJlc1Jlc3RyaWN0ZWRNYXhpbXVtVGV4dHVyZVNpemUoKSBjb25zdCB7IHJl
dHVybiBtX3JlcXVpcmVzUmVzdHJpY3RlZE1heGltdW1UZXh0dXJlU2l6ZTsgfQogCiBwcm90ZWN0
ZWQ6CiAgICAgZnJpZW5kIGNsYXNzIEV4dGVuc2lvbnNHTE9wZW5HTEVTOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5H
TEVTLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNp
b25zR0xPcGVuR0xFUy5jcHAKaW5kZXggZTFlNDNiZjUzOTI4ODVhMjRmYmIzM2NiMjZiNWY2ZTQ5
MWZiZTA3My4uMDdkMDk3YzJjNTVjMzEyMGM0ZGVmZmE5YmI2YWUyNjRiNGJlNDhkNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNH
TE9wZW5HTEVTLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVu
Z2wvRXh0ZW5zaW9uc0dMT3BlbkdMRVMuY3BwCkBAIC0xMDAsMTEgKzEwMCw2IEBAIHZvaWQgRXh0
ZW5zaW9uc0dMT3BlbkdMRVM6OnJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUlNRyh1bnNp
Z25lZCBsb25nIHRhcmdlCiAgICAgICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xf
SU5WQUxJRF9PUEVSQVRJT04pOwogfQogCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTEVTOjpibGl0
RnJhbWVidWZmZXJBTkdMRShHQ0dMaW50LCBHQ0dMaW50LCBHQ0dMaW50LCBHQ0dMaW50LCBHQ0dM
aW50LCBHQ0dMaW50LCBHQ0dMaW50LCBHQ0dMaW50LCBHQ0dMYml0ZmllbGQsIEdDR0xlbnVtKQot
ewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KIHZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMRVM6
OnJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NH
THNpemVpIHNhbXBsZXMsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgs
IEdDR0xzaXplaSBoZWlnaHQpCiB7CiAgICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3Vy
cmVudCgpKQpAQCAtMTE1LDIxICsxMTAsNiBAQCB2b2lkIEV4dGVuc2lvbnNHTE9wZW5HTEVTOjpy
ZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVBTkdMRShHQ0dMZW51bSB0YXJnZXQsCiAgICAg
ICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMRVM6Omlu
c2VydEV2ZW50TWFya2VyRVhUKGNvbnN0IFN0cmluZyYpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQo
KTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xFUzo6cHVzaEdyb3VwTWFya2VyRVhUKGNv
bnN0IFN0cmluZyYpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBFeHRlbnNp
b25zR0xPcGVuR0xFUzo6cG9wR3JvdXBNYXJrZXJFWFQodm9pZCkKLXsKLSAgICBub3RJbXBsZW1l
bnRlZCgpOwotfQotCiBQbGF0Zm9ybUdMT2JqZWN0IEV4dGVuc2lvbnNHTE9wZW5HTEVTOjpjcmVh
dGVWZXJ0ZXhBcnJheU9FUygpCiB7CiAgICAgaWYgKG1fZ2xHZW5WZXJ0ZXhBcnJheXNPRVMpIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRl
bnNpb25zR0xPcGVuR0xFUy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Bl
bmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVTLmgKaW5kZXggNWM3NjAzN2ZhN2JjNmU4ZWVlM2U2NzNm
OTlhN2RmYzJmNzhmYjRkMi4uNjkzZDAzYzczZjBlYzgzMTBiM2NkMmViOGEzZGQzYjMyNjk0NmZh
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4
dGVuc2lvbnNHTE9wZW5HTEVTLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVTLmgKQEAgLTc1LDExICs3NSw3IEBAIHB1Ymxp
YzoKIAogICAgIC8vIEV4dGVuc2lvbjNEIG1ldGhvZHMKICAgICBib29sIGlzRW5hYmxlZChjb25z
dCBTdHJpbmcmKSBvdmVycmlkZTsKLSAgICB2b2lkIGJsaXRGcmFtZWJ1ZmZlckFOR0xFKEdDR0xp
bnQgc3JjWDAsIEdDR0xpbnQgc3JjWTAsIEdDR0xpbnQgc3JjWDEsIEdDR0xpbnQgc3JjWTEsIEdD
R0xpbnQgZHN0WDAsIEdDR0xpbnQgZHN0WTAsIEdDR0xpbnQgZHN0WDEsIEdDR0xpbnQgZHN0WTEs
IEdDR0xiaXRmaWVsZCBtYXNrLCBHQ0dMZW51bSBmaWx0ZXIpIG92ZXJyaWRlOwotICAgIHZvaWQg
cmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dM
c2l6ZWkgc2FtcGxlcywgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwg
R0NHTHNpemVpIGhlaWdodCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBpbnNlcnRFdmVudE1hcmtlckVY
VChjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKLSAgICB2b2lkIHB1c2hHcm91cE1hcmtlckVYVChj
b25zdCBTdHJpbmcmKSBvdmVycmlkZTsKLSAgICB2b2lkIHBvcEdyb3VwTWFya2VyRVhUKHZvaWQp
IG92ZXJyaWRlOworICAgIHZvaWQgcmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5HTEUo
R0NHTGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWkgc2FtcGxlcywgR0NHTGVudW0gaW50ZXJuYWxmb3Jt
YXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCk7CiAKICAgICBQbGF0Zm9ybUdM
T2JqZWN0IGNyZWF0ZVZlcnRleEFycmF5T0VTKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkZWxldGVW
ZXJ0ZXhBcnJheU9FUyhQbGF0Zm9ybUdMT2JqZWN0KSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9w
ZW5HTC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNz
Q29udGV4dEdMT3BlbkdMLmgKaW5kZXggOWNlMDViZDU3ODQwOGQ5YjE4ZTg4OGE3MTAwZjdiMmIx
NTI5YjllNy4uYWVmOTI3ZmEwNjYwMjBhYzhiN2M5ZWE1NTAyYTgyY2MyMDFhNWEyZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Bl
bmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgKQEAgLTcyLDggKzcyLDEwIEBAIGNsYXNzIEV4
dGVuc2lvbnNHTDsKIGNsYXNzIEV4dGVuc2lvbnNHTEFOR0xFOwogI2VsaWYgVVNFKE9QRU5HTF9F
UykKIGNsYXNzIEV4dGVuc2lvbnNHTE9wZW5HTEVTOworY2xhc3MgRXh0ZW5zaW9uc0dMT3BlbkdM
Q29tbW9uOwogI2VsaWYgVVNFKE9QRU5HTCkKIGNsYXNzIEV4dGVuc2lvbnNHTE9wZW5HTDsKK2Ns
YXNzIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjsKICNlbmRpZgogY2xhc3MgSG9zdFdpbmRvdzsK
IGNsYXNzIEltYWdlQnVmZmVyOwpAQCAtNDgxLDcgKzQ4MywxMiBAQCBwdWJsaWM6CiAgICAgLy8g
YWxsIG1ldGhvZHMgaXQgY29udGFpbnMgbWF5IG5lY2Vzc2FyaWx5IGJlIHN1cHBvcnRlZCBvbiB0
aGUKICAgICAvLyBjdXJyZW50IGhhcmR3YXJlLiBNdXN0IGNhbGwgRXh0ZW5zaW9uc0dMOjpzdXBw
b3J0cygpIHRvCiAgICAgLy8gZGV0ZXJtaW5lIHRoaXMuCisjaWYgIVVTRShBTkdMRSkKKyAgICAv
LyBVc2UgY292YXJpYW50IHJldHVybiB0eXBlIGZvciBPUEVOR0wvT1BFTkdMX0VTCisgICAgRXh0
ZW5zaW9uc0dMT3BlbkdMQ29tbW9uJiBnZXRFeHRlbnNpb25zKCkgZmluYWw7CisjZWxzZQogICAg
IEV4dGVuc2lvbnNHTCYgZ2V0RXh0ZW5zaW9ucygpIGZpbmFsOworI2VuZGlmCiAKICAgICB2b2lk
IHNldEZhaWxOZXh0R1BVU3RhdHVzQ2hlY2soKSBmaW5hbCB7IG1fZmFpbE5leHRTdGF0dXNDaGVj
ayA9IHRydWU7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xCYXNlLmNw
cAppbmRleCAxM2JjYTc0ZWM4NjczNGZkZmQ2YmI3ODA5OTA0NmJhOGE4MTg1ZGFiLi41MzZjZTNh
NGYyNjMwNDJlNjYzYTNjYWQzZjI4YjJmMWUyZGFlMTU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xCYXNl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0xCYXNlLmNwcApAQCAtMTE2LDcgKzExNiw3IEBAIGJvb2wgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OnJlc2hhcGVGQk9zKGNvbnN0IEludFNpemUmIHNpemUpCiAgICAg
ICAgIC8vIFdlIGRvbid0IGFsbG93IHRoZSBsb2dpYyB3aGVyZSBzdGVuY2lsIGlzIHJlcXVpcmVk
IGFuZCBkZXB0aCBpcyBub3QuCiAgICAgICAgIC8vIFNlZSBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6dmFsaWRhdGVBdHRyaWJ1dGVzLgogCi0gICAgICAgIEV4dGVuc2lvbnNHTCYgZXh0ZW5zaW9u
cyA9IGdldEV4dGVuc2lvbnMoKTsKKyAgICAgICAgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uJiBl
eHRlbnNpb25zID0gZ2V0RXh0ZW5zaW9ucygpOwogICAgICAgICAvLyBVc2UgYSAyNCBiaXQgZGVw
dGggYnVmZmVyIHdoZXJlIHdlIGtub3cgd2UgaGF2ZSBpdC4KICAgICAgICAgaWYgKGV4dGVuc2lv
bnMuc3VwcG9ydHMoIkdMX0VYVF9wYWNrZWRfZGVwdGhfc3RlbmNpbCIpKQogICAgICAgICAgICAg
aW50ZXJuYWxEZXB0aFN0ZW5jaWxGb3JtYXQgPSBHTF9ERVBUSDI0X1NURU5DSUw4X0VYVDsKQEAg
LTQxNyw3ICs0MTcsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjbGVhckRlcHRo
KEdDR0xjbGFtcGYgZGVwdGgpCiB9CiAKICNpZiAhUExBVEZPUk0oR1RLKQotRXh0ZW5zaW9uc0dM
JiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0RXh0ZW5zaW9ucygpCitFeHRlbnNpb25zR0xP
cGVuR0xDb21tb24mIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRFeHRlbnNpb25zKCkKIHsK
ICAgICBpZiAoIW1fZXh0ZW5zaW9ucykKICAgICAgICAgbV9leHRlbnNpb25zID0gbWFrZVVuaXF1
ZTxFeHRlbnNpb25zR0xPcGVuR0w+KHRoaXMsIGlzR0xFUzJDb21wbGlhbnQoKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0xDb21tb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
b3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29tbW9uLmNwcAppbmRleCBlNzhiZjQ3NDNi
OWNlMzk0MzdmYWMxNmRiNmJlMDA5ODViMGE1ODE1Li5lYjU1YjUxMzExMDQyMTljZTJlN2Y1NDY5
NzUzNDFiM2VlN2YyZWUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb21tb24uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5H
TENvbW1vbi5jcHAKQEAgLTExOCw3ICsxMTgsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjp2YWxpZGF0ZURlcHRoU3RlbmNpbChjb25zdCBjaGFyKiBwYWNrZWREZXB0aFN0ZW5jaQog
ewogICAgIGF1dG8gYXR0cnMgPSBjb250ZXh0QXR0cmlidXRlcygpOwogCi0gICAgRXh0ZW5zaW9u
c0dMJiBleHRlbnNpb25zID0gZ2V0RXh0ZW5zaW9ucygpOworICAgIEV4dGVuc2lvbnNHTE9wZW5H
TENvbW1vbiYgZXh0ZW5zaW9ucyA9IGdldEV4dGVuc2lvbnMoKTsKICAgICBpZiAoYXR0cnMuc3Rl
bmNpbCkgewogICAgICAgICBpZiAoZXh0ZW5zaW9ucy5zdXBwb3J0cyhwYWNrZWREZXB0aFN0ZW5j
aWxFeHRlbnNpb24pKSB7CiAgICAgICAgICAgICBleHRlbnNpb25zLmVuc3VyZUVuYWJsZWQocGFj
a2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEVTLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9w
ZW5HTEVTLmNwcAppbmRleCBiODJkMTY0MTdjMmY1MTkxZDA0NDI0ODc0NmU3ODM4YTg2N2FlNTAy
Li4wZTc4ZDA4MzhjY2IxNmExYTAzZDM4YjU3MzcwOGUxOTVmZWEwYzUyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0xFUy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Blbmds
L0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMRVMuY3BwCkBAIC0yNTQsNyArMjU0LDcgQEAgdm9pZCBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y2xlYXJEZXB0aChHQ0dMY2xhbXBmIGRlcHRoKQogfQog
CiAjaWYgIVBMQVRGT1JNKEdUSykKLUV4dGVuc2lvbnNHTCYgR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OmdldEV4dGVuc2lvbnMoKQorRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uJiBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6Z2V0RXh0ZW5zaW9ucygpCiB7CiAgICAgaWYgKCFtX2V4dGVuc2lvbnMp
CiAgICAgICAgIG1fZXh0ZW5zaW9ucyA9IG1ha2VVbmlxdWU8RXh0ZW5zaW9uc0dMT3BlbkdMRVM+
KHRoaXMsIGlzR0xFUzJDb21wbGlhbnQoKSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>415602</attachid>
            <date>2020-12-07 17:06:37 -0800</date>
            <delta_ts>2020-12-07 17:14:28 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-218896-20201207170636.patch</filename>
            <type>text/plain</type>
            <size>64268</size>
            <attacher name="Rini Patel">rini_patel</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwNTI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzEzNDg4N2QyYjdlZjE0
YTNmOGRlYmRkYTE0MTNiNzc2YTg0YTI3Ni4uMTIxOWZkMzU4MDUzMjFiNTFiZmNkNDhmMDc4YTg4
N2RkMDUyYzdkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyOSBAQAorMjAyMC0xMi0wNyAgUmlu
aSBQYXRlbCAgPHJpbmlfcGF0ZWxAYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZSB1bnVzZWQg
ZnVuY3Rpb25zIGZyb20gR3JhcGhpY3NDb250ZXh0R0wgYW5kIEV4dGVuc2lvbnNHTAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE4ODk2CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVtb3ZlIHVudXNlZCBm
dW5jdGlvbnMgZnJvbSBHcmFwaGljc0NvbnRleHRHTCBhbmQgRXh0ZW5zaW9uc0dMCisgICAgICAg
IFRoZXkncmUgZGVhZCBjb2RlIGFuZCBtYWtlIGl0IGhhcmRlciB0byBpbXBsZW1lbnQgdGhlIEdQ
VSBQcm9jZXNzIHZlcnNpb24uCisKKyAgICAgICAgLSBJZiB0aGUgZnVuY3Rpb24gaXMgdW51c2Vk
LCByZW1vdmUgaXQgZnVsbHkKKyAgICAgICAgLSBJZiB0aGUgZnVuY3Rpb24gaXMgdW51c2VkIGlu
IFVTRShBTkdMRSkgV2ViR0wgcGFydCwgcmVtb3ZlIHRoZSBmdW5jdGlvbiBmcm9tIEdyYXBoaWNz
Q29udGV4dEdMIGFuZCBBTkdMRSBHcmFwaGljc0NvbnRleHRHTE9wZW5HTAorCisgICAgICAgICog
aHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL0V4dGVuc2lvbnNHTC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lv
bnNHTEFOR0xFOjpFeHRlbnNpb25zR0xBTkdMRSk6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNp
b25zR0xBTkdMRTo6aW5pdGlhbGl6ZUF2YWlsYWJsZUV4dGVuc2lvbnMpOgorICAgICAgICAoV2Vi
Q29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmJsaXRGcmFtZWJ1ZmZlckFOR0xFKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpyZW5kZXJidWZmZXJTdG9yYWdl
TXVsdGlzYW1wbGVBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25z
R0xBTkdMRTo6aW5zZXJ0RXZlbnRNYXJrZXJFWFQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OnB1c2hHcm91cE1hcmtlckVYVCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6cG9wR3JvdXBNYXJrZXJFWFQpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OnJlYWRQaXhlbHNSb2J1
c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6
dGV4UGFyYW1ldGVyZnZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpF
eHRlbnNpb25zR0xBTkdMRTo6dGV4UGFyYW1ldGVyaXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6Z2V0UXVlcnlpdlJvYnVzdEFOR0xF
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpnZXRRdWVy
eU9iamVjdHVpdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVu
c2lvbnNHTEFOR0xFOjpnZXRCdWZmZXJQb2ludGVydlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpnZXRWZXJ0ZXhBdHRyaWJJaXZSb2J1
c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6
Z2V0VmVydGV4QXR0cmliSXVpdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpnZXRVbmlmb3JtdWl2Um9idXN0QU5HTEUpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldEJ1ZmZlclBhcmFtZXRl
cmk2NHZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25z
R0xBTkdMRTo6c2FtcGxlclBhcmFtZXRlcml2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OnNhbXBsZXJQYXJhbWV0ZXJmdlJvYnVzdEFO
R0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpnZXRT
YW1wbGVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpFeHRlbnNpb25zR0xBTkdMRTo6Z2V0U2FtcGxlclBhcmFtZXRlcmZ2Um9idXN0QU5HTEUpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldEZyYW1lYnVm
ZmVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpF
eHRlbnNpb25zR0xBTkdMRTo6Z2V0UHJvZ3JhbUludGVyZmFjZWl2Um9idXN0QU5HTEUpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldEJvb2xlYW5pX3ZS
b2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdM
RTo6Z2V0TXVsdGlzYW1wbGVmdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpnZXRUZXhMZXZlbFBhcmFtZXRlcml2Um9idXN0QU5HTEUp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldFRleExl
dmVsUGFyYW1ldGVyZnZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpF
eHRlbnNpb25zR0xBTkdMRTo6Z2V0UG9pbnRlcnZSb2J1c3RBTkdMRVJvYnVzdEFOR0xFKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpnZXRuVW5pZm9ybWZ2
Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5H
TEU6OmdldG5Vbmlmb3JtaXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpFeHRlbnNpb25zR0xBTkdMRTo6Z2V0blVuaWZvcm11aXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6dGV4UGFyYW1ldGVySWl2Um9i
dXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6
OnRleFBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpFeHRlbnNpb25zR0xBTkdMRTo6Z2V0VGV4UGFyYW1ldGVySWl2Um9idXN0QU5HTEUpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldFRleFBhcmFtZXRl
ckl1aXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25z
R0xBTkdMRTo6c2FtcGxlclBhcmFtZXRlcklpdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpzYW1wbGVyUGFyYW1ldGVySXVpdlJvYnVz
dEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpn
ZXRTYW1wbGVyUGFyYW1ldGVySWl2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldFNhbXBsZXJQYXJhbWV0ZXJJdWl2Um9idXN0QU5H
TEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldFF1
ZXJ5T2JqZWN0aXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRl
bnNpb25zR0xBTkdMRTo6Z2V0UXVlcnlPYmplY3RpNjR2Um9idXN0QU5HTEUpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldFF1ZXJ5T2JqZWN0dWk2NHZS
b2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUv
RXh0ZW5zaW9uc0dMQU5HTEUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wv
RXh0ZW5zaW9uc0dMT3BlbkdMLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9w
ZW5HTDo6YmxpdEZyYW1lYnVmZmVyQU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
RXh0ZW5zaW9uc0dMT3BlbkdMOjpyZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVBTkdMRSk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0w6Omluc2VydEV2
ZW50TWFya2VyRVhUKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9w
ZW5HTDo6cHVzaEdyb3VwTWFya2VyRVhUKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4
dGVuc2lvbnNHTE9wZW5HTDo6cG9wR3JvdXBNYXJrZXJFWFQpOiBEZWxldGVkLgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6cmVhZFBpeGVsc1Jv
YnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5H
TENvbW1vbjo6dGV4UGFyYW1ldGVyZnZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OnRleFBhcmFtZXRlcml2Um9idXN0QU5H
TEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9u
OjpnZXRRdWVyeWl2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0
ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRRdWVyeU9iamVjdHVpdlJvYnVzdEFOR0xFKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0QnVm
ZmVyUG9pbnRlcnZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRl
bnNpb25zR0xPcGVuR0xDb21tb246OmdldFZlcnRleEF0dHJpYklpdlJvYnVzdEFOR0xFKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0VmVy
dGV4QXR0cmliSXVpdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4
dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0VW5pZm9ybXVpdlJvYnVzdEFOR0xFKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0QnVmZmVy
UGFyYW1ldGVyaTY0dlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4
dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6c2FtcGxlclBhcmFtZXRlcml2Um9idXN0QU5HTEUpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpzYW1w
bGVyUGFyYW1ldGVyZnZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpF
eHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFNhbXBsZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xF
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6
Z2V0U2FtcGxlclBhcmFtZXRlcmZ2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRGcmFtZWJ1ZmZlclBhcmFtZXRlcml2
Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3Bl
bkdMQ29tbW9uOjpnZXRQcm9ncmFtSW50ZXJmYWNlaXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldEJvb2xlYW5pX3ZS
b2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVu
R0xDb21tb246OmdldE11bHRpc2FtcGxlZnZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFRleExldmVsUGFyYW1ldGVy
aXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xP
cGVuR0xDb21tb246OmdldFRleExldmVsUGFyYW1ldGVyZnZSb2J1c3RBTkdMRSk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFBvaW50ZXJ2
Um9idXN0QU5HTEVSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRl
bnNpb25zR0xPcGVuR0xDb21tb246OmdldG5Vbmlmb3JtZnZSb2J1c3RBTkdMRSk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldG5Vbmlmb3Jt
aXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xP
cGVuR0xDb21tb246OmdldG5Vbmlmb3JtdWl2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjp0ZXhQYXJhbWV0ZXJJaXZSb2J1
c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xD
b21tb246OnRleFBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFRleFBhcmFtZXRlcklpdlJvYnVz
dEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTENv
bW1vbjo6Z2V0VGV4UGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6c2FtcGxlclBhcmFtZXRlcklpdlJv
YnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5H
TENvbW1vbjo6c2FtcGxlclBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFNhbXBsZXJQYXJhbWV0
ZXJJaXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25z
R0xPcGVuR0xDb21tb246OmdldFNhbXBsZXJQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRRdWVy
eU9iamVjdGl2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5z
aW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRRdWVyeU9iamVjdGk2NHZSb2J1c3RBTkdMRSk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFF1ZXJ5
T2JqZWN0dWk2NHZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5oOgorICAgICAgICAoV2ViQ29y
ZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjppc05WSURJQSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmlzQU1EIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6aXNJbnRlbCBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmlzSW1hZ2luYXRpb24gY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjp2ZW5kb3Ig
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpyZXF1
aXJlc0J1aWx0SW5GdW5jdGlvbkVtdWxhdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpF
eHRlbnNpb25zR0xPcGVuR0xDb21tb246OnJlcXVpcmVzUmVzdHJpY3RlZE1heGltdW1UZXh0dXJl
U2l6ZSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lv
bnNHTE9wZW5HTEVTLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTEVT
OjpibGl0RnJhbWVidWZmZXJBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRl
bnNpb25zR0xPcGVuR0xFUzo6aW5zZXJ0RXZlbnRNYXJrZXJFWFQpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMRVM6OnB1c2hHcm91cE1hcmtlckVYVCk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xFUzo6cG9wR3JvdXBN
YXJrZXJFWFQpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9F
eHRlbnNpb25zR0xPcGVuR0xFUy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5n
bC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEJhc2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlc2hhcGVGQk9zKToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRFeHRlbnNpb25zKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb21tb24uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnZhbGlkYXRlRGVw
dGhTdGVuY2lsKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0xFUy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6Z2V0RXh0ZW5zaW9ucyk6CisKIDIwMjAtMTItMDcgIEFsZXggQ2hyaXN0ZW5zZW4g
IDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBQYXJzZSBjb250ZW50IGFmdGVy
ICMgaW4gZGF0YSBVUkxzIHdpdGggSExTIG1pbWUgdHlwZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKaW5kZXgg
NzJjMjY0NDY2NmNmMDNhMmY1OWYxZTA5ZmU5MzI5M2NiODBiNmJhZS4uYjkzNGMxZTg5YzI1MWFj
MGIwMDgzNzFmZjMxZmRiNGY5OTcxMjAwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKQEAgLTc0MiwxMCAr
NzQyLDYgQEAgc3RkOjp1bmlxdWVfcHRyPFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U+IFdlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2U6OmNyZWF0ZShDYW4KICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAgICAgfQogCi0gICAgYXV0byYgZXh0ZW5zaW9ucyA9IGNvbnRleHQtPmdldEV4dGVuc2lvbnMo
KTsKLSAgICBpZiAoZXh0ZW5zaW9ucy5zdXBwb3J0cygiR0xfRVhUX2RlYnVnX21hcmtlciJfcykp
Ci0gICAgICAgIGV4dGVuc2lvbnMucHVzaEdyb3VwTWFya2VyRVhUKCJXZWJHTFJlbmRlcmluZ0Nv
bnRleHQiX3MpOwotCiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2U+IHJlbmRlcmluZ0NvbnRleHQ7CiAjaWYgRU5BQkxFKFdFQkdMMikKICAgICBpZiAodHlwZSA9
PSAid2ViZ2wyIikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0V4dGVuc2lvbnNHTC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRXh0ZW5z
aW9uc0dMLmgKaW5kZXggYzRlNzc3OGRiNmE0NDhmZDBhNWU2NTE1OTFmZWVhMTQ1Mzg2MzgyMy4u
NjJkNTgzMDAwYTE1YzY3ZDJmOGE1MDhiNGZjNmI3ZTg4NGM0YjRkNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRXh0ZW5zaW9uc0dMLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRXh0ZW5zaW9uc0dMLmgKQEAgLTI3OCwxMiArMjc4
LDYgQEAgcHVibGljOgogICAgIC8vIGV4dGVybmFsbHkuCiAgICAgdmlydHVhbCBHQ0dMaW50IGdl
dEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIoKSA9IDA7CiAKLSAgICAvLyBHTF9BTkdMRV9mcmFtZWJ1
ZmZlcl9ibGl0Ci0gICAgdmlydHVhbCB2b2lkIGJsaXRGcmFtZWJ1ZmZlckFOR0xFKEdDR0xpbnQg
c3JjWDAsIEdDR0xpbnQgc3JjWTAsIEdDR0xpbnQgc3JjWDEsIEdDR0xpbnQgc3JjWTEsIEdDR0xp
bnQgZHN0WDAsIEdDR0xpbnQgZHN0WTAsIEdDR0xpbnQgZHN0WDEsIEdDR0xpbnQgZHN0WTEsIEdD
R0xiaXRmaWVsZCBtYXNrLCBHQ0dMZW51bSBmaWx0ZXIpID0gMDsKLQotICAgIC8vIEdMX0FOR0xF
X2ZyYW1lYnVmZmVyX211bHRpc2FtcGxlCi0gICAgdmlydHVhbCB2b2lkIHJlbmRlcmJ1ZmZlclN0
b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVpIHNhbXBsZXMs
IEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWln
aHQpID0gMDsKLQogICAgIC8vIEdMX09FU192ZXJ0ZXhfYXJyYXlfb2JqZWN0CiAgICAgdmlydHVh
bCBQbGF0Zm9ybUdMT2JqZWN0IGNyZWF0ZVZlcnRleEFycmF5T0VTKCkgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCBkZWxldGVWZXJ0ZXhBcnJheU9FUyhQbGF0Zm9ybUdMT2JqZWN0KSA9IDA7CkBAIC0y
OTMsMTEgKzI4Nyw2IEBAIHB1YmxpYzoKICAgICAvLyBHTF9BTkdMRV90cmFuc2xhdGVkX3NoYWRl
cl9zb3VyY2UKICAgICB2aXJ0dWFsIFN0cmluZyBnZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5H
TEUoUGxhdGZvcm1HTE9iamVjdCkgPSAwOwogCi0gICAgLy8gR0xfRVhUX2RlYnVnX21hcmtlcgot
ICAgIHZpcnR1YWwgdm9pZCBpbnNlcnRFdmVudE1hcmtlckVYVChjb25zdCBTdHJpbmcmKSA9IDA7
Ci0gICAgdmlydHVhbCB2b2lkIHB1c2hHcm91cE1hcmtlckVYVChjb25zdCBTdHJpbmcmKSA9IDA7
Ci0gICAgdmlydHVhbCB2b2lkIHBvcEdyb3VwTWFya2VyRVhUKCkgPSAwOwotCiAgICAgLy8gR0xf
QVJCX2RyYXdfYnVmZmVycyAvIEdMX0VYVF9kcmF3X2J1ZmZlcnMKICAgICB2aXJ0dWFsIHZvaWQg
ZHJhd0J1ZmZlcnNFWFQoR0NHTFNwYW48Y29uc3QgR0NHTGVudW0+IGJ1ZnMpID0gMDsKIApAQCAt
MzA2LDQ3ICsyOTUsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRyYXdFbGVtZW50c0lu
c3RhbmNlZEFOR0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xzaXplaSBjb3VudCwgR0NHTGVudW0gdHlw
ZSwgR0NHTHZvaWRwdHIgb2Zmc2V0LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KSA9IDA7CiAgICAgdmly
dHVhbCB2b2lkIHZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRShHQ0dMdWludCBpbmRleCwgR0NHTHVp
bnQgZGl2aXNvcikgPSAwOwogCi0gICAgLy8gR0xfQU5HTEVfcm9idXN0X2NsaWVudF9tZW1vcnkK
LSAgICB2aXJ0dWFsIHZvaWQgcmVhZFBpeGVsc1JvYnVzdEFOR0xFKEdDR0xpbnQgeCwgR0NHTGlu
dCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwg
R0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dM
c2l6ZWkqIGNvbHVtbnMsIEdDR0xzaXplaSogcm93cywgR0NHTHZvaWQqIHBpeGVscykgPSAwOwot
ICAgIHZpcnR1YWwgdm9pZCB0ZXhQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdl
dCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMZmxvYXQqIHBh
cmFtcykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCB0ZXhQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdD
R0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBH
Q0dMaW50KiBwYXJhbXMpID0gMDsKLQotICAgIHZpcnR1YWwgdm9pZCBnZXRRdWVyeWl2Um9idXN0
QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUs
IEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZv
aWQgZ2V0UXVlcnlPYmplY3R1aXZSb2J1c3RBTkdMRShHQ0dMdWludCBpZCwgR0NHTGVudW0gcG5h
bWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHVpbnQqIHBhcmFt
cykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRCdWZmZXJQb2ludGVydlJvYnVzdEFOR0xFKEdD
R0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6
ZWkqIGxlbmd0aCwgR0NHTHZvaWQqKiBwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0
VmVydGV4QXR0cmliSWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1l
LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykg
PSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJJdWl2Um9idXN0QU5HTEUoR0NH
THVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVp
KiBsZW5ndGgsIEdDR0x1aW50KiBwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0VW5p
Zm9ybXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdD
R0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHVpbnQqIHBhcmFtcykgPSAw
OwotICAgIHZpcnR1YWwgdm9pZCBnZXRCdWZmZXJQYXJhbWV0ZXJpNjR2Um9idXN0QU5HTEUoR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXpl
aSogbGVuZ3RoLCBHQ0dMaW50NjQqIHBhcmFtcykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBzYW1w
bGVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFt
ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xpbnQqIHBhcmFtKSA9IDA7Ci0gICAgdmly
dHVhbCB2b2lkIHNhbXBsZXJQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIs
IEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGZsb2F0KiBwYXJh
bSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRTYW1wbGVyUGFyYW1ldGVyaXZSb2J1c3RBTkdM
RShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdD
R0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQg
Z2V0U2FtcGxlclBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVu
dW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGZsb2F0
KiBwYXJhbXMpID0gMDsKLQotICAgIHZpcnR1YWwgdm9pZCBnZXRGcmFtZWJ1ZmZlclBhcmFtZXRl
cml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVp
IGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpID0gMDsKLSAgICB2
aXJ0dWFsIHZvaWQgZ2V0UHJvZ3JhbUludGVyZmFjZWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJv
Z3JhbSwgR0NHTGVudW0gcHJvZ3JhbUludGVyZmFjZSwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXpl
aSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1zKSA9IDA7Ci0gICAg
dmlydHVhbCB2b2lkIGdldEJvb2xlYW5pX3ZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdD
R0x1aW50IGluZGV4LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xi
b29sZWFuKiBkYXRhKSA9IDA7IC8vIE5PTElOVAotICAgIHZpcnR1YWwgdm9pZCBnZXRNdWx0aXNh
bXBsZWZ2Um9idXN0QU5HTEUoR0NHTGVudW0gcG5hbWUsIEdDR0x1aW50IGluZGV4LCBHQ0dMc2l6
ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xmbG9hdCogdmFsKSA9IDA7Ci0gICAg
dmlydHVhbCB2b2lkIGdldFRleExldmVsUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0
YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwg
R0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykgPSAwOwotICAgIHZpcnR1YWwgdm9p
ZCBnZXRUZXhMZXZlbFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dM
aW50IGxldmVsLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSog
bGVuZ3RoLCBHQ0dMZmxvYXQqIHBhcmFtcykgPSAwOwotCi0gICAgdmlydHVhbCB2b2lkIGdldFBv
aW50ZXJ2Um9idXN0QU5HTEVSb2J1c3RBTkdMRShHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1
ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMdm9pZCoqIHBhcmFtcykgPSAwOwotICAgIHZp
cnR1YWwgdm9pZCBnZXRuVW5pZm9ybWZ2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NH
TGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dM
ZmxvYXQqIHBhcmFtcykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRuVW5pZm9ybWl2Um9idXN0
QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNp
emUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFs
IHZvaWQgZ2V0blVuaWZvcm11aXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMaW50
IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0x1aW50
KiBwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgdGV4UGFyYW1ldGVySWl2Um9idXN0QU5H
TEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNv
bnN0IEdDR0xpbnQqIHBhcmFtcykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCB0ZXhQYXJhbWV0ZXJJ
dWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVp
IGJ1ZlNpemUsIGNvbnN0IEdDR0x1aW50KiBwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQg
Z2V0VGV4UGFyYW1ldGVySWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBw
bmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJh
bXMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0VGV4UGFyYW1ldGVySXVpdlJvYnVzdEFOR0xF
KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dM
c2l6ZWkqIGxlbmd0aCwgR0NHTHVpbnQqIHBhcmFtcykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBz
YW1wbGVyUGFyYW1ldGVySWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0g
cG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMaW50KiBwYXJhbSkgPSAwOwotICAg
IHZpcnR1YWwgdm9pZCBzYW1wbGVyUGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNh
bXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTHVpbnQq
IHBhcmFtKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldFNhbXBsZXJQYXJhbWV0ZXJJaXZSb2J1
c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNp
emUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFs
IHZvaWQgZ2V0U2FtcGxlclBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVy
LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBH
Q0dMdWludCogcGFyYW1zKSA9IDA7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgZ2V0UXVlcnlPYmplY3Rp
dlJvYnVzdEFOR0xFKEdDR0x1aW50IGlkLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNp
emUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFs
IHZvaWQgZ2V0UXVlcnlPYmplY3RpNjR2Um9idXN0QU5HTEUoR0NHTHVpbnQgaWQsIEdDR0xlbnVt
IHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQ2NCog
cGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldFF1ZXJ5T2JqZWN0dWk2NHZSb2J1c3RB
TkdMRShHQ0dMdWludCBpZCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dM
c2l6ZWkqIGxlbmd0aCwgR0NHTHVpbnQ2NCogcGFyYW1zKSA9IDA7Ci0KICAgICAvLyBPdGhlciBm
dW5jdGlvbnMuCiAjaWYgIVVTRShBTkdMRSkKICAgICAvLyBFWFQgUm9idXN0bmVzcyAtIHVzZXMg
Z2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQgpAQCAtMzU0LDE2ICszMDIsNiBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCB2b2lkIGdldG5Vbmlmb3JtZnZFWFQoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGlu
dCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xmbG9hdCogcGFyYW1zKSA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIGdldG5Vbmlmb3JtaXZFWFQoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGlu
dCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xpbnQqIHBhcmFtcykgPSAwOwogCi0g
ICAgdmlydHVhbCBib29sIGlzTlZJRElBKCkgPSAwOwotICAgIHZpcnR1YWwgYm9vbCBpc0FNRCgp
ID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgaXNJbnRlbCgpID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wg
aXNJbWFnaW5hdGlvbigpID0gMDsKLSAgICB2aXJ0dWFsIFN0cmluZyB2ZW5kb3IoKSA9IDA7Ci0K
LSAgICAvLyBTb21lIGNvbmZpZ3VyYXRpb25zIGhhdmUgYnVncyByZWdhcmRpbmcgYnVpbHQtaW4g
ZnVuY3Rpb25zIGluIHRoZWlyIE9wZW5HTCBkcml2ZXJzCi0gICAgLy8gdGhhdCBtdXN0IGJlIGF2
b2lkZWQuIFBvcnRzIHNob3VsZCBpbXBsZW1lbnQgdGhlc2UgZmxhZ3Mgb24gc3VjaCBjb25maWd1
cmF0aW9ucy4KLSAgICB2aXJ0dWFsIGJvb2wgcmVxdWlyZXNCdWlsdEluRnVuY3Rpb25FbXVsYXRp
b24oKSA9IDA7Ci0gICAgdmlydHVhbCBib29sIHJlcXVpcmVzUmVzdHJpY3RlZE1heGltdW1UZXh0
dXJlU2l6ZSgpID0gMDsKICNlbmRpZgogCiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUuY3BwCmluZGV4
IDkyOWRkNGUxMGI5Y2JiNzQ5M2Q1NGFlOWRjYTkwZGM2N2VjZGIxZGEuLmNiM2M1ZDc1ZGM2MmFl
NjgwMjliYjQ3ODM1MTY0MzFlMDg2MzAzM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRlbnNpb25zR0xBTkdMRS5jcHAKQEAg
LTQzLDEwICs0Myw5IEBAIHR5cGVkZWYgdm9pZCogR0xlZ2xDb250ZXh0OwogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLUV4dGVuc2lvbnNHTEFOR0xFOjpFeHRlbnNpb25zR0xBTkdMRShHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTCogY29udGV4dCwgYm9vbCB1c2VJbmRleGVkR2V0U3RyaW5nKQorRXh0
ZW5zaW9uc0dMQU5HTEU6OkV4dGVuc2lvbnNHTEFOR0xFKEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
KiBjb250ZXh0KQogICAgIDogbV9pbml0aWFsaXplZEF2YWlsYWJsZUV4dGVuc2lvbnMoZmFsc2Up
CiAgICAgLCBtX2NvbnRleHQoY29udGV4dCkKLSAgICAsIG1fdXNlSW5kZXhlZEdldFN0cmluZyh1
c2VJbmRleGVkR2V0U3RyaW5nKQogewogfQogCkBAIC0xMDksNDIgKzEwOCwxNSBAQCBTdHJpbmcg
RXh0ZW5zaW9uc0dMQU5HTEU6OmdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRShQbGF0Zm9y
bUdMT2JqZWN0IHNoYWRlcgogCiB2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjppbml0aWFsaXplQXZh
aWxhYmxlRXh0ZW5zaW9ucygpCiB7Ci0gICAgaWYgKG1fdXNlSW5kZXhlZEdldFN0cmluZykgewot
ICAgICAgICBHTGludCBudW1FeHRlbnNpb25zID0gMDsKLSAgICAgICAgZ2w6OkdldEludGVnZXJ2
KEdMX05VTV9FWFRFTlNJT05TLCAmbnVtRXh0ZW5zaW9ucyk7Ci0gICAgICAgIGZvciAoR0xpbnQg
aSA9IDA7IGkgPCBudW1FeHRlbnNpb25zOyArK2kpCi0gICAgICAgICAgICBtX2F2YWlsYWJsZUV4
dGVuc2lvbnMuYWRkKGdsOjpHZXRTdHJpbmdpKEdMX0VYVEVOU0lPTlMsIGkpKTsKLSAgICAgICAg
Z2w6OkdldEludGVnZXJ2KEdMX05VTV9SRVFVRVNUQUJMRV9FWFRFTlNJT05TX0FOR0xFLCAmbnVt
RXh0ZW5zaW9ucyk7Ci0gICAgICAgIGZvciAoR0xpbnQgaSA9IDA7IGkgPCBudW1FeHRlbnNpb25z
OyArK2kpCi0gICAgICAgICAgICBtX3JlcXVlc3RhYmxlRXh0ZW5zaW9ucy5hZGQoZ2w6OkdldFN0
cmluZ2koR0xfUkVRVUVTVEFCTEVfRVhURU5TSU9OU19BTkdMRSwgaSkpOwotICAgIH0gZWxzZSB7
Ci0gICAgICAgIFN0cmluZyBleHRlbnNpb25zU3RyaW5nID0gZ2V0RXh0ZW5zaW9ucygpOwotICAg
ICAgICBmb3IgKGF1dG8mIGV4dGVuc2lvbiA6IGV4dGVuc2lvbnNTdHJpbmcuc3BsaXQoJyAnKSkK
LSAgICAgICAgICAgIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5hZGQoZXh0ZW5zaW9uKTsKLSAgICAg
ICAgZXh0ZW5zaW9uc1N0cmluZyA9IFN0cmluZyhyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIq
PihnbDo6R2V0U3RyaW5nKEdMX1JFUVVFU1RBQkxFX0VYVEVOU0lPTlNfQU5HTEUpKSk7Ci0gICAg
ICAgIGZvciAoYXV0byYgZXh0ZW5zaW9uIDogZXh0ZW5zaW9uc1N0cmluZy5zcGxpdCgnICcpKQot
ICAgICAgICAgICAgbV9yZXF1ZXN0YWJsZUV4dGVuc2lvbnMuYWRkKGV4dGVuc2lvbik7Ci0gICAg
fQorICAgIFN0cmluZyBleHRlbnNpb25zU3RyaW5nID0gZ2V0RXh0ZW5zaW9ucygpOworICAgIGZv
ciAoYXV0byYgZXh0ZW5zaW9uIDogZXh0ZW5zaW9uc1N0cmluZy5zcGxpdCgnICcpKQorICAgICAg
ICBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuYWRkKGV4dGVuc2lvbik7CisgICAgZXh0ZW5zaW9uc1N0
cmluZyA9IFN0cmluZyhyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihnbDo6R2V0U3RyaW5n
KEdMX1JFUVVFU1RBQkxFX0VYVEVOU0lPTlNfQU5HTEUpKSk7CisgICAgZm9yIChhdXRvJiBleHRl
bnNpb24gOiBleHRlbnNpb25zU3RyaW5nLnNwbGl0KCcgJykpCisgICAgICAgIG1fcmVxdWVzdGFi
bGVFeHRlbnNpb25zLmFkZChleHRlbnNpb24pOwogICAgIG1faW5pdGlhbGl6ZWRBdmFpbGFibGVF
eHRlbnNpb25zID0gdHJ1ZTsKIH0KIAotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6YmxpdEZyYW1l
YnVmZmVyQU5HTEUoR0NHTGludCBzcmNYMCwgR0NHTGludCBzcmNZMCwgR0NHTGludCBzcmNYMSwg
R0NHTGludCBzcmNZMSwgR0NHTGludCBkc3RYMCwgR0NHTGludCBkc3RZMCwgR0NHTGludCBkc3RY
MSwgR0NHTGludCBkc3RZMSwgR0NHTGJpdGZpZWxkIG1hc2ssIEdDR0xlbnVtIGZpbHRlcikKLXsK
LSAgICAvLyBGSVhNRTogY29uc2lkZXIgYWRkaW5nIHN1cHBvcnQgZm9yIEFQUExFX2ZyYW1lYnVm
ZmVyX211bHRpc2FtcGxlLgotICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQo
KSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OkJsaXRGcmFtZWJ1ZmZlckFOR0xFKHNyY1gw
LCBzcmNZMCwgc3JjWDEsIHNyY1kxLCBkc3RYMCwgZHN0WTAsIGRzdFgxLCBkc3RZMSwgbWFzaywg
ZmlsdGVyKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6cmVuZGVyYnVmZmVyU3RvcmFn
ZU11bHRpc2FtcGxlQU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWkgc2FtcGxlcywgR0NH
TGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkK
LXsKLSAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJl
dHVybjsKLQotICAgIGdsOjpSZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVBTkdMRSh0YXJn
ZXQsIHNhbXBsZXMsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0KTsKLX0KLQogUGxhdGZv
cm1HTE9iamVjdCBFeHRlbnNpb25zR0xBTkdMRTo6Y3JlYXRlVmVydGV4QXJyYXlPRVMoKQogewog
ICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKQEAgLTE4NSwyNCArMTU3
LDYgQEAgdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6YmluZFZlcnRleEFycmF5T0VTKFBsYXRmb3Jt
R0xPYmplY3QgYXJyYXkpCiAgICAgZ2w6OkJpbmRWZXJ0ZXhBcnJheU9FUyhhcnJheSk7CiB9CiAK
LXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6Omluc2VydEV2ZW50TWFya2VyRVhUKGNvbnN0IFN0cmlu
ZyYpCi17Ci0gICAgLy8gRklYTUU6IGltcGxlbWVudCB0aGlzIGZ1bmN0aW9uIGFuZCBhZGQgR0xf
RVhUX2RlYnVnX21hcmtlciBpbiBzdXBwb3J0cygpLgotICAgIHJldHVybjsKLX0KLQotdm9pZCBF
eHRlbnNpb25zR0xBTkdMRTo6cHVzaEdyb3VwTWFya2VyRVhUKGNvbnN0IFN0cmluZyYpCi17Ci0g
ICAgLy8gRklYTUU6IGltcGxlbWVudCB0aGlzIGZ1bmN0aW9uIGFuZCBhZGQgR0xfRVhUX2RlYnVn
X21hcmtlciBpbiBzdXBwb3J0cygpLgotICAgIHJldHVybjsKLX0KLQotdm9pZCBFeHRlbnNpb25z
R0xBTkdMRTo6cG9wR3JvdXBNYXJrZXJFWFQodm9pZCkKLXsKLSAgICAvLyBGSVhNRTogaW1wbGVt
ZW50IHRoaXMgZnVuY3Rpb24gYW5kIGFkZCBHTF9FWFRfZGVidWdfbWFya2VyIGluIHN1cHBvcnRz
KCkuCi0gICAgcmV0dXJuOwotfQotCiBib29sIEV4dGVuc2lvbnNHTEFOR0xFOjpzdXBwb3J0c0V4
dGVuc2lvbihjb25zdCBTdHJpbmcmIG5hbWUpCiB7CiAgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0
ZW5zaW9ucy5jb250YWlucyhuYW1lKSB8fCBtX3JlcXVlc3RhYmxlRXh0ZW5zaW9ucy5jb250YWlu
cyhuYW1lKTsKQEAgLTI1OCwyOTEgKzIxMiw2IEBAIEdDR0xlbnVtIEV4dGVuc2lvbnNHTEFOR0xF
OjphZGp1c3RXZWJHTDFUZXh0dXJlSW50ZXJuYWxGb3JtYXQoR0NHTGVudW0gaW50ZXJuYWxmCiAg
ICAgcmV0dXJuIGludGVybmFsZm9ybWF0OwogfQogCi0vLyBHTF9BTkdMRV9yb2J1c3RfY2xpZW50
X21lbW9yeQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6cmVhZFBpeGVsc1JvYnVzdEFOR0xFKGlu
dCB4LCBpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBm
b3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0
aCwgR0NHTHNpemVpICpjb2x1bW5zLCBHQ0dMc2l6ZWkgKnJvd3MsIHZvaWQgKnBpeGVscykKLXsK
LSAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVy
bjsKLQotICAgIGdsOjpSZWFkUGl4ZWxzUm9idXN0QU5HTEUoeCwgeSwgd2lkdGgsIGhlaWdodCwg
Zm9ybWF0LCB0eXBlLCBidWZTaXplLCBsZW5ndGgsIGNvbHVtbnMsIHJvd3MsIHBpeGVscyk7Ci19
Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OnRleFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdD
R0xmbG9hdCAqcGFyYW1zKQotewotICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJl
bnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OlRleFBhcmFtZXRlcmZ2Um9idXN0QU5H
TEUodGFyZ2V0LCBwbmFtZSwgYnVmU2l6ZSwgcGFyYW1zKTsKLX0KLQotdm9pZCBFeHRlbnNpb25z
R0xBTkdMRTo6dGV4UGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xl
bnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGludCAqcGFyYW1zKQotewot
ICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJu
OwotCi0gICAgZ2w6OlRleFBhcmFtZXRlcml2Um9idXN0QU5HTEUodGFyZ2V0LCBwbmFtZSwgYnVm
U2l6ZSwgcGFyYW1zKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0UXVlcnlpdlJv
YnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZT
aXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKQotewotICAgIGlmICghbV9j
b250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6
OkdldFF1ZXJ5aXZSb2J1c3RBTkdMRSh0YXJnZXQsIHBuYW1lLCBidWZTaXplLCBsZW5ndGgsIHBh
cmFtcyk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldFF1ZXJ5T2JqZWN0dWl2Um9i
dXN0QU5HTEUoR0NHTHVpbnQgaWQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwg
R0NHTHNpemVpICpsZW5ndGgsIEdDR0x1aW50ICpwYXJhbXMpCi17Ci0gICAgaWYgKCFtX2NvbnRl
eHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6R2V0
UXVlcnlPYmplY3R1aXZSb2J1c3RBTkdMRShpZCwgcG5hbWUsIGJ1ZlNpemUsIGxlbmd0aCwgcGFy
YW1zKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0QnVmZmVyUG9pbnRlcnZSb2J1
c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6
ZSwgR0NHTHNpemVpICpsZW5ndGgsIHZvaWQgKipwYXJhbXMpCi17Ci0gICAgaWYgKCFtX2NvbnRl
eHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6R2V0
QnVmZmVyUG9pbnRlcnZSb2J1c3RBTkdMRSh0YXJnZXQsIHBuYW1lLCBidWZTaXplLCBsZW5ndGgs
IHBhcmFtcyk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldFZlcnRleEF0dHJpYklp
dlJvYnVzdEFOR0xFKEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1
ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpCi17Ci0gICAgaWYgKCFt
X2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBn
bDo6R2V0VmVydGV4QXR0cmliSWl2Um9idXN0QU5HTEUoaW5kZXgsIHBuYW1lLCBidWZTaXplLCBs
ZW5ndGgsIHBhcmFtcyk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldFZlcnRleEF0
dHJpYkl1aXZSb2J1c3RBTkdMRShHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xz
aXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHVpbnQgKnBhcmFtcykKLXsKLSAg
ICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsK
LQotICAgIGdsOjpHZXRWZXJ0ZXhBdHRyaWJJdWl2Um9idXN0QU5HTEUoaW5kZXgsIHBuYW1lLCBi
dWZTaXplLCBsZW5ndGgsIHBhcmFtcyk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6Omdl
dFVuaWZvcm11aXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9u
LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0x1aW50ICpwYXJhbXMp
Ci17Ci0gICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICBy
ZXR1cm47Ci0KLSAgICBnbDo6R2V0VW5pZm9ybXVpdlJvYnVzdEFOR0xFKHByb2dyYW0sIGxvY2F0
aW9uLCBidWZTaXplLCBsZW5ndGgsIHBhcmFtcyk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5H
TEU6OmdldEJ1ZmZlclBhcmFtZXRlcmk2NHZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdD
R0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xp
bnQ2NCAqcGFyYW1zKQotewotICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQo
KSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OkdldEJ1ZmZlclBhcmFtZXRlcmk2NHZSb2J1
c3RBTkdMRSh0YXJnZXQsIHBuYW1lLCBidWZTaXplLCBsZW5ndGgsIHJlaW50ZXJwcmV0X2Nhc3Q8
R0xpbnQ2NCo+KHBhcmFtcykpOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpzYW1wbGVy
UGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwg
R0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xpbnQgKnBhcmFtKQotewotICAgIGlmICghbV9j
b250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6
OlNhbXBsZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKHNhbXBsZXIsIHBuYW1lLCBidWZTaXplLCBw
YXJhbSk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OnNhbXBsZXJQYXJhbWV0ZXJmdlJv
YnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVm
U2l6ZSwgY29uc3QgR0NHTGZsb2F0ICpwYXJhbSkKLXsKLSAgICBpZiAoIW1fY29udGV4dC0+bWFr
ZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpTYW1wbGVyUGFy
YW1ldGVyZnZSb2J1c3RBTkdMRShzYW1wbGVyLCBwbmFtZSwgYnVmU2l6ZSwgcGFyYW0pOwotfQot
Ci12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRTYW1wbGVyUGFyYW1ldGVyaXZSb2J1c3RBTkdM
RShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdD
R0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpCi17Ci0gICAgaWYgKCFtX2NvbnRleHQt
Pm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6R2V0U2Ft
cGxlclBhcmFtZXRlcml2Um9idXN0QU5HTEUoc2FtcGxlciwgcG5hbWUsIGJ1ZlNpemUsIGxlbmd0
aCwgcGFyYW1zKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0U2FtcGxlclBhcmFt
ZXRlcmZ2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xz
aXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGZsb2F0ICpwYXJhbXMpCi17Ci0g
ICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47
Ci0KLSAgICBnbDo6R2V0U2FtcGxlclBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoc2FtcGxlciwgcG5h
bWUsIGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1zKTsKLX0KLQotCi12b2lkIEV4dGVuc2lvbnNHTEFO
R0xFOjpnZXRGcmFtZWJ1ZmZlclBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBH
Q0dMaW50ICpwYXJhbXMpCi17Ci0gICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVu
dCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6R2V0RnJhbWVidWZmZXJQYXJhbWV0ZXJp
dlJvYnVzdEFOR0xFKHRhcmdldCwgcG5hbWUsIGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1zKTsKLX0K
LQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0UHJvZ3JhbUludGVyZmFjZWl2Um9idXN0QU5H
TEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGVudW0gcHJvZ3JhbUludGVyZmFjZSwgR0NHTGVudW0g
cG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFy
YW1zKQotewotICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAg
ICAgcmV0dXJuOwotCi0gICAgZ2w6OkdldFByb2dyYW1JbnRlcmZhY2VpdlJvYnVzdEFOR0xFKHBy
b2dyYW0sIHByb2dyYW1JbnRlcmZhY2UsIHBuYW1lLCBidWZTaXplLCBsZW5ndGgsIHBhcmFtcyk7
Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldEJvb2xlYW5pX3ZSb2J1c3RBTkdMRShH
Q0dMZW51bSB0YXJnZXQsIEdDR0x1aW50IGluZGV4LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNp
emVpICpsZW5ndGgsIEdDR0xib29sZWFuICpkYXRhKQotewotICAgIGlmICghbV9jb250ZXh0LT5t
YWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OkdldEJvb2xl
YW5pX3ZSb2J1c3RBTkdMRSh0YXJnZXQsIGluZGV4LCBidWZTaXplLCBsZW5ndGgsIGRhdGEpOwot
fQotCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRNdWx0aXNhbXBsZWZ2Um9idXN0QU5HTEUo
R0NHTGVudW0gcG5hbWUsIEdDR0x1aW50IGluZGV4LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNp
emVpICpsZW5ndGgsIEdDR0xmbG9hdCAqdmFsKQotewotICAgIGlmICghbV9jb250ZXh0LT5tYWtl
Q29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OkdldE11bHRpc2Ft
cGxlZnZSb2J1c3RBTkdMRShwbmFtZSwgaW5kZXgsIGJ1ZlNpemUsIGxlbmd0aCwgdmFsKTsKLX0K
LQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0VGV4TGV2ZWxQYXJhbWV0ZXJpdlJvYnVzdEFO
R0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gcG5hbWUsIEdDR0xz
aXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKQotewotICAg
IGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwot
Ci0gICAgZ2w6OkdldFRleExldmVsUGFyYW1ldGVyaXZSb2J1c3RBTkdMRSh0YXJnZXQsIGxldmVs
LCBwbmFtZSwgYnVmU2l6ZSwgbGVuZ3RoLCBwYXJhbXMpOwotfQotCi12b2lkIEV4dGVuc2lvbnNH
TEFOR0xFOjpnZXRUZXhMZXZlbFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xz
aXplaSAqbGVuZ3RoLCBHQ0dMZmxvYXQgKnBhcmFtcykKLXsKLSAgICBpZiAoIW1fY29udGV4dC0+
bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpHZXRUZXhM
ZXZlbFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUodGFyZ2V0LCBsZXZlbCwgcG5hbWUsIGJ1ZlNpemUs
IGxlbmd0aCwgcGFyYW1zKTsKLX0KLQotCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRQb2lu
dGVydlJvYnVzdEFOR0xFUm9idXN0QU5HTEUoR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZT
aXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgdm9pZCAqKnBhcmFtcykKLXsKLSAgICBpZiAoIW1fY29u
dGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpH
ZXRQb2ludGVydlJvYnVzdEFOR0xFUm9idXN0QU5HTEUocG5hbWUsIGJ1ZlNpemUsIGxlbmd0aCwg
cGFyYW1zKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0blVuaWZvcm1mdlJvYnVz
dEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZT
aXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGZsb2F0ICpwYXJhbXMpCi17Ci0gICAgaWYgKCFt
X2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBn
bDo6R2V0blVuaWZvcm1mdlJvYnVzdEFOR0xFKHByb2dyYW0sIGxvY2F0aW9uLCBidWZTaXplLCBs
ZW5ndGgsIHBhcmFtcyk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldG5Vbmlmb3Jt
aXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6
ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykKLXsKLSAgICBp
ZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQot
ICAgIGdsOjpHZXRuVW5pZm9ybWl2Um9idXN0QU5HTEUocHJvZ3JhbSwgbG9jYXRpb24sIGJ1ZlNp
emUsIGxlbmd0aCwgcGFyYW1zKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0blVu
aWZvcm11aXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBH
Q0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0x1aW50ICpwYXJhbXMpCi17
Ci0gICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1
cm47Ci0KLSAgICBnbDo6R2V0blVuaWZvcm11aXZSb2J1c3RBTkdMRShwcm9ncmFtLCBsb2NhdGlv
biwgYnVmU2l6ZSwgbGVuZ3RoLCBwYXJhbXMpOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xF
Ojp0ZXhQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBu
YW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGludCAqcGFyYW1zKQotewotICAgIGlm
ICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0g
ICAgZ2w6OlRleFBhcmFtZXRlcklpdlJvYnVzdEFOR0xFKHRhcmdldCwgcG5hbWUsIGJ1ZlNpemUs
IHBhcmFtcyk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OnRleFBhcmFtZXRlckl1aXZS
b2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVm
U2l6ZSwgY29uc3QgR0NHTHVpbnQgKnBhcmFtcykKLXsKLSAgICBpZiAoIW1fY29udGV4dC0+bWFr
ZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpUZXhQYXJhbWV0
ZXJJdWl2Um9idXN0QU5HTEUodGFyZ2V0LCBwbmFtZSwgYnVmU2l6ZSwgcGFyYW1zKTsKLX0KLQot
dm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0VGV4UGFyYW1ldGVySWl2Um9idXN0QU5HTEUoR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXpl
aSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpCi17Ci0gICAgaWYgKCFtX2NvbnRleHQtPm1ha2VD
b250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6R2V0VGV4UGFyYW1l
dGVySWl2Um9idXN0QU5HTEUodGFyZ2V0LCBwbmFtZSwgYnVmU2l6ZSwgbGVuZ3RoLCBwYXJhbXMp
OwotfQotCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRUZXhQYXJhbWV0ZXJJdWl2Um9idXN0
QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUs
IEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMdWludCAqcGFyYW1zKQotewotICAgIGlmICghbV9jb250
ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6Okdl
dFRleFBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRSh0YXJnZXQsIHBuYW1lLCBidWZTaXplLCBsZW5n
dGgsIHBhcmFtcyk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OnNhbXBsZXJQYXJhbWV0
ZXJJaXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNp
emVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xpbnQgKnBhcmFtKQotewotICAgIGlmICghbV9jb250ZXh0
LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OlNhbXBs
ZXJQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRShzYW1wbGVyLCBwbmFtZSwgYnVmU2l6ZSwgcGFyYW0p
OwotfQotCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpzYW1wbGVyUGFyYW1ldGVySXVpdlJvYnVz
dEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6
ZSwgY29uc3QgR0NHTHVpbnQgKnBhcmFtKQotewotICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29u
dGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OlNhbXBsZXJQYXJhbWV0
ZXJJdWl2Um9idXN0QU5HTEUoc2FtcGxlciwgcG5hbWUsIGJ1ZlNpemUsIHBhcmFtKTsKLX0KLQot
dm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0U2FtcGxlclBhcmFtZXRlcklpdlJvYnVzdEFOR0xF
KEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NH
THNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykKLXsKLSAgICBpZiAoIW1fY29udGV4dC0+
bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpHZXRTYW1w
bGVyUGFyYW1ldGVySWl2Um9idXN0QU5HTEUoc2FtcGxlciwgcG5hbWUsIGJ1ZlNpemUsIGxlbmd0
aCwgcGFyYW1zKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0U2FtcGxlclBhcmFt
ZXRlckl1aXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NH
THNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMdWludCAqcGFyYW1zKQotewot
ICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJu
OwotCi0gICAgZ2w6OkdldFNhbXBsZXJQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUoc2FtcGxlciwg
cG5hbWUsIGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1zKTsKLX0KLQotCi12b2lkIEV4dGVuc2lvbnNH
TEFOR0xFOjpnZXRRdWVyeU9iamVjdGl2Um9idXN0QU5HTEUoR0NHTHVpbnQgaWQsIEdDR0xlbnVt
IHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBh
cmFtcykKLXsKLSAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAg
ICAgIHJldHVybjsKLQotICAgIGdsOjpHZXRRdWVyeU9iamVjdGl2Um9idXN0QU5HTEUoaWQsIHBu
YW1lLCBidWZTaXplLCBsZW5ndGgsIHBhcmFtcyk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5H
TEU6OmdldFF1ZXJ5T2JqZWN0aTY0dlJvYnVzdEFOR0xFKEdDR0x1aW50IGlkLCBHQ0dMZW51bSBw
bmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50NjQgKnBh
cmFtcykKLXsKLSAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAg
ICAgIHJldHVybjsKLQotICAgIGdsOjpHZXRRdWVyeU9iamVjdGk2NHZSb2J1c3RBTkdMRShpZCwg
cG5hbWUsIGJ1ZlNpemUsIGxlbmd0aCwgcmVpbnRlcnByZXRfY2FzdDxHTGludDY0Kj4ocGFyYW1z
KSk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldFF1ZXJ5T2JqZWN0dWk2NHZSb2J1
c3RBTkdMRShHQ0dMdWludCBpZCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBH
Q0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHVpbnQ2NCAqcGFyYW1zKQotewotICAgIGlmICghbV9jb250
ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6Okdl
dFF1ZXJ5T2JqZWN0dWk2NHZSb2J1c3RBTkdMRShpZCwgcG5hbWUsIGJ1ZlNpemUsIGxlbmd0aCwg
cmVpbnRlcnByZXRfY2FzdDxHTHVpbnQ2NCo+KHBhcmFtcykpOwotfQotCi0KIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShXRUJHTCkgJiYgVVNFKEFOR0xFKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvRXh0ZW5zaW9u
c0dMQU5HTEUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0V4dGVu
c2lvbnNHTEFOR0xFLmgKaW5kZXggYjJkMjc3YjlhYzlkMjc4NjBmNTVhYmFiZjhjZmU1NWU4NGI1
ZjU3ZS4uMDA0MjMzNzcyMDM0YmZhM2VhYzEzN2RjMzYzNDgwOTE2ZGVhYWY3YSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvRXh0ZW5zaW9uc0dMQU5H
TEUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRlbnNp
b25zR0xBTkdMRS5oCkBAIC0zNiw3ICszNiw3IEBAIGNsYXNzIEV4dGVuc2lvbnNHTEFOR0xFIDog
cHVibGljIEV4dGVuc2lvbnNHTCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJs
aWM6CiAgICAgLy8gVGhpcyBjbGFzcyBvbmx5IG5lZWRzIHRvIGJlIGluc3RhbnRpYXRlZCBieSBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTCBpbXBsZW1lbnRhdGlvbnMuCi0gICAgRXh0ZW5zaW9uc0dM
QU5HTEUoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqLCBib29sIHVzZUluZGV4ZWRHZXRTdHJpbmcg
PSBmYWxzZSk7CisgICAgZXhwbGljaXQgRXh0ZW5zaW9uc0dMQU5HTEUoR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0wqKTsKICAgICB2aXJ0dWFsIH5FeHRlbnNpb25zR0xBTkdMRSgpOwogCiAgICAgLy8g
RXh0ZW5zaW9uc0dMIG1ldGhvZHMuCkBAIC00OSw2MCArNDksMTQgQEAgcHVibGljOgogICAgIHZv
aWQgZGVsZXRlVmVydGV4QXJyYXlPRVMoUGxhdGZvcm1HTE9iamVjdCkgb3ZlcnJpZGU7CiAgICAg
R0NHTGJvb2xlYW4gaXNWZXJ0ZXhBcnJheU9FUyhQbGF0Zm9ybUdMT2JqZWN0KSBvdmVycmlkZTsK
ICAgICB2b2lkIGJpbmRWZXJ0ZXhBcnJheU9FUyhQbGF0Zm9ybUdMT2JqZWN0KSBvdmVycmlkZTsK
LSAgICB2b2lkIGluc2VydEV2ZW50TWFya2VyRVhUKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwot
ICAgIHZvaWQgcHVzaEdyb3VwTWFya2VyRVhUKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwotICAg
IHZvaWQgcG9wR3JvdXBNYXJrZXJFWFQodm9pZCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkcmF3QnVm
ZmVyc0VYVChHQ0dMU3Bhbjxjb25zdCBHQ0dMZW51bT4pIG92ZXJyaWRlOwogCiAgICAgU3RyaW5n
IGdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRShQbGF0Zm9ybUdMT2JqZWN0KSBvdmVycmlk
ZTsKIAotICAgIHZvaWQgYmxpdEZyYW1lYnVmZmVyQU5HTEUoR0NHTGludCBzcmNYMCwgR0NHTGlu
dCBzcmNZMCwgR0NHTGludCBzcmNYMSwgR0NHTGludCBzcmNZMSwgR0NHTGludCBkc3RYMCwgR0NH
TGludCBkc3RZMCwgR0NHTGludCBkc3RYMSwgR0NHTGludCBkc3RZMSwgR0NHTGJpdGZpZWxkIG1h
c2ssIEdDR0xlbnVtIGZpbHRlcikgb3ZlcnJpZGU7Ci0gICAgdm9pZCByZW5kZXJidWZmZXJTdG9y
YWdlTXVsdGlzYW1wbGVBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xzaXplaSBzYW1wbGVzLCBH
Q0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0
KSBvdmVycmlkZTsKLQogICAgIHZvaWQgZHJhd0FycmF5c0luc3RhbmNlZEFOR0xFKEdDR0xlbnVt
IG1vZGUsIEdDR0xpbnQgZmlyc3QsIEdDR0xzaXplaSBjb3VudCwgR0NHTHNpemVpIHByaW1jb3Vu
dCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRShHQ0dMZW51
bSBtb2RlLCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xlbnVtIHR5cGUsIEdDR0x2b2lkcHRyIG9mZnNl
dCwgR0NHTHNpemVpIHByaW1jb3VudCkgb3ZlcnJpZGU7CiAgICAgdm9pZCB2ZXJ0ZXhBdHRyaWJE
aXZpc29yQU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0x1aW50IGRpdmlzb3IpIG92ZXJyaWRlOwog
Ci0gICAgLy8gR0xfQU5HTEVfcm9idXN0X2NsaWVudF9tZW1vcnkKLSAgICB2b2lkIHJlYWRQaXhl
bHNSb2J1c3RBTkdMRShHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dM
c2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBi
dWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHNpemVpICpjb2x1bW5zLCBHQ0dMc2l6ZWkg
KnJvd3MsIHZvaWQgKnBpeGVscykgb3ZlcnJpZGU7Ci0gICAgdm9pZCB0ZXhQYXJhbWV0ZXJmdlJv
YnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZT
aXplLCBjb25zdCBHQ0dMZmxvYXQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCB0ZXhQYXJh
bWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xz
aXplaSBidWZTaXplLCBjb25zdCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQg
Z2V0UXVlcnlpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdD
R0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVy
cmlkZTsKLSAgICB2b2lkIGdldFF1ZXJ5T2JqZWN0dWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgaWQs
IEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdD
R0x1aW50ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0QnVmZmVyUG9pbnRlcnZSb2J1
c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6
ZSwgR0NHTHNpemVpICpsZW5ndGgsIHZvaWQgKipwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQg
Z2V0VmVydGV4QXR0cmliSWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBu
YW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFt
cykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJJdWl2Um9idXN0QU5HTEUoR0NH
THVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVp
ICpsZW5ndGgsIEdDR0x1aW50ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0VW5pZm9y
bXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xz
aXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHVpbnQgKnBhcmFtcykgb3ZlcnJp
ZGU7Ci0gICAgdm9pZCBnZXRCdWZmZXJQYXJhbWV0ZXJpNjR2Um9idXN0QU5HTEUoR0NHTGVudW0g
dGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVu
Z3RoLCBHQ0dMaW50NjQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzYW1wbGVyUGFyYW1l
dGVyaXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNp
emVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xpbnQgKnBhcmFtKSBvdmVycmlkZTsKLSAgICB2b2lkIHNh
bXBsZXJQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBu
YW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGZsb2F0ICpwYXJhbSkgb3ZlcnJpZGU7
Ci0gICAgdm9pZCBnZXRTYW1wbGVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1w
bGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3Ro
LCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0U2FtcGxlclBhcmFtZXRl
cmZ2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXpl
aSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGZsb2F0ICpwYXJhbXMpIG92ZXJyaWRl
OwotCi0gICAgdm9pZCBnZXRGcmFtZWJ1ZmZlclBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVu
dW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAq
bGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0UHJvZ3JhbUlu
dGVyZmFjZWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGVudW0gcHJvZ3JhbUlu
dGVyZmFjZSwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxl
bmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldEJvb2xlYW5pX3ZS
b2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0x1aW50IGluZGV4LCBHQ0dMc2l6ZWkgYnVm
U2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xib29sZWFuICpkYXRhKSBvdmVycmlkZTsgLy8g
Tk9MSU5UCi0gICAgdm9pZCBnZXRNdWx0aXNhbXBsZWZ2Um9idXN0QU5HTEUoR0NHTGVudW0gcG5h
bWUsIEdDR0x1aW50IGluZGV4LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgs
IEdDR0xmbG9hdCAqdmFsKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldFRleExldmVsUGFyYW1ldGVy
aXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIHBu
YW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFt
cykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRUZXhMZXZlbFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUo
R0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVp
IGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMZmxvYXQgKnBhcmFtcykgb3ZlcnJpZGU7
Ci0KLSAgICB2b2lkIGdldFBvaW50ZXJ2Um9idXN0QU5HTEVSb2J1c3RBTkdMRShHQ0dMZW51bSBw
bmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCB2b2lkICoqcGFyYW1z
KSBvdmVycmlkZTsKLSAgICB2b2lkIGdldG5Vbmlmb3JtZnZSb2J1c3RBTkdMRShHQ0dMdWludCBw
cm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICps
ZW5ndGgsIEdDR0xmbG9hdCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldG5Vbmlmb3Jt
aXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6
ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykgb3ZlcnJpZGU7
Ci0gICAgdm9pZCBnZXRuVW5pZm9ybXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdD
R0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NH
THVpbnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCB0ZXhQYXJhbWV0ZXJJaXZSb2J1c3RB
TkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwg
Y29uc3QgR0NHTGludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIHRleFBhcmFtZXRlckl1
aXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkg
YnVmU2l6ZSwgY29uc3QgR0NHTHVpbnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRU
ZXhQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1l
LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykg
b3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRUZXhQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUoR0NHTGVu
dW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAq
bGVuZ3RoLCBHQ0dMdWludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIHNhbXBsZXJQYXJh
bWV0ZXJJaXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NH
THNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xpbnQgKnBhcmFtKSBvdmVycmlkZTsKLSAgICB2b2lk
IHNhbXBsZXJQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVu
dW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMdWludCAqcGFyYW0pIG92ZXJy
aWRlOwotICAgIHZvaWQgZ2V0U2FtcGxlclBhcmFtZXRlcklpdlJvYnVzdEFOR0xFKEdDR0x1aW50
IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICps
ZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRTYW1wbGVyUGFy
YW1ldGVySXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBH
Q0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0x1aW50ICpwYXJhbXMpIG92
ZXJyaWRlOwotCi0gICAgdm9pZCBnZXRRdWVyeU9iamVjdGl2Um9idXN0QU5HTEUoR0NHTHVpbnQg
aWQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgs
IEdDR0xpbnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRRdWVyeU9iamVjdGk2NHZS
b2J1c3RBTkdMRShHQ0dMdWludCBpZCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXpl
LCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludDY0ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZv
aWQgZ2V0UXVlcnlPYmplY3R1aTY0dlJvYnVzdEFOR0xFKEdDR0x1aW50IGlkLCBHQ0dMZW51bSBw
bmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMdWludDY0ICpw
YXJhbXMpIG92ZXJyaWRlOwotCiAgICAgLy8gT25seSBmb3Igbm9uLVdlYkdMIDIuMCBjb250ZXh0
cy4KICAgICBHQ0dMZW51bSBhZGp1c3RXZWJHTDFUZXh0dXJlSW50ZXJuYWxGb3JtYXQoR0NHTGVu
dW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSk7CiAKQEAg
LTExOSw4ICs3Myw2IEBAIHByaXZhdGU6CiAgICAgLy8gV2VhayBwb2ludGVyIGJhY2sgdG8gR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0wuCiAgICAgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqIG1fY29u
dGV4dDsKIAotICAgIGJvb2wgbV91c2VJbmRleGVkR2V0U3RyaW5nIHsgZmFsc2UgfTsKLQogICAg
IC8vIFdoZXRoZXIgdGhlIFdlYkdMIDEuMC1yZWxhdGVkIGZsb2F0aW5nLXBvaW50IHJlbmRlcmFi
aWxpdHkgZXh0ZW5zaW9ucyBoYXZlIGJlZW4gZW5hYmxlZC4KICAgICBib29sIG1fd2ViZ2xDb2xv
ckJ1ZmZlckZsb2F0UkdCIHsgZmFsc2UgfTsKICAgICBib29sIG1fd2ViZ2xDb2xvckJ1ZmZlckZs
b2F0UkdCQSB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuY3BwCmluZGV4IDg0MjI4
NDZiNmY2MmE3NTU0ZThiMmRjZjAyNDdmZjYwNTM5NWQ0NWEuLjg2ZDE5Y2FhZmI2ZTNmMGUzMjFk
ZTE3MzIxMmE1NGZjZTYxZjcxZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuY3BwCkBAIC00
OCwyMiArNDgsNiBAQCBFeHRlbnNpb25zR0xPcGVuR0w6OkV4dGVuc2lvbnNHTE9wZW5HTChHcmFw
aGljc0NvbnRleHRHTE9wZW5HTCogY29udGV4dCwgYm9vbCB1cwogRXh0ZW5zaW9uc0dMT3BlbkdM
Ojp+RXh0ZW5zaW9uc0dMT3BlbkdMKCkgPSBkZWZhdWx0OwogCiAKLXZvaWQgRXh0ZW5zaW9uc0dM
T3BlbkdMOjpibGl0RnJhbWVidWZmZXJBTkdMRShHQ0dMaW50IHNyY1gwLCBHQ0dMaW50IHNyY1kw
LCBHQ0dMaW50IHNyY1gxLCBHQ0dMaW50IHNyY1kxLCBHQ0dMaW50IGRzdFgwLCBHQ0dMaW50IGRz
dFkwLCBHQ0dMaW50IGRzdFgxLCBHQ0dMaW50IGRzdFkxLCBHQ0dMYml0ZmllbGQgbWFzaywgR0NH
TGVudW0gZmlsdGVyKQotewotICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQo
KSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgOjpnbEJsaXRGcmFtZWJ1ZmZlckVYVChzcmNYMCwg
c3JjWTAsIHNyY1gxLCBzcmNZMSwgZHN0WDAsIGRzdFkwLCBkc3RYMSwgZHN0WTEsIG1hc2ssIGZp
bHRlcik7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMOjpyZW5kZXJidWZmZXJTdG9yYWdl
TXVsdGlzYW1wbGVBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xzaXplaSBzYW1wbGVzLCBHQ0dM
ZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KQot
ewotICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0
dXJuOwotCi0gICAgOjpnbFJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUVYVCh0YXJnZXQs
IHNhbXBsZXMsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0KTsKLX0KLQogUGxhdGZvcm1H
TE9iamVjdCBFeHRlbnNpb25zR0xPcGVuR0w6OmNyZWF0ZVZlcnRleEFycmF5T0VTKCkKIHsKICAg
ICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCkBAIC0xMjcsMjQgKzExMSw2
IEBAIHZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMOjpiaW5kVmVydGV4QXJyYXlPRVMoUGxhdGZvcm1H
TE9iamVjdCBhcnJheSkKICNlbmRpZgogfQogCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTDo6aW5z
ZXJ0RXZlbnRNYXJrZXJFWFQoY29uc3QgU3RyaW5nJikKLXsKLSAgICAvLyBGSVhNRTogaW1wbGVt
ZW50IHRoaXMgZnVuY3Rpb24gYW5kIGFkZCBHTF9FWFRfZGVidWdfbWFya2VyIGluIHN1cHBvcnRz
KCkuCi0gICAgcmV0dXJuOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTDo6cHVzaEdyb3Vw
TWFya2VyRVhUKGNvbnN0IFN0cmluZyYpCi17Ci0gICAgLy8gRklYTUU6IGltcGxlbWVudCB0aGlz
IGZ1bmN0aW9uIGFuZCBhZGQgR0xfRVhUX2RlYnVnX21hcmtlciBpbiBzdXBwb3J0cygpLgotICAg
IHJldHVybjsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0w6OnBvcEdyb3VwTWFya2VyRVhU
KHZvaWQpCi17Ci0gICAgLy8gRklYTUU6IGltcGxlbWVudCB0aGlzIGZ1bmN0aW9uIGFuZCBhZGQg
R0xfRVhUX2RlYnVnX21hcmtlciBpbiBzdXBwb3J0cygpLgotICAgIHJldHVybjsKLX0KLQogYm9v
bCBFeHRlbnNpb25zR0xPcGVuR0w6OnN1cHBvcnRzRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgbmFt
ZSkKIHsKICAgICAvLyBHTF9BTkdMRV9mcmFtZWJ1ZmZlcl9ibGl0IGFuZCBHTF9BTkdMRV9mcmFt
ZWJ1ZmZlcl9tdWx0aXNhbXBsZSBhcmUgImZha2UiLiBUaGV5IGFyZSBpbXBsZW1lbnRlZCB1c2lu
ZyBvdGhlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Bl
bmdsL0V4dGVuc2lvbnNHTE9wZW5HTC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTC5oCmluZGV4IDQ3NTAyMjZlY2VjZWY0NDM5NmU5
OTM4Njc2Y2I2MzliZTgzNDM3YjYuLjBhZGJkNzA1MGI3ZTNmNzdlMDE4ODk0MzMyZmZjODdjZjMw
ZDkwYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5n
bC9FeHRlbnNpb25zR0xPcGVuR0wuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMLmgKQEAgLTQwLDE2ICs0MCwxMCBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCB+RXh0ZW5zaW9uc0dMT3BlbkdMKCk7CiAKICAgICAvLyBFeHRlbnNp
b25zR0wgbWV0aG9kcy4KLSAgICB2b2lkIGJsaXRGcmFtZWJ1ZmZlckFOR0xFKEdDR0xpbnQgc3Jj
WDAsIEdDR0xpbnQgc3JjWTAsIEdDR0xpbnQgc3JjWDEsIEdDR0xpbnQgc3JjWTEsIEdDR0xpbnQg
ZHN0WDAsIEdDR0xpbnQgZHN0WTAsIEdDR0xpbnQgZHN0WDEsIEdDR0xpbnQgZHN0WTEsIEdDR0xi
aXRmaWVsZCBtYXNrLCBHQ0dMZW51bSBmaWx0ZXIpIG92ZXJyaWRlOwotICAgIHZvaWQgcmVuZGVy
YnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWkg
c2FtcGxlcywgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNp
emVpIGhlaWdodCkgb3ZlcnJpZGU7Ci0KICAgICBQbGF0Zm9ybUdMT2JqZWN0IGNyZWF0ZVZlcnRl
eEFycmF5T0VTKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkZWxldGVWZXJ0ZXhBcnJheU9FUyhQbGF0
Zm9ybUdMT2JqZWN0KSBvdmVycmlkZTsKICAgICBHQ0dMYm9vbGVhbiBpc1ZlcnRleEFycmF5T0VT
KFBsYXRmb3JtR0xPYmplY3QpIG92ZXJyaWRlOwogICAgIHZvaWQgYmluZFZlcnRleEFycmF5T0VT
KFBsYXRmb3JtR0xPYmplY3QpIG92ZXJyaWRlOwotICAgIHZvaWQgaW5zZXJ0RXZlbnRNYXJrZXJF
WFQoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBwdXNoR3JvdXBNYXJrZXJFWFQo
Y29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBwb3BHcm91cE1hcmtlckVYVCh2b2lk
KSBvdmVycmlkZTsKICAgICB2b2lkIGRyYXdCdWZmZXJzRVhUKEdDR0xTcGFuPGNvbnN0IEdDR0xl
bnVtPikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGRyYXdBcnJheXNJbnN0YW5jZWRBTkdMRShHQ0dM
ZW51bSBtb2RlLCBHQ0dMaW50IGZpcnN0LCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xzaXplaSBwcmlt
Y291bnQpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmNwcApp
bmRleCBjMzQzOGQ1OTFjMDdhMzZjZjFlMDQyNmMxYjlmZDdiM2U5MTc3OWQ1Li4wOWRiODU0MDAy
MjFkZjk3NTc4ODg1OWE0YTI4N2FiYWEyNGY4MjcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dM
T3BlbkdMQ29tbW9uLmNwcApAQCAtMjU0LDE4NSArMjU0LDYgQEAgdm9pZCBFeHRlbnNpb25zR0xP
cGVuR0xDb21tb246OmdldG5Vbmlmb3JtaXZFWFQoR0NHTHVpbnQsIGludCwgR0NHTHNpemVpLCBH
Q0dMaW4KICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFU
SU9OKTsKIH0KIAotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OnJlYWRQaXhlbHNSb2J1
c3RBTkdMRShpbnQsIGludCwgR0NHTHNpemVpLCBHQ0dMc2l6ZWksIEdDR0xlbnVtLCBHQ0dMZW51
bSwgR0NHTHNpemVpLCBHQ0dMc2l6ZWkgKiwgR0NHTHNpemVpICosIEdDR0xzaXplaSAqLCB2b2lk
ICopCi17Ci0gICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJB
VElPTik7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjp0ZXhQYXJhbWV0ZXJm
dlJvYnVzdEFOR0xFKEdDR0xlbnVtLCBHQ0dMZW51bSwgR0NHTHNpemVpLCBjb25zdCBHQ0dMZmxv
YXQgKikKLXsKLSAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BF
UkFUSU9OKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OnRleFBhcmFtZXRl
cml2Um9idXN0QU5HTEUoR0NHTGVudW0sIEdDR0xlbnVtLCBHQ0dMc2l6ZWksIGNvbnN0IEdDR0xp
bnQgKikKLXsKLSAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BF
UkFUSU9OKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFF1ZXJ5aXZS
b2J1c3RBTkdMRShHQ0dMZW51bSwgR0NHTGVudW0sIEdDR0xzaXplaSwgR0NHTHNpemVpICosIEdD
R0xpbnQgKikKLXsKLSAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURf
T1BFUkFUSU9OKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFF1ZXJ5
T2JqZWN0dWl2Um9idXN0QU5HTEUoR0NHTHVpbnQsIEdDR0xlbnVtLCBHQ0dMc2l6ZWksIEdDR0xz
aXplaSAqLCBHQ0dMdWludCAqKQotewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3Io
R0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1v
bjo6Z2V0QnVmZmVyUG9pbnRlcnZSb2J1c3RBTkdMRShHQ0dMZW51bSwgR0NHTGVudW0sIEdDR0xz
aXplaSwgR0NHTHNpemVpICosIHZvaWQgKiopCi17Ci0gICAgbV9jb250ZXh0LT5zeW50aGVzaXpl
R0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMT3Bl
bkdMQ29tbW9uOjpnZXRWZXJ0ZXhBdHRyaWJJaXZSb2J1c3RBTkdMRShHQ0dMdWludCwgR0NHTGVu
dW0sIEdDR0xzaXplaSwgR0NHTHNpemVpICosIEdDR0xpbnQgKikKLXsKLSAgICBtX2NvbnRleHQt
PnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLX0KLQotdm9pZCBFeHRl
bnNpb25zR0xPcGVuR0xDb21tb246OmdldFZlcnRleEF0dHJpYkl1aXZSb2J1c3RBTkdMRShHQ0dM
dWludCwgR0NHTGVudW0sIEdDR0xzaXplaSwgR0NHTHNpemVpICosIEdDR0x1aW50ICopCi17Ci0g
ICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Ci19
Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRVbmlmb3JtdWl2Um9idXN0QU5H
TEUoR0NHTHVpbnQsIGludCwgR0NHTHNpemVpLCBHQ0dMc2l6ZWkgKiwgR0NHTHVpbnQgKikKLXsK
LSAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsK
LX0KLQotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldEJ1ZmZlclBhcmFtZXRlcmk2
NHZSb2J1c3RBTkdMRShHQ0dMZW51bSwgR0NHTGVudW0sIEdDR0xzaXplaSwgR0NHTHNpemVpICos
IEdDR0xpbnQ2NCAqKQotewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5W
QUxJRF9PUEVSQVRJT04pOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6c2Ft
cGxlclBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTHVpbnQsIEdDR0xlbnVtLCBHQ0dMc2l6ZWks
IGNvbnN0IEdDR0xpbnQgKikKLXsKLSAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdM
X0lOVkFMSURfT1BFUkFUSU9OKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246
OnNhbXBsZXJQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0x1aW50LCBHQ0dMZW51bSwgR0NHTHNp
emVpLCBjb25zdCBHQ0dMZmxvYXQgKikKLXsKLSAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVy
cm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xD
b21tb246OmdldFNhbXBsZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0x1aW50LCBHQ0dMZW51
bSwgR0NHTHNpemVpLCBHQ0dMc2l6ZWkgKiwgR0NHTGludCAqKQotewotICAgIG1fY29udGV4dC0+
c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi12b2lkIEV4dGVu
c2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0U2FtcGxlclBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NH
THVpbnQsIEdDR0xlbnVtLCBHQ0dMc2l6ZWksIEdDR0xzaXplaSAqLCBHQ0dMZmxvYXQgKikKLXsK
LSAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsK
LX0KLQotCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0RnJhbWVidWZmZXJQYXJh
bWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtLCBHQ0dMZW51bSwgR0NHTHNpemVpLCBHQ0dMc2l6
ZWkgKiwgR0NHTGludCAqKQotewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xf
SU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6
Z2V0UHJvZ3JhbUludGVyZmFjZWl2Um9idXN0QU5HTEUoR0NHTHVpbnQsIEdDR0xlbnVtLCBHQ0dM
ZW51bSwgR0NHTHNpemVpLCBHQ0dMc2l6ZWkgKiwgR0NHTGludCAqKQotewotICAgIG1fY29udGV4
dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi12b2lkIEV4
dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0Qm9vbGVhbmlfdlJvYnVzdEFOR0xFKEdDR0xlbnVt
LCBHQ0dMdWludCwgR0NHTHNpemVpLCBHQ0dMc2l6ZWkgKiwgR0NHTGJvb2xlYW4gKikKLXsKLSAg
ICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLX0K
LQotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldE11bHRpc2FtcGxlZnZSb2J1c3RB
TkdMRShHQ0dMZW51bSwgR0NHTHVpbnQsIEdDR0xzaXplaSwgR0NHTHNpemVpICosIEdDR0xmbG9h
dCAqKQotewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVS
QVRJT04pOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0VGV4TGV2ZWxQ
YXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtLCBpbnQsIEdDR0xlbnVtLCBHQ0dMc2l6ZWks
IEdDR0xzaXplaSAqLCBHQ0dMaW50ICopCi17Ci0gICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xF
cnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdM
Q29tbW9uOjpnZXRUZXhMZXZlbFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTGVudW0sIGludCwg
R0NHTGVudW0sIEdDR0xzaXplaSwgR0NHTHNpemVpICosIEdDR0xmbG9hdCAqKQotewotICAgIG1f
Y29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi0K
LXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRQb2ludGVydlJvYnVzdEFOR0xFUm9i
dXN0QU5HTEUoR0NHTGVudW0sIEdDR0xzaXplaSwgR0NHTHNpemVpICosIHZvaWQgKiopCi17Ci0g
ICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Ci19
Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRuVW5pZm9ybWZ2Um9idXN0QU5H
TEUoR0NHTHVpbnQsIGludCwgR0NHTHNpemVpLCBHQ0dMc2l6ZWkgKiwgR0NHTGZsb2F0ICopCi17
Ci0gICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7
Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRuVW5pZm9ybWl2Um9idXN0
QU5HTEUoR0NHTHVpbnQsIGludCwgR0NHTHNpemVpLCBHQ0dMc2l6ZWkgKiwgR0NHTGludCAqKQot
ewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04p
OwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0blVuaWZvcm11aXZSb2J1
c3RBTkdMRShHQ0dMdWludCwgaW50LCBHQ0dMc2l6ZWksIEdDR0xzaXplaSAqLCBHQ0dMdWludCAq
KQotewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJ
T04pOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6dGV4UGFyYW1ldGVySWl2
Um9idXN0QU5HTEUoR0NHTGVudW0sIEdDR0xlbnVtLCBHQ0dMc2l6ZWksIGNvbnN0IEdDR0xpbnQg
KikKLXsKLSAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFU
SU9OKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OnRleFBhcmFtZXRlckl1
aXZSb2J1c3RBTkdMRShHQ0dMZW51bSwgR0NHTGVudW0sIEdDR0xzaXplaSwgY29uc3QgR0NHTHVp
bnQgKikKLXsKLSAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BF
UkFUSU9OKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFRleFBhcmFt
ZXRlcklpdlJvYnVzdEFOR0xFKEdDR0xlbnVtLCBHQ0dMZW51bSwgR0NHTHNpemVpLCBHQ0dMc2l6
ZWkgKiwgR0NHTGludCAqKQotewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xf
SU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6
Z2V0VGV4UGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFKEdDR0xlbnVtLCBHQ0dMZW51bSwgR0NHTHNp
emVpLCBHQ0dMc2l6ZWkgKiwgR0NHTHVpbnQgKikKLXsKLSAgICBtX2NvbnRleHQtPnN5bnRoZXNp
emVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xP
cGVuR0xDb21tb246OnNhbXBsZXJQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRShHQ0dMdWludCwgR0NH
TGVudW0sIEdDR0xzaXplaSwgY29uc3QgR0NHTGludCAqKQotewotICAgIG1fY29udGV4dC0+c3lu
dGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi12b2lkIEV4dGVuc2lv
bnNHTE9wZW5HTENvbW1vbjo6c2FtcGxlclBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRShHQ0dMdWlu
dCwgR0NHTGVudW0sIEdDR0xzaXplaSwgY29uc3QgR0NHTHVpbnQgKikKLXsKLSAgICBtX2NvbnRl
eHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLX0KLQotdm9pZCBF
eHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFNhbXBsZXJQYXJhbWV0ZXJJaXZSb2J1c3RBTkdM
RShHQ0dMdWludCwgR0NHTGVudW0sIEdDR0xzaXplaSwgR0NHTHNpemVpICosIEdDR0xpbnQgKikK
LXsKLSAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9O
KTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFNhbXBsZXJQYXJhbWV0
ZXJJdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQsIEdDR0xlbnVtLCBHQ0dMc2l6ZWksIEdDR0xzaXpl
aSAqLCBHQ0dMdWludCAqKQotewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xf
SU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi0KLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9u
OjpnZXRRdWVyeU9iamVjdGl2Um9idXN0QU5HTEUoR0NHTHVpbnQsIEdDR0xlbnVtLCBHQ0dMc2l6
ZWksIEdDR0xzaXplaSAqLCBHQ0dMaW50ICopCi17Ci0gICAgbV9jb250ZXh0LT5zeW50aGVzaXpl
R0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMT3Bl
bkdMQ29tbW9uOjpnZXRRdWVyeU9iamVjdGk2NHZSb2J1c3RBTkdMRShHQ0dMdWludCwgR0NHTGVu
dW0sIEdDR0xzaXplaSwgR0NHTHNpemVpICosIEdDR0xpbnQ2NCAqKQotewotICAgIG1fY29udGV4
dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi12b2lkIEV4
dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0UXVlcnlPYmplY3R1aTY0dlJvYnVzdEFOR0xFKEdD
R0x1aW50LCBHQ0dMZW51bSwgR0NHTHNpemVpLCBHQ0dMc2l6ZWkgKiwgR0NHTHVpbnQ2NCAqKQot
ewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04p
OwotfQotCi0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShXRUJH
TCkgJiYgIVVTRShBTkdMRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uaAppbmRl
eCAzZjEwNDAxNjJmZmEwN2EyZGMxMzBhYmIyMmZiMWIxZmZjM2ZkZjIwLi5kY2MwZTNhZjIxNzMy
ZTc0N2VhMWJkNTY0YmI5Njc4NDMyY2EzZjcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5H
TENvbW1vbi5oCkBAIC0yOCwxMSArMjgsMTEgQEAKIAogI2luY2x1ZGUgIkV4dGVuc2lvbnNHTC5o
IgogCi0jaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaCIKICNpbmNsdWRlIDx3dGYv
SGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgeworY2xhc3MgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w7CiAKIGNsYXNzIEV4dGVu
c2lvbnNHTE9wZW5HTENvbW1vbiA6IHB1YmxpYyBFeHRlbnNpb25zR0wgewogICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwpAQCAtNTUsNTggKzU1LDE4IEBAIHB1YmxpYzoKICAgICBTdHJpbmcg
Z2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFKFBsYXRmb3JtR0xPYmplY3QpIG92ZXJyaWRl
OwogCiAgICAgLy8gRVhUIFJvYnVzdG5lc3MgLSB1c2VzIGdldEdyYXBoaWNzUmVzZXRTdGF0dXNB
UkIoKQotICAgIHZvaWQgcmVhZG5QaXhlbHNFWFQoaW50IHgsIGludCB5LCBHQ0dMc2l6ZWkgd2lk
dGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NH
THNpemVpIGJ1ZlNpemUsIHZvaWQgKmRhdGEpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0blVuaWZv
cm1mdkVYVChHQ0dMdWludCBwcm9ncmFtLCBpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXpl
LCBmbG9hdCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldG5Vbmlmb3JtaXZFWFQoR0NH
THVpbnQgcHJvZ3JhbSwgaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgaW50ICpwYXJh
bXMpIG92ZXJyaWRlOwotCi0gICAgYm9vbCBpc05WSURJQSgpIG92ZXJyaWRlIHsgcmV0dXJuIG1f
aXNOVklESUE7IH0KLSAgICBib29sIGlzQU1EKCkgb3ZlcnJpZGUgeyByZXR1cm4gbV9pc0FNRDsg
fQotICAgIGJvb2wgaXNJbnRlbCgpIG92ZXJyaWRlIHsgcmV0dXJuIG1faXNJbnRlbDsgfQotICAg
IGJvb2wgaXNJbWFnaW5hdGlvbigpIG92ZXJyaWRlIHsgcmV0dXJuIG1faXNJbWFnaW5hdGlvbjsg
fQotICAgIFN0cmluZyB2ZW5kb3IoKSBvdmVycmlkZSB7IHJldHVybiBtX3ZlbmRvcjsgfQotCi0g
ICAgYm9vbCByZXF1aXJlc0J1aWx0SW5GdW5jdGlvbkVtdWxhdGlvbigpIG92ZXJyaWRlIHsgcmV0
dXJuIG1fcmVxdWlyZXNCdWlsdEluRnVuY3Rpb25FbXVsYXRpb247IH0KLSAgICBib29sIHJlcXVp
cmVzUmVzdHJpY3RlZE1heGltdW1UZXh0dXJlU2l6ZSgpIG92ZXJyaWRlIHsgcmV0dXJuIG1fcmVx
dWlyZXNSZXN0cmljdGVkTWF4aW11bVRleHR1cmVTaXplOyB9Ci0KLSAgICAvLyBHTF9BTkdMRV9y
b2J1c3RfY2xpZW50X21lbW9yeQotICAgIHZvaWQgcmVhZFBpeGVsc1JvYnVzdEFOR0xFKGludCB4
LCBpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3Jt
YXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwg
R0NHTHNpemVpICpjb2x1bW5zLCBHQ0dMc2l6ZWkgKnJvd3MsIHZvaWQgKnBpeGVscykgb3ZlcnJp
ZGU7Ci0gICAgdm9pZCB0ZXhQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwg
R0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMZmxvYXQgKnBhcmFt
cykgb3ZlcnJpZGU7Ci0gICAgdm9pZCB0ZXhQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVt
IHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMaW50
ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0UXVlcnlpdlJvYnVzdEFOR0xFKEdDR0xl
bnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkg
Kmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldFF1ZXJ5T2Jq
ZWN0dWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgaWQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkg
YnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0x1aW50ICpwYXJhbXMpIG92ZXJyaWRlOwot
ICAgIHZvaWQgZ2V0QnVmZmVyUG9pbnRlcnZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdD
R0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIHZvaWQg
KipwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0VmVydGV4QXR0cmliSWl2Um9idXN0QU5H
TEUoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NH
THNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRW
ZXJ0ZXhBdHRyaWJJdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1l
LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0x1aW50ICpwYXJhbXMp
IG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0VW5pZm9ybXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHBy
b2dyYW0sIGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3Ro
LCBHQ0dMdWludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldEJ1ZmZlclBhcmFtZXRl
cmk2NHZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6
ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQ2NCAqcGFyYW1zKSBvdmVycmlk
ZTsKLSAgICB2b2lkIHNhbXBsZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBs
ZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGludCAqcGFy
YW0pIG92ZXJyaWRlOwotICAgIHZvaWQgc2FtcGxlclBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NH
THVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBH
Q0dMZmxvYXQgKnBhcmFtKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldFNhbXBsZXJQYXJhbWV0ZXJp
dlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkg
YnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0g
ICAgdm9pZCBnZXRTYW1wbGVyUGFyYW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVy
LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBH
Q0dMZmxvYXQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0KLSAgICB2b2lkIGdldEZyYW1lYnVmZmVyUGFy
YW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dM
c2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykgb3ZlcnJp
ZGU7Ci0gICAgdm9pZCBnZXRQcm9ncmFtSW50ZXJmYWNlaXZSb2J1c3RBTkdMRShHQ0dMdWludCBw
cm9ncmFtLCBHQ0dMZW51bSBwcm9ncmFtSW50ZXJmYWNlLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNp
emVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJyaWRl
OwotICAgIHZvaWQgZ2V0Qm9vbGVhbmlfdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NH
THVpbnQgaW5kZXgsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGJv
b2xlYW4gKmRhdGEpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0TXVsdGlzYW1wbGVmdlJvYnVzdEFO
R0xFKEdDR0xlbnVtIHBuYW1lLCBHQ0dMdWludCBpbmRleCwgR0NHTHNpemVpIGJ1ZlNpemUsIEdD
R0xzaXplaSAqbGVuZ3RoLCBHQ0dMZmxvYXQgKnZhbCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRU
ZXhMZXZlbFBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBpbnQgbGV2ZWws
IEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdD
R0xpbnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRUZXhMZXZlbFBhcmFtZXRlcmZ2
Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBpbnQgbGV2ZWwsIEdDR0xlbnVtIHBuYW1lLCBH
Q0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xmbG9hdCAqcGFyYW1zKSBv
dmVycmlkZTsKLQotICAgIHZvaWQgZ2V0UG9pbnRlcnZSb2J1c3RBTkdMRVJvYnVzdEFOR0xFKEdD
R0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIHZvaWQg
KipwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0blVuaWZvcm1mdlJvYnVzdEFOR0xFKEdD
R0x1aW50IHByb2dyYW0sIGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXpl
aSAqbGVuZ3RoLCBHQ0dMZmxvYXQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRuVW5p
Zm9ybWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgaW50IGxvY2F0aW9uLCBHQ0dMc2l6
ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykgb3ZlcnJpZGU7
Ci0gICAgdm9pZCBnZXRuVW5pZm9ybXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIGlu
dCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMdWlu
dCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIHRleFBhcmFtZXRlcklpdlJvYnVzdEFOR0xF
KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25z
dCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgdGV4UGFyYW1ldGVySXVpdlJv
YnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZT
aXplLCBjb25zdCBHQ0dMdWludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldFRleFBh
cmFtZXRlcklpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdD
R0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVy
cmlkZTsKLSAgICB2b2lkIGdldFRleFBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0
YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5n
dGgsIEdDR0x1aW50ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgc2FtcGxlclBhcmFtZXRl
cklpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6
ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGludCAqcGFyYW0pIG92ZXJyaWRlOwotICAgIHZvaWQgc2Ft
cGxlclBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBw
bmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0x1aW50ICpwYXJhbSkgb3ZlcnJpZGU7
Ci0gICAgdm9pZCBnZXRTYW1wbGVyUGFyYW1ldGVySWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2Ft
cGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0
aCwgR0NHTGludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldFNhbXBsZXJQYXJhbWV0
ZXJJdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xz
aXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHVpbnQgKnBhcmFtcykgb3ZlcnJp
ZGU7Ci0KLSAgICB2b2lkIGdldFF1ZXJ5T2JqZWN0aXZSb2J1c3RBTkdMRShHQ0dMdWludCBpZCwg
R0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NH
TGludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldFF1ZXJ5T2JqZWN0aTY0dlJvYnVz
dEFOR0xFKEdDR0x1aW50IGlkLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdD
R0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50NjQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBn
ZXRRdWVyeU9iamVjdHVpNjR2Um9idXN0QU5HTEUoR0NHTHVpbnQgaWQsIEdDR0xlbnVtIHBuYW1l
LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0x1aW50NjQgKnBhcmFt
cykgb3ZlcnJpZGU7CisgICAgdm9pZCByZWFkblBpeGVsc0VYVChpbnQgeCwgaW50IHksIEdDR0xz
aXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0
eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgdm9pZCAqZGF0YSk7CisgICAgdm9pZCBnZXRuVW5pZm9y
bWZ2RVhUKEdDR0x1aW50IHByb2dyYW0sIGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUs
IGZsb2F0ICpwYXJhbXMpOworICAgIHZvaWQgZ2V0blVuaWZvcm1pdkVYVChHQ0dMdWludCBwcm9n
cmFtLCBpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBpbnQgKnBhcmFtcyk7CisKKyAg
ICBib29sIGlzTlZJRElBKCkgY29uc3QgeyByZXR1cm4gbV9pc05WSURJQTsgfQorICAgIGJvb2wg
aXNBTUQoKSBjb25zdCB7IHJldHVybiBtX2lzQU1EOyB9CisgICAgYm9vbCBpc0ludGVsKCkgY29u
c3QgeyByZXR1cm4gbV9pc0ludGVsOyB9CisgICAgYm9vbCBpc0ltYWdpbmF0aW9uKCkgY29uc3Qg
eyByZXR1cm4gbV9pc0ltYWdpbmF0aW9uOyB9CisgICAgU3RyaW5nIHZlbmRvcigpIGNvbnN0IHsg
cmV0dXJuIG1fdmVuZG9yOyB9CisKKyAgICBib29sIHJlcXVpcmVzQnVpbHRJbkZ1bmN0aW9uRW11
bGF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9yZXF1aXJlc0J1aWx0SW5GdW5jdGlvbkVtdWxhdGlv
bjsgfQorICAgIGJvb2wgcmVxdWlyZXNSZXN0cmljdGVkTWF4aW11bVRleHR1cmVTaXplKCkgY29u
c3QgeyByZXR1cm4gbV9yZXF1aXJlc1Jlc3RyaWN0ZWRNYXhpbXVtVGV4dHVyZVNpemU7IH0KIAog
cHJvdGVjdGVkOgogICAgIGZyaWVuZCBjbGFzcyBFeHRlbnNpb25zR0xPcGVuR0xFUzsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25z
R0xPcGVuR0xFUy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wv
RXh0ZW5zaW9uc0dMT3BlbkdMRVMuY3BwCmluZGV4IDhjYTg3Nzg4NGVlYWI4YTJjYTFkZGUyZGIy
ZWM4ZDZiMjEyMmZkZTEuLmIyZTNjOGI5ODQ5MzQ1ZDU3MzhmN2E1YzEwZTEyZGI1OTRkMmEwMDMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRl
bnNpb25zR0xPcGVuR0xFUy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVTLmNwcApAQCAtMTAwLDExICsxMDAsNiBAQCB2
b2lkIEV4dGVuc2lvbnNHTE9wZW5HTEVTOjpyZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVJ
TUcodW5zaWduZWQgbG9uZyB0YXJnZQogICAgICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVy
cm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKIH0KIAotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xF
Uzo6YmxpdEZyYW1lYnVmZmVyQU5HTEUoR0NHTGludCwgR0NHTGludCwgR0NHTGludCwgR0NHTGlu
dCwgR0NHTGludCwgR0NHTGludCwgR0NHTGludCwgR0NHTGludCwgR0NHTGJpdGZpZWxkLCBHQ0dM
ZW51bSkKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCiB2b2lkIEV4dGVuc2lvbnNHTE9w
ZW5HTEVTOjpyZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVBTkdMRShHQ0dMZW51bSB0YXJn
ZXQsIEdDR0xzaXplaSBzYW1wbGVzLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVp
IHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KQogewogICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29u
dGV4dEN1cnJlbnQoKSkKQEAgLTExNSwyMSArMTEwLDYgQEAgdm9pZCBFeHRlbnNpb25zR0xPcGVu
R0xFUzo6cmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5HTEUoR0NHTGVudW0gdGFyZ2V0
LAogICAgICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5H
TEVTOjppbnNlcnRFdmVudE1hcmtlckVYVChjb25zdCBTdHJpbmcmKQotewotICAgIG5vdEltcGxl
bWVudGVkKCk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMRVM6OnB1c2hHcm91cE1hcmtl
ckVYVChjb25zdCBTdHJpbmcmKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQg
RXh0ZW5zaW9uc0dMT3BlbkdMRVM6OnBvcEdyb3VwTWFya2VyRVhUKHZvaWQpCi17Ci0gICAgbm90
SW1wbGVtZW50ZWQoKTsKLX0KLQogUGxhdGZvcm1HTE9iamVjdCBFeHRlbnNpb25zR0xPcGVuR0xF
Uzo6Y3JlYXRlVmVydGV4QXJyYXlPRVMoKQogewogICAgIGlmIChtX2dsR2VuVmVydGV4QXJyYXlz
T0VTKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVu
Z2wvRXh0ZW5zaW9uc0dMT3BlbkdMRVMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xFUy5oCmluZGV4IDVjNzYwMzdmYTdiYzZlOGVl
ZTNlNjczZjk5YTdkZmMyZjc4ZmI0ZDIuLmFkZDBiYjc2M2Y0YmRhNWI2OWU2MWJhYjYwMjJhNDA4
MjQ4YWYzZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29w
ZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xFUy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xFUy5oCkBAIC0yNyw2ICsyNyw3IEBA
CiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5oIgor
I2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgiCiAKICNpZiBVU0UoT1BFTkdMX0VT
KQogCkBAIC03NSwxMSArNzYsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBFeHRlbnNpb24zRCBtZXRo
b2RzCiAgICAgYm9vbCBpc0VuYWJsZWQoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7Ci0gICAgdm9p
ZCBibGl0RnJhbWVidWZmZXJBTkdMRShHQ0dMaW50IHNyY1gwLCBHQ0dMaW50IHNyY1kwLCBHQ0dM
aW50IHNyY1gxLCBHQ0dMaW50IHNyY1kxLCBHQ0dMaW50IGRzdFgwLCBHQ0dMaW50IGRzdFkwLCBH
Q0dMaW50IGRzdFgxLCBHQ0dMaW50IGRzdFkxLCBHQ0dMYml0ZmllbGQgbWFzaywgR0NHTGVudW0g
ZmlsdGVyKSBvdmVycmlkZTsKLSAgICB2b2lkIHJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBs
ZUFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVpIHNhbXBsZXMsIEdDR0xlbnVtIGludGVy
bmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQpIG92ZXJyaWRlOwot
ICAgIHZvaWQgaW5zZXJ0RXZlbnRNYXJrZXJFWFQoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7Ci0g
ICAgdm9pZCBwdXNoR3JvdXBNYXJrZXJFWFQoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7Ci0gICAg
dm9pZCBwb3BHcm91cE1hcmtlckVYVCh2b2lkKSBvdmVycmlkZTsKKyAgICB2b2lkIHJlbmRlcmJ1
ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVpIHNh
bXBsZXMsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXpl
aSBoZWlnaHQpOwogCiAgICAgUGxhdGZvcm1HTE9iamVjdCBjcmVhdGVWZXJ0ZXhBcnJheU9FUygp
IG92ZXJyaWRlOwogICAgIHZvaWQgZGVsZXRlVmVydGV4QXJyYXlPRVMoUGxhdGZvcm1HTE9iamVj
dCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oCmluZGV4IDI3MDZl
N2IzMGFiOWIzN2EyMTI3OGM1MTdlZGJkZjE1MmJjMGZhNzAuLjI5ZDAwN2Y4YzhhZDE4Zjg2NDRk
NDA2NDIxOTMyYWY3NmQxMjE1OTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5o
CkBAIC00NSw2ICs0NSw3IEBACiAKICNpZiAhVVNFKEFOR0xFKQogI2luY2x1ZGUgIkFOR0xFV2Vi
S2l0QnJpZGdlLmgiCisjaW5jbHVkZSAiRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmgiCiAjZW5k
aWYKIAogLy8gRklYTUU6IEZpbmQgYSBiZXR0ZXIgd2F5IHRvIGF2b2lkIHRoZSBuYW1lIGNvbmZs
aWN0aW9uIGZvciBOT19FUlJPUi4KQEAgLTQ4MSw3ICs0ODIsMTIgQEAgcHVibGljOgogICAgIC8v
IGFsbCBtZXRob2RzIGl0IGNvbnRhaW5zIG1heSBuZWNlc3NhcmlseSBiZSBzdXBwb3J0ZWQgb24g
dGhlCiAgICAgLy8gY3VycmVudCBoYXJkd2FyZS4gTXVzdCBjYWxsIEV4dGVuc2lvbnNHTDo6c3Vw
cG9ydHMoKSB0bwogICAgIC8vIGRldGVybWluZSB0aGlzLgorI2lmICFVU0UoQU5HTEUpCisgICAg
Ly8gVXNlIGNvdmFyaWFudCByZXR1cm4gdHlwZSBmb3IgT1BFTkdML09QRU5HTF9FUworICAgIEV4
dGVuc2lvbnNHTE9wZW5HTENvbW1vbiYgZ2V0RXh0ZW5zaW9ucygpIGZpbmFsOworI2Vsc2UKICAg
ICBFeHRlbnNpb25zR0wmIGdldEV4dGVuc2lvbnMoKSBmaW5hbDsKKyNlbmRpZgogCiAgICAgdm9p
ZCBzZXRGYWlsTmV4dEdQVVN0YXR1c0NoZWNrKCkgZmluYWwgeyBtX2ZhaWxOZXh0U3RhdHVzQ2hl
Y2sgPSB0cnVlOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEJhc2UuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQmFzZS5j
cHAKaW5kZXggZjQxNGY5Yzk2MzRkNjFiOGQ5MDE1ZDVhNmFmYTUyN2NjMzQyYmU4Zi4uMGZmNTMz
YmU3MTI4NGVkMDhkNTM0M2I5OTk2YTk2ZmExNmUyYjVhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQmFz
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBo
aWNzQ29udGV4dEdMT3BlbkdMQmFzZS5jcHAKQEAgLTExNiw3ICsxMTYsNyBAQCBib29sIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjpyZXNoYXBlRkJPcyhjb25zdCBJbnRTaXplJiBzaXplKQogICAg
ICAgICAvLyBXZSBkb24ndCBhbGxvdyB0aGUgbG9naWMgd2hlcmUgc3RlbmNpbCBpcyByZXF1aXJl
ZCBhbmQgZGVwdGggaXMgbm90LgogICAgICAgICAvLyBTZWUgR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OnZhbGlkYXRlQXR0cmlidXRlcy4KIAotICAgICAgICBFeHRlbnNpb25zR0wmIGV4dGVuc2lv
bnMgPSBnZXRFeHRlbnNpb25zKCk7CisgICAgICAgIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbiYg
ZXh0ZW5zaW9ucyA9IGdldEV4dGVuc2lvbnMoKTsKICAgICAgICAgLy8gVXNlIGEgMjQgYml0IGRl
cHRoIGJ1ZmZlciB3aGVyZSB3ZSBrbm93IHdlIGhhdmUgaXQuCiAgICAgICAgIGlmIChleHRlbnNp
b25zLnN1cHBvcnRzKCJHTF9FWFRfcGFja2VkX2RlcHRoX3N0ZW5jaWwiKSkKICAgICAgICAgICAg
IGludGVybmFsRGVwdGhTdGVuY2lsRm9ybWF0ID0gR0xfREVQVEgyNF9TVEVOQ0lMOF9FWFQ7CkBA
IC00MTcsNyArNDE3LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y2xlYXJEZXB0
aChHQ0dMY2xhbXBmIGRlcHRoKQogfQogCiAjaWYgIVBMQVRGT1JNKEdUSykKLUV4dGVuc2lvbnNH
TCYgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEV4dGVuc2lvbnMoKQorRXh0ZW5zaW9uc0dM
T3BlbkdMQ29tbW9uJiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0RXh0ZW5zaW9ucygpCiB7
CiAgICAgaWYgKCFtX2V4dGVuc2lvbnMpCiAgICAgICAgIG1fZXh0ZW5zaW9ucyA9IG1ha2VVbmlx
dWU8RXh0ZW5zaW9uc0dMT3BlbkdMPih0aGlzLCBpc0dMRVMyQ29tcGxpYW50KCkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMQ29tbW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvbW1vbi5jcHAKaW5kZXggMmRlMTg1YTY2
ODEzMGEzNjJjMTI3NjdmMzgzZjU3ZjEzNDlkZDQ4MS4uZGY5ODNmZGE4ODExMjg5YjYwMjJkYWZl
ZTk4ZGNmOTI5ZGMyNDUxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29tbW9uLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0xDb21tb24uY3BwCkBAIC0xMTgsNyArMTE4LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6dmFsaWRhdGVEZXB0aFN0ZW5jaWwoY29uc3QgY2hhciogcGFja2VkRGVwdGhTdGVuY2kK
IHsKICAgICBhdXRvIGF0dHJzID0gY29udGV4dEF0dHJpYnV0ZXMoKTsKIAotICAgIEV4dGVuc2lv
bnNHTCYgZXh0ZW5zaW9ucyA9IGdldEV4dGVuc2lvbnMoKTsKKyAgICBFeHRlbnNpb25zR0xPcGVu
R0xDb21tb24mIGV4dGVuc2lvbnMgPSBnZXRFeHRlbnNpb25zKCk7CiAgICAgaWYgKGF0dHJzLnN0
ZW5jaWwpIHsKICAgICAgICAgaWYgKGV4dGVuc2lvbnMuc3VwcG9ydHMocGFja2VkRGVwdGhTdGVu
Y2lsRXh0ZW5zaW9uKSkgewogICAgICAgICAgICAgZXh0ZW5zaW9ucy5lbnN1cmVFbmFibGVkKHBh
Y2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xFUy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0xFUy5jcHAKaW5kZXggMGQ0NzZjMjI5ZDZmNmVlOTZjY2Y5OTNkODFkNWMzZGQ2NTIxNWU0
OC4uYWI5YzM1Zjg0OTY0MzZjOTYwZTIxMmE0MWJjM2UwY2ZlOWFiYmYwOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdM
T3BlbkdMRVMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5n
bC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEVTLmNwcApAQCAtMjU0LDcgKzI1NCw3IEBAIHZvaWQg
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNsZWFyRGVwdGgoR0NHTGNsYW1wZiBkZXB0aCkKIH0K
IAogI2lmICFQTEFURk9STShHVEspCi1FeHRlbnNpb25zR0wmIEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjpnZXRFeHRlbnNpb25zKCkKK0V4dGVuc2lvbnNHTE9wZW5HTENvbW1vbiYgR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OmdldEV4dGVuc2lvbnMoKQogewogICAgIGlmICghbV9leHRlbnNpb25z
KQogICAgICAgICBtX2V4dGVuc2lvbnMgPSBtYWtlVW5pcXVlPEV4dGVuc2lvbnNHTE9wZW5HTEVT
Pih0aGlzLCBpc0dMRVMyQ29tcGxpYW50KCkpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>415603</attachid>
            <date>2020-12-07 17:14:31 -0800</date>
            <delta_ts>2020-12-09 20:46:38 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-218896-20201207171430.patch</filename>
            <type>text/plain</type>
            <size>64985</size>
            <attacher name="Rini Patel">rini_patel</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwNTI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzEzNDg4N2QyYjdlZjE0
YTNmOGRlYmRkYTE0MTNiNzc2YTg0YTI3Ni4uMTIxOWZkMzU4MDUzMjFiNTFiZmNkNDhmMDc4YTg4
N2RkMDUyYzdkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyOSBAQAorMjAyMC0xMi0wNyAgUmlu
aSBQYXRlbCAgPHJpbmlfcGF0ZWxAYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZSB1bnVzZWQg
ZnVuY3Rpb25zIGZyb20gR3JhcGhpY3NDb250ZXh0R0wgYW5kIEV4dGVuc2lvbnNHTAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE4ODk2CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVtb3ZlIHVudXNlZCBm
dW5jdGlvbnMgZnJvbSBHcmFwaGljc0NvbnRleHRHTCBhbmQgRXh0ZW5zaW9uc0dMCisgICAgICAg
IFRoZXkncmUgZGVhZCBjb2RlIGFuZCBtYWtlIGl0IGhhcmRlciB0byBpbXBsZW1lbnQgdGhlIEdQ
VSBQcm9jZXNzIHZlcnNpb24uCisKKyAgICAgICAgLSBJZiB0aGUgZnVuY3Rpb24gaXMgdW51c2Vk
LCByZW1vdmUgaXQgZnVsbHkKKyAgICAgICAgLSBJZiB0aGUgZnVuY3Rpb24gaXMgdW51c2VkIGlu
IFVTRShBTkdMRSkgV2ViR0wgcGFydCwgcmVtb3ZlIHRoZSBmdW5jdGlvbiBmcm9tIEdyYXBoaWNz
Q29udGV4dEdMIGFuZCBBTkdMRSBHcmFwaGljc0NvbnRleHRHTE9wZW5HTAorCisgICAgICAgICog
aHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL0V4dGVuc2lvbnNHTC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lv
bnNHTEFOR0xFOjpFeHRlbnNpb25zR0xBTkdMRSk6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNp
b25zR0xBTkdMRTo6aW5pdGlhbGl6ZUF2YWlsYWJsZUV4dGVuc2lvbnMpOgorICAgICAgICAoV2Vi
Q29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmJsaXRGcmFtZWJ1ZmZlckFOR0xFKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpyZW5kZXJidWZmZXJTdG9yYWdl
TXVsdGlzYW1wbGVBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25z
R0xBTkdMRTo6aW5zZXJ0RXZlbnRNYXJrZXJFWFQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OnB1c2hHcm91cE1hcmtlckVYVCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6cG9wR3JvdXBNYXJrZXJFWFQpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OnJlYWRQaXhlbHNSb2J1
c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6
dGV4UGFyYW1ldGVyZnZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpF
eHRlbnNpb25zR0xBTkdMRTo6dGV4UGFyYW1ldGVyaXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6Z2V0UXVlcnlpdlJvYnVzdEFOR0xF
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpnZXRRdWVy
eU9iamVjdHVpdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVu
c2lvbnNHTEFOR0xFOjpnZXRCdWZmZXJQb2ludGVydlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpnZXRWZXJ0ZXhBdHRyaWJJaXZSb2J1
c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6
Z2V0VmVydGV4QXR0cmliSXVpdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpnZXRVbmlmb3JtdWl2Um9idXN0QU5HTEUpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldEJ1ZmZlclBhcmFtZXRl
cmk2NHZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25z
R0xBTkdMRTo6c2FtcGxlclBhcmFtZXRlcml2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OnNhbXBsZXJQYXJhbWV0ZXJmdlJvYnVzdEFO
R0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpnZXRT
YW1wbGVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpFeHRlbnNpb25zR0xBTkdMRTo6Z2V0U2FtcGxlclBhcmFtZXRlcmZ2Um9idXN0QU5HTEUpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldEZyYW1lYnVm
ZmVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpF
eHRlbnNpb25zR0xBTkdMRTo6Z2V0UHJvZ3JhbUludGVyZmFjZWl2Um9idXN0QU5HTEUpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldEJvb2xlYW5pX3ZS
b2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdM
RTo6Z2V0TXVsdGlzYW1wbGVmdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpnZXRUZXhMZXZlbFBhcmFtZXRlcml2Um9idXN0QU5HTEUp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldFRleExl
dmVsUGFyYW1ldGVyZnZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpF
eHRlbnNpb25zR0xBTkdMRTo6Z2V0UG9pbnRlcnZSb2J1c3RBTkdMRVJvYnVzdEFOR0xFKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpnZXRuVW5pZm9ybWZ2
Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5H
TEU6OmdldG5Vbmlmb3JtaXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpFeHRlbnNpb25zR0xBTkdMRTo6Z2V0blVuaWZvcm11aXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6dGV4UGFyYW1ldGVySWl2Um9i
dXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6
OnRleFBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpFeHRlbnNpb25zR0xBTkdMRTo6Z2V0VGV4UGFyYW1ldGVySWl2Um9idXN0QU5HTEUpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldFRleFBhcmFtZXRl
ckl1aXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25z
R0xBTkdMRTo6c2FtcGxlclBhcmFtZXRlcklpdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpzYW1wbGVyUGFyYW1ldGVySXVpdlJvYnVz
dEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpn
ZXRTYW1wbGVyUGFyYW1ldGVySWl2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldFNhbXBsZXJQYXJhbWV0ZXJJdWl2Um9idXN0QU5H
TEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldFF1
ZXJ5T2JqZWN0aXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRl
bnNpb25zR0xBTkdMRTo6Z2V0UXVlcnlPYmplY3RpNjR2Um9idXN0QU5HTEUpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldFF1ZXJ5T2JqZWN0dWk2NHZS
b2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUv
RXh0ZW5zaW9uc0dMQU5HTEUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wv
RXh0ZW5zaW9uc0dMT3BlbkdMLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9w
ZW5HTDo6YmxpdEZyYW1lYnVmZmVyQU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
RXh0ZW5zaW9uc0dMT3BlbkdMOjpyZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVBTkdMRSk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0w6Omluc2VydEV2
ZW50TWFya2VyRVhUKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9w
ZW5HTDo6cHVzaEdyb3VwTWFya2VyRVhUKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4
dGVuc2lvbnNHTE9wZW5HTDo6cG9wR3JvdXBNYXJrZXJFWFQpOiBEZWxldGVkLgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6cmVhZFBpeGVsc1Jv
YnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5H
TENvbW1vbjo6dGV4UGFyYW1ldGVyZnZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OnRleFBhcmFtZXRlcml2Um9idXN0QU5H
TEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9u
OjpnZXRRdWVyeWl2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0
ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRRdWVyeU9iamVjdHVpdlJvYnVzdEFOR0xFKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0QnVm
ZmVyUG9pbnRlcnZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRl
bnNpb25zR0xPcGVuR0xDb21tb246OmdldFZlcnRleEF0dHJpYklpdlJvYnVzdEFOR0xFKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0VmVy
dGV4QXR0cmliSXVpdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4
dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0VW5pZm9ybXVpdlJvYnVzdEFOR0xFKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0QnVmZmVy
UGFyYW1ldGVyaTY0dlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4
dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6c2FtcGxlclBhcmFtZXRlcml2Um9idXN0QU5HTEUpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpzYW1w
bGVyUGFyYW1ldGVyZnZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpF
eHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFNhbXBsZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xF
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6
Z2V0U2FtcGxlclBhcmFtZXRlcmZ2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRGcmFtZWJ1ZmZlclBhcmFtZXRlcml2
Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3Bl
bkdMQ29tbW9uOjpnZXRQcm9ncmFtSW50ZXJmYWNlaXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldEJvb2xlYW5pX3ZS
b2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVu
R0xDb21tb246OmdldE11bHRpc2FtcGxlZnZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFRleExldmVsUGFyYW1ldGVy
aXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xP
cGVuR0xDb21tb246OmdldFRleExldmVsUGFyYW1ldGVyZnZSb2J1c3RBTkdMRSk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFBvaW50ZXJ2
Um9idXN0QU5HTEVSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRl
bnNpb25zR0xPcGVuR0xDb21tb246OmdldG5Vbmlmb3JtZnZSb2J1c3RBTkdMRSk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldG5Vbmlmb3Jt
aXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xP
cGVuR0xDb21tb246OmdldG5Vbmlmb3JtdWl2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjp0ZXhQYXJhbWV0ZXJJaXZSb2J1
c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xD
b21tb246OnRleFBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFRleFBhcmFtZXRlcklpdlJvYnVz
dEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTENv
bW1vbjo6Z2V0VGV4UGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6c2FtcGxlclBhcmFtZXRlcklpdlJv
YnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5H
TENvbW1vbjo6c2FtcGxlclBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFNhbXBsZXJQYXJhbWV0
ZXJJaXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25z
R0xPcGVuR0xDb21tb246OmdldFNhbXBsZXJQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRRdWVy
eU9iamVjdGl2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5z
aW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRRdWVyeU9iamVjdGk2NHZSb2J1c3RBTkdMRSk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFF1ZXJ5
T2JqZWN0dWk2NHZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5oOgorICAgICAgICAoV2ViQ29y
ZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjppc05WSURJQSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmlzQU1EIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6aXNJbnRlbCBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmlzSW1hZ2luYXRpb24gY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjp2ZW5kb3Ig
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpyZXF1
aXJlc0J1aWx0SW5GdW5jdGlvbkVtdWxhdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpF
eHRlbnNpb25zR0xPcGVuR0xDb21tb246OnJlcXVpcmVzUmVzdHJpY3RlZE1heGltdW1UZXh0dXJl
U2l6ZSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lv
bnNHTE9wZW5HTEVTLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTEVT
OjpibGl0RnJhbWVidWZmZXJBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRl
bnNpb25zR0xPcGVuR0xFUzo6aW5zZXJ0RXZlbnRNYXJrZXJFWFQpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMRVM6OnB1c2hHcm91cE1hcmtlckVYVCk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xFUzo6cG9wR3JvdXBN
YXJrZXJFWFQpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9F
eHRlbnNpb25zR0xPcGVuR0xFUy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5n
bC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEJhc2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlc2hhcGVGQk9zKToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRFeHRlbnNpb25zKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb21tb24uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnZhbGlkYXRlRGVw
dGhTdGVuY2lsKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0xFUy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6Z2V0RXh0ZW5zaW9ucyk6CisKIDIwMjAtMTItMDcgIEFsZXggQ2hyaXN0ZW5zZW4g
IDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBQYXJzZSBjb250ZW50IGFmdGVy
ICMgaW4gZGF0YSBVUkxzIHdpdGggSExTIG1pbWUgdHlwZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKaW5kZXgg
NzJjMjY0NDY2NmNmMDNhMmY1OWYxZTA5ZmU5MzI5M2NiODBiNmJhZS4uYjkzNGMxZTg5YzI1MWFj
MGIwMDgzNzFmZjMxZmRiNGY5OTcxMjAwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKQEAgLTc0MiwxMCAr
NzQyLDYgQEAgc3RkOjp1bmlxdWVfcHRyPFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U+IFdlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2U6OmNyZWF0ZShDYW4KICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAgICAgfQogCi0gICAgYXV0byYgZXh0ZW5zaW9ucyA9IGNvbnRleHQtPmdldEV4dGVuc2lvbnMo
KTsKLSAgICBpZiAoZXh0ZW5zaW9ucy5zdXBwb3J0cygiR0xfRVhUX2RlYnVnX21hcmtlciJfcykp
Ci0gICAgICAgIGV4dGVuc2lvbnMucHVzaEdyb3VwTWFya2VyRVhUKCJXZWJHTFJlbmRlcmluZ0Nv
bnRleHQiX3MpOwotCiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2U+IHJlbmRlcmluZ0NvbnRleHQ7CiAjaWYgRU5BQkxFKFdFQkdMMikKICAgICBpZiAodHlwZSA9
PSAid2ViZ2wyIikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0V4dGVuc2lvbnNHTC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRXh0ZW5z
aW9uc0dMLmgKaW5kZXggYzRlNzc3OGRiNmE0NDhmZDBhNWU2NTE1OTFmZWVhMTQ1Mzg2MzgyMy4u
NjJkNTgzMDAwYTE1YzY3ZDJmOGE1MDhiNGZjNmI3ZTg4NGM0YjRkNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRXh0ZW5zaW9uc0dMLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRXh0ZW5zaW9uc0dMLmgKQEAgLTI3OCwxMiArMjc4
LDYgQEAgcHVibGljOgogICAgIC8vIGV4dGVybmFsbHkuCiAgICAgdmlydHVhbCBHQ0dMaW50IGdl
dEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIoKSA9IDA7CiAKLSAgICAvLyBHTF9BTkdMRV9mcmFtZWJ1
ZmZlcl9ibGl0Ci0gICAgdmlydHVhbCB2b2lkIGJsaXRGcmFtZWJ1ZmZlckFOR0xFKEdDR0xpbnQg
c3JjWDAsIEdDR0xpbnQgc3JjWTAsIEdDR0xpbnQgc3JjWDEsIEdDR0xpbnQgc3JjWTEsIEdDR0xp
bnQgZHN0WDAsIEdDR0xpbnQgZHN0WTAsIEdDR0xpbnQgZHN0WDEsIEdDR0xpbnQgZHN0WTEsIEdD
R0xiaXRmaWVsZCBtYXNrLCBHQ0dMZW51bSBmaWx0ZXIpID0gMDsKLQotICAgIC8vIEdMX0FOR0xF
X2ZyYW1lYnVmZmVyX211bHRpc2FtcGxlCi0gICAgdmlydHVhbCB2b2lkIHJlbmRlcmJ1ZmZlclN0
b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVpIHNhbXBsZXMs
IEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWln
aHQpID0gMDsKLQogICAgIC8vIEdMX09FU192ZXJ0ZXhfYXJyYXlfb2JqZWN0CiAgICAgdmlydHVh
bCBQbGF0Zm9ybUdMT2JqZWN0IGNyZWF0ZVZlcnRleEFycmF5T0VTKCkgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCBkZWxldGVWZXJ0ZXhBcnJheU9FUyhQbGF0Zm9ybUdMT2JqZWN0KSA9IDA7CkBAIC0y
OTMsMTEgKzI4Nyw2IEBAIHB1YmxpYzoKICAgICAvLyBHTF9BTkdMRV90cmFuc2xhdGVkX3NoYWRl
cl9zb3VyY2UKICAgICB2aXJ0dWFsIFN0cmluZyBnZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5H
TEUoUGxhdGZvcm1HTE9iamVjdCkgPSAwOwogCi0gICAgLy8gR0xfRVhUX2RlYnVnX21hcmtlcgot
ICAgIHZpcnR1YWwgdm9pZCBpbnNlcnRFdmVudE1hcmtlckVYVChjb25zdCBTdHJpbmcmKSA9IDA7
Ci0gICAgdmlydHVhbCB2b2lkIHB1c2hHcm91cE1hcmtlckVYVChjb25zdCBTdHJpbmcmKSA9IDA7
Ci0gICAgdmlydHVhbCB2b2lkIHBvcEdyb3VwTWFya2VyRVhUKCkgPSAwOwotCiAgICAgLy8gR0xf
QVJCX2RyYXdfYnVmZmVycyAvIEdMX0VYVF9kcmF3X2J1ZmZlcnMKICAgICB2aXJ0dWFsIHZvaWQg
ZHJhd0J1ZmZlcnNFWFQoR0NHTFNwYW48Y29uc3QgR0NHTGVudW0+IGJ1ZnMpID0gMDsKIApAQCAt
MzA2LDQ3ICsyOTUsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRyYXdFbGVtZW50c0lu
c3RhbmNlZEFOR0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xzaXplaSBjb3VudCwgR0NHTGVudW0gdHlw
ZSwgR0NHTHZvaWRwdHIgb2Zmc2V0LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KSA9IDA7CiAgICAgdmly
dHVhbCB2b2lkIHZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRShHQ0dMdWludCBpbmRleCwgR0NHTHVp
bnQgZGl2aXNvcikgPSAwOwogCi0gICAgLy8gR0xfQU5HTEVfcm9idXN0X2NsaWVudF9tZW1vcnkK
LSAgICB2aXJ0dWFsIHZvaWQgcmVhZFBpeGVsc1JvYnVzdEFOR0xFKEdDR0xpbnQgeCwgR0NHTGlu
dCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwg
R0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dM
c2l6ZWkqIGNvbHVtbnMsIEdDR0xzaXplaSogcm93cywgR0NHTHZvaWQqIHBpeGVscykgPSAwOwot
ICAgIHZpcnR1YWwgdm9pZCB0ZXhQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdl
dCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMZmxvYXQqIHBh
cmFtcykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCB0ZXhQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdD
R0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBH
Q0dMaW50KiBwYXJhbXMpID0gMDsKLQotICAgIHZpcnR1YWwgdm9pZCBnZXRRdWVyeWl2Um9idXN0
QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUs
IEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZv
aWQgZ2V0UXVlcnlPYmplY3R1aXZSb2J1c3RBTkdMRShHQ0dMdWludCBpZCwgR0NHTGVudW0gcG5h
bWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHVpbnQqIHBhcmFt
cykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRCdWZmZXJQb2ludGVydlJvYnVzdEFOR0xFKEdD
R0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6
ZWkqIGxlbmd0aCwgR0NHTHZvaWQqKiBwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0
VmVydGV4QXR0cmliSWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1l
LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykg
PSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJJdWl2Um9idXN0QU5HTEUoR0NH
THVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVp
KiBsZW5ndGgsIEdDR0x1aW50KiBwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0VW5p
Zm9ybXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdD
R0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHVpbnQqIHBhcmFtcykgPSAw
OwotICAgIHZpcnR1YWwgdm9pZCBnZXRCdWZmZXJQYXJhbWV0ZXJpNjR2Um9idXN0QU5HTEUoR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXpl
aSogbGVuZ3RoLCBHQ0dMaW50NjQqIHBhcmFtcykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBzYW1w
bGVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFt
ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xpbnQqIHBhcmFtKSA9IDA7Ci0gICAgdmly
dHVhbCB2b2lkIHNhbXBsZXJQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIs
IEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGZsb2F0KiBwYXJh
bSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRTYW1wbGVyUGFyYW1ldGVyaXZSb2J1c3RBTkdM
RShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdD
R0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQg
Z2V0U2FtcGxlclBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVu
dW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGZsb2F0
KiBwYXJhbXMpID0gMDsKLQotICAgIHZpcnR1YWwgdm9pZCBnZXRGcmFtZWJ1ZmZlclBhcmFtZXRl
cml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVp
IGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpID0gMDsKLSAgICB2
aXJ0dWFsIHZvaWQgZ2V0UHJvZ3JhbUludGVyZmFjZWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJv
Z3JhbSwgR0NHTGVudW0gcHJvZ3JhbUludGVyZmFjZSwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXpl
aSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1zKSA9IDA7Ci0gICAg
dmlydHVhbCB2b2lkIGdldEJvb2xlYW5pX3ZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdD
R0x1aW50IGluZGV4LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xi
b29sZWFuKiBkYXRhKSA9IDA7IC8vIE5PTElOVAotICAgIHZpcnR1YWwgdm9pZCBnZXRNdWx0aXNh
bXBsZWZ2Um9idXN0QU5HTEUoR0NHTGVudW0gcG5hbWUsIEdDR0x1aW50IGluZGV4LCBHQ0dMc2l6
ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xmbG9hdCogdmFsKSA9IDA7Ci0gICAg
dmlydHVhbCB2b2lkIGdldFRleExldmVsUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0
YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwg
R0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykgPSAwOwotICAgIHZpcnR1YWwgdm9p
ZCBnZXRUZXhMZXZlbFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dM
aW50IGxldmVsLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSog
bGVuZ3RoLCBHQ0dMZmxvYXQqIHBhcmFtcykgPSAwOwotCi0gICAgdmlydHVhbCB2b2lkIGdldFBv
aW50ZXJ2Um9idXN0QU5HTEVSb2J1c3RBTkdMRShHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1
ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMdm9pZCoqIHBhcmFtcykgPSAwOwotICAgIHZp
cnR1YWwgdm9pZCBnZXRuVW5pZm9ybWZ2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NH
TGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dM
ZmxvYXQqIHBhcmFtcykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRuVW5pZm9ybWl2Um9idXN0
QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNp
emUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFs
IHZvaWQgZ2V0blVuaWZvcm11aXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMaW50
IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0x1aW50
KiBwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgdGV4UGFyYW1ldGVySWl2Um9idXN0QU5H
TEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNv
bnN0IEdDR0xpbnQqIHBhcmFtcykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCB0ZXhQYXJhbWV0ZXJJ
dWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVp
IGJ1ZlNpemUsIGNvbnN0IEdDR0x1aW50KiBwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQg
Z2V0VGV4UGFyYW1ldGVySWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBw
bmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJh
bXMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0VGV4UGFyYW1ldGVySXVpdlJvYnVzdEFOR0xF
KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dM
c2l6ZWkqIGxlbmd0aCwgR0NHTHVpbnQqIHBhcmFtcykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBz
YW1wbGVyUGFyYW1ldGVySWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0g
cG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMaW50KiBwYXJhbSkgPSAwOwotICAg
IHZpcnR1YWwgdm9pZCBzYW1wbGVyUGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNh
bXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTHVpbnQq
IHBhcmFtKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldFNhbXBsZXJQYXJhbWV0ZXJJaXZSb2J1
c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNp
emUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFs
IHZvaWQgZ2V0U2FtcGxlclBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVy
LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBH
Q0dMdWludCogcGFyYW1zKSA9IDA7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgZ2V0UXVlcnlPYmplY3Rp
dlJvYnVzdEFOR0xFKEdDR0x1aW50IGlkLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNp
emUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFs
IHZvaWQgZ2V0UXVlcnlPYmplY3RpNjR2Um9idXN0QU5HTEUoR0NHTHVpbnQgaWQsIEdDR0xlbnVt
IHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQ2NCog
cGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldFF1ZXJ5T2JqZWN0dWk2NHZSb2J1c3RB
TkdMRShHQ0dMdWludCBpZCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dM
c2l6ZWkqIGxlbmd0aCwgR0NHTHVpbnQ2NCogcGFyYW1zKSA9IDA7Ci0KICAgICAvLyBPdGhlciBm
dW5jdGlvbnMuCiAjaWYgIVVTRShBTkdMRSkKICAgICAvLyBFWFQgUm9idXN0bmVzcyAtIHVzZXMg
Z2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQgpAQCAtMzU0LDE2ICszMDIsNiBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCB2b2lkIGdldG5Vbmlmb3JtZnZFWFQoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGlu
dCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xmbG9hdCogcGFyYW1zKSA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIGdldG5Vbmlmb3JtaXZFWFQoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGlu
dCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xpbnQqIHBhcmFtcykgPSAwOwogCi0g
ICAgdmlydHVhbCBib29sIGlzTlZJRElBKCkgPSAwOwotICAgIHZpcnR1YWwgYm9vbCBpc0FNRCgp
ID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgaXNJbnRlbCgpID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wg
aXNJbWFnaW5hdGlvbigpID0gMDsKLSAgICB2aXJ0dWFsIFN0cmluZyB2ZW5kb3IoKSA9IDA7Ci0K
LSAgICAvLyBTb21lIGNvbmZpZ3VyYXRpb25zIGhhdmUgYnVncyByZWdhcmRpbmcgYnVpbHQtaW4g
ZnVuY3Rpb25zIGluIHRoZWlyIE9wZW5HTCBkcml2ZXJzCi0gICAgLy8gdGhhdCBtdXN0IGJlIGF2
b2lkZWQuIFBvcnRzIHNob3VsZCBpbXBsZW1lbnQgdGhlc2UgZmxhZ3Mgb24gc3VjaCBjb25maWd1
cmF0aW9ucy4KLSAgICB2aXJ0dWFsIGJvb2wgcmVxdWlyZXNCdWlsdEluRnVuY3Rpb25FbXVsYXRp
b24oKSA9IDA7Ci0gICAgdmlydHVhbCBib29sIHJlcXVpcmVzUmVzdHJpY3RlZE1heGltdW1UZXh0
dXJlU2l6ZSgpID0gMDsKICNlbmRpZgogCiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUuY3BwCmluZGV4
IDkyOWRkNGUxMGI5Y2JiNzQ5M2Q1NGFlOWRjYTkwZGM2N2VjZGIxZGEuLmNiM2M1ZDc1ZGM2MmFl
NjgwMjliYjQ3ODM1MTY0MzFlMDg2MzAzM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRlbnNpb25zR0xBTkdMRS5jcHAKQEAg
LTQzLDEwICs0Myw5IEBAIHR5cGVkZWYgdm9pZCogR0xlZ2xDb250ZXh0OwogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLUV4dGVuc2lvbnNHTEFOR0xFOjpFeHRlbnNpb25zR0xBTkdMRShHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTCogY29udGV4dCwgYm9vbCB1c2VJbmRleGVkR2V0U3RyaW5nKQorRXh0
ZW5zaW9uc0dMQU5HTEU6OkV4dGVuc2lvbnNHTEFOR0xFKEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
KiBjb250ZXh0KQogICAgIDogbV9pbml0aWFsaXplZEF2YWlsYWJsZUV4dGVuc2lvbnMoZmFsc2Up
CiAgICAgLCBtX2NvbnRleHQoY29udGV4dCkKLSAgICAsIG1fdXNlSW5kZXhlZEdldFN0cmluZyh1
c2VJbmRleGVkR2V0U3RyaW5nKQogewogfQogCkBAIC0xMDksNDIgKzEwOCwxNSBAQCBTdHJpbmcg
RXh0ZW5zaW9uc0dMQU5HTEU6OmdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRShQbGF0Zm9y
bUdMT2JqZWN0IHNoYWRlcgogCiB2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjppbml0aWFsaXplQXZh
aWxhYmxlRXh0ZW5zaW9ucygpCiB7Ci0gICAgaWYgKG1fdXNlSW5kZXhlZEdldFN0cmluZykgewot
ICAgICAgICBHTGludCBudW1FeHRlbnNpb25zID0gMDsKLSAgICAgICAgZ2w6OkdldEludGVnZXJ2
KEdMX05VTV9FWFRFTlNJT05TLCAmbnVtRXh0ZW5zaW9ucyk7Ci0gICAgICAgIGZvciAoR0xpbnQg
aSA9IDA7IGkgPCBudW1FeHRlbnNpb25zOyArK2kpCi0gICAgICAgICAgICBtX2F2YWlsYWJsZUV4
dGVuc2lvbnMuYWRkKGdsOjpHZXRTdHJpbmdpKEdMX0VYVEVOU0lPTlMsIGkpKTsKLSAgICAgICAg
Z2w6OkdldEludGVnZXJ2KEdMX05VTV9SRVFVRVNUQUJMRV9FWFRFTlNJT05TX0FOR0xFLCAmbnVt
RXh0ZW5zaW9ucyk7Ci0gICAgICAgIGZvciAoR0xpbnQgaSA9IDA7IGkgPCBudW1FeHRlbnNpb25z
OyArK2kpCi0gICAgICAgICAgICBtX3JlcXVlc3RhYmxlRXh0ZW5zaW9ucy5hZGQoZ2w6OkdldFN0
cmluZ2koR0xfUkVRVUVTVEFCTEVfRVhURU5TSU9OU19BTkdMRSwgaSkpOwotICAgIH0gZWxzZSB7
Ci0gICAgICAgIFN0cmluZyBleHRlbnNpb25zU3RyaW5nID0gZ2V0RXh0ZW5zaW9ucygpOwotICAg
ICAgICBmb3IgKGF1dG8mIGV4dGVuc2lvbiA6IGV4dGVuc2lvbnNTdHJpbmcuc3BsaXQoJyAnKSkK
LSAgICAgICAgICAgIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5hZGQoZXh0ZW5zaW9uKTsKLSAgICAg
ICAgZXh0ZW5zaW9uc1N0cmluZyA9IFN0cmluZyhyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIq
PihnbDo6R2V0U3RyaW5nKEdMX1JFUVVFU1RBQkxFX0VYVEVOU0lPTlNfQU5HTEUpKSk7Ci0gICAg
ICAgIGZvciAoYXV0byYgZXh0ZW5zaW9uIDogZXh0ZW5zaW9uc1N0cmluZy5zcGxpdCgnICcpKQot
ICAgICAgICAgICAgbV9yZXF1ZXN0YWJsZUV4dGVuc2lvbnMuYWRkKGV4dGVuc2lvbik7Ci0gICAg
fQorICAgIFN0cmluZyBleHRlbnNpb25zU3RyaW5nID0gZ2V0RXh0ZW5zaW9ucygpOworICAgIGZv
ciAoYXV0byYgZXh0ZW5zaW9uIDogZXh0ZW5zaW9uc1N0cmluZy5zcGxpdCgnICcpKQorICAgICAg
ICBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuYWRkKGV4dGVuc2lvbik7CisgICAgZXh0ZW5zaW9uc1N0
cmluZyA9IFN0cmluZyhyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihnbDo6R2V0U3RyaW5n
KEdMX1JFUVVFU1RBQkxFX0VYVEVOU0lPTlNfQU5HTEUpKSk7CisgICAgZm9yIChhdXRvJiBleHRl
bnNpb24gOiBleHRlbnNpb25zU3RyaW5nLnNwbGl0KCcgJykpCisgICAgICAgIG1fcmVxdWVzdGFi
bGVFeHRlbnNpb25zLmFkZChleHRlbnNpb24pOwogICAgIG1faW5pdGlhbGl6ZWRBdmFpbGFibGVF
eHRlbnNpb25zID0gdHJ1ZTsKIH0KIAotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6YmxpdEZyYW1l
YnVmZmVyQU5HTEUoR0NHTGludCBzcmNYMCwgR0NHTGludCBzcmNZMCwgR0NHTGludCBzcmNYMSwg
R0NHTGludCBzcmNZMSwgR0NHTGludCBkc3RYMCwgR0NHTGludCBkc3RZMCwgR0NHTGludCBkc3RY
MSwgR0NHTGludCBkc3RZMSwgR0NHTGJpdGZpZWxkIG1hc2ssIEdDR0xlbnVtIGZpbHRlcikKLXsK
LSAgICAvLyBGSVhNRTogY29uc2lkZXIgYWRkaW5nIHN1cHBvcnQgZm9yIEFQUExFX2ZyYW1lYnVm
ZmVyX211bHRpc2FtcGxlLgotICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQo
KSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OkJsaXRGcmFtZWJ1ZmZlckFOR0xFKHNyY1gw
LCBzcmNZMCwgc3JjWDEsIHNyY1kxLCBkc3RYMCwgZHN0WTAsIGRzdFgxLCBkc3RZMSwgbWFzaywg
ZmlsdGVyKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6cmVuZGVyYnVmZmVyU3RvcmFn
ZU11bHRpc2FtcGxlQU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWkgc2FtcGxlcywgR0NH
TGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkK
LXsKLSAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJl
dHVybjsKLQotICAgIGdsOjpSZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVBTkdMRSh0YXJn
ZXQsIHNhbXBsZXMsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0KTsKLX0KLQogUGxhdGZv
cm1HTE9iamVjdCBFeHRlbnNpb25zR0xBTkdMRTo6Y3JlYXRlVmVydGV4QXJyYXlPRVMoKQogewog
ICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKQEAgLTE4NSwyNCArMTU3
LDYgQEAgdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6YmluZFZlcnRleEFycmF5T0VTKFBsYXRmb3Jt
R0xPYmplY3QgYXJyYXkpCiAgICAgZ2w6OkJpbmRWZXJ0ZXhBcnJheU9FUyhhcnJheSk7CiB9CiAK
LXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6Omluc2VydEV2ZW50TWFya2VyRVhUKGNvbnN0IFN0cmlu
ZyYpCi17Ci0gICAgLy8gRklYTUU6IGltcGxlbWVudCB0aGlzIGZ1bmN0aW9uIGFuZCBhZGQgR0xf
RVhUX2RlYnVnX21hcmtlciBpbiBzdXBwb3J0cygpLgotICAgIHJldHVybjsKLX0KLQotdm9pZCBF
eHRlbnNpb25zR0xBTkdMRTo6cHVzaEdyb3VwTWFya2VyRVhUKGNvbnN0IFN0cmluZyYpCi17Ci0g
ICAgLy8gRklYTUU6IGltcGxlbWVudCB0aGlzIGZ1bmN0aW9uIGFuZCBhZGQgR0xfRVhUX2RlYnVn
X21hcmtlciBpbiBzdXBwb3J0cygpLgotICAgIHJldHVybjsKLX0KLQotdm9pZCBFeHRlbnNpb25z
R0xBTkdMRTo6cG9wR3JvdXBNYXJrZXJFWFQodm9pZCkKLXsKLSAgICAvLyBGSVhNRTogaW1wbGVt
ZW50IHRoaXMgZnVuY3Rpb24gYW5kIGFkZCBHTF9FWFRfZGVidWdfbWFya2VyIGluIHN1cHBvcnRz
KCkuCi0gICAgcmV0dXJuOwotfQotCiBib29sIEV4dGVuc2lvbnNHTEFOR0xFOjpzdXBwb3J0c0V4
dGVuc2lvbihjb25zdCBTdHJpbmcmIG5hbWUpCiB7CiAgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0
ZW5zaW9ucy5jb250YWlucyhuYW1lKSB8fCBtX3JlcXVlc3RhYmxlRXh0ZW5zaW9ucy5jb250YWlu
cyhuYW1lKTsKQEAgLTI1OCwyOTEgKzIxMiw2IEBAIEdDR0xlbnVtIEV4dGVuc2lvbnNHTEFOR0xF
OjphZGp1c3RXZWJHTDFUZXh0dXJlSW50ZXJuYWxGb3JtYXQoR0NHTGVudW0gaW50ZXJuYWxmCiAg
ICAgcmV0dXJuIGludGVybmFsZm9ybWF0OwogfQogCi0vLyBHTF9BTkdMRV9yb2J1c3RfY2xpZW50
X21lbW9yeQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6cmVhZFBpeGVsc1JvYnVzdEFOR0xFKGlu
dCB4LCBpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBm
b3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0
aCwgR0NHTHNpemVpICpjb2x1bW5zLCBHQ0dMc2l6ZWkgKnJvd3MsIHZvaWQgKnBpeGVscykKLXsK
LSAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVy
bjsKLQotICAgIGdsOjpSZWFkUGl4ZWxzUm9idXN0QU5HTEUoeCwgeSwgd2lkdGgsIGhlaWdodCwg
Zm9ybWF0LCB0eXBlLCBidWZTaXplLCBsZW5ndGgsIGNvbHVtbnMsIHJvd3MsIHBpeGVscyk7Ci19
Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OnRleFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdD
R0xmbG9hdCAqcGFyYW1zKQotewotICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJl
bnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OlRleFBhcmFtZXRlcmZ2Um9idXN0QU5H
TEUodGFyZ2V0LCBwbmFtZSwgYnVmU2l6ZSwgcGFyYW1zKTsKLX0KLQotdm9pZCBFeHRlbnNpb25z
R0xBTkdMRTo6dGV4UGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xl
bnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGludCAqcGFyYW1zKQotewot
ICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJu
OwotCi0gICAgZ2w6OlRleFBhcmFtZXRlcml2Um9idXN0QU5HTEUodGFyZ2V0LCBwbmFtZSwgYnVm
U2l6ZSwgcGFyYW1zKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0UXVlcnlpdlJv
YnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZT
aXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKQotewotICAgIGlmICghbV9j
b250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6
OkdldFF1ZXJ5aXZSb2J1c3RBTkdMRSh0YXJnZXQsIHBuYW1lLCBidWZTaXplLCBsZW5ndGgsIHBh
cmFtcyk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldFF1ZXJ5T2JqZWN0dWl2Um9i
dXN0QU5HTEUoR0NHTHVpbnQgaWQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwg
R0NHTHNpemVpICpsZW5ndGgsIEdDR0x1aW50ICpwYXJhbXMpCi17Ci0gICAgaWYgKCFtX2NvbnRl
eHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6R2V0
UXVlcnlPYmplY3R1aXZSb2J1c3RBTkdMRShpZCwgcG5hbWUsIGJ1ZlNpemUsIGxlbmd0aCwgcGFy
YW1zKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0QnVmZmVyUG9pbnRlcnZSb2J1
c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6
ZSwgR0NHTHNpemVpICpsZW5ndGgsIHZvaWQgKipwYXJhbXMpCi17Ci0gICAgaWYgKCFtX2NvbnRl
eHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6R2V0
QnVmZmVyUG9pbnRlcnZSb2J1c3RBTkdMRSh0YXJnZXQsIHBuYW1lLCBidWZTaXplLCBsZW5ndGgs
IHBhcmFtcyk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldFZlcnRleEF0dHJpYklp
dlJvYnVzdEFOR0xFKEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1
ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpCi17Ci0gICAgaWYgKCFt
X2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBn
bDo6R2V0VmVydGV4QXR0cmliSWl2Um9idXN0QU5HTEUoaW5kZXgsIHBuYW1lLCBidWZTaXplLCBs
ZW5ndGgsIHBhcmFtcyk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldFZlcnRleEF0
dHJpYkl1aXZSb2J1c3RBTkdMRShHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xz
aXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHVpbnQgKnBhcmFtcykKLXsKLSAg
ICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsK
LQotICAgIGdsOjpHZXRWZXJ0ZXhBdHRyaWJJdWl2Um9idXN0QU5HTEUoaW5kZXgsIHBuYW1lLCBi
dWZTaXplLCBsZW5ndGgsIHBhcmFtcyk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6Omdl
dFVuaWZvcm11aXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9u
LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0x1aW50ICpwYXJhbXMp
Ci17Ci0gICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICBy
ZXR1cm47Ci0KLSAgICBnbDo6R2V0VW5pZm9ybXVpdlJvYnVzdEFOR0xFKHByb2dyYW0sIGxvY2F0
aW9uLCBidWZTaXplLCBsZW5ndGgsIHBhcmFtcyk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5H
TEU6OmdldEJ1ZmZlclBhcmFtZXRlcmk2NHZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdD
R0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xp
bnQ2NCAqcGFyYW1zKQotewotICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQo
KSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OkdldEJ1ZmZlclBhcmFtZXRlcmk2NHZSb2J1
c3RBTkdMRSh0YXJnZXQsIHBuYW1lLCBidWZTaXplLCBsZW5ndGgsIHJlaW50ZXJwcmV0X2Nhc3Q8
R0xpbnQ2NCo+KHBhcmFtcykpOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpzYW1wbGVy
UGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwg
R0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xpbnQgKnBhcmFtKQotewotICAgIGlmICghbV9j
b250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6
OlNhbXBsZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKHNhbXBsZXIsIHBuYW1lLCBidWZTaXplLCBw
YXJhbSk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OnNhbXBsZXJQYXJhbWV0ZXJmdlJv
YnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVm
U2l6ZSwgY29uc3QgR0NHTGZsb2F0ICpwYXJhbSkKLXsKLSAgICBpZiAoIW1fY29udGV4dC0+bWFr
ZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpTYW1wbGVyUGFy
YW1ldGVyZnZSb2J1c3RBTkdMRShzYW1wbGVyLCBwbmFtZSwgYnVmU2l6ZSwgcGFyYW0pOwotfQot
Ci12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRTYW1wbGVyUGFyYW1ldGVyaXZSb2J1c3RBTkdM
RShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdD
R0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpCi17Ci0gICAgaWYgKCFtX2NvbnRleHQt
Pm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6R2V0U2Ft
cGxlclBhcmFtZXRlcml2Um9idXN0QU5HTEUoc2FtcGxlciwgcG5hbWUsIGJ1ZlNpemUsIGxlbmd0
aCwgcGFyYW1zKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0U2FtcGxlclBhcmFt
ZXRlcmZ2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xz
aXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGZsb2F0ICpwYXJhbXMpCi17Ci0g
ICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47
Ci0KLSAgICBnbDo6R2V0U2FtcGxlclBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoc2FtcGxlciwgcG5h
bWUsIGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1zKTsKLX0KLQotCi12b2lkIEV4dGVuc2lvbnNHTEFO
R0xFOjpnZXRGcmFtZWJ1ZmZlclBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBH
Q0dMaW50ICpwYXJhbXMpCi17Ci0gICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVu
dCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6R2V0RnJhbWVidWZmZXJQYXJhbWV0ZXJp
dlJvYnVzdEFOR0xFKHRhcmdldCwgcG5hbWUsIGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1zKTsKLX0K
LQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0UHJvZ3JhbUludGVyZmFjZWl2Um9idXN0QU5H
TEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGVudW0gcHJvZ3JhbUludGVyZmFjZSwgR0NHTGVudW0g
cG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFy
YW1zKQotewotICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAg
ICAgcmV0dXJuOwotCi0gICAgZ2w6OkdldFByb2dyYW1JbnRlcmZhY2VpdlJvYnVzdEFOR0xFKHBy
b2dyYW0sIHByb2dyYW1JbnRlcmZhY2UsIHBuYW1lLCBidWZTaXplLCBsZW5ndGgsIHBhcmFtcyk7
Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldEJvb2xlYW5pX3ZSb2J1c3RBTkdMRShH
Q0dMZW51bSB0YXJnZXQsIEdDR0x1aW50IGluZGV4LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNp
emVpICpsZW5ndGgsIEdDR0xib29sZWFuICpkYXRhKQotewotICAgIGlmICghbV9jb250ZXh0LT5t
YWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OkdldEJvb2xl
YW5pX3ZSb2J1c3RBTkdMRSh0YXJnZXQsIGluZGV4LCBidWZTaXplLCBsZW5ndGgsIGRhdGEpOwot
fQotCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRNdWx0aXNhbXBsZWZ2Um9idXN0QU5HTEUo
R0NHTGVudW0gcG5hbWUsIEdDR0x1aW50IGluZGV4LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNp
emVpICpsZW5ndGgsIEdDR0xmbG9hdCAqdmFsKQotewotICAgIGlmICghbV9jb250ZXh0LT5tYWtl
Q29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OkdldE11bHRpc2Ft
cGxlZnZSb2J1c3RBTkdMRShwbmFtZSwgaW5kZXgsIGJ1ZlNpemUsIGxlbmd0aCwgdmFsKTsKLX0K
LQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0VGV4TGV2ZWxQYXJhbWV0ZXJpdlJvYnVzdEFO
R0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gcG5hbWUsIEdDR0xz
aXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKQotewotICAg
IGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwot
Ci0gICAgZ2w6OkdldFRleExldmVsUGFyYW1ldGVyaXZSb2J1c3RBTkdMRSh0YXJnZXQsIGxldmVs
LCBwbmFtZSwgYnVmU2l6ZSwgbGVuZ3RoLCBwYXJhbXMpOwotfQotCi12b2lkIEV4dGVuc2lvbnNH
TEFOR0xFOjpnZXRUZXhMZXZlbFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xz
aXplaSAqbGVuZ3RoLCBHQ0dMZmxvYXQgKnBhcmFtcykKLXsKLSAgICBpZiAoIW1fY29udGV4dC0+
bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpHZXRUZXhM
ZXZlbFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUodGFyZ2V0LCBsZXZlbCwgcG5hbWUsIGJ1ZlNpemUs
IGxlbmd0aCwgcGFyYW1zKTsKLX0KLQotCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRQb2lu
dGVydlJvYnVzdEFOR0xFUm9idXN0QU5HTEUoR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZT
aXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgdm9pZCAqKnBhcmFtcykKLXsKLSAgICBpZiAoIW1fY29u
dGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpH
ZXRQb2ludGVydlJvYnVzdEFOR0xFUm9idXN0QU5HTEUocG5hbWUsIGJ1ZlNpemUsIGxlbmd0aCwg
cGFyYW1zKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0blVuaWZvcm1mdlJvYnVz
dEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZT
aXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGZsb2F0ICpwYXJhbXMpCi17Ci0gICAgaWYgKCFt
X2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBn
bDo6R2V0blVuaWZvcm1mdlJvYnVzdEFOR0xFKHByb2dyYW0sIGxvY2F0aW9uLCBidWZTaXplLCBs
ZW5ndGgsIHBhcmFtcyk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldG5Vbmlmb3Jt
aXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6
ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykKLXsKLSAgICBp
ZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQot
ICAgIGdsOjpHZXRuVW5pZm9ybWl2Um9idXN0QU5HTEUocHJvZ3JhbSwgbG9jYXRpb24sIGJ1ZlNp
emUsIGxlbmd0aCwgcGFyYW1zKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0blVu
aWZvcm11aXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBH
Q0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0x1aW50ICpwYXJhbXMpCi17
Ci0gICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1
cm47Ci0KLSAgICBnbDo6R2V0blVuaWZvcm11aXZSb2J1c3RBTkdMRShwcm9ncmFtLCBsb2NhdGlv
biwgYnVmU2l6ZSwgbGVuZ3RoLCBwYXJhbXMpOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xF
Ojp0ZXhQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBu
YW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGludCAqcGFyYW1zKQotewotICAgIGlm
ICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0g
ICAgZ2w6OlRleFBhcmFtZXRlcklpdlJvYnVzdEFOR0xFKHRhcmdldCwgcG5hbWUsIGJ1ZlNpemUs
IHBhcmFtcyk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OnRleFBhcmFtZXRlckl1aXZS
b2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVm
U2l6ZSwgY29uc3QgR0NHTHVpbnQgKnBhcmFtcykKLXsKLSAgICBpZiAoIW1fY29udGV4dC0+bWFr
ZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpUZXhQYXJhbWV0
ZXJJdWl2Um9idXN0QU5HTEUodGFyZ2V0LCBwbmFtZSwgYnVmU2l6ZSwgcGFyYW1zKTsKLX0KLQot
dm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0VGV4UGFyYW1ldGVySWl2Um9idXN0QU5HTEUoR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXpl
aSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpCi17Ci0gICAgaWYgKCFtX2NvbnRleHQtPm1ha2VD
b250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6R2V0VGV4UGFyYW1l
dGVySWl2Um9idXN0QU5HTEUodGFyZ2V0LCBwbmFtZSwgYnVmU2l6ZSwgbGVuZ3RoLCBwYXJhbXMp
OwotfQotCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRUZXhQYXJhbWV0ZXJJdWl2Um9idXN0
QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUs
IEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMdWludCAqcGFyYW1zKQotewotICAgIGlmICghbV9jb250
ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6Okdl
dFRleFBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRSh0YXJnZXQsIHBuYW1lLCBidWZTaXplLCBsZW5n
dGgsIHBhcmFtcyk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OnNhbXBsZXJQYXJhbWV0
ZXJJaXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNp
emVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xpbnQgKnBhcmFtKQotewotICAgIGlmICghbV9jb250ZXh0
LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OlNhbXBs
ZXJQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRShzYW1wbGVyLCBwbmFtZSwgYnVmU2l6ZSwgcGFyYW0p
OwotfQotCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpzYW1wbGVyUGFyYW1ldGVySXVpdlJvYnVz
dEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6
ZSwgY29uc3QgR0NHTHVpbnQgKnBhcmFtKQotewotICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29u
dGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OlNhbXBsZXJQYXJhbWV0
ZXJJdWl2Um9idXN0QU5HTEUoc2FtcGxlciwgcG5hbWUsIGJ1ZlNpemUsIHBhcmFtKTsKLX0KLQot
dm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0U2FtcGxlclBhcmFtZXRlcklpdlJvYnVzdEFOR0xF
KEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NH
THNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykKLXsKLSAgICBpZiAoIW1fY29udGV4dC0+
bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpHZXRTYW1w
bGVyUGFyYW1ldGVySWl2Um9idXN0QU5HTEUoc2FtcGxlciwgcG5hbWUsIGJ1ZlNpemUsIGxlbmd0
aCwgcGFyYW1zKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0U2FtcGxlclBhcmFt
ZXRlckl1aXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NH
THNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMdWludCAqcGFyYW1zKQotewot
ICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJu
OwotCi0gICAgZ2w6OkdldFNhbXBsZXJQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUoc2FtcGxlciwg
cG5hbWUsIGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1zKTsKLX0KLQotCi12b2lkIEV4dGVuc2lvbnNH
TEFOR0xFOjpnZXRRdWVyeU9iamVjdGl2Um9idXN0QU5HTEUoR0NHTHVpbnQgaWQsIEdDR0xlbnVt
IHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBh
cmFtcykKLXsKLSAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAg
ICAgIHJldHVybjsKLQotICAgIGdsOjpHZXRRdWVyeU9iamVjdGl2Um9idXN0QU5HTEUoaWQsIHBu
YW1lLCBidWZTaXplLCBsZW5ndGgsIHBhcmFtcyk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5H
TEU6OmdldFF1ZXJ5T2JqZWN0aTY0dlJvYnVzdEFOR0xFKEdDR0x1aW50IGlkLCBHQ0dMZW51bSBw
bmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50NjQgKnBh
cmFtcykKLXsKLSAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAg
ICAgIHJldHVybjsKLQotICAgIGdsOjpHZXRRdWVyeU9iamVjdGk2NHZSb2J1c3RBTkdMRShpZCwg
cG5hbWUsIGJ1ZlNpemUsIGxlbmd0aCwgcmVpbnRlcnByZXRfY2FzdDxHTGludDY0Kj4ocGFyYW1z
KSk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldFF1ZXJ5T2JqZWN0dWk2NHZSb2J1
c3RBTkdMRShHQ0dMdWludCBpZCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBH
Q0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHVpbnQ2NCAqcGFyYW1zKQotewotICAgIGlmICghbV9jb250
ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6Okdl
dFF1ZXJ5T2JqZWN0dWk2NHZSb2J1c3RBTkdMRShpZCwgcG5hbWUsIGJ1ZlNpemUsIGxlbmd0aCwg
cmVpbnRlcnByZXRfY2FzdDxHTHVpbnQ2NCo+KHBhcmFtcykpOwotfQotCi0KIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShXRUJHTCkgJiYgVVNFKEFOR0xFKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvRXh0ZW5zaW9u
c0dMQU5HTEUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0V4dGVu
c2lvbnNHTEFOR0xFLmgKaW5kZXggYjJkMjc3YjlhYzlkMjc4NjBmNTVhYmFiZjhjZmU1NWU4NGI1
ZjU3ZS4uMDA0MjMzNzcyMDM0YmZhM2VhYzEzN2RjMzYzNDgwOTE2ZGVhYWY3YSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvRXh0ZW5zaW9uc0dMQU5H
TEUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRlbnNp
b25zR0xBTkdMRS5oCkBAIC0zNiw3ICszNiw3IEBAIGNsYXNzIEV4dGVuc2lvbnNHTEFOR0xFIDog
cHVibGljIEV4dGVuc2lvbnNHTCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJs
aWM6CiAgICAgLy8gVGhpcyBjbGFzcyBvbmx5IG5lZWRzIHRvIGJlIGluc3RhbnRpYXRlZCBieSBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTCBpbXBsZW1lbnRhdGlvbnMuCi0gICAgRXh0ZW5zaW9uc0dM
QU5HTEUoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqLCBib29sIHVzZUluZGV4ZWRHZXRTdHJpbmcg
PSBmYWxzZSk7CisgICAgZXhwbGljaXQgRXh0ZW5zaW9uc0dMQU5HTEUoR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0wqKTsKICAgICB2aXJ0dWFsIH5FeHRlbnNpb25zR0xBTkdMRSgpOwogCiAgICAgLy8g
RXh0ZW5zaW9uc0dMIG1ldGhvZHMuCkBAIC00OSw2MCArNDksMTQgQEAgcHVibGljOgogICAgIHZv
aWQgZGVsZXRlVmVydGV4QXJyYXlPRVMoUGxhdGZvcm1HTE9iamVjdCkgb3ZlcnJpZGU7CiAgICAg
R0NHTGJvb2xlYW4gaXNWZXJ0ZXhBcnJheU9FUyhQbGF0Zm9ybUdMT2JqZWN0KSBvdmVycmlkZTsK
ICAgICB2b2lkIGJpbmRWZXJ0ZXhBcnJheU9FUyhQbGF0Zm9ybUdMT2JqZWN0KSBvdmVycmlkZTsK
LSAgICB2b2lkIGluc2VydEV2ZW50TWFya2VyRVhUKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwot
ICAgIHZvaWQgcHVzaEdyb3VwTWFya2VyRVhUKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwotICAg
IHZvaWQgcG9wR3JvdXBNYXJrZXJFWFQodm9pZCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkcmF3QnVm
ZmVyc0VYVChHQ0dMU3Bhbjxjb25zdCBHQ0dMZW51bT4pIG92ZXJyaWRlOwogCiAgICAgU3RyaW5n
IGdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRShQbGF0Zm9ybUdMT2JqZWN0KSBvdmVycmlk
ZTsKIAotICAgIHZvaWQgYmxpdEZyYW1lYnVmZmVyQU5HTEUoR0NHTGludCBzcmNYMCwgR0NHTGlu
dCBzcmNZMCwgR0NHTGludCBzcmNYMSwgR0NHTGludCBzcmNZMSwgR0NHTGludCBkc3RYMCwgR0NH
TGludCBkc3RZMCwgR0NHTGludCBkc3RYMSwgR0NHTGludCBkc3RZMSwgR0NHTGJpdGZpZWxkIG1h
c2ssIEdDR0xlbnVtIGZpbHRlcikgb3ZlcnJpZGU7Ci0gICAgdm9pZCByZW5kZXJidWZmZXJTdG9y
YWdlTXVsdGlzYW1wbGVBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xzaXplaSBzYW1wbGVzLCBH
Q0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0
KSBvdmVycmlkZTsKLQogICAgIHZvaWQgZHJhd0FycmF5c0luc3RhbmNlZEFOR0xFKEdDR0xlbnVt
IG1vZGUsIEdDR0xpbnQgZmlyc3QsIEdDR0xzaXplaSBjb3VudCwgR0NHTHNpemVpIHByaW1jb3Vu
dCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRShHQ0dMZW51
bSBtb2RlLCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xlbnVtIHR5cGUsIEdDR0x2b2lkcHRyIG9mZnNl
dCwgR0NHTHNpemVpIHByaW1jb3VudCkgb3ZlcnJpZGU7CiAgICAgdm9pZCB2ZXJ0ZXhBdHRyaWJE
aXZpc29yQU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0x1aW50IGRpdmlzb3IpIG92ZXJyaWRlOwog
Ci0gICAgLy8gR0xfQU5HTEVfcm9idXN0X2NsaWVudF9tZW1vcnkKLSAgICB2b2lkIHJlYWRQaXhl
bHNSb2J1c3RBTkdMRShHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dM
c2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBi
dWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHNpemVpICpjb2x1bW5zLCBHQ0dMc2l6ZWkg
KnJvd3MsIHZvaWQgKnBpeGVscykgb3ZlcnJpZGU7Ci0gICAgdm9pZCB0ZXhQYXJhbWV0ZXJmdlJv
YnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZT
aXplLCBjb25zdCBHQ0dMZmxvYXQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCB0ZXhQYXJh
bWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xz
aXplaSBidWZTaXplLCBjb25zdCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQg
Z2V0UXVlcnlpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdD
R0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVy
cmlkZTsKLSAgICB2b2lkIGdldFF1ZXJ5T2JqZWN0dWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgaWQs
IEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdD
R0x1aW50ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0QnVmZmVyUG9pbnRlcnZSb2J1
c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6
ZSwgR0NHTHNpemVpICpsZW5ndGgsIHZvaWQgKipwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQg
Z2V0VmVydGV4QXR0cmliSWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBu
YW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFt
cykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJJdWl2Um9idXN0QU5HTEUoR0NH
THVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVp
ICpsZW5ndGgsIEdDR0x1aW50ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0VW5pZm9y
bXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xz
aXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHVpbnQgKnBhcmFtcykgb3ZlcnJp
ZGU7Ci0gICAgdm9pZCBnZXRCdWZmZXJQYXJhbWV0ZXJpNjR2Um9idXN0QU5HTEUoR0NHTGVudW0g
dGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVu
Z3RoLCBHQ0dMaW50NjQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzYW1wbGVyUGFyYW1l
dGVyaXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNp
emVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xpbnQgKnBhcmFtKSBvdmVycmlkZTsKLSAgICB2b2lkIHNh
bXBsZXJQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBu
YW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGZsb2F0ICpwYXJhbSkgb3ZlcnJpZGU7
Ci0gICAgdm9pZCBnZXRTYW1wbGVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1w
bGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3Ro
LCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0U2FtcGxlclBhcmFtZXRl
cmZ2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXpl
aSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGZsb2F0ICpwYXJhbXMpIG92ZXJyaWRl
OwotCi0gICAgdm9pZCBnZXRGcmFtZWJ1ZmZlclBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVu
dW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAq
bGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0UHJvZ3JhbUlu
dGVyZmFjZWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGVudW0gcHJvZ3JhbUlu
dGVyZmFjZSwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxl
bmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldEJvb2xlYW5pX3ZS
b2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0x1aW50IGluZGV4LCBHQ0dMc2l6ZWkgYnVm
U2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xib29sZWFuICpkYXRhKSBvdmVycmlkZTsgLy8g
Tk9MSU5UCi0gICAgdm9pZCBnZXRNdWx0aXNhbXBsZWZ2Um9idXN0QU5HTEUoR0NHTGVudW0gcG5h
bWUsIEdDR0x1aW50IGluZGV4LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgs
IEdDR0xmbG9hdCAqdmFsKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldFRleExldmVsUGFyYW1ldGVy
aXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIHBu
YW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFt
cykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRUZXhMZXZlbFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUo
R0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVp
IGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMZmxvYXQgKnBhcmFtcykgb3ZlcnJpZGU7
Ci0KLSAgICB2b2lkIGdldFBvaW50ZXJ2Um9idXN0QU5HTEVSb2J1c3RBTkdMRShHQ0dMZW51bSBw
bmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCB2b2lkICoqcGFyYW1z
KSBvdmVycmlkZTsKLSAgICB2b2lkIGdldG5Vbmlmb3JtZnZSb2J1c3RBTkdMRShHQ0dMdWludCBw
cm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICps
ZW5ndGgsIEdDR0xmbG9hdCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldG5Vbmlmb3Jt
aXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6
ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykgb3ZlcnJpZGU7
Ci0gICAgdm9pZCBnZXRuVW5pZm9ybXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdD
R0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NH
THVpbnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCB0ZXhQYXJhbWV0ZXJJaXZSb2J1c3RB
TkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwg
Y29uc3QgR0NHTGludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIHRleFBhcmFtZXRlckl1
aXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkg
YnVmU2l6ZSwgY29uc3QgR0NHTHVpbnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRU
ZXhQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1l
LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykg
b3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRUZXhQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUoR0NHTGVu
dW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAq
bGVuZ3RoLCBHQ0dMdWludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIHNhbXBsZXJQYXJh
bWV0ZXJJaXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NH
THNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xpbnQgKnBhcmFtKSBvdmVycmlkZTsKLSAgICB2b2lk
IHNhbXBsZXJQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVu
dW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMdWludCAqcGFyYW0pIG92ZXJy
aWRlOwotICAgIHZvaWQgZ2V0U2FtcGxlclBhcmFtZXRlcklpdlJvYnVzdEFOR0xFKEdDR0x1aW50
IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICps
ZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRTYW1wbGVyUGFy
YW1ldGVySXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBH
Q0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0x1aW50ICpwYXJhbXMpIG92
ZXJyaWRlOwotCi0gICAgdm9pZCBnZXRRdWVyeU9iamVjdGl2Um9idXN0QU5HTEUoR0NHTHVpbnQg
aWQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgs
IEdDR0xpbnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRRdWVyeU9iamVjdGk2NHZS
b2J1c3RBTkdMRShHQ0dMdWludCBpZCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXpl
LCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludDY0ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZv
aWQgZ2V0UXVlcnlPYmplY3R1aTY0dlJvYnVzdEFOR0xFKEdDR0x1aW50IGlkLCBHQ0dMZW51bSBw
bmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMdWludDY0ICpw
YXJhbXMpIG92ZXJyaWRlOwotCiAgICAgLy8gT25seSBmb3Igbm9uLVdlYkdMIDIuMCBjb250ZXh0
cy4KICAgICBHQ0dMZW51bSBhZGp1c3RXZWJHTDFUZXh0dXJlSW50ZXJuYWxGb3JtYXQoR0NHTGVu
dW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSk7CiAKQEAg
LTExOSw4ICs3Myw2IEBAIHByaXZhdGU6CiAgICAgLy8gV2VhayBwb2ludGVyIGJhY2sgdG8gR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0wuCiAgICAgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqIG1fY29u
dGV4dDsKIAotICAgIGJvb2wgbV91c2VJbmRleGVkR2V0U3RyaW5nIHsgZmFsc2UgfTsKLQogICAg
IC8vIFdoZXRoZXIgdGhlIFdlYkdMIDEuMC1yZWxhdGVkIGZsb2F0aW5nLXBvaW50IHJlbmRlcmFi
aWxpdHkgZXh0ZW5zaW9ucyBoYXZlIGJlZW4gZW5hYmxlZC4KICAgICBib29sIG1fd2ViZ2xDb2xv
ckJ1ZmZlckZsb2F0UkdCIHsgZmFsc2UgfTsKICAgICBib29sIG1fd2ViZ2xDb2xvckJ1ZmZlckZs
b2F0UkdCQSB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuY3BwCmluZGV4IDg0MjI4
NDZiNmY2MmE3NTU0ZThiMmRjZjAyNDdmZjYwNTM5NWQ0NWEuLjg2ZDE5Y2FhZmI2ZTNmMGUzMjFk
ZTE3MzIxMmE1NGZjZTYxZjcxZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuY3BwCkBAIC00
OCwyMiArNDgsNiBAQCBFeHRlbnNpb25zR0xPcGVuR0w6OkV4dGVuc2lvbnNHTE9wZW5HTChHcmFw
aGljc0NvbnRleHRHTE9wZW5HTCogY29udGV4dCwgYm9vbCB1cwogRXh0ZW5zaW9uc0dMT3BlbkdM
Ojp+RXh0ZW5zaW9uc0dMT3BlbkdMKCkgPSBkZWZhdWx0OwogCiAKLXZvaWQgRXh0ZW5zaW9uc0dM
T3BlbkdMOjpibGl0RnJhbWVidWZmZXJBTkdMRShHQ0dMaW50IHNyY1gwLCBHQ0dMaW50IHNyY1kw
LCBHQ0dMaW50IHNyY1gxLCBHQ0dMaW50IHNyY1kxLCBHQ0dMaW50IGRzdFgwLCBHQ0dMaW50IGRz
dFkwLCBHQ0dMaW50IGRzdFgxLCBHQ0dMaW50IGRzdFkxLCBHQ0dMYml0ZmllbGQgbWFzaywgR0NH
TGVudW0gZmlsdGVyKQotewotICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQo
KSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgOjpnbEJsaXRGcmFtZWJ1ZmZlckVYVChzcmNYMCwg
c3JjWTAsIHNyY1gxLCBzcmNZMSwgZHN0WDAsIGRzdFkwLCBkc3RYMSwgZHN0WTEsIG1hc2ssIGZp
bHRlcik7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMOjpyZW5kZXJidWZmZXJTdG9yYWdl
TXVsdGlzYW1wbGVBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xzaXplaSBzYW1wbGVzLCBHQ0dM
ZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KQot
ewotICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0
dXJuOwotCi0gICAgOjpnbFJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUVYVCh0YXJnZXQs
IHNhbXBsZXMsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0KTsKLX0KLQogUGxhdGZvcm1H
TE9iamVjdCBFeHRlbnNpb25zR0xPcGVuR0w6OmNyZWF0ZVZlcnRleEFycmF5T0VTKCkKIHsKICAg
ICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCkBAIC0xMjcsMjQgKzExMSw2
IEBAIHZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMOjpiaW5kVmVydGV4QXJyYXlPRVMoUGxhdGZvcm1H
TE9iamVjdCBhcnJheSkKICNlbmRpZgogfQogCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTDo6aW5z
ZXJ0RXZlbnRNYXJrZXJFWFQoY29uc3QgU3RyaW5nJikKLXsKLSAgICAvLyBGSVhNRTogaW1wbGVt
ZW50IHRoaXMgZnVuY3Rpb24gYW5kIGFkZCBHTF9FWFRfZGVidWdfbWFya2VyIGluIHN1cHBvcnRz
KCkuCi0gICAgcmV0dXJuOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTDo6cHVzaEdyb3Vw
TWFya2VyRVhUKGNvbnN0IFN0cmluZyYpCi17Ci0gICAgLy8gRklYTUU6IGltcGxlbWVudCB0aGlz
IGZ1bmN0aW9uIGFuZCBhZGQgR0xfRVhUX2RlYnVnX21hcmtlciBpbiBzdXBwb3J0cygpLgotICAg
IHJldHVybjsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0w6OnBvcEdyb3VwTWFya2VyRVhU
KHZvaWQpCi17Ci0gICAgLy8gRklYTUU6IGltcGxlbWVudCB0aGlzIGZ1bmN0aW9uIGFuZCBhZGQg
R0xfRVhUX2RlYnVnX21hcmtlciBpbiBzdXBwb3J0cygpLgotICAgIHJldHVybjsKLX0KLQogYm9v
bCBFeHRlbnNpb25zR0xPcGVuR0w6OnN1cHBvcnRzRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgbmFt
ZSkKIHsKICAgICAvLyBHTF9BTkdMRV9mcmFtZWJ1ZmZlcl9ibGl0IGFuZCBHTF9BTkdMRV9mcmFt
ZWJ1ZmZlcl9tdWx0aXNhbXBsZSBhcmUgImZha2UiLiBUaGV5IGFyZSBpbXBsZW1lbnRlZCB1c2lu
ZyBvdGhlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Bl
bmdsL0V4dGVuc2lvbnNHTE9wZW5HTC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTC5oCmluZGV4IDQ3NTAyMjZlY2VjZWY0NDM5NmU5
OTM4Njc2Y2I2MzliZTgzNDM3YjYuLjBhZGJkNzA1MGI3ZTNmNzdlMDE4ODk0MzMyZmZjODdjZjMw
ZDkwYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5n
bC9FeHRlbnNpb25zR0xPcGVuR0wuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMLmgKQEAgLTQwLDE2ICs0MCwxMCBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCB+RXh0ZW5zaW9uc0dMT3BlbkdMKCk7CiAKICAgICAvLyBFeHRlbnNp
b25zR0wgbWV0aG9kcy4KLSAgICB2b2lkIGJsaXRGcmFtZWJ1ZmZlckFOR0xFKEdDR0xpbnQgc3Jj
WDAsIEdDR0xpbnQgc3JjWTAsIEdDR0xpbnQgc3JjWDEsIEdDR0xpbnQgc3JjWTEsIEdDR0xpbnQg
ZHN0WDAsIEdDR0xpbnQgZHN0WTAsIEdDR0xpbnQgZHN0WDEsIEdDR0xpbnQgZHN0WTEsIEdDR0xi
aXRmaWVsZCBtYXNrLCBHQ0dMZW51bSBmaWx0ZXIpIG92ZXJyaWRlOwotICAgIHZvaWQgcmVuZGVy
YnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWkg
c2FtcGxlcywgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNp
emVpIGhlaWdodCkgb3ZlcnJpZGU7Ci0KICAgICBQbGF0Zm9ybUdMT2JqZWN0IGNyZWF0ZVZlcnRl
eEFycmF5T0VTKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkZWxldGVWZXJ0ZXhBcnJheU9FUyhQbGF0
Zm9ybUdMT2JqZWN0KSBvdmVycmlkZTsKICAgICBHQ0dMYm9vbGVhbiBpc1ZlcnRleEFycmF5T0VT
KFBsYXRmb3JtR0xPYmplY3QpIG92ZXJyaWRlOwogICAgIHZvaWQgYmluZFZlcnRleEFycmF5T0VT
KFBsYXRmb3JtR0xPYmplY3QpIG92ZXJyaWRlOwotICAgIHZvaWQgaW5zZXJ0RXZlbnRNYXJrZXJF
WFQoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBwdXNoR3JvdXBNYXJrZXJFWFQo
Y29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBwb3BHcm91cE1hcmtlckVYVCh2b2lk
KSBvdmVycmlkZTsKICAgICB2b2lkIGRyYXdCdWZmZXJzRVhUKEdDR0xTcGFuPGNvbnN0IEdDR0xl
bnVtPikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGRyYXdBcnJheXNJbnN0YW5jZWRBTkdMRShHQ0dM
ZW51bSBtb2RlLCBHQ0dMaW50IGZpcnN0LCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xzaXplaSBwcmlt
Y291bnQpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmNwcApp
bmRleCBjMzQzOGQ1OTFjMDdhMzZjZjFlMDQyNmMxYjlmZDdiM2U5MTc3OWQ1Li4wOWRiODU0MDAy
MjFkZjk3NTc4ODg1OWE0YTI4N2FiYWEyNGY4MjcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dM
T3BlbkdMQ29tbW9uLmNwcApAQCAtMjU0LDE4NSArMjU0LDYgQEAgdm9pZCBFeHRlbnNpb25zR0xP
cGVuR0xDb21tb246OmdldG5Vbmlmb3JtaXZFWFQoR0NHTHVpbnQsIGludCwgR0NHTHNpemVpLCBH
Q0dMaW4KICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFU
SU9OKTsKIH0KIAotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OnJlYWRQaXhlbHNSb2J1
c3RBTkdMRShpbnQsIGludCwgR0NHTHNpemVpLCBHQ0dMc2l6ZWksIEdDR0xlbnVtLCBHQ0dMZW51
bSwgR0NHTHNpemVpLCBHQ0dMc2l6ZWkgKiwgR0NHTHNpemVpICosIEdDR0xzaXplaSAqLCB2b2lk
ICopCi17Ci0gICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJB
VElPTik7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjp0ZXhQYXJhbWV0ZXJm
dlJvYnVzdEFOR0xFKEdDR0xlbnVtLCBHQ0dMZW51bSwgR0NHTHNpemVpLCBjb25zdCBHQ0dMZmxv
YXQgKikKLXsKLSAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BF
UkFUSU9OKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OnRleFBhcmFtZXRl
cml2Um9idXN0QU5HTEUoR0NHTGVudW0sIEdDR0xlbnVtLCBHQ0dMc2l6ZWksIGNvbnN0IEdDR0xp
bnQgKikKLXsKLSAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BF
UkFUSU9OKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFF1ZXJ5aXZS
b2J1c3RBTkdMRShHQ0dMZW51bSwgR0NHTGVudW0sIEdDR0xzaXplaSwgR0NHTHNpemVpICosIEdD
R0xpbnQgKikKLXsKLSAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURf
T1BFUkFUSU9OKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFF1ZXJ5
T2JqZWN0dWl2Um9idXN0QU5HTEUoR0NHTHVpbnQsIEdDR0xlbnVtLCBHQ0dMc2l6ZWksIEdDR0xz
aXplaSAqLCBHQ0dMdWludCAqKQotewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3Io
R0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1v
bjo6Z2V0QnVmZmVyUG9pbnRlcnZSb2J1c3RBTkdMRShHQ0dMZW51bSwgR0NHTGVudW0sIEdDR0xz
aXplaSwgR0NHTHNpemVpICosIHZvaWQgKiopCi17Ci0gICAgbV9jb250ZXh0LT5zeW50aGVzaXpl
R0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMT3Bl
bkdMQ29tbW9uOjpnZXRWZXJ0ZXhBdHRyaWJJaXZSb2J1c3RBTkdMRShHQ0dMdWludCwgR0NHTGVu
dW0sIEdDR0xzaXplaSwgR0NHTHNpemVpICosIEdDR0xpbnQgKikKLXsKLSAgICBtX2NvbnRleHQt
PnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLX0KLQotdm9pZCBFeHRl
bnNpb25zR0xPcGVuR0xDb21tb246OmdldFZlcnRleEF0dHJpYkl1aXZSb2J1c3RBTkdMRShHQ0dM
dWludCwgR0NHTGVudW0sIEdDR0xzaXplaSwgR0NHTHNpemVpICosIEdDR0x1aW50ICopCi17Ci0g
ICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Ci19
Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRVbmlmb3JtdWl2Um9idXN0QU5H
TEUoR0NHTHVpbnQsIGludCwgR0NHTHNpemVpLCBHQ0dMc2l6ZWkgKiwgR0NHTHVpbnQgKikKLXsK
LSAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsK
LX0KLQotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldEJ1ZmZlclBhcmFtZXRlcmk2
NHZSb2J1c3RBTkdMRShHQ0dMZW51bSwgR0NHTGVudW0sIEdDR0xzaXplaSwgR0NHTHNpemVpICos
IEdDR0xpbnQ2NCAqKQotewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5W
QUxJRF9PUEVSQVRJT04pOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6c2Ft
cGxlclBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTHVpbnQsIEdDR0xlbnVtLCBHQ0dMc2l6ZWks
IGNvbnN0IEdDR0xpbnQgKikKLXsKLSAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdM
X0lOVkFMSURfT1BFUkFUSU9OKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246
OnNhbXBsZXJQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0x1aW50LCBHQ0dMZW51bSwgR0NHTHNp
emVpLCBjb25zdCBHQ0dMZmxvYXQgKikKLXsKLSAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVy
cm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xD
b21tb246OmdldFNhbXBsZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0x1aW50LCBHQ0dMZW51
bSwgR0NHTHNpemVpLCBHQ0dMc2l6ZWkgKiwgR0NHTGludCAqKQotewotICAgIG1fY29udGV4dC0+
c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi12b2lkIEV4dGVu
c2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0U2FtcGxlclBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NH
THVpbnQsIEdDR0xlbnVtLCBHQ0dMc2l6ZWksIEdDR0xzaXplaSAqLCBHQ0dMZmxvYXQgKikKLXsK
LSAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsK
LX0KLQotCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0RnJhbWVidWZmZXJQYXJh
bWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtLCBHQ0dMZW51bSwgR0NHTHNpemVpLCBHQ0dMc2l6
ZWkgKiwgR0NHTGludCAqKQotewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xf
SU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6
Z2V0UHJvZ3JhbUludGVyZmFjZWl2Um9idXN0QU5HTEUoR0NHTHVpbnQsIEdDR0xlbnVtLCBHQ0dM
ZW51bSwgR0NHTHNpemVpLCBHQ0dMc2l6ZWkgKiwgR0NHTGludCAqKQotewotICAgIG1fY29udGV4
dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi12b2lkIEV4
dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0Qm9vbGVhbmlfdlJvYnVzdEFOR0xFKEdDR0xlbnVt
LCBHQ0dMdWludCwgR0NHTHNpemVpLCBHQ0dMc2l6ZWkgKiwgR0NHTGJvb2xlYW4gKikKLXsKLSAg
ICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLX0K
LQotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldE11bHRpc2FtcGxlZnZSb2J1c3RB
TkdMRShHQ0dMZW51bSwgR0NHTHVpbnQsIEdDR0xzaXplaSwgR0NHTHNpemVpICosIEdDR0xmbG9h
dCAqKQotewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVS
QVRJT04pOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0VGV4TGV2ZWxQ
YXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtLCBpbnQsIEdDR0xlbnVtLCBHQ0dMc2l6ZWks
IEdDR0xzaXplaSAqLCBHQ0dMaW50ICopCi17Ci0gICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xF
cnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdM
Q29tbW9uOjpnZXRUZXhMZXZlbFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTGVudW0sIGludCwg
R0NHTGVudW0sIEdDR0xzaXplaSwgR0NHTHNpemVpICosIEdDR0xmbG9hdCAqKQotewotICAgIG1f
Y29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi0K
LXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRQb2ludGVydlJvYnVzdEFOR0xFUm9i
dXN0QU5HTEUoR0NHTGVudW0sIEdDR0xzaXplaSwgR0NHTHNpemVpICosIHZvaWQgKiopCi17Ci0g
ICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Ci19
Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRuVW5pZm9ybWZ2Um9idXN0QU5H
TEUoR0NHTHVpbnQsIGludCwgR0NHTHNpemVpLCBHQ0dMc2l6ZWkgKiwgR0NHTGZsb2F0ICopCi17
Ci0gICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7
Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRuVW5pZm9ybWl2Um9idXN0
QU5HTEUoR0NHTHVpbnQsIGludCwgR0NHTHNpemVpLCBHQ0dMc2l6ZWkgKiwgR0NHTGludCAqKQot
ewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04p
OwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0blVuaWZvcm11aXZSb2J1
c3RBTkdMRShHQ0dMdWludCwgaW50LCBHQ0dMc2l6ZWksIEdDR0xzaXplaSAqLCBHQ0dMdWludCAq
KQotewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJ
T04pOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6dGV4UGFyYW1ldGVySWl2
Um9idXN0QU5HTEUoR0NHTGVudW0sIEdDR0xlbnVtLCBHQ0dMc2l6ZWksIGNvbnN0IEdDR0xpbnQg
KikKLXsKLSAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFU
SU9OKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OnRleFBhcmFtZXRlckl1
aXZSb2J1c3RBTkdMRShHQ0dMZW51bSwgR0NHTGVudW0sIEdDR0xzaXplaSwgY29uc3QgR0NHTHVp
bnQgKikKLXsKLSAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BF
UkFUSU9OKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFRleFBhcmFt
ZXRlcklpdlJvYnVzdEFOR0xFKEdDR0xlbnVtLCBHQ0dMZW51bSwgR0NHTHNpemVpLCBHQ0dMc2l6
ZWkgKiwgR0NHTGludCAqKQotewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xf
SU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6
Z2V0VGV4UGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFKEdDR0xlbnVtLCBHQ0dMZW51bSwgR0NHTHNp
emVpLCBHQ0dMc2l6ZWkgKiwgR0NHTHVpbnQgKikKLXsKLSAgICBtX2NvbnRleHQtPnN5bnRoZXNp
emVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xP
cGVuR0xDb21tb246OnNhbXBsZXJQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRShHQ0dMdWludCwgR0NH
TGVudW0sIEdDR0xzaXplaSwgY29uc3QgR0NHTGludCAqKQotewotICAgIG1fY29udGV4dC0+c3lu
dGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi12b2lkIEV4dGVuc2lv
bnNHTE9wZW5HTENvbW1vbjo6c2FtcGxlclBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRShHQ0dMdWlu
dCwgR0NHTGVudW0sIEdDR0xzaXplaSwgY29uc3QgR0NHTHVpbnQgKikKLXsKLSAgICBtX2NvbnRl
eHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLX0KLQotdm9pZCBF
eHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFNhbXBsZXJQYXJhbWV0ZXJJaXZSb2J1c3RBTkdM
RShHQ0dMdWludCwgR0NHTGVudW0sIEdDR0xzaXplaSwgR0NHTHNpemVpICosIEdDR0xpbnQgKikK
LXsKLSAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9O
KTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFNhbXBsZXJQYXJhbWV0
ZXJJdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQsIEdDR0xlbnVtLCBHQ0dMc2l6ZWksIEdDR0xzaXpl
aSAqLCBHQ0dMdWludCAqKQotewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xf
SU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi0KLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9u
OjpnZXRRdWVyeU9iamVjdGl2Um9idXN0QU5HTEUoR0NHTHVpbnQsIEdDR0xlbnVtLCBHQ0dMc2l6
ZWksIEdDR0xzaXplaSAqLCBHQ0dMaW50ICopCi17Ci0gICAgbV9jb250ZXh0LT5zeW50aGVzaXpl
R0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMT3Bl
bkdMQ29tbW9uOjpnZXRRdWVyeU9iamVjdGk2NHZSb2J1c3RBTkdMRShHQ0dMdWludCwgR0NHTGVu
dW0sIEdDR0xzaXplaSwgR0NHTHNpemVpICosIEdDR0xpbnQ2NCAqKQotewotICAgIG1fY29udGV4
dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi12b2lkIEV4
dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0UXVlcnlPYmplY3R1aTY0dlJvYnVzdEFOR0xFKEdD
R0x1aW50LCBHQ0dMZW51bSwgR0NHTHNpemVpLCBHQ0dMc2l6ZWkgKiwgR0NHTHVpbnQ2NCAqKQot
ewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04p
OwotfQotCi0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShXRUJH
TCkgJiYgIVVTRShBTkdMRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uaAppbmRl
eCAzZjEwNDAxNjJmZmEwN2EyZGMxMzBhYmIyMmZiMWIxZmZjM2ZkZjIwLi5kY2MwZTNhZjIxNzMy
ZTc0N2VhMWJkNTY0YmI5Njc4NDMyY2EzZjcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5H
TENvbW1vbi5oCkBAIC0yOCwxMSArMjgsMTEgQEAKIAogI2luY2x1ZGUgIkV4dGVuc2lvbnNHTC5o
IgogCi0jaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaCIKICNpbmNsdWRlIDx3dGYv
SGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgeworY2xhc3MgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w7CiAKIGNsYXNzIEV4dGVu
c2lvbnNHTE9wZW5HTENvbW1vbiA6IHB1YmxpYyBFeHRlbnNpb25zR0wgewogICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwpAQCAtNTUsNTggKzU1LDE4IEBAIHB1YmxpYzoKICAgICBTdHJpbmcg
Z2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFKFBsYXRmb3JtR0xPYmplY3QpIG92ZXJyaWRl
OwogCiAgICAgLy8gRVhUIFJvYnVzdG5lc3MgLSB1c2VzIGdldEdyYXBoaWNzUmVzZXRTdGF0dXNB
UkIoKQotICAgIHZvaWQgcmVhZG5QaXhlbHNFWFQoaW50IHgsIGludCB5LCBHQ0dMc2l6ZWkgd2lk
dGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NH
THNpemVpIGJ1ZlNpemUsIHZvaWQgKmRhdGEpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0blVuaWZv
cm1mdkVYVChHQ0dMdWludCBwcm9ncmFtLCBpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXpl
LCBmbG9hdCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldG5Vbmlmb3JtaXZFWFQoR0NH
THVpbnQgcHJvZ3JhbSwgaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgaW50ICpwYXJh
bXMpIG92ZXJyaWRlOwotCi0gICAgYm9vbCBpc05WSURJQSgpIG92ZXJyaWRlIHsgcmV0dXJuIG1f
aXNOVklESUE7IH0KLSAgICBib29sIGlzQU1EKCkgb3ZlcnJpZGUgeyByZXR1cm4gbV9pc0FNRDsg
fQotICAgIGJvb2wgaXNJbnRlbCgpIG92ZXJyaWRlIHsgcmV0dXJuIG1faXNJbnRlbDsgfQotICAg
IGJvb2wgaXNJbWFnaW5hdGlvbigpIG92ZXJyaWRlIHsgcmV0dXJuIG1faXNJbWFnaW5hdGlvbjsg
fQotICAgIFN0cmluZyB2ZW5kb3IoKSBvdmVycmlkZSB7IHJldHVybiBtX3ZlbmRvcjsgfQotCi0g
ICAgYm9vbCByZXF1aXJlc0J1aWx0SW5GdW5jdGlvbkVtdWxhdGlvbigpIG92ZXJyaWRlIHsgcmV0
dXJuIG1fcmVxdWlyZXNCdWlsdEluRnVuY3Rpb25FbXVsYXRpb247IH0KLSAgICBib29sIHJlcXVp
cmVzUmVzdHJpY3RlZE1heGltdW1UZXh0dXJlU2l6ZSgpIG92ZXJyaWRlIHsgcmV0dXJuIG1fcmVx
dWlyZXNSZXN0cmljdGVkTWF4aW11bVRleHR1cmVTaXplOyB9Ci0KLSAgICAvLyBHTF9BTkdMRV9y
b2J1c3RfY2xpZW50X21lbW9yeQotICAgIHZvaWQgcmVhZFBpeGVsc1JvYnVzdEFOR0xFKGludCB4
LCBpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3Jt
YXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwg
R0NHTHNpemVpICpjb2x1bW5zLCBHQ0dMc2l6ZWkgKnJvd3MsIHZvaWQgKnBpeGVscykgb3ZlcnJp
ZGU7Ci0gICAgdm9pZCB0ZXhQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwg
R0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMZmxvYXQgKnBhcmFt
cykgb3ZlcnJpZGU7Ci0gICAgdm9pZCB0ZXhQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVt
IHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMaW50
ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0UXVlcnlpdlJvYnVzdEFOR0xFKEdDR0xl
bnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkg
Kmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldFF1ZXJ5T2Jq
ZWN0dWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgaWQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkg
YnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0x1aW50ICpwYXJhbXMpIG92ZXJyaWRlOwot
ICAgIHZvaWQgZ2V0QnVmZmVyUG9pbnRlcnZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdD
R0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIHZvaWQg
KipwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0VmVydGV4QXR0cmliSWl2Um9idXN0QU5H
TEUoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NH
THNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRW
ZXJ0ZXhBdHRyaWJJdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1l
LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0x1aW50ICpwYXJhbXMp
IG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0VW5pZm9ybXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHBy
b2dyYW0sIGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3Ro
LCBHQ0dMdWludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldEJ1ZmZlclBhcmFtZXRl
cmk2NHZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6
ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQ2NCAqcGFyYW1zKSBvdmVycmlk
ZTsKLSAgICB2b2lkIHNhbXBsZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBs
ZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGludCAqcGFy
YW0pIG92ZXJyaWRlOwotICAgIHZvaWQgc2FtcGxlclBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NH
THVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBH
Q0dMZmxvYXQgKnBhcmFtKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldFNhbXBsZXJQYXJhbWV0ZXJp
dlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkg
YnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0g
ICAgdm9pZCBnZXRTYW1wbGVyUGFyYW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVy
LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBH
Q0dMZmxvYXQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0KLSAgICB2b2lkIGdldEZyYW1lYnVmZmVyUGFy
YW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dM
c2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykgb3ZlcnJp
ZGU7Ci0gICAgdm9pZCBnZXRQcm9ncmFtSW50ZXJmYWNlaXZSb2J1c3RBTkdMRShHQ0dMdWludCBw
cm9ncmFtLCBHQ0dMZW51bSBwcm9ncmFtSW50ZXJmYWNlLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNp
emVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJyaWRl
OwotICAgIHZvaWQgZ2V0Qm9vbGVhbmlfdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NH
THVpbnQgaW5kZXgsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGJv
b2xlYW4gKmRhdGEpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0TXVsdGlzYW1wbGVmdlJvYnVzdEFO
R0xFKEdDR0xlbnVtIHBuYW1lLCBHQ0dMdWludCBpbmRleCwgR0NHTHNpemVpIGJ1ZlNpemUsIEdD
R0xzaXplaSAqbGVuZ3RoLCBHQ0dMZmxvYXQgKnZhbCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRU
ZXhMZXZlbFBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBpbnQgbGV2ZWws
IEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdD
R0xpbnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRUZXhMZXZlbFBhcmFtZXRlcmZ2
Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBpbnQgbGV2ZWwsIEdDR0xlbnVtIHBuYW1lLCBH
Q0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xmbG9hdCAqcGFyYW1zKSBv
dmVycmlkZTsKLQotICAgIHZvaWQgZ2V0UG9pbnRlcnZSb2J1c3RBTkdMRVJvYnVzdEFOR0xFKEdD
R0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIHZvaWQg
KipwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0blVuaWZvcm1mdlJvYnVzdEFOR0xFKEdD
R0x1aW50IHByb2dyYW0sIGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXpl
aSAqbGVuZ3RoLCBHQ0dMZmxvYXQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRuVW5p
Zm9ybWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgaW50IGxvY2F0aW9uLCBHQ0dMc2l6
ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykgb3ZlcnJpZGU7
Ci0gICAgdm9pZCBnZXRuVW5pZm9ybXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIGlu
dCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMdWlu
dCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIHRleFBhcmFtZXRlcklpdlJvYnVzdEFOR0xF
KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25z
dCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgdGV4UGFyYW1ldGVySXVpdlJv
YnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZT
aXplLCBjb25zdCBHQ0dMdWludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldFRleFBh
cmFtZXRlcklpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdD
R0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVy
cmlkZTsKLSAgICB2b2lkIGdldFRleFBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0
YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5n
dGgsIEdDR0x1aW50ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgc2FtcGxlclBhcmFtZXRl
cklpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6
ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGludCAqcGFyYW0pIG92ZXJyaWRlOwotICAgIHZvaWQgc2Ft
cGxlclBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBw
bmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0x1aW50ICpwYXJhbSkgb3ZlcnJpZGU7
Ci0gICAgdm9pZCBnZXRTYW1wbGVyUGFyYW1ldGVySWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2Ft
cGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0
aCwgR0NHTGludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldFNhbXBsZXJQYXJhbWV0
ZXJJdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xz
aXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHVpbnQgKnBhcmFtcykgb3ZlcnJp
ZGU7Ci0KLSAgICB2b2lkIGdldFF1ZXJ5T2JqZWN0aXZSb2J1c3RBTkdMRShHQ0dMdWludCBpZCwg
R0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NH
TGludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldFF1ZXJ5T2JqZWN0aTY0dlJvYnVz
dEFOR0xFKEdDR0x1aW50IGlkLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdD
R0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50NjQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBn
ZXRRdWVyeU9iamVjdHVpNjR2Um9idXN0QU5HTEUoR0NHTHVpbnQgaWQsIEdDR0xlbnVtIHBuYW1l
LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0x1aW50NjQgKnBhcmFt
cykgb3ZlcnJpZGU7CisgICAgdm9pZCByZWFkblBpeGVsc0VYVChpbnQgeCwgaW50IHksIEdDR0xz
aXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0
eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgdm9pZCAqZGF0YSk7CisgICAgdm9pZCBnZXRuVW5pZm9y
bWZ2RVhUKEdDR0x1aW50IHByb2dyYW0sIGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUs
IGZsb2F0ICpwYXJhbXMpOworICAgIHZvaWQgZ2V0blVuaWZvcm1pdkVYVChHQ0dMdWludCBwcm9n
cmFtLCBpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBpbnQgKnBhcmFtcyk7CisKKyAg
ICBib29sIGlzTlZJRElBKCkgY29uc3QgeyByZXR1cm4gbV9pc05WSURJQTsgfQorICAgIGJvb2wg
aXNBTUQoKSBjb25zdCB7IHJldHVybiBtX2lzQU1EOyB9CisgICAgYm9vbCBpc0ludGVsKCkgY29u
c3QgeyByZXR1cm4gbV9pc0ludGVsOyB9CisgICAgYm9vbCBpc0ltYWdpbmF0aW9uKCkgY29uc3Qg
eyByZXR1cm4gbV9pc0ltYWdpbmF0aW9uOyB9CisgICAgU3RyaW5nIHZlbmRvcigpIGNvbnN0IHsg
cmV0dXJuIG1fdmVuZG9yOyB9CisKKyAgICBib29sIHJlcXVpcmVzQnVpbHRJbkZ1bmN0aW9uRW11
bGF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9yZXF1aXJlc0J1aWx0SW5GdW5jdGlvbkVtdWxhdGlv
bjsgfQorICAgIGJvb2wgcmVxdWlyZXNSZXN0cmljdGVkTWF4aW11bVRleHR1cmVTaXplKCkgY29u
c3QgeyByZXR1cm4gbV9yZXF1aXJlc1Jlc3RyaWN0ZWRNYXhpbXVtVGV4dHVyZVNpemU7IH0KIAog
cHJvdGVjdGVkOgogICAgIGZyaWVuZCBjbGFzcyBFeHRlbnNpb25zR0xPcGVuR0xFUzsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25z
R0xPcGVuR0xFUy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wv
RXh0ZW5zaW9uc0dMT3BlbkdMRVMuY3BwCmluZGV4IDhjYTg3Nzg4NGVlYWI4YTJjYTFkZGUyZGIy
ZWM4ZDZiMjEyMmZkZTEuLmIyZTNjOGI5ODQ5MzQ1ZDU3MzhmN2E1YzEwZTEyZGI1OTRkMmEwMDMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRl
bnNpb25zR0xPcGVuR0xFUy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVTLmNwcApAQCAtMTAwLDExICsxMDAsNiBAQCB2
b2lkIEV4dGVuc2lvbnNHTE9wZW5HTEVTOjpyZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVJ
TUcodW5zaWduZWQgbG9uZyB0YXJnZQogICAgICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVy
cm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKIH0KIAotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xF
Uzo6YmxpdEZyYW1lYnVmZmVyQU5HTEUoR0NHTGludCwgR0NHTGludCwgR0NHTGludCwgR0NHTGlu
dCwgR0NHTGludCwgR0NHTGludCwgR0NHTGludCwgR0NHTGludCwgR0NHTGJpdGZpZWxkLCBHQ0dM
ZW51bSkKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCiB2b2lkIEV4dGVuc2lvbnNHTE9w
ZW5HTEVTOjpyZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVBTkdMRShHQ0dMZW51bSB0YXJn
ZXQsIEdDR0xzaXplaSBzYW1wbGVzLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVp
IHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KQogewogICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29u
dGV4dEN1cnJlbnQoKSkKQEAgLTExNSwyMSArMTEwLDYgQEAgdm9pZCBFeHRlbnNpb25zR0xPcGVu
R0xFUzo6cmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5HTEUoR0NHTGVudW0gdGFyZ2V0
LAogICAgICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5H
TEVTOjppbnNlcnRFdmVudE1hcmtlckVYVChjb25zdCBTdHJpbmcmKQotewotICAgIG5vdEltcGxl
bWVudGVkKCk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMRVM6OnB1c2hHcm91cE1hcmtl
ckVYVChjb25zdCBTdHJpbmcmKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQg
RXh0ZW5zaW9uc0dMT3BlbkdMRVM6OnBvcEdyb3VwTWFya2VyRVhUKHZvaWQpCi17Ci0gICAgbm90
SW1wbGVtZW50ZWQoKTsKLX0KLQogUGxhdGZvcm1HTE9iamVjdCBFeHRlbnNpb25zR0xPcGVuR0xF
Uzo6Y3JlYXRlVmVydGV4QXJyYXlPRVMoKQogewogICAgIGlmIChtX2dsR2VuVmVydGV4QXJyYXlz
T0VTKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVu
Z2wvRXh0ZW5zaW9uc0dMT3BlbkdMRVMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xFUy5oCmluZGV4IDVjNzYwMzdmYTdiYzZlOGVl
ZTNlNjczZjk5YTdkZmMyZjc4ZmI0ZDIuLmFkZDBiYjc2M2Y0YmRhNWI2OWU2MWJhYjYwMjJhNDA4
MjQ4YWYzZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29w
ZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xFUy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xFUy5oCkBAIC0yNyw2ICsyNyw3IEBA
CiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5oIgor
I2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgiCiAKICNpZiBVU0UoT1BFTkdMX0VT
KQogCkBAIC03NSwxMSArNzYsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBFeHRlbnNpb24zRCBtZXRo
b2RzCiAgICAgYm9vbCBpc0VuYWJsZWQoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7Ci0gICAgdm9p
ZCBibGl0RnJhbWVidWZmZXJBTkdMRShHQ0dMaW50IHNyY1gwLCBHQ0dMaW50IHNyY1kwLCBHQ0dM
aW50IHNyY1gxLCBHQ0dMaW50IHNyY1kxLCBHQ0dMaW50IGRzdFgwLCBHQ0dMaW50IGRzdFkwLCBH
Q0dMaW50IGRzdFgxLCBHQ0dMaW50IGRzdFkxLCBHQ0dMYml0ZmllbGQgbWFzaywgR0NHTGVudW0g
ZmlsdGVyKSBvdmVycmlkZTsKLSAgICB2b2lkIHJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBs
ZUFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVpIHNhbXBsZXMsIEdDR0xlbnVtIGludGVy
bmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQpIG92ZXJyaWRlOwot
ICAgIHZvaWQgaW5zZXJ0RXZlbnRNYXJrZXJFWFQoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7Ci0g
ICAgdm9pZCBwdXNoR3JvdXBNYXJrZXJFWFQoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7Ci0gICAg
dm9pZCBwb3BHcm91cE1hcmtlckVYVCh2b2lkKSBvdmVycmlkZTsKKyAgICB2b2lkIHJlbmRlcmJ1
ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVpIHNh
bXBsZXMsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXpl
aSBoZWlnaHQpOwogCiAgICAgUGxhdGZvcm1HTE9iamVjdCBjcmVhdGVWZXJ0ZXhBcnJheU9FUygp
IG92ZXJyaWRlOwogICAgIHZvaWQgZGVsZXRlVmVydGV4QXJyYXlPRVMoUGxhdGZvcm1HTE9iamVj
dCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oCmluZGV4IDI3MDZl
N2IzMGFiOWIzN2EyMTI3OGM1MTdlZGJkZjE1MmJjMGZhNzAuLjI5ZDAwN2Y4YzhhZDE4Zjg2NDRk
NDA2NDIxOTMyYWY3NmQxMjE1OTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5o
CkBAIC00NSw2ICs0NSw3IEBACiAKICNpZiAhVVNFKEFOR0xFKQogI2luY2x1ZGUgIkFOR0xFV2Vi
S2l0QnJpZGdlLmgiCisjaW5jbHVkZSAiRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmgiCiAjZW5k
aWYKIAogLy8gRklYTUU6IEZpbmQgYSBiZXR0ZXIgd2F5IHRvIGF2b2lkIHRoZSBuYW1lIGNvbmZs
aWN0aW9uIGZvciBOT19FUlJPUi4KQEAgLTQ4MSw3ICs0ODIsMTIgQEAgcHVibGljOgogICAgIC8v
IGFsbCBtZXRob2RzIGl0IGNvbnRhaW5zIG1heSBuZWNlc3NhcmlseSBiZSBzdXBwb3J0ZWQgb24g
dGhlCiAgICAgLy8gY3VycmVudCBoYXJkd2FyZS4gTXVzdCBjYWxsIEV4dGVuc2lvbnNHTDo6c3Vw
cG9ydHMoKSB0bwogICAgIC8vIGRldGVybWluZSB0aGlzLgorI2lmICFVU0UoQU5HTEUpCisgICAg
Ly8gVXNlIGNvdmFyaWFudCByZXR1cm4gdHlwZSBmb3IgT1BFTkdML09QRU5HTF9FUworICAgIEV4
dGVuc2lvbnNHTE9wZW5HTENvbW1vbiYgZ2V0RXh0ZW5zaW9ucygpIGZpbmFsOworI2Vsc2UKICAg
ICBFeHRlbnNpb25zR0wmIGdldEV4dGVuc2lvbnMoKSBmaW5hbDsKKyNlbmRpZgogCiAgICAgdm9p
ZCBzZXRGYWlsTmV4dEdQVVN0YXR1c0NoZWNrKCkgZmluYWwgeyBtX2ZhaWxOZXh0U3RhdHVzQ2hl
Y2sgPSB0cnVlOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEJhc2UuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQmFzZS5j
cHAKaW5kZXggZjQxNGY5Yzk2MzRkNjFiOGQ5MDE1ZDVhNmFmYTUyN2NjMzQyYmU4Zi4uMGZmNTMz
YmU3MTI4NGVkMDhkNTM0M2I5OTk2YTk2ZmExNmUyYjVhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQmFz
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBo
aWNzQ29udGV4dEdMT3BlbkdMQmFzZS5jcHAKQEAgLTExNiw3ICsxMTYsNyBAQCBib29sIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjpyZXNoYXBlRkJPcyhjb25zdCBJbnRTaXplJiBzaXplKQogICAg
ICAgICAvLyBXZSBkb24ndCBhbGxvdyB0aGUgbG9naWMgd2hlcmUgc3RlbmNpbCBpcyByZXF1aXJl
ZCBhbmQgZGVwdGggaXMgbm90LgogICAgICAgICAvLyBTZWUgR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OnZhbGlkYXRlQXR0cmlidXRlcy4KIAotICAgICAgICBFeHRlbnNpb25zR0wmIGV4dGVuc2lv
bnMgPSBnZXRFeHRlbnNpb25zKCk7CisgICAgICAgIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbiYg
ZXh0ZW5zaW9ucyA9IGdldEV4dGVuc2lvbnMoKTsKICAgICAgICAgLy8gVXNlIGEgMjQgYml0IGRl
cHRoIGJ1ZmZlciB3aGVyZSB3ZSBrbm93IHdlIGhhdmUgaXQuCiAgICAgICAgIGlmIChleHRlbnNp
b25zLnN1cHBvcnRzKCJHTF9FWFRfcGFja2VkX2RlcHRoX3N0ZW5jaWwiKSkKICAgICAgICAgICAg
IGludGVybmFsRGVwdGhTdGVuY2lsRm9ybWF0ID0gR0xfREVQVEgyNF9TVEVOQ0lMOF9FWFQ7CkBA
IC00MTcsNyArNDE3LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y2xlYXJEZXB0
aChHQ0dMY2xhbXBmIGRlcHRoKQogfQogCiAjaWYgIVBMQVRGT1JNKEdUSykKLUV4dGVuc2lvbnNH
TCYgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEV4dGVuc2lvbnMoKQorRXh0ZW5zaW9uc0dM
T3BlbkdMQ29tbW9uJiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0RXh0ZW5zaW9ucygpCiB7
CiAgICAgaWYgKCFtX2V4dGVuc2lvbnMpCiAgICAgICAgIG1fZXh0ZW5zaW9ucyA9IG1ha2VVbmlx
dWU8RXh0ZW5zaW9uc0dMT3BlbkdMPih0aGlzLCBpc0dMRVMyQ29tcGxpYW50KCkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMQ29tbW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvbW1vbi5jcHAKaW5kZXggMmRlMTg1YTY2
ODEzMGEzNjJjMTI3NjdmMzgzZjU3ZjEzNDlkZDQ4MS4uZGY5ODNmZGE4ODExMjg5YjYwMjJkYWZl
ZTk4ZGNmOTI5ZGMyNDUxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29tbW9uLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0xDb21tb24uY3BwCkBAIC0xMTgsNyArMTE4LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6dmFsaWRhdGVEZXB0aFN0ZW5jaWwoY29uc3QgY2hhciogcGFja2VkRGVwdGhTdGVuY2kK
IHsKICAgICBhdXRvIGF0dHJzID0gY29udGV4dEF0dHJpYnV0ZXMoKTsKIAotICAgIEV4dGVuc2lv
bnNHTCYgZXh0ZW5zaW9ucyA9IGdldEV4dGVuc2lvbnMoKTsKKyAgICBFeHRlbnNpb25zR0xPcGVu
R0xDb21tb24mIGV4dGVuc2lvbnMgPSBnZXRFeHRlbnNpb25zKCk7CiAgICAgaWYgKGF0dHJzLnN0
ZW5jaWwpIHsKICAgICAgICAgaWYgKGV4dGVuc2lvbnMuc3VwcG9ydHMocGFja2VkRGVwdGhTdGVu
Y2lsRXh0ZW5zaW9uKSkgewogICAgICAgICAgICAgZXh0ZW5zaW9ucy5lbnN1cmVFbmFibGVkKHBh
Y2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xFUy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0xFUy5jcHAKaW5kZXggMGQ0NzZjMjI5ZDZmNmVlOTZjY2Y5OTNkODFkNWMzZGQ2NTIxNWU0
OC4uYWI5YzM1Zjg0OTY0MzZjOTYwZTIxMmE0MWJjM2UwY2ZlOWFiYmYwOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdM
T3BlbkdMRVMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5n
bC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEVTLmNwcApAQCAtMjU0LDcgKzI1NCw3IEBAIHZvaWQg
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNsZWFyRGVwdGgoR0NHTGNsYW1wZiBkZXB0aCkKIH0K
IAogI2lmICFQTEFURk9STShHVEspCi1FeHRlbnNpb25zR0wmIEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjpnZXRFeHRlbnNpb25zKCkKK0V4dGVuc2lvbnNHTE9wZW5HTENvbW1vbiYgR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OmdldEV4dGVuc2lvbnMoKQogewogICAgIGlmICghbV9leHRlbnNpb25z
KQogICAgICAgICBtX2V4dGVuc2lvbnMgPSBtYWtlVW5pcXVlPEV4dGVuc2lvbnNHTE9wZW5HTEVT
Pih0aGlzLCBpc0dMRVMyQ29tcGxpYW50KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250
ZXh0R0xUZXh0dXJlTWFwcGVyLmNwcAppbmRleCAzOWVhNTYxYjRmMjBiZGU3YzMzNDIwMjQxOGZh
ZTg3N2Y3MzE4M2Q4Li5iZWJkMThjMjc4NzAyY2MzN2M4YmVjMjNiYTc3OGRkNzU3MWVjYjlhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhp
Y3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyLmNwcApAQCAt
NDUwLDcgKzQ1MCw3IEBAIFBsYXRmb3JtTGF5ZXIqIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpw
bGF0Zm9ybUxheWVyKCkgY29uc3QKIH0KIAogI2lmIFBMQVRGT1JNKEdUSykgJiYgIVVTRShBTkdM
RSkKLUV4dGVuc2lvbnNHTCYgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEV4dGVuc2lvbnMo
KQorRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uJiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0
RXh0ZW5zaW9ucygpCiB7CiAgICAgaWYgKCFtX2V4dGVuc2lvbnMpIHsKICNpZiBVU0UoT1BFTkdM
X0VTKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>415826</attachid>
            <date>2020-12-09 20:46:40 -0800</date>
            <delta_ts>2020-12-09 22:06:59 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-218896-20201209204640.patch</filename>
            <type>text/plain</type>
            <size>85385</size>
            <attacher name="Rini Patel">rini_patel</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwNTk0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTg5YmE0ODhlN2IwMmI3
YzFjMmUzOTNmOWI4MjgwMjM4YWIwMTI0Yy4uZTc5NmNiMjQzODFiNDE3YTkzMWMxY2JmNjQ5OWVh
OWEwMzA1MmM5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyOSBAQAorMjAyMC0xMi0wNyAgUmlu
aSBQYXRlbCAgPHJpbmlfcGF0ZWxAYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZSB1bnVzZWQg
ZnVuY3Rpb25zIGZyb20gR3JhcGhpY3NDb250ZXh0R0wgYW5kIEV4dGVuc2lvbnNHTAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE4ODk2CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVtb3ZlIHVudXNlZCBm
dW5jdGlvbnMgZnJvbSBHcmFwaGljc0NvbnRleHRHTCBhbmQgRXh0ZW5zaW9uc0dMCisgICAgICAg
IFRoZXkncmUgZGVhZCBjb2RlIGFuZCBtYWtlIGl0IGhhcmRlciB0byBpbXBsZW1lbnQgdGhlIEdQ
VSBQcm9jZXNzIHZlcnNpb24uCisKKyAgICAgICAgLSBJZiB0aGUgZnVuY3Rpb24gaXMgdW51c2Vk
LCByZW1vdmUgaXQgZnVsbHkKKyAgICAgICAgLSBJZiB0aGUgZnVuY3Rpb24gaXMgdW51c2VkIGlu
IFVTRShBTkdMRSkgV2ViR0wgcGFydCwgcmVtb3ZlIHRoZSBmdW5jdGlvbiBmcm9tIEdyYXBoaWNz
Q29udGV4dEdMIGFuZCBBTkdMRSBHcmFwaGljc0NvbnRleHRHTE9wZW5HTAorCisgICAgICAgICog
aHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL0V4dGVuc2lvbnNHTC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lv
bnNHTEFOR0xFOjpFeHRlbnNpb25zR0xBTkdMRSk6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNp
b25zR0xBTkdMRTo6aW5pdGlhbGl6ZUF2YWlsYWJsZUV4dGVuc2lvbnMpOgorICAgICAgICAoV2Vi
Q29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmJsaXRGcmFtZWJ1ZmZlckFOR0xFKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpyZW5kZXJidWZmZXJTdG9yYWdl
TXVsdGlzYW1wbGVBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25z
R0xBTkdMRTo6aW5zZXJ0RXZlbnRNYXJrZXJFWFQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OnB1c2hHcm91cE1hcmtlckVYVCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6cG9wR3JvdXBNYXJrZXJFWFQpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OnJlYWRQaXhlbHNSb2J1
c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6
dGV4UGFyYW1ldGVyZnZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpF
eHRlbnNpb25zR0xBTkdMRTo6dGV4UGFyYW1ldGVyaXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6Z2V0UXVlcnlpdlJvYnVzdEFOR0xF
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpnZXRRdWVy
eU9iamVjdHVpdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVu
c2lvbnNHTEFOR0xFOjpnZXRCdWZmZXJQb2ludGVydlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpnZXRWZXJ0ZXhBdHRyaWJJaXZSb2J1
c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6
Z2V0VmVydGV4QXR0cmliSXVpdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpnZXRVbmlmb3JtdWl2Um9idXN0QU5HTEUpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldEJ1ZmZlclBhcmFtZXRl
cmk2NHZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25z
R0xBTkdMRTo6c2FtcGxlclBhcmFtZXRlcml2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OnNhbXBsZXJQYXJhbWV0ZXJmdlJvYnVzdEFO
R0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpnZXRT
YW1wbGVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpFeHRlbnNpb25zR0xBTkdMRTo6Z2V0U2FtcGxlclBhcmFtZXRlcmZ2Um9idXN0QU5HTEUpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldEZyYW1lYnVm
ZmVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpF
eHRlbnNpb25zR0xBTkdMRTo6Z2V0UHJvZ3JhbUludGVyZmFjZWl2Um9idXN0QU5HTEUpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldEJvb2xlYW5pX3ZS
b2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdM
RTo6Z2V0TXVsdGlzYW1wbGVmdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpnZXRUZXhMZXZlbFBhcmFtZXRlcml2Um9idXN0QU5HTEUp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldFRleExl
dmVsUGFyYW1ldGVyZnZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpF
eHRlbnNpb25zR0xBTkdMRTo6Z2V0UG9pbnRlcnZSb2J1c3RBTkdMRVJvYnVzdEFOR0xFKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpnZXRuVW5pZm9ybWZ2
Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5H
TEU6OmdldG5Vbmlmb3JtaXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpFeHRlbnNpb25zR0xBTkdMRTo6Z2V0blVuaWZvcm11aXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6dGV4UGFyYW1ldGVySWl2Um9i
dXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6
OnRleFBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpFeHRlbnNpb25zR0xBTkdMRTo6Z2V0VGV4UGFyYW1ldGVySWl2Um9idXN0QU5HTEUpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldFRleFBhcmFtZXRl
ckl1aXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25z
R0xBTkdMRTo6c2FtcGxlclBhcmFtZXRlcklpdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpzYW1wbGVyUGFyYW1ldGVySXVpdlJvYnVz
dEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpn
ZXRTYW1wbGVyUGFyYW1ldGVySWl2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldFNhbXBsZXJQYXJhbWV0ZXJJdWl2Um9idXN0QU5H
TEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldFF1
ZXJ5T2JqZWN0aXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRl
bnNpb25zR0xBTkdMRTo6Z2V0UXVlcnlPYmplY3RpNjR2Um9idXN0QU5HTEUpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldFF1ZXJ5T2JqZWN0dWk2NHZS
b2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUv
RXh0ZW5zaW9uc0dMQU5HTEUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wv
RXh0ZW5zaW9uc0dMT3BlbkdMLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9w
ZW5HTDo6YmxpdEZyYW1lYnVmZmVyQU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
RXh0ZW5zaW9uc0dMT3BlbkdMOjpyZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVBTkdMRSk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0w6Omluc2VydEV2
ZW50TWFya2VyRVhUKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9w
ZW5HTDo6cHVzaEdyb3VwTWFya2VyRVhUKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4
dGVuc2lvbnNHTE9wZW5HTDo6cG9wR3JvdXBNYXJrZXJFWFQpOiBEZWxldGVkLgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6cmVhZFBpeGVsc1Jv
YnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5H
TENvbW1vbjo6dGV4UGFyYW1ldGVyZnZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OnRleFBhcmFtZXRlcml2Um9idXN0QU5H
TEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9u
OjpnZXRRdWVyeWl2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0
ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRRdWVyeU9iamVjdHVpdlJvYnVzdEFOR0xFKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0QnVm
ZmVyUG9pbnRlcnZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRl
bnNpb25zR0xPcGVuR0xDb21tb246OmdldFZlcnRleEF0dHJpYklpdlJvYnVzdEFOR0xFKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0VmVy
dGV4QXR0cmliSXVpdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4
dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0VW5pZm9ybXVpdlJvYnVzdEFOR0xFKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0QnVmZmVy
UGFyYW1ldGVyaTY0dlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4
dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6c2FtcGxlclBhcmFtZXRlcml2Um9idXN0QU5HTEUpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpzYW1w
bGVyUGFyYW1ldGVyZnZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpF
eHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFNhbXBsZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xF
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6
Z2V0U2FtcGxlclBhcmFtZXRlcmZ2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRGcmFtZWJ1ZmZlclBhcmFtZXRlcml2
Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3Bl
bkdMQ29tbW9uOjpnZXRQcm9ncmFtSW50ZXJmYWNlaXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldEJvb2xlYW5pX3ZS
b2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVu
R0xDb21tb246OmdldE11bHRpc2FtcGxlZnZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFRleExldmVsUGFyYW1ldGVy
aXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xP
cGVuR0xDb21tb246OmdldFRleExldmVsUGFyYW1ldGVyZnZSb2J1c3RBTkdMRSk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFBvaW50ZXJ2
Um9idXN0QU5HTEVSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRl
bnNpb25zR0xPcGVuR0xDb21tb246OmdldG5Vbmlmb3JtZnZSb2J1c3RBTkdMRSk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldG5Vbmlmb3Jt
aXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xP
cGVuR0xDb21tb246OmdldG5Vbmlmb3JtdWl2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjp0ZXhQYXJhbWV0ZXJJaXZSb2J1
c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xD
b21tb246OnRleFBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFRleFBhcmFtZXRlcklpdlJvYnVz
dEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTENv
bW1vbjo6Z2V0VGV4UGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6c2FtcGxlclBhcmFtZXRlcklpdlJv
YnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5H
TENvbW1vbjo6c2FtcGxlclBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFNhbXBsZXJQYXJhbWV0
ZXJJaXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25z
R0xPcGVuR0xDb21tb246OmdldFNhbXBsZXJQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRRdWVy
eU9iamVjdGl2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5z
aW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRRdWVyeU9iamVjdGk2NHZSb2J1c3RBTkdMRSk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFF1ZXJ5
T2JqZWN0dWk2NHZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5oOgorICAgICAgICAoV2ViQ29y
ZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjppc05WSURJQSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmlzQU1EIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6aXNJbnRlbCBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmlzSW1hZ2luYXRpb24gY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjp2ZW5kb3Ig
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpyZXF1
aXJlc0J1aWx0SW5GdW5jdGlvbkVtdWxhdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpF
eHRlbnNpb25zR0xPcGVuR0xDb21tb246OnJlcXVpcmVzUmVzdHJpY3RlZE1heGltdW1UZXh0dXJl
U2l6ZSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lv
bnNHTE9wZW5HTEVTLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTEVT
OjpibGl0RnJhbWVidWZmZXJBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRl
bnNpb25zR0xPcGVuR0xFUzo6aW5zZXJ0RXZlbnRNYXJrZXJFWFQpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMRVM6OnB1c2hHcm91cE1hcmtlckVYVCk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xFUzo6cG9wR3JvdXBN
YXJrZXJFWFQpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9F
eHRlbnNpb25zR0xPcGVuR0xFUy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5n
bC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEJhc2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlc2hhcGVGQk9zKToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRFeHRlbnNpb25zKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb21tb24uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnZhbGlkYXRlRGVw
dGhTdGVuY2lsKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0xFUy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6Z2V0RXh0ZW5zaW9ucyk6CisKIDIwMjAtMTItMDkgIFJ5YW4gSGFkZGFkICA8cnlh
bmhhZGRhZEBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcmV2ZXJ0aW5nIHIyNzA1
NDQgYW5kIHIyNzA1NjkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCmluZGV4IGY3YzZhMmU4MmE0YmYwMzdhMWI0
NzdkNzgzZmE1NDFhYzRmNTQ2OTYuLjkxODhhNjM5YmE3OTYyZThjY2Q4OTNlNTAwOTUwMmU3Mzgx
MDFkNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCkBAIC03NDEsMTAgKzc0MSw2IEBAIHN0ZDo6dW5pcXVl
X3B0cjxXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlPiBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
OjpjcmVhdGUoQ2FuCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIGF1dG8m
IGV4dGVuc2lvbnMgPSBjb250ZXh0LT5nZXRFeHRlbnNpb25zKCk7Ci0gICAgaWYgKGV4dGVuc2lv
bnMuc3VwcG9ydHMoIkdMX0VYVF9kZWJ1Z19tYXJrZXIiX3MpKQotICAgICAgICBleHRlbnNpb25z
LnB1c2hHcm91cE1hcmtlckVYVCgiV2ViR0xSZW5kZXJpbmdDb250ZXh0Il9zKTsKLQogICAgIHN0
ZDo6dW5pcXVlX3B0cjxXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlPiByZW5kZXJpbmdDb250ZXh0
OwogI2lmIEVOQUJMRShXRUJHTDIpCiAgICAgaWYgKHR5cGUgPT0gIndlYmdsMiIpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9FeHRlbnNpb25zR0wuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0V4dGVuc2lvbnNHTC5oCmluZGV4IGQ1MDIx
ZGQzMzRlZGY5MWEzNDIzMGJlMDE2ODkyMDc0MjQ5ZWIwZTguLmFjOGM4ODkzMjM0NTY3MmU5ZDA1
M2ZjZDk3YTIyZGE4ZTk5MDVlOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0V4dGVuc2lvbnNHTC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0V4dGVuc2lvbnNHTC5oCkBAIC0yODEsMTIgKzI4MSw2IEBAIHB1YmxpYzoKICAgICAv
LyBleHRlcm5hbGx5LgogICAgIHZpcnR1YWwgR0NHTGludCBnZXRHcmFwaGljc1Jlc2V0U3RhdHVz
QVJCKCkgPSAwOwogCi0gICAgLy8gR0xfQU5HTEVfZnJhbWVidWZmZXJfYmxpdAotICAgIHZpcnR1
YWwgdm9pZCBibGl0RnJhbWVidWZmZXJBTkdMRShHQ0dMaW50IHNyY1gwLCBHQ0dMaW50IHNyY1kw
LCBHQ0dMaW50IHNyY1gxLCBHQ0dMaW50IHNyY1kxLCBHQ0dMaW50IGRzdFgwLCBHQ0dMaW50IGRz
dFkwLCBHQ0dMaW50IGRzdFgxLCBHQ0dMaW50IGRzdFkxLCBHQ0dMYml0ZmllbGQgbWFzaywgR0NH
TGVudW0gZmlsdGVyKSA9IDA7Ci0KLSAgICAvLyBHTF9BTkdMRV9mcmFtZWJ1ZmZlcl9tdWx0aXNh
bXBsZQotICAgIHZpcnR1YWwgdm9pZCByZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVBTkdM
RShHQ0dMZW51bSB0YXJnZXQsIEdDR0xzaXplaSBzYW1wbGVzLCBHQ0dMZW51bSBpbnRlcm5hbGZv
cm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KSA9IDA7Ci0KICAgICAvLyBH
TF9PRVNfdmVydGV4X2FycmF5X29iamVjdAogICAgIHZpcnR1YWwgUGxhdGZvcm1HTE9iamVjdCBj
cmVhdGVWZXJ0ZXhBcnJheU9FUygpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlVmVydGV4
QXJyYXlPRVMoUGxhdGZvcm1HTE9iamVjdCkgPSAwOwpAQCAtMjk2LDExICsyOTAsNiBAQCBwdWJs
aWM6CiAgICAgLy8gR0xfQU5HTEVfdHJhbnNsYXRlZF9zaGFkZXJfc291cmNlCiAgICAgdmlydHVh
bCBTdHJpbmcgZ2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFKFBsYXRmb3JtR0xPYmplY3Qp
ID0gMDsKIAotICAgIC8vIEdMX0VYVF9kZWJ1Z19tYXJrZXIKLSAgICB2aXJ0dWFsIHZvaWQgaW5z
ZXJ0RXZlbnRNYXJrZXJFWFQoY29uc3QgU3RyaW5nJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBw
dXNoR3JvdXBNYXJrZXJFWFQoY29uc3QgU3RyaW5nJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBw
b3BHcm91cE1hcmtlckVYVCgpID0gMDsKLQogICAgIC8vIEdMX0FSQl9kcmF3X2J1ZmZlcnMgLyBH
TF9FWFRfZHJhd19idWZmZXJzCiAgICAgdmlydHVhbCB2b2lkIGRyYXdCdWZmZXJzRVhUKEdDR0xT
cGFuPGNvbnN0IEdDR0xlbnVtPiBidWZzKSA9IDA7CiAKQEAgLTMwOSw0NyArMjk4LDYgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgdm9pZCBkcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRShHQ0dMZW51
bSBtb2RlLCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xlbnVtIHR5cGUsIEdDR0x2b2lkcHRyIG9mZnNl
dCwgR0NHTHNpemVpIHByaW1jb3VudCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB2ZXJ0ZXhBdHRy
aWJEaXZpc29yQU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0x1aW50IGRpdmlzb3IpID0gMDsKIAot
ICAgIC8vIEdMX0FOR0xFX3JvYnVzdF9jbGllbnRfbWVtb3J5Ci0gICAgdmlydHVhbCB2b2lkIHJl
YWRQaXhlbHNSb2J1c3RBTkdMRShHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRo
LCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xz
aXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHNpemVpKiBjb2x1bW5zLCBHQ0dM
c2l6ZWkqIHJvd3MsIEdDR0x2b2lkKiBwaXhlbHMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgdGV4
UGFyYW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBH
Q0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGZsb2F0KiBwYXJhbXMpID0gMDsKLSAgICB2aXJ0
dWFsIHZvaWQgdGV4UGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xl
bnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGludCogcGFyYW1zKSA9IDA7
Ci0KLSAgICB2aXJ0dWFsIHZvaWQgZ2V0UXVlcnlpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdl
dCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwg
R0NHTGludCogcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldFF1ZXJ5T2JqZWN0dWl2
Um9idXN0QU5HTEUoR0NHTHVpbnQgaWQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6
ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0x1aW50KiBwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFs
IHZvaWQgZ2V0QnVmZmVyUG9pbnRlcnZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xl
bnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0x2b2lk
KiogcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldFZlcnRleEF0dHJpYklpdlJvYnVz
dEFOR0xFKEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUs
IEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZv
aWQgZ2V0VmVydGV4QXR0cmliSXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IGluZGV4LCBHQ0dMZW51
bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMdWludCog
cGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldFVuaWZvcm11aXZSb2J1c3RBTkdMRShH
Q0dMdWludCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NH
THNpemVpKiBsZW5ndGgsIEdDR0x1aW50KiBwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQg
Z2V0QnVmZmVyUGFyYW1ldGVyaTY0dlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVu
dW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludDY0
KiBwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgc2FtcGxlclBhcmFtZXRlcml2Um9idXN0
QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXpl
LCBjb25zdCBHQ0dMaW50KiBwYXJhbSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBzYW1wbGVyUGFy
YW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NH
THNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xmbG9hdCogcGFyYW0pID0gMDsKLSAgICB2aXJ0dWFs
IHZvaWQgZ2V0U2FtcGxlclBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwg
R0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NH
TGludCogcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldFNhbXBsZXJQYXJhbWV0ZXJm
dlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkg
YnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xmbG9hdCogcGFyYW1zKSA9IDA7Ci0KLSAg
ICB2aXJ0dWFsIHZvaWQgZ2V0RnJhbWVidWZmZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xl
bnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkq
IGxlbmd0aCwgR0NHTGludCogcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldFByb2dy
YW1JbnRlcmZhY2VpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xlbnVtIHByb2dy
YW1JbnRlcmZhY2UsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVp
KiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRCb29s
ZWFuaV92Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMdWludCBpbmRleCwgR0NHTHNp
emVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMYm9vbGVhbiogZGF0YSkgPSAwOyAv
LyBOT0xJTlQKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0TXVsdGlzYW1wbGVmdlJvYnVzdEFOR0xFKEdD
R0xlbnVtIHBuYW1lLCBHQ0dMdWludCBpbmRleCwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXpl
aSogbGVuZ3RoLCBHQ0dMZmxvYXQqIHZhbCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRUZXhM
ZXZlbFBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVs
LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBH
Q0dMaW50KiBwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0VGV4TGV2ZWxQYXJhbWV0
ZXJmdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0g
cG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGZsb2F0KiBw
YXJhbXMpID0gMDsKLQotICAgIHZpcnR1YWwgdm9pZCBnZXRQb2ludGVydlJvYnVzdEFOR0xFUm9i
dXN0QU5HTEUoR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxl
bmd0aCwgR0NHTHZvaWQqKiBwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0blVuaWZv
cm1mdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xz
aXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGZsb2F0KiBwYXJhbXMpID0gMDsK
LSAgICB2aXJ0dWFsIHZvaWQgZ2V0blVuaWZvcm1pdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dy
YW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0
aCwgR0NHTGludCogcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldG5Vbmlmb3JtdWl2
Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVp
IGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMdWludCogcGFyYW1zKSA9IDA7Ci0gICAg
dmlydHVhbCB2b2lkIHRleFBhcmFtZXRlcklpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwg
R0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMaW50KiBwYXJhbXMp
ID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgdGV4UGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFKEdDR0xl
bnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dM
dWludCogcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldFRleFBhcmFtZXRlcklpdlJv
YnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZT
aXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVh
bCB2b2lkIGdldFRleFBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdD
R0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0x1
aW50KiBwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgc2FtcGxlclBhcmFtZXRlcklpdlJv
YnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVm
U2l6ZSwgY29uc3QgR0NHTGludCogcGFyYW0pID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgc2FtcGxl
clBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFt
ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0x1aW50KiBwYXJhbSkgPSAwOwotICAgIHZp
cnR1YWwgdm9pZCBnZXRTYW1wbGVyUGFyYW1ldGVySWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2Ft
cGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0
aCwgR0NHTGludCogcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldFNhbXBsZXJQYXJh
bWV0ZXJJdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdD
R0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHVpbnQqIHBhcmFtcykgPSAw
OwotCi0gICAgdmlydHVhbCB2b2lkIGdldFF1ZXJ5T2JqZWN0aXZSb2J1c3RBTkdMRShHQ0dMdWlu
dCBpZCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0
aCwgR0NHTGludCogcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldFF1ZXJ5T2JqZWN0
aTY0dlJvYnVzdEFOR0xFKEdDR0x1aW50IGlkLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1
ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50NjQqIHBhcmFtcykgPSAwOwotICAgIHZp
cnR1YWwgdm9pZCBnZXRRdWVyeU9iamVjdHVpNjR2Um9idXN0QU5HTEUoR0NHTHVpbnQgaWQsIEdD
R0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0x1
aW50NjQqIHBhcmFtcykgPSAwOwotCiAgICAgLy8gT3RoZXIgZnVuY3Rpb25zLgogI2lmICFVU0Uo
QU5HTEUpCiAgICAgLy8gRVhUIFJvYnVzdG5lc3MgLSB1c2VzIGdldEdyYXBoaWNzUmVzZXRTdGF0
dXNBUkIKQEAgLTM1NywxNiArMzA1LDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBnZXRu
VW5pZm9ybWZ2RVhUKEdDR0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXpl
aSBidWZTaXplLCBHQ0dMZmxvYXQqIHBhcmFtcykgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBnZXRu
VW5pZm9ybWl2RVhUKEdDR0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXpl
aSBidWZTaXplLCBHQ0dMaW50KiBwYXJhbXMpID0gMDsKIAotICAgIHZpcnR1YWwgYm9vbCBpc05W
SURJQSgpID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgaXNBTUQoKSA9IDA7Ci0gICAgdmlydHVhbCBi
b29sIGlzSW50ZWwoKSA9IDA7Ci0gICAgdmlydHVhbCBib29sIGlzSW1hZ2luYXRpb24oKSA9IDA7
Ci0gICAgdmlydHVhbCBTdHJpbmcgdmVuZG9yKCkgPSAwOwotCi0gICAgLy8gU29tZSBjb25maWd1
cmF0aW9ucyBoYXZlIGJ1Z3MgcmVnYXJkaW5nIGJ1aWx0LWluIGZ1bmN0aW9ucyBpbiB0aGVpciBP
cGVuR0wgZHJpdmVycwotICAgIC8vIHRoYXQgbXVzdCBiZSBhdm9pZGVkLiBQb3J0cyBzaG91bGQg
aW1wbGVtZW50IHRoZXNlIGZsYWdzIG9uIHN1Y2ggY29uZmlndXJhdGlvbnMuCi0gICAgdmlydHVh
bCBib29sIHJlcXVpcmVzQnVpbHRJbkZ1bmN0aW9uRW11bGF0aW9uKCkgPSAwOwotICAgIHZpcnR1
YWwgYm9vbCByZXF1aXJlc1Jlc3RyaWN0ZWRNYXhpbXVtVGV4dHVyZVNpemUoKSA9IDA7CiAjZW5k
aWYKIAogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Fu
Z2xlL0V4dGVuc2lvbnNHTEFOR0xFLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmNwcAppbmRleCA5MjBkOTJmMzVjYWRkOGJiMDg1
MjNkMTc2NTc1NDEyMDk3ZjZjOTZmLi5mNTQwYWIzY2E4NTBiMWYyN2NjNjJlZTk2NGNmMDRlMWQ4
MTVlOGFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmds
ZS9FeHRlbnNpb25zR0xBTkdMRS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUuY3BwCkBAIC0zMywxMCArMzMsOSBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLUV4dGVuc2lvbnNHTEFOR0xFOjpFeHRlbnNpb25zR0xBTkdM
RShHcmFwaGljc0NvbnRleHRHTE9wZW5HTCogY29udGV4dCwgYm9vbCB1c2VJbmRleGVkR2V0U3Ry
aW5nKQorRXh0ZW5zaW9uc0dMQU5HTEU6OkV4dGVuc2lvbnNHTEFOR0xFKEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMKiBjb250ZXh0KQogICAgIDogbV9pbml0aWFsaXplZEF2YWlsYWJsZUV4dGVuc2lv
bnMoZmFsc2UpCiAgICAgLCBtX2NvbnRleHQoY29udGV4dCkKLSAgICAsIG1fdXNlSW5kZXhlZEdl
dFN0cmluZyh1c2VJbmRleGVkR2V0U3RyaW5nKQogewogfQogCkBAIC05OSw0MiArOTgsMTUgQEAg
U3RyaW5nIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUo
UGxhdGZvcm1HTE9iamVjdCBzaGFkZXIKIAogdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6aW5pdGlh
bGl6ZUF2YWlsYWJsZUV4dGVuc2lvbnMoKQogewotICAgIGlmIChtX3VzZUluZGV4ZWRHZXRTdHJp
bmcpIHsKLSAgICAgICAgR0xpbnQgbnVtRXh0ZW5zaW9ucyA9IDA7Ci0gICAgICAgIGdsOjpHZXRJ
bnRlZ2VydihHTF9OVU1fRVhURU5TSU9OUywgJm51bUV4dGVuc2lvbnMpOwotICAgICAgICBmb3Ig
KEdMaW50IGkgPSAwOyBpIDwgbnVtRXh0ZW5zaW9uczsgKytpKQotICAgICAgICAgICAgbV9hdmFp
bGFibGVFeHRlbnNpb25zLmFkZChnbDo6R2V0U3RyaW5naShHTF9FWFRFTlNJT05TLCBpKSk7Ci0g
ICAgICAgIGdsOjpHZXRJbnRlZ2VydihHTF9OVU1fUkVRVUVTVEFCTEVfRVhURU5TSU9OU19BTkdM
RSwgJm51bUV4dGVuc2lvbnMpOwotICAgICAgICBmb3IgKEdMaW50IGkgPSAwOyBpIDwgbnVtRXh0
ZW5zaW9uczsgKytpKQotICAgICAgICAgICAgbV9yZXF1ZXN0YWJsZUV4dGVuc2lvbnMuYWRkKGds
OjpHZXRTdHJpbmdpKEdMX1JFUVVFU1RBQkxFX0VYVEVOU0lPTlNfQU5HTEUsIGkpKTsKLSAgICB9
IGVsc2UgewotICAgICAgICBTdHJpbmcgZXh0ZW5zaW9uc1N0cmluZyA9IGdldEV4dGVuc2lvbnMo
KTsKLSAgICAgICAgZm9yIChhdXRvJiBleHRlbnNpb24gOiBleHRlbnNpb25zU3RyaW5nLnNwbGl0
KCcgJykpCi0gICAgICAgICAgICBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuYWRkKGV4dGVuc2lvbik7
Ci0gICAgICAgIGV4dGVuc2lvbnNTdHJpbmcgPSBTdHJpbmcocmVpbnRlcnByZXRfY2FzdDxjb25z
dCBjaGFyKj4oZ2w6OkdldFN0cmluZyhHTF9SRVFVRVNUQUJMRV9FWFRFTlNJT05TX0FOR0xFKSkp
OwotICAgICAgICBmb3IgKGF1dG8mIGV4dGVuc2lvbiA6IGV4dGVuc2lvbnNTdHJpbmcuc3BsaXQo
JyAnKSkKLSAgICAgICAgICAgIG1fcmVxdWVzdGFibGVFeHRlbnNpb25zLmFkZChleHRlbnNpb24p
OwotICAgIH0KKyAgICBTdHJpbmcgZXh0ZW5zaW9uc1N0cmluZyA9IGdldEV4dGVuc2lvbnMoKTsK
KyAgICBmb3IgKGF1dG8mIGV4dGVuc2lvbiA6IGV4dGVuc2lvbnNTdHJpbmcuc3BsaXQoJyAnKSkK
KyAgICAgICAgbV9hdmFpbGFibGVFeHRlbnNpb25zLmFkZChleHRlbnNpb24pOworICAgIGV4dGVu
c2lvbnNTdHJpbmcgPSBTdHJpbmcocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZ2w6Okdl
dFN0cmluZyhHTF9SRVFVRVNUQUJMRV9FWFRFTlNJT05TX0FOR0xFKSkpOworICAgIGZvciAoYXV0
byYgZXh0ZW5zaW9uIDogZXh0ZW5zaW9uc1N0cmluZy5zcGxpdCgnICcpKQorICAgICAgICBtX3Jl
cXVlc3RhYmxlRXh0ZW5zaW9ucy5hZGQoZXh0ZW5zaW9uKTsKICAgICBtX2luaXRpYWxpemVkQXZh
aWxhYmxlRXh0ZW5zaW9ucyA9IHRydWU7CiB9CiAKLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmJs
aXRGcmFtZWJ1ZmZlckFOR0xFKEdDR0xpbnQgc3JjWDAsIEdDR0xpbnQgc3JjWTAsIEdDR0xpbnQg
c3JjWDEsIEdDR0xpbnQgc3JjWTEsIEdDR0xpbnQgZHN0WDAsIEdDR0xpbnQgZHN0WTAsIEdDR0xp
bnQgZHN0WDEsIEdDR0xpbnQgZHN0WTEsIEdDR0xiaXRmaWVsZCBtYXNrLCBHQ0dMZW51bSBmaWx0
ZXIpCi17Ci0gICAgLy8gRklYTUU6IGNvbnNpZGVyIGFkZGluZyBzdXBwb3J0IGZvciBBUFBMRV9m
cmFtZWJ1ZmZlcl9tdWx0aXNhbXBsZS4KLSAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRD
dXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpCbGl0RnJhbWVidWZmZXJBTkdM
RShzcmNYMCwgc3JjWTAsIHNyY1gxLCBzcmNZMSwgZHN0WDAsIGRzdFkwLCBkc3RYMSwgZHN0WTEs
IG1hc2ssIGZpbHRlcik7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OnJlbmRlcmJ1ZmZl
clN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVpIHNhbXBs
ZXMsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBo
ZWlnaHQpCi17Ci0gICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAg
ICAgICByZXR1cm47Ci0KLSAgICBnbDo6UmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5H
TEUodGFyZ2V0LCBzYW1wbGVzLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCk7Ci19Ci0K
IFBsYXRmb3JtR0xPYmplY3QgRXh0ZW5zaW9uc0dMQU5HTEU6OmNyZWF0ZVZlcnRleEFycmF5T0VT
KCkKIHsKICAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCkBAIC0xNzUs
MjQgKzE0Nyw2IEBAIHZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmJpbmRWZXJ0ZXhBcnJheU9FUyhQ
bGF0Zm9ybUdMT2JqZWN0IGFycmF5KQogICAgIGdsOjpCaW5kVmVydGV4QXJyYXlPRVMoYXJyYXkp
OwogfQogCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjppbnNlcnRFdmVudE1hcmtlckVYVChjb25z
dCBTdHJpbmcmKQotewotICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQgdGhpcyBmdW5jdGlvbiBhbmQg
YWRkIEdMX0VYVF9kZWJ1Z19tYXJrZXIgaW4gc3VwcG9ydHMoKS4KLSAgICByZXR1cm47Ci19Ci0K
LXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OnB1c2hHcm91cE1hcmtlckVYVChjb25zdCBTdHJpbmcm
KQotewotICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQgdGhpcyBmdW5jdGlvbiBhbmQgYWRkIEdMX0VY
VF9kZWJ1Z19tYXJrZXIgaW4gc3VwcG9ydHMoKS4KLSAgICByZXR1cm47Ci19Ci0KLXZvaWQgRXh0
ZW5zaW9uc0dMQU5HTEU6OnBvcEdyb3VwTWFya2VyRVhUKHZvaWQpCi17Ci0gICAgLy8gRklYTUU6
IGltcGxlbWVudCB0aGlzIGZ1bmN0aW9uIGFuZCBhZGQgR0xfRVhUX2RlYnVnX21hcmtlciBpbiBz
dXBwb3J0cygpLgotICAgIHJldHVybjsKLX0KLQogYm9vbCBFeHRlbnNpb25zR0xBTkdMRTo6c3Vw
cG9ydHNFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBuYW1lKQogewogICAgIHJldHVybiBtX2F2YWls
YWJsZUV4dGVuc2lvbnMuY29udGFpbnMobmFtZSkgfHwgbV9yZXF1ZXN0YWJsZUV4dGVuc2lvbnMu
Y29udGFpbnMobmFtZSk7CkBAIC0yNDgsMjkxICsyMDIsNiBAQCBHQ0dMZW51bSBFeHRlbnNpb25z
R0xBTkdMRTo6YWRqdXN0V2ViR0wxVGV4dHVyZUludGVybmFsRm9ybWF0KEdDR0xlbnVtIGludGVy
bmFsZgogICAgIHJldHVybiBpbnRlcm5hbGZvcm1hdDsKIH0KIAotLy8gR0xfQU5HTEVfcm9idXN0
X2NsaWVudF9tZW1vcnkKLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OnJlYWRQaXhlbHNSb2J1c3RB
TkdMRShpbnQgeCwgaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NH
TGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVp
ICpsZW5ndGgsIEdDR0xzaXplaSAqY29sdW1ucywgR0NHTHNpemVpICpyb3dzLCB2b2lkICpwaXhl
bHMpCi17Ci0gICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAg
ICByZXR1cm47Ci0KLSAgICBnbDo6UmVhZFBpeGVsc1JvYnVzdEFOR0xFKHgsIHksIHdpZHRoLCBo
ZWlnaHQsIGZvcm1hdCwgdHlwZSwgYnVmU2l6ZSwgbGVuZ3RoLCBjb2x1bW5zLCByb3dzLCBwaXhl
bHMpOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjp0ZXhQYXJhbWV0ZXJmdlJvYnVzdEFO
R0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBj
b25zdCBHQ0dMZmxvYXQgKnBhcmFtcykKLXsKLSAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRl
eHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpUZXhQYXJhbWV0ZXJmdlJv
YnVzdEFOR0xFKHRhcmdldCwgcG5hbWUsIGJ1ZlNpemUsIHBhcmFtcyk7Ci19Ci0KLXZvaWQgRXh0
ZW5zaW9uc0dMQU5HTEU6OnRleFBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xpbnQgKnBhcmFt
cykKLXsKLSAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAg
IHJldHVybjsKLQotICAgIGdsOjpUZXhQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKHRhcmdldCwgcG5h
bWUsIGJ1ZlNpemUsIHBhcmFtcyk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldFF1
ZXJ5aXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6
ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykKLXsKLSAgICBp
ZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQot
ICAgIGdsOjpHZXRRdWVyeWl2Um9idXN0QU5HTEUodGFyZ2V0LCBwbmFtZSwgYnVmU2l6ZSwgbGVu
Z3RoLCBwYXJhbXMpOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRRdWVyeU9iamVj
dHVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IGlkLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1
ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMdWludCAqcGFyYW1zKQotewotICAgIGlmICgh
bV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAg
Z2w6OkdldFF1ZXJ5T2JqZWN0dWl2Um9idXN0QU5HTEUoaWQsIHBuYW1lLCBidWZTaXplLCBsZW5n
dGgsIHBhcmFtcyk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldEJ1ZmZlclBvaW50
ZXJ2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVp
IGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCB2b2lkICoqcGFyYW1zKQotewotICAgIGlmICgh
bV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAg
Z2w6OkdldEJ1ZmZlclBvaW50ZXJ2Um9idXN0QU5HTEUodGFyZ2V0LCBwbmFtZSwgYnVmU2l6ZSwg
bGVuZ3RoLCBwYXJhbXMpOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRWZXJ0ZXhB
dHRyaWJJaXZSb2J1c3RBTkdMRShHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xz
aXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKQotewotICAg
IGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwot
Ci0gICAgZ2w6OkdldFZlcnRleEF0dHJpYklpdlJvYnVzdEFOR0xFKGluZGV4LCBwbmFtZSwgYnVm
U2l6ZSwgbGVuZ3RoLCBwYXJhbXMpOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRW
ZXJ0ZXhBdHRyaWJJdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1l
LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0x1aW50ICpwYXJhbXMp
Ci17Ci0gICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICBy
ZXR1cm47Ci0KLSAgICBnbDo6R2V0VmVydGV4QXR0cmliSXVpdlJvYnVzdEFOR0xFKGluZGV4LCBw
bmFtZSwgYnVmU2l6ZSwgbGVuZ3RoLCBwYXJhbXMpOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTEFO
R0xFOjpnZXRVbmlmb3JtdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBs
b2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMdWludCAq
cGFyYW1zKQotewotICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAg
ICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OkdldFVuaWZvcm11aXZSb2J1c3RBTkdMRShwcm9ncmFt
LCBsb2NhdGlvbiwgYnVmU2l6ZSwgbGVuZ3RoLCBwYXJhbXMpOwotfQotCi12b2lkIEV4dGVuc2lv
bnNHTEFOR0xFOjpnZXRCdWZmZXJQYXJhbWV0ZXJpNjR2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3Ro
LCBHQ0dMaW50NjQgKnBhcmFtcykKLXsKLSAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRD
dXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpHZXRCdWZmZXJQYXJhbWV0ZXJp
NjR2Um9idXN0QU5HTEUodGFyZ2V0LCBwbmFtZSwgYnVmU2l6ZSwgbGVuZ3RoLCByZWludGVycHJl
dF9jYXN0PEdMaW50NjQqPihwYXJhbXMpKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6
c2FtcGxlclBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0g
cG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMaW50ICpwYXJhbSkKLXsKLSAgICBp
ZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQot
ICAgIGdsOjpTYW1wbGVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShzYW1wbGVyLCBwbmFtZSwgYnVm
U2l6ZSwgcGFyYW0pOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpzYW1wbGVyUGFyYW1l
dGVyZnZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNp
emVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xmbG9hdCAqcGFyYW0pCi17Ci0gICAgaWYgKCFtX2NvbnRl
eHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6U2Ft
cGxlclBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoc2FtcGxlciwgcG5hbWUsIGJ1ZlNpemUsIHBhcmFt
KTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0U2FtcGxlclBhcmFtZXRlcml2Um9i
dXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZT
aXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKQotewotICAgIGlmICghbV9j
b250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6
OkdldFNhbXBsZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKHNhbXBsZXIsIHBuYW1lLCBidWZTaXpl
LCBsZW5ndGgsIHBhcmFtcyk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldFNhbXBs
ZXJQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1l
LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xmbG9hdCAqcGFyYW1z
KQotewotICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgZ2w6OkdldFNhbXBsZXJQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKHNhbXBs
ZXIsIHBuYW1lLCBidWZTaXplLCBsZW5ndGgsIHBhcmFtcyk7Ci19Ci0KLQotdm9pZCBFeHRlbnNp
b25zR0xBTkdMRTo6Z2V0RnJhbWVidWZmZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVt
IHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxl
bmd0aCwgR0NHTGludCAqcGFyYW1zKQotewotICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4
dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OkdldEZyYW1lYnVmZmVyUGFy
YW1ldGVyaXZSb2J1c3RBTkdMRSh0YXJnZXQsIHBuYW1lLCBidWZTaXplLCBsZW5ndGgsIHBhcmFt
cyk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldFByb2dyYW1JbnRlcmZhY2VpdlJv
YnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xlbnVtIHByb2dyYW1JbnRlcmZhY2UsIEdD
R0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xp
bnQgKnBhcmFtcykKLXsKLSAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkp
Ci0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpHZXRQcm9ncmFtSW50ZXJmYWNlaXZSb2J1c3RB
TkdMRShwcm9ncmFtLCBwcm9ncmFtSW50ZXJmYWNlLCBwbmFtZSwgYnVmU2l6ZSwgbGVuZ3RoLCBw
YXJhbXMpOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRCb29sZWFuaV92Um9idXN0
QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMdWludCBpbmRleCwgR0NHTHNpemVpIGJ1ZlNpemUs
IEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMYm9vbGVhbiAqZGF0YSkKLXsKLSAgICBpZiAoIW1fY29u
dGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpH
ZXRCb29sZWFuaV92Um9idXN0QU5HTEUodGFyZ2V0LCBpbmRleCwgYnVmU2l6ZSwgbGVuZ3RoLCBk
YXRhKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0TXVsdGlzYW1wbGVmdlJvYnVz
dEFOR0xFKEdDR0xlbnVtIHBuYW1lLCBHQ0dMdWludCBpbmRleCwgR0NHTHNpemVpIGJ1ZlNpemUs
IEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMZmxvYXQgKnZhbCkKLXsKLSAgICBpZiAoIW1fY29udGV4
dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpHZXRN
dWx0aXNhbXBsZWZ2Um9idXN0QU5HTEUocG5hbWUsIGluZGV4LCBidWZTaXplLCBsZW5ndGgsIHZh
bCk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldFRleExldmVsUGFyYW1ldGVyaXZS
b2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIHBuYW1l
LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykK
LXsKLSAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJl
dHVybjsKLQotICAgIGdsOjpHZXRUZXhMZXZlbFBhcmFtZXRlcml2Um9idXN0QU5HTEUodGFyZ2V0
LCBsZXZlbCwgcG5hbWUsIGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1zKTsKLX0KLQotdm9pZCBFeHRl
bnNpb25zR0xBTkdMRTo6Z2V0VGV4TGV2ZWxQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0xlbnVt
IHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXpl
LCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGZsb2F0ICpwYXJhbXMpCi17Ci0gICAgaWYgKCFtX2Nv
bnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6
R2V0VGV4TGV2ZWxQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKHRhcmdldCwgbGV2ZWwsIHBuYW1lLCBi
dWZTaXplLCBsZW5ndGgsIHBhcmFtcyk7Ci19Ci0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6
Z2V0UG9pbnRlcnZSb2J1c3RBTkdMRVJvYnVzdEFOR0xFKEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6
ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIHZvaWQgKipwYXJhbXMpCi17Ci0gICAgaWYg
KCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAg
ICBnbDo6R2V0UG9pbnRlcnZSb2J1c3RBTkdMRVJvYnVzdEFOR0xFKHBuYW1lLCBidWZTaXplLCBs
ZW5ndGgsIHBhcmFtcyk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldG5Vbmlmb3Jt
ZnZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6
ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xmbG9hdCAqcGFyYW1zKQotewotICAg
IGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwot
Ci0gICAgZ2w6OkdldG5Vbmlmb3JtZnZSb2J1c3RBTkdMRShwcm9ncmFtLCBsb2NhdGlvbiwgYnVm
U2l6ZSwgbGVuZ3RoLCBwYXJhbXMpOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRu
VW5pZm9ybWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwg
R0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpCi17
Ci0gICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1
cm47Ci0KLSAgICBnbDo6R2V0blVuaWZvcm1pdlJvYnVzdEFOR0xFKHByb2dyYW0sIGxvY2F0aW9u
LCBidWZTaXplLCBsZW5ndGgsIHBhcmFtcyk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6
OmdldG5Vbmlmb3JtdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2Nh
dGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMdWludCAqcGFy
YW1zKQotewotICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAg
ICAgcmV0dXJuOwotCi0gICAgZ2w6OkdldG5Vbmlmb3JtdWl2Um9idXN0QU5HTEUocHJvZ3JhbSwg
bG9jYXRpb24sIGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1zKTsKLX0KLQotdm9pZCBFeHRlbnNpb25z
R0xBTkdMRTo6dGV4UGFyYW1ldGVySWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dM
ZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xpbnQgKnBhcmFtcykKLXsK
LSAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVy
bjsKLQotICAgIGdsOjpUZXhQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRSh0YXJnZXQsIHBuYW1lLCBi
dWZTaXplLCBwYXJhbXMpOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjp0ZXhQYXJhbWV0
ZXJJdWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNp
emVpIGJ1ZlNpemUsIGNvbnN0IEdDR0x1aW50ICpwYXJhbXMpCi17Ci0gICAgaWYgKCFtX2NvbnRl
eHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6VGV4
UGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFKHRhcmdldCwgcG5hbWUsIGJ1ZlNpemUsIHBhcmFtcyk7
Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldFRleFBhcmFtZXRlcklpdlJvYnVzdEFO
R0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBH
Q0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKQotewotICAgIGlmICghbV9jb250ZXh0
LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OkdldFRl
eFBhcmFtZXRlcklpdlJvYnVzdEFOR0xFKHRhcmdldCwgcG5hbWUsIGJ1ZlNpemUsIGxlbmd0aCwg
cGFyYW1zKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0VGV4UGFyYW1ldGVySXVp
dlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBi
dWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHVpbnQgKnBhcmFtcykKLXsKLSAgICBpZiAo
IW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAg
IGdsOjpHZXRUZXhQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUodGFyZ2V0LCBwbmFtZSwgYnVmU2l6
ZSwgbGVuZ3RoLCBwYXJhbXMpOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpzYW1wbGVy
UGFyYW1ldGVySWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUs
IEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMaW50ICpwYXJhbSkKLXsKLSAgICBpZiAoIW1f
Y29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGds
OjpTYW1wbGVyUGFyYW1ldGVySWl2Um9idXN0QU5HTEUoc2FtcGxlciwgcG5hbWUsIGJ1ZlNpemUs
IHBhcmFtKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6c2FtcGxlclBhcmFtZXRlckl1
aXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVp
IGJ1ZlNpemUsIGNvbnN0IEdDR0x1aW50ICpwYXJhbSkKLXsKLSAgICBpZiAoIW1fY29udGV4dC0+
bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpTYW1wbGVy
UGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFKHNhbXBsZXIsIHBuYW1lLCBidWZTaXplLCBwYXJhbSk7
Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldFNhbXBsZXJQYXJhbWV0ZXJJaXZSb2J1
c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNp
emUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpCi17Ci0gICAgaWYgKCFtX2Nv
bnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6
R2V0U2FtcGxlclBhcmFtZXRlcklpdlJvYnVzdEFOR0xFKHNhbXBsZXIsIHBuYW1lLCBidWZTaXpl
LCBsZW5ndGgsIHBhcmFtcyk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldFNhbXBs
ZXJQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5h
bWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHVpbnQgKnBhcmFt
cykKLXsKLSAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAg
IHJldHVybjsKLQotICAgIGdsOjpHZXRTYW1wbGVyUGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFKHNh
bXBsZXIsIHBuYW1lLCBidWZTaXplLCBsZW5ndGgsIHBhcmFtcyk7Ci19Ci0KLQotdm9pZCBFeHRl
bnNpb25zR0xBTkdMRTo6Z2V0UXVlcnlPYmplY3RpdlJvYnVzdEFOR0xFKEdDR0x1aW50IGlkLCBH
Q0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dM
aW50ICpwYXJhbXMpCi17Ci0gICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgp
KQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6R2V0UXVlcnlPYmplY3RpdlJvYnVzdEFOR0xF
KGlkLCBwbmFtZSwgYnVmU2l6ZSwgbGVuZ3RoLCBwYXJhbXMpOwotfQotCi12b2lkIEV4dGVuc2lv
bnNHTEFOR0xFOjpnZXRRdWVyeU9iamVjdGk2NHZSb2J1c3RBTkdMRShHQ0dMdWludCBpZCwgR0NH
TGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGlu
dDY0ICpwYXJhbXMpCi17Ci0gICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgp
KQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6R2V0UXVlcnlPYmplY3RpNjR2Um9idXN0QU5H
TEUoaWQsIHBuYW1lLCBidWZTaXplLCBsZW5ndGgsIHJlaW50ZXJwcmV0X2Nhc3Q8R0xpbnQ2NCo+
KHBhcmFtcykpOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRRdWVyeU9iamVjdHVp
NjR2Um9idXN0QU5HTEUoR0NHTHVpbnQgaWQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVm
U2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0x1aW50NjQgKnBhcmFtcykKLXsKLSAgICBpZiAo
IW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAg
IGdsOjpHZXRRdWVyeU9iamVjdHVpNjR2Um9idXN0QU5HTEUoaWQsIHBuYW1lLCBidWZTaXplLCBs
ZW5ndGgsIHJlaW50ZXJwcmV0X2Nhc3Q8R0x1aW50NjQqPihwYXJhbXMpKTsKLX0KLQotCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoV0VCR0wpICYmIFVTRShBTkdM
RSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0V4
dGVuc2lvbnNHTEFOR0xFLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmds
ZS9FeHRlbnNpb25zR0xBTkdMRS5oCmluZGV4IGIyZDI3N2I5YWM5ZDI3ODYwZjU1YWJhYmY4Y2Zl
NTVlODRiNWY1N2UuLjAwNDIzMzc3MjAzNGJmYTNlYWMxMzdkYzM2MzQ4MDkxNmRlYWFmN2EgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0V4dGVuc2lv
bnNHTEFOR0xFLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUv
RXh0ZW5zaW9uc0dMQU5HTEUuaApAQCAtMzYsNyArMzYsNyBAQCBjbGFzcyBFeHRlbnNpb25zR0xB
TkdMRSA6IHB1YmxpYyBFeHRlbnNpb25zR0wgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwogcHVibGljOgogICAgIC8vIFRoaXMgY2xhc3Mgb25seSBuZWVkcyB0byBiZSBpbnN0YW50aWF0
ZWQgYnkgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wgaW1wbGVtZW50YXRpb25zLgotICAgIEV4dGVu
c2lvbnNHTEFOR0xFKEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiwgYm9vbCB1c2VJbmRleGVkR2V0
U3RyaW5nID0gZmFsc2UpOworICAgIGV4cGxpY2l0IEV4dGVuc2lvbnNHTEFOR0xFKEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMKik7CiAgICAgdmlydHVhbCB+RXh0ZW5zaW9uc0dMQU5HTEUoKTsKIAog
ICAgIC8vIEV4dGVuc2lvbnNHTCBtZXRob2RzLgpAQCAtNDksNjAgKzQ5LDE0IEBAIHB1YmxpYzoK
ICAgICB2b2lkIGRlbGV0ZVZlcnRleEFycmF5T0VTKFBsYXRmb3JtR0xPYmplY3QpIG92ZXJyaWRl
OwogICAgIEdDR0xib29sZWFuIGlzVmVydGV4QXJyYXlPRVMoUGxhdGZvcm1HTE9iamVjdCkgb3Zl
cnJpZGU7CiAgICAgdm9pZCBiaW5kVmVydGV4QXJyYXlPRVMoUGxhdGZvcm1HTE9iamVjdCkgb3Zl
cnJpZGU7Ci0gICAgdm9pZCBpbnNlcnRFdmVudE1hcmtlckVYVChjb25zdCBTdHJpbmcmKSBvdmVy
cmlkZTsKLSAgICB2b2lkIHB1c2hHcm91cE1hcmtlckVYVChjb25zdCBTdHJpbmcmKSBvdmVycmlk
ZTsKLSAgICB2b2lkIHBvcEdyb3VwTWFya2VyRVhUKHZvaWQpIG92ZXJyaWRlOwogICAgIHZvaWQg
ZHJhd0J1ZmZlcnNFWFQoR0NHTFNwYW48Y29uc3QgR0NHTGVudW0+KSBvdmVycmlkZTsKIAogICAg
IFN0cmluZyBnZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUoUGxhdGZvcm1HTE9iamVjdCkg
b3ZlcnJpZGU7CiAKLSAgICB2b2lkIGJsaXRGcmFtZWJ1ZmZlckFOR0xFKEdDR0xpbnQgc3JjWDAs
IEdDR0xpbnQgc3JjWTAsIEdDR0xpbnQgc3JjWDEsIEdDR0xpbnQgc3JjWTEsIEdDR0xpbnQgZHN0
WDAsIEdDR0xpbnQgZHN0WTAsIEdDR0xpbnQgZHN0WDEsIEdDR0xpbnQgZHN0WTEsIEdDR0xiaXRm
aWVsZCBtYXNrLCBHQ0dMZW51bSBmaWx0ZXIpIG92ZXJyaWRlOwotICAgIHZvaWQgcmVuZGVyYnVm
ZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWkgc2Ft
cGxlcywgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVp
IGhlaWdodCkgb3ZlcnJpZGU7Ci0KICAgICB2b2lkIGRyYXdBcnJheXNJbnN0YW5jZWRBTkdMRShH
Q0dMZW51bSBtb2RlLCBHQ0dMaW50IGZpcnN0LCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xzaXplaSBw
cmltY291bnQpIG92ZXJyaWRlOwogICAgIHZvaWQgZHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUo
R0NHTGVudW0gbW9kZSwgR0NHTHNpemVpIGNvdW50LCBHQ0dMZW51bSB0eXBlLCBHQ0dMdm9pZHB0
ciBvZmZzZXQsIEdDR0xzaXplaSBwcmltY291bnQpIG92ZXJyaWRlOwogICAgIHZvaWQgdmVydGV4
QXR0cmliRGl2aXNvckFOR0xFKEdDR0x1aW50IGluZGV4LCBHQ0dMdWludCBkaXZpc29yKSBvdmVy
cmlkZTsKIAotICAgIC8vIEdMX0FOR0xFX3JvYnVzdF9jbGllbnRfbWVtb3J5Ci0gICAgdm9pZCBy
ZWFkUGl4ZWxzUm9idXN0QU5HTEUoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0
aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dM
c2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xzaXplaSAqY29sdW1ucywgR0NH
THNpemVpICpyb3dzLCB2b2lkICpwaXhlbHMpIG92ZXJyaWRlOwotICAgIHZvaWQgdGV4UGFyYW1l
dGVyZnZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6
ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGZsb2F0ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQg
dGV4UGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1l
LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAg
ICB2b2lkIGdldFF1ZXJ5aXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBu
YW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFt
cykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRRdWVyeU9iamVjdHVpdlJvYnVzdEFOR0xFKEdDR0x1
aW50IGlkLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVu
Z3RoLCBHQ0dMdWludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldEJ1ZmZlclBvaW50
ZXJ2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVp
IGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCB2b2lkICoqcGFyYW1zKSBvdmVycmlkZTsKLSAg
ICB2b2lkIGdldFZlcnRleEF0dHJpYklpdlJvYnVzdEFOR0xFKEdDR0x1aW50IGluZGV4LCBHQ0dM
ZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50
ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0VmVydGV4QXR0cmliSXVpdlJvYnVzdEFO
R0xFKEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdD
R0xzaXplaSAqbGVuZ3RoLCBHQ0dMdWludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdl
dFVuaWZvcm11aXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9u
LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0x1aW50ICpwYXJhbXMp
IG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0QnVmZmVyUGFyYW1ldGVyaTY0dlJvYnVzdEFOR0xFKEdD
R0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6
ZWkgKmxlbmd0aCwgR0NHTGludDY0ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgc2FtcGxl
clBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUs
IEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMaW50ICpwYXJhbSkgb3ZlcnJpZGU7Ci0gICAg
dm9pZCBzYW1wbGVyUGFyYW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dM
ZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xmbG9hdCAqcGFyYW0pIG92
ZXJyaWRlOwotICAgIHZvaWQgZ2V0U2FtcGxlclBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTHVp
bnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkg
Kmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldFNhbXBsZXJQ
YXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBH
Q0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xmbG9hdCAqcGFyYW1zKSBv
dmVycmlkZTsKLQotICAgIHZvaWQgZ2V0RnJhbWVidWZmZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xF
KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dM
c2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldFBy
b2dyYW1JbnRlcmZhY2VpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xlbnVtIHBy
b2dyYW1JbnRlcmZhY2UsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNp
emVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRCb29s
ZWFuaV92Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMdWludCBpbmRleCwgR0NHTHNp
emVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMYm9vbGVhbiAqZGF0YSkgb3ZlcnJp
ZGU7IC8vIE5PTElOVAotICAgIHZvaWQgZ2V0TXVsdGlzYW1wbGVmdlJvYnVzdEFOR0xFKEdDR0xl
bnVtIHBuYW1lLCBHQ0dMdWludCBpbmRleCwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAq
bGVuZ3RoLCBHQ0dMZmxvYXQgKnZhbCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRUZXhMZXZlbFBh
cmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dM
ZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50
ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0VGV4TGV2ZWxQYXJhbWV0ZXJmdlJvYnVz
dEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gcG5hbWUsIEdD
R0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGZsb2F0ICpwYXJhbXMpIG92
ZXJyaWRlOwotCi0gICAgdm9pZCBnZXRQb2ludGVydlJvYnVzdEFOR0xFUm9idXN0QU5HTEUoR0NH
TGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgdm9pZCAq
KnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRuVW5pZm9ybWZ2Um9idXN0QU5HTEUoR0NH
THVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xz
aXplaSAqbGVuZ3RoLCBHQ0dMZmxvYXQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRu
VW5pZm9ybWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwg
R0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpIG92
ZXJyaWRlOwotICAgIHZvaWQgZ2V0blVuaWZvcm11aXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9n
cmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5n
dGgsIEdDR0x1aW50ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgdGV4UGFyYW1ldGVySWl2
Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1
ZlNpemUsIGNvbnN0IEdDR0xpbnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCB0ZXhQYXJh
bWV0ZXJJdWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NH
THNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0x1aW50ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZv
aWQgZ2V0VGV4UGFyYW1ldGVySWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51
bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpw
YXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0VGV4UGFyYW1ldGVySXVpdlJvYnVzdEFOR0xF
KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dM
c2l6ZWkgKmxlbmd0aCwgR0NHTHVpbnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzYW1w
bGVyUGFyYW1ldGVySWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5h
bWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMaW50ICpwYXJhbSkgb3ZlcnJpZGU7Ci0g
ICAgdm9pZCBzYW1wbGVyUGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIs
IEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTHVpbnQgKnBhcmFt
KSBvdmVycmlkZTsKLSAgICB2b2lkIGdldFNhbXBsZXJQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRShH
Q0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xz
aXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0U2Ft
cGxlclBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBw
bmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMdWludCAqcGFy
YW1zKSBvdmVycmlkZTsKLQotICAgIHZvaWQgZ2V0UXVlcnlPYmplY3RpdlJvYnVzdEFOR0xFKEdD
R0x1aW50IGlkLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAq
bGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0UXVlcnlPYmpl
Y3RpNjR2Um9idXN0QU5HTEUoR0NHTHVpbnQgaWQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkg
YnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQ2NCAqcGFyYW1zKSBvdmVycmlkZTsK
LSAgICB2b2lkIGdldFF1ZXJ5T2JqZWN0dWk2NHZSb2J1c3RBTkdMRShHQ0dMdWludCBpZCwgR0NH
TGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHVp
bnQ2NCAqcGFyYW1zKSBvdmVycmlkZTsKLQogICAgIC8vIE9ubHkgZm9yIG5vbi1XZWJHTCAyLjAg
Y29udGV4dHMuCiAgICAgR0NHTGVudW0gYWRqdXN0V2ViR0wxVGV4dHVyZUludGVybmFsRm9ybWF0
KEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUp
OwogCkBAIC0xMTksOCArNzMsNiBAQCBwcml2YXRlOgogICAgIC8vIFdlYWsgcG9pbnRlciBiYWNr
IHRvIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMLgogICAgIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
KiBtX2NvbnRleHQ7CiAKLSAgICBib29sIG1fdXNlSW5kZXhlZEdldFN0cmluZyB7IGZhbHNlIH07
Ci0KICAgICAvLyBXaGV0aGVyIHRoZSBXZWJHTCAxLjAtcmVsYXRlZCBmbG9hdGluZy1wb2ludCBy
ZW5kZXJhYmlsaXR5IGV4dGVuc2lvbnMgaGF2ZSBiZWVuIGVuYWJsZWQuCiAgICAgYm9vbCBtX3dl
YmdsQ29sb3JCdWZmZXJGbG9hdFJHQiB7IGZhbHNlIH07CiAgICAgYm9vbCBtX3dlYmdsQ29sb3JC
dWZmZXJGbG9hdFJHQkEgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNw
cAppbmRleCAzMDlhNTMwOWI2NDBhM2Q2YTI4MTQxY2E3YjFhNzVkYjQ2ZTlmOTUxLi4xZDI0ZTNk
NGVjYjk1NTU5ODAxZThhODNjOTUzNGE1YWZkMjA5MjU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRl
eHRHTEFOR0xFLmNwcApAQCAtMjI1MCw2ICsyMjUwLDkgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6bWFya0NvbnRleHRDaGFuZ2VkKCkKIAogdm9pZCBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6bWFya0xheWVyQ29tcG9zaXRlZCgpCiB7CisgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJl
bnQoKSkKKyAgICAgICAgcmV0dXJuOworCiAgICAgbV9sYXllckNvbXBvc2l0ZWQgPSB0cnVlOwog
ICAgIHJlc2V0QnVmZmVyc1RvQXV0b0NsZWFyKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTC5j
cHAKaW5kZXggODQyMjg0NmI2ZjYyYTc1NTRlOGIyZGNmMDI0N2ZmNjA1Mzk1ZDQ1YS4uODZkMTlj
YWFmYjZlM2YwZTMyMWRlMTczMjEyYTU0ZmNlNjFmNzFlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9w
ZW5HTC5jcHAKQEAgLTQ4LDIyICs0OCw2IEBAIEV4dGVuc2lvbnNHTE9wZW5HTDo6RXh0ZW5zaW9u
c0dMT3BlbkdMKEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiBjb250ZXh0LCBib29sIHVzCiBFeHRl
bnNpb25zR0xPcGVuR0w6On5FeHRlbnNpb25zR0xPcGVuR0woKSA9IGRlZmF1bHQ7CiAKIAotdm9p
ZCBFeHRlbnNpb25zR0xPcGVuR0w6OmJsaXRGcmFtZWJ1ZmZlckFOR0xFKEdDR0xpbnQgc3JjWDAs
IEdDR0xpbnQgc3JjWTAsIEdDR0xpbnQgc3JjWDEsIEdDR0xpbnQgc3JjWTEsIEdDR0xpbnQgZHN0
WDAsIEdDR0xpbnQgZHN0WTAsIEdDR0xpbnQgZHN0WDEsIEdDR0xpbnQgZHN0WTEsIEdDR0xiaXRm
aWVsZCBtYXNrLCBHQ0dMZW51bSBmaWx0ZXIpCi17Ci0gICAgaWYgKCFtX2NvbnRleHQtPm1ha2VD
b250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICA6OmdsQmxpdEZyYW1lYnVm
ZmVyRVhUKHNyY1gwLCBzcmNZMCwgc3JjWDEsIHNyY1kxLCBkc3RYMCwgZHN0WTAsIGRzdFgxLCBk
c3RZMSwgbWFzaywgZmlsdGVyKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0w6OnJlbmRl
cmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVp
IHNhbXBsZXMsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xz
aXplaSBoZWlnaHQpCi17Ci0gICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgp
KQotICAgICAgICByZXR1cm47Ci0KLSAgICA6OmdsUmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2Ft
cGxlRVhUKHRhcmdldCwgc2FtcGxlcywgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQpOwot
fQotCiBQbGF0Zm9ybUdMT2JqZWN0IEV4dGVuc2lvbnNHTE9wZW5HTDo6Y3JlYXRlVmVydGV4QXJy
YXlPRVMoKQogewogICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKQEAg
LTEyNywyNCArMTExLDYgQEAgdm9pZCBFeHRlbnNpb25zR0xPcGVuR0w6OmJpbmRWZXJ0ZXhBcnJh
eU9FUyhQbGF0Zm9ybUdMT2JqZWN0IGFycmF5KQogI2VuZGlmCiB9CiAKLXZvaWQgRXh0ZW5zaW9u
c0dMT3BlbkdMOjppbnNlcnRFdmVudE1hcmtlckVYVChjb25zdCBTdHJpbmcmKQotewotICAgIC8v
IEZJWE1FOiBpbXBsZW1lbnQgdGhpcyBmdW5jdGlvbiBhbmQgYWRkIEdMX0VYVF9kZWJ1Z19tYXJr
ZXIgaW4gc3VwcG9ydHMoKS4KLSAgICByZXR1cm47Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMT3Bl
bkdMOjpwdXNoR3JvdXBNYXJrZXJFWFQoY29uc3QgU3RyaW5nJikKLXsKLSAgICAvLyBGSVhNRTog
aW1wbGVtZW50IHRoaXMgZnVuY3Rpb24gYW5kIGFkZCBHTF9FWFRfZGVidWdfbWFya2VyIGluIHN1
cHBvcnRzKCkuCi0gICAgcmV0dXJuOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTDo6cG9w
R3JvdXBNYXJrZXJFWFQodm9pZCkKLXsKLSAgICAvLyBGSVhNRTogaW1wbGVtZW50IHRoaXMgZnVu
Y3Rpb24gYW5kIGFkZCBHTF9FWFRfZGVidWdfbWFya2VyIGluIHN1cHBvcnRzKCkuCi0gICAgcmV0
dXJuOwotfQotCiBib29sIEV4dGVuc2lvbnNHTE9wZW5HTDo6c3VwcG9ydHNFeHRlbnNpb24oY29u
c3QgU3RyaW5nJiBuYW1lKQogewogICAgIC8vIEdMX0FOR0xFX2ZyYW1lYnVmZmVyX2JsaXQgYW5k
IEdMX0FOR0xFX2ZyYW1lYnVmZmVyX211bHRpc2FtcGxlIGFyZSAiZmFrZSIuIFRoZXkgYXJlIGlt
cGxlbWVudGVkIHVzaW5nIG90aGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMLmgKaW5kZXggNDc1MDIy
NmVjZWNlZjQ0Mzk2ZTk5Mzg2NzZjYjYzOWJlODM0MzdiNi4uMGFkYmQ3MDUwYjdlM2Y3N2UwMTg4
OTQzMzJmZmM4N2NmMzBkOTBjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuaApAQCAtNDAsMTYg
KzQwLDEwIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5FeHRlbnNpb25zR0xPcGVuR0woKTsKIAog
ICAgIC8vIEV4dGVuc2lvbnNHTCBtZXRob2RzLgotICAgIHZvaWQgYmxpdEZyYW1lYnVmZmVyQU5H
TEUoR0NHTGludCBzcmNYMCwgR0NHTGludCBzcmNZMCwgR0NHTGludCBzcmNYMSwgR0NHTGludCBz
cmNZMSwgR0NHTGludCBkc3RYMCwgR0NHTGludCBkc3RZMCwgR0NHTGludCBkc3RYMSwgR0NHTGlu
dCBkc3RZMSwgR0NHTGJpdGZpZWxkIG1hc2ssIEdDR0xlbnVtIGZpbHRlcikgb3ZlcnJpZGU7Ci0g
ICAgdm9pZCByZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVBTkdMRShHQ0dMZW51bSB0YXJn
ZXQsIEdDR0xzaXplaSBzYW1wbGVzLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVp
IHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KSBvdmVycmlkZTsKLQogICAgIFBsYXRmb3JtR0xPYmpl
Y3QgY3JlYXRlVmVydGV4QXJyYXlPRVMoKSBvdmVycmlkZTsKICAgICB2b2lkIGRlbGV0ZVZlcnRl
eEFycmF5T0VTKFBsYXRmb3JtR0xPYmplY3QpIG92ZXJyaWRlOwogICAgIEdDR0xib29sZWFuIGlz
VmVydGV4QXJyYXlPRVMoUGxhdGZvcm1HTE9iamVjdCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBiaW5k
VmVydGV4QXJyYXlPRVMoUGxhdGZvcm1HTE9iamVjdCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBpbnNl
cnRFdmVudE1hcmtlckVYVChjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKLSAgICB2b2lkIHB1c2hH
cm91cE1hcmtlckVYVChjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKLSAgICB2b2lkIHBvcEdyb3Vw
TWFya2VyRVhUKHZvaWQpIG92ZXJyaWRlOwogICAgIHZvaWQgZHJhd0J1ZmZlcnNFWFQoR0NHTFNw
YW48Y29uc3QgR0NHTGVudW0+KSBvdmVycmlkZTsKIAogICAgIHZvaWQgZHJhd0FycmF5c0luc3Rh
bmNlZEFOR0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xpbnQgZmlyc3QsIEdDR0xzaXplaSBjb3VudCwg
R0NHTHNpemVpIHByaW1jb3VudCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVu
R0xDb21tb24uY3BwCmluZGV4IGMzNDM4ZDU5MWMwN2EzNmNmMWUwNDI2YzFiOWZkN2IzZTkxNzc5
ZDUuLjA5ZGI4NTQwMDIyMWRmOTc1Nzg4ODU5YTRhMjg3YWJhYTI0ZjgyNzEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVu
R0xDb21tb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5n
bC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uY3BwCkBAIC0yNTQsMTg1ICsyNTQsNiBAQCB2b2lk
IEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0blVuaWZvcm1pdkVYVChHQ0dMdWludCwgaW50
LCBHQ0dMc2l6ZWksIEdDR0xpbgogICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xf
SU5WQUxJRF9PUEVSQVRJT04pOwogfQogCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6
cmVhZFBpeGVsc1JvYnVzdEFOR0xFKGludCwgaW50LCBHQ0dMc2l6ZWksIEdDR0xzaXplaSwgR0NH
TGVudW0sIEdDR0xlbnVtLCBHQ0dMc2l6ZWksIEdDR0xzaXplaSAqLCBHQ0dMc2l6ZWkgKiwgR0NH
THNpemVpICosIHZvaWQgKikKLXsKLSAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdM
X0lOVkFMSURfT1BFUkFUSU9OKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246
OnRleFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTGVudW0sIEdDR0xlbnVtLCBHQ0dMc2l6ZWks
IGNvbnN0IEdDR0xmbG9hdCAqKQotewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3Io
R0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1v
bjo6dGV4UGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51bSwgR0NHTGVudW0sIEdDR0xzaXpl
aSwgY29uc3QgR0NHTGludCAqKQotewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3Io
R0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1v
bjo6Z2V0UXVlcnlpdlJvYnVzdEFOR0xFKEdDR0xlbnVtLCBHQ0dMZW51bSwgR0NHTHNpemVpLCBH
Q0dMc2l6ZWkgKiwgR0NHTGludCAqKQotewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJy
b3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENv
bW1vbjo6Z2V0UXVlcnlPYmplY3R1aXZSb2J1c3RBTkdMRShHQ0dMdWludCwgR0NHTGVudW0sIEdD
R0xzaXplaSwgR0NHTHNpemVpICosIEdDR0x1aW50ICopCi17Ci0gICAgbV9jb250ZXh0LT5zeW50
aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9u
c0dMT3BlbkdMQ29tbW9uOjpnZXRCdWZmZXJQb2ludGVydlJvYnVzdEFOR0xFKEdDR0xlbnVtLCBH
Q0dMZW51bSwgR0NHTHNpemVpLCBHQ0dMc2l6ZWkgKiwgdm9pZCAqKikKLXsKLSAgICBtX2NvbnRl
eHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLX0KLQotdm9pZCBF
eHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFZlcnRleEF0dHJpYklpdlJvYnVzdEFOR0xFKEdD
R0x1aW50LCBHQ0dMZW51bSwgR0NHTHNpemVpLCBHQ0dMc2l6ZWkgKiwgR0NHTGludCAqKQotewot
ICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwot
fQotCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0VmVydGV4QXR0cmliSXVpdlJv
YnVzdEFOR0xFKEdDR0x1aW50LCBHQ0dMZW51bSwgR0NHTHNpemVpLCBHQ0dMc2l6ZWkgKiwgR0NH
THVpbnQgKikKLXsKLSAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURf
T1BFUkFUSU9OKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFVuaWZv
cm11aXZSb2J1c3RBTkdMRShHQ0dMdWludCwgaW50LCBHQ0dMc2l6ZWksIEdDR0xzaXplaSAqLCBH
Q0dMdWludCAqKQotewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJ
RF9PUEVSQVRJT04pOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0QnVm
ZmVyUGFyYW1ldGVyaTY0dlJvYnVzdEFOR0xFKEdDR0xlbnVtLCBHQ0dMZW51bSwgR0NHTHNpemVp
LCBHQ0dMc2l6ZWkgKiwgR0NHTGludDY0ICopCi17Ci0gICAgbV9jb250ZXh0LT5zeW50aGVzaXpl
R0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMT3Bl
bkdMQ29tbW9uOjpzYW1wbGVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMdWludCwgR0NHTGVu
dW0sIEdDR0xzaXplaSwgY29uc3QgR0NHTGludCAqKQotewotICAgIG1fY29udGV4dC0+c3ludGhl
c2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi12b2lkIEV4dGVuc2lvbnNH
TE9wZW5HTENvbW1vbjo6c2FtcGxlclBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTHVpbnQsIEdD
R0xlbnVtLCBHQ0dMc2l6ZWksIGNvbnN0IEdDR0xmbG9hdCAqKQotewotICAgIG1fY29udGV4dC0+
c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi12b2lkIEV4dGVu
c2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0U2FtcGxlclBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NH
THVpbnQsIEdDR0xlbnVtLCBHQ0dMc2l6ZWksIEdDR0xzaXplaSAqLCBHQ0dMaW50ICopCi17Ci0g
ICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Ci19
Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRTYW1wbGVyUGFyYW1ldGVyZnZS
b2J1c3RBTkdMRShHQ0dMdWludCwgR0NHTGVudW0sIEdDR0xzaXplaSwgR0NHTHNpemVpICosIEdD
R0xmbG9hdCAqKQotewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJ
RF9PUEVSQVRJT04pOwotfQotCi0KLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRG
cmFtZWJ1ZmZlclBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0sIEdDR0xlbnVtLCBHQ0dM
c2l6ZWksIEdDR0xzaXplaSAqLCBHQ0dMaW50ICopCi17Ci0gICAgbV9jb250ZXh0LT5zeW50aGVz
aXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dM
T3BlbkdMQ29tbW9uOjpnZXRQcm9ncmFtSW50ZXJmYWNlaXZSb2J1c3RBTkdMRShHQ0dMdWludCwg
R0NHTGVudW0sIEdDR0xlbnVtLCBHQ0dMc2l6ZWksIEdDR0xzaXplaSAqLCBHQ0dMaW50ICopCi17
Ci0gICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7
Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRCb29sZWFuaV92Um9idXN0
QU5HTEUoR0NHTGVudW0sIEdDR0x1aW50LCBHQ0dMc2l6ZWksIEdDR0xzaXplaSAqLCBHQ0dMYm9v
bGVhbiAqKQotewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9P
UEVSQVRJT04pOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0TXVsdGlz
YW1wbGVmdlJvYnVzdEFOR0xFKEdDR0xlbnVtLCBHQ0dMdWludCwgR0NHTHNpemVpLCBHQ0dMc2l6
ZWkgKiwgR0NHTGZsb2F0ICopCi17Ci0gICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihH
TF9JTlZBTElEX09QRVJBVElPTik7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9u
OjpnZXRUZXhMZXZlbFBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0sIGludCwgR0NHTGVu
dW0sIEdDR0xzaXplaSwgR0NHTHNpemVpICosIEdDR0xpbnQgKikKLXsKLSAgICBtX2NvbnRleHQt
PnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLX0KLQotdm9pZCBFeHRl
bnNpb25zR0xPcGVuR0xDb21tb246OmdldFRleExldmVsUGFyYW1ldGVyZnZSb2J1c3RBTkdMRShH
Q0dMZW51bSwgaW50LCBHQ0dMZW51bSwgR0NHTHNpemVpLCBHQ0dMc2l6ZWkgKiwgR0NHTGZsb2F0
ICopCi17Ci0gICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJB
VElPTik7Ci19Ci0KLQotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFBvaW50ZXJ2
Um9idXN0QU5HTEVSb2J1c3RBTkdMRShHQ0dMZW51bSwgR0NHTHNpemVpLCBHQ0dMc2l6ZWkgKiwg
dm9pZCAqKikKLXsKLSAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURf
T1BFUkFUSU9OKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldG5Vbmlm
b3JtZnZSb2J1c3RBTkdMRShHQ0dMdWludCwgaW50LCBHQ0dMc2l6ZWksIEdDR0xzaXplaSAqLCBH
Q0dMZmxvYXQgKikKLXsKLSAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFM
SURfT1BFUkFUSU9OKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldG5V
bmlmb3JtaXZSb2J1c3RBTkdMRShHQ0dMdWludCwgaW50LCBHQ0dMc2l6ZWksIEdDR0xzaXplaSAq
LCBHQ0dMaW50ICopCi17Ci0gICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZB
TElEX09QRVJBVElPTik7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRu
VW5pZm9ybXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50LCBpbnQsIEdDR0xzaXplaSwgR0NHTHNpemVp
ICosIEdDR0x1aW50ICopCi17Ci0gICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9J
TlZBTElEX09QRVJBVElPTik7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjp0
ZXhQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRShHQ0dMZW51bSwgR0NHTGVudW0sIEdDR0xzaXplaSwg
Y29uc3QgR0NHTGludCAqKQotewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xf
SU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6
dGV4UGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFKEdDR0xlbnVtLCBHQ0dMZW51bSwgR0NHTHNpemVp
LCBjb25zdCBHQ0dMdWludCAqKQotewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3Io
R0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1v
bjo6Z2V0VGV4UGFyYW1ldGVySWl2Um9idXN0QU5HTEUoR0NHTGVudW0sIEdDR0xlbnVtLCBHQ0dM
c2l6ZWksIEdDR0xzaXplaSAqLCBHQ0dMaW50ICopCi17Ci0gICAgbV9jb250ZXh0LT5zeW50aGVz
aXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dM
T3BlbkdMQ29tbW9uOjpnZXRUZXhQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUoR0NHTGVudW0sIEdD
R0xlbnVtLCBHQ0dMc2l6ZWksIEdDR0xzaXplaSAqLCBHQ0dMdWludCAqKQotewotICAgIG1fY29u
dGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi12b2lk
IEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6c2FtcGxlclBhcmFtZXRlcklpdlJvYnVzdEFOR0xF
KEdDR0x1aW50LCBHQ0dMZW51bSwgR0NHTHNpemVpLCBjb25zdCBHQ0dMaW50ICopCi17Ci0gICAg
bV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Ci19Ci0K
LXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpzYW1wbGVyUGFyYW1ldGVySXVpdlJvYnVz
dEFOR0xFKEdDR0x1aW50LCBHQ0dMZW51bSwgR0NHTHNpemVpLCBjb25zdCBHQ0dMdWludCAqKQot
ewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04p
OwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0U2FtcGxlclBhcmFtZXRl
cklpdlJvYnVzdEFOR0xFKEdDR0x1aW50LCBHQ0dMZW51bSwgR0NHTHNpemVpLCBHQ0dMc2l6ZWkg
KiwgR0NHTGludCAqKQotewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5W
QUxJRF9PUEVSQVRJT04pOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0
U2FtcGxlclBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRShHQ0dMdWludCwgR0NHTGVudW0sIEdDR0xz
aXplaSwgR0NHTHNpemVpICosIEdDR0x1aW50ICopCi17Ci0gICAgbV9jb250ZXh0LT5zeW50aGVz
aXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Ci19Ci0KLQotdm9pZCBFeHRlbnNpb25z
R0xPcGVuR0xDb21tb246OmdldFF1ZXJ5T2JqZWN0aXZSb2J1c3RBTkdMRShHQ0dMdWludCwgR0NH
TGVudW0sIEdDR0xzaXplaSwgR0NHTHNpemVpICosIEdDR0xpbnQgKikKLXsKLSAgICBtX2NvbnRl
eHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLX0KLQotdm9pZCBF
eHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFF1ZXJ5T2JqZWN0aTY0dlJvYnVzdEFOR0xFKEdD
R0x1aW50LCBHQ0dMZW51bSwgR0NHTHNpemVpLCBHQ0dMc2l6ZWkgKiwgR0NHTGludDY0ICopCi17
Ci0gICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7
Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRRdWVyeU9iamVjdHVpNjR2
Um9idXN0QU5HTEUoR0NHTHVpbnQsIEdDR0xlbnVtLCBHQ0dMc2l6ZWksIEdDR0xzaXplaSAqLCBH
Q0dMdWludDY0ICopCi17Ci0gICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZB
TElEX09QRVJBVElPTik7Ci19Ci0KLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYg
Ly8gRU5BQkxFKFdFQkdMKSAmJiAhVVNFKEFOR0xFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5H
TENvbW1vbi5oCmluZGV4IDNmMTA0MDE2MmZmYTA3YTJkYzEzMGFiYjIyZmIxYjFmZmMzZmRmMjAu
LmRjYzBlM2FmMjE3MzJlNzQ3ZWExYmQ1NjRiYjk2Nzg0MzJjYTNmNzAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xD
b21tb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0
ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmgKQEAgLTI4LDExICsyOCwxMSBAQAogCiAjaW5jbHVkZSAi
RXh0ZW5zaW9uc0dMLmgiCiAKLSNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oIgog
I2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5o
PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDsK
IAogY2xhc3MgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uIDogcHVibGljIEV4dGVuc2lvbnNHTCB7
CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CkBAIC01NSw1OCArNTUsMTggQEAgcHVibGlj
OgogICAgIFN0cmluZyBnZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUoUGxhdGZvcm1HTE9i
amVjdCkgb3ZlcnJpZGU7CiAKICAgICAvLyBFWFQgUm9idXN0bmVzcyAtIHVzZXMgZ2V0R3JhcGhp
Y3NSZXNldFN0YXR1c0FSQigpCi0gICAgdm9pZCByZWFkblBpeGVsc0VYVChpbnQgeCwgaW50IHks
IEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dM
ZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgdm9pZCAqZGF0YSkgb3ZlcnJpZGU7Ci0gICAg
dm9pZCBnZXRuVW5pZm9ybWZ2RVhUKEdDR0x1aW50IHByb2dyYW0sIGludCBsb2NhdGlvbiwgR0NH
THNpemVpIGJ1ZlNpemUsIGZsb2F0ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0blVu
aWZvcm1pdkVYVChHQ0dMdWludCBwcm9ncmFtLCBpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZT
aXplLCBpbnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0KLSAgICBib29sIGlzTlZJRElBKCkgb3ZlcnJp
ZGUgeyByZXR1cm4gbV9pc05WSURJQTsgfQotICAgIGJvb2wgaXNBTUQoKSBvdmVycmlkZSB7IHJl
dHVybiBtX2lzQU1EOyB9Ci0gICAgYm9vbCBpc0ludGVsKCkgb3ZlcnJpZGUgeyByZXR1cm4gbV9p
c0ludGVsOyB9Ci0gICAgYm9vbCBpc0ltYWdpbmF0aW9uKCkgb3ZlcnJpZGUgeyByZXR1cm4gbV9p
c0ltYWdpbmF0aW9uOyB9Ci0gICAgU3RyaW5nIHZlbmRvcigpIG92ZXJyaWRlIHsgcmV0dXJuIG1f
dmVuZG9yOyB9Ci0KLSAgICBib29sIHJlcXVpcmVzQnVpbHRJbkZ1bmN0aW9uRW11bGF0aW9uKCkg
b3ZlcnJpZGUgeyByZXR1cm4gbV9yZXF1aXJlc0J1aWx0SW5GdW5jdGlvbkVtdWxhdGlvbjsgfQot
ICAgIGJvb2wgcmVxdWlyZXNSZXN0cmljdGVkTWF4aW11bVRleHR1cmVTaXplKCkgb3ZlcnJpZGUg
eyByZXR1cm4gbV9yZXF1aXJlc1Jlc3RyaWN0ZWRNYXhpbXVtVGV4dHVyZVNpemU7IH0KLQotICAg
IC8vIEdMX0FOR0xFX3JvYnVzdF9jbGllbnRfbWVtb3J5Ci0gICAgdm9pZCByZWFkUGl4ZWxzUm9i
dXN0QU5HTEUoaW50IHgsIGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQs
IEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xz
aXplaSAqbGVuZ3RoLCBHQ0dMc2l6ZWkgKmNvbHVtbnMsIEdDR0xzaXplaSAqcm93cywgdm9pZCAq
cGl4ZWxzKSBvdmVycmlkZTsKLSAgICB2b2lkIHRleFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdD
R0xmbG9hdCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIHRleFBhcmFtZXRlcml2Um9idXN0
QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUs
IGNvbnN0IEdDR0xpbnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRRdWVyeWl2Um9i
dXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNp
emUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZv
aWQgZ2V0UXVlcnlPYmplY3R1aXZSb2J1c3RBTkdMRShHQ0dMdWludCBpZCwgR0NHTGVudW0gcG5h
bWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHVpbnQgKnBhcmFt
cykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRCdWZmZXJQb2ludGVydlJvYnVzdEFOR0xFKEdDR0xl
bnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkg
Kmxlbmd0aCwgdm9pZCAqKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRWZXJ0ZXhBdHRy
aWJJaXZSb2J1c3RBTkdMRShHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXpl
aSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVycmlkZTsK
LSAgICB2b2lkIGdldFZlcnRleEF0dHJpYkl1aXZSb2J1c3RBTkdMRShHQ0dMdWludCBpbmRleCwg
R0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NH
THVpbnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRVbmlmb3JtdWl2Um9idXN0QU5H
TEUoR0NHTHVpbnQgcHJvZ3JhbSwgaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NH
THNpemVpICpsZW5ndGgsIEdDR0x1aW50ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0
QnVmZmVyUGFyYW1ldGVyaTY0dlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0g
cG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludDY0ICpw
YXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgc2FtcGxlclBhcmFtZXRlcml2Um9idXN0QU5HTEUo
R0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25z
dCBHQ0dMaW50ICpwYXJhbSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzYW1wbGVyUGFyYW1ldGVyZnZS
b2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1
ZlNpemUsIGNvbnN0IEdDR0xmbG9hdCAqcGFyYW0pIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0U2Ft
cGxlclBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5h
bWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1z
KSBvdmVycmlkZTsKLSAgICB2b2lkIGdldFNhbXBsZXJQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdD
R0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNp
emVpICpsZW5ndGgsIEdDR0xmbG9hdCAqcGFyYW1zKSBvdmVycmlkZTsKLQotICAgIHZvaWQgZ2V0
RnJhbWVidWZmZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVu
dW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAq
cGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldFByb2dyYW1JbnRlcmZhY2VpdlJvYnVzdEFO
R0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xlbnVtIHByb2dyYW1JbnRlcmZhY2UsIEdDR0xlbnVt
IHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBh
cmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRCb29sZWFuaV92Um9idXN0QU5HTEUoR0NHTGVu
dW0gdGFyZ2V0LCBHQ0dMdWludCBpbmRleCwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAq
bGVuZ3RoLCBHQ0dMYm9vbGVhbiAqZGF0YSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRNdWx0aXNh
bXBsZWZ2Um9idXN0QU5HTEUoR0NHTGVudW0gcG5hbWUsIEdDR0x1aW50IGluZGV4LCBHQ0dMc2l6
ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xmbG9hdCAqdmFsKSBvdmVycmlkZTsK
LSAgICB2b2lkIGdldFRleExldmVsUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJn
ZXQsIGludCBsZXZlbCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6
ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldFRleExl
dmVsUGFyYW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIGludCBsZXZlbCwgR0NH
TGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGZs
b2F0ICpwYXJhbXMpIG92ZXJyaWRlOwotCi0gICAgdm9pZCBnZXRQb2ludGVydlJvYnVzdEFOR0xF
Um9idXN0QU5HTEUoR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkg
Kmxlbmd0aCwgdm9pZCAqKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRuVW5pZm9ybWZ2
Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVm
U2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xmbG9hdCAqcGFyYW1zKSBvdmVycmlkZTsKLSAg
ICB2b2lkIGdldG5Vbmlmb3JtaXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBpbnQgbG9j
YXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFy
YW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldG5Vbmlmb3JtdWl2Um9idXN0QU5HTEUoR0NHTHVp
bnQgcHJvZ3JhbSwgaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICps
ZW5ndGgsIEdDR0x1aW50ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgdGV4UGFyYW1ldGVy
SWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVp
IGJ1ZlNpemUsIGNvbnN0IEdDR0xpbnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCB0ZXhQ
YXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwg
R0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0x1aW50ICpwYXJhbXMpIG92ZXJyaWRlOwotICAg
IHZvaWQgZ2V0VGV4UGFyYW1ldGVySWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dM
ZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50
ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0VGV4UGFyYW1ldGVySXVpdlJvYnVzdEFO
R0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBH
Q0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHVpbnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBz
YW1wbGVyUGFyYW1ldGVySWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0g
cG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMaW50ICpwYXJhbSkgb3ZlcnJpZGU7
Ci0gICAgdm9pZCBzYW1wbGVyUGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBs
ZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTHVpbnQgKnBh
cmFtKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldFNhbXBsZXJQYXJhbWV0ZXJJaXZSb2J1c3RBTkdM
RShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdD
R0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0
U2FtcGxlclBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51
bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMdWludCAq
cGFyYW1zKSBvdmVycmlkZTsKLQotICAgIHZvaWQgZ2V0UXVlcnlPYmplY3RpdlJvYnVzdEFOR0xF
KEdDR0x1aW50IGlkLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXpl
aSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0UXVlcnlP
YmplY3RpNjR2Um9idXN0QU5HTEUoR0NHTHVpbnQgaWQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6
ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQ2NCAqcGFyYW1zKSBvdmVycmlk
ZTsKLSAgICB2b2lkIGdldFF1ZXJ5T2JqZWN0dWk2NHZSb2J1c3RBTkdMRShHQ0dMdWludCBpZCwg
R0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NH
THVpbnQ2NCAqcGFyYW1zKSBvdmVycmlkZTsKKyAgICB2b2lkIHJlYWRuUGl4ZWxzRVhUKGludCB4
LCBpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3Jt
YXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXplLCB2b2lkICpkYXRhKTsKKyAgICB2
b2lkIGdldG5Vbmlmb3JtZnZFWFQoR0NHTHVpbnQgcHJvZ3JhbSwgaW50IGxvY2F0aW9uLCBHQ0dM
c2l6ZWkgYnVmU2l6ZSwgZmxvYXQgKnBhcmFtcyk7CisgICAgdm9pZCBnZXRuVW5pZm9ybWl2RVhU
KEdDR0x1aW50IHByb2dyYW0sIGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIGludCAq
cGFyYW1zKTsKKworICAgIGJvb2wgaXNOVklESUEoKSBjb25zdCB7IHJldHVybiBtX2lzTlZJRElB
OyB9CisgICAgYm9vbCBpc0FNRCgpIGNvbnN0IHsgcmV0dXJuIG1faXNBTUQ7IH0KKyAgICBib29s
IGlzSW50ZWwoKSBjb25zdCB7IHJldHVybiBtX2lzSW50ZWw7IH0KKyAgICBib29sIGlzSW1hZ2lu
YXRpb24oKSBjb25zdCB7IHJldHVybiBtX2lzSW1hZ2luYXRpb247IH0KKyAgICBTdHJpbmcgdmVu
ZG9yKCkgY29uc3QgeyByZXR1cm4gbV92ZW5kb3I7IH0KKworICAgIGJvb2wgcmVxdWlyZXNCdWls
dEluRnVuY3Rpb25FbXVsYXRpb24oKSBjb25zdCB7IHJldHVybiBtX3JlcXVpcmVzQnVpbHRJbkZ1
bmN0aW9uRW11bGF0aW9uOyB9CisgICAgYm9vbCByZXF1aXJlc1Jlc3RyaWN0ZWRNYXhpbXVtVGV4
dHVyZVNpemUoKSBjb25zdCB7IHJldHVybiBtX3JlcXVpcmVzUmVzdHJpY3RlZE1heGltdW1UZXh0
dXJlU2l6ZTsgfQogCiBwcm90ZWN0ZWQ6CiAgICAgZnJpZW5kIGNsYXNzIEV4dGVuc2lvbnNHTE9w
ZW5HTEVTOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Bl
bmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVTLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xFUy5jcHAKaW5kZXggOGNhODc3ODg0ZWVh
YjhhMmNhMWRkZTJkYjJlYzhkNmIyMTIyZmRlMS4uYjJlM2M4Yjk4NDkzNDVkNTczOGY3YTVjMTBl
MTJkYjU5NGQyYTAwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVTLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMRVMuY3BwCkBAIC0xMDAs
MTEgKzEwMCw2IEBAIHZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMRVM6OnJlbmRlcmJ1ZmZlclN0b3Jh
Z2VNdWx0aXNhbXBsZUlNRyh1bnNpZ25lZCBsb25nIHRhcmdlCiAgICAgICAgIG1fY29udGV4dC0+
c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwogfQogCi12b2lkIEV4dGVu
c2lvbnNHTE9wZW5HTEVTOjpibGl0RnJhbWVidWZmZXJBTkdMRShHQ0dMaW50LCBHQ0dMaW50LCBH
Q0dMaW50LCBHQ0dMaW50LCBHQ0dMaW50LCBHQ0dMaW50LCBHQ0dMaW50LCBHQ0dMaW50LCBHQ0dM
Yml0ZmllbGQsIEdDR0xlbnVtKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KIHZvaWQg
RXh0ZW5zaW9uc0dMT3BlbkdMRVM6OnJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xF
KEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVpIHNhbXBsZXMsIEdDR0xlbnVtIGludGVybmFsZm9y
bWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQpCiB7CiAgICAgaWYgKCFtX2Nv
bnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQpAQCAtMTE1LDIxICsxMTAsNiBAQCB2b2lkIEV4
dGVuc2lvbnNHTE9wZW5HTEVTOjpyZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVBTkdMRShH
Q0dMZW51bSB0YXJnZXQsCiAgICAgICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLXZvaWQgRXh0
ZW5zaW9uc0dMT3BlbkdMRVM6Omluc2VydEV2ZW50TWFya2VyRVhUKGNvbnN0IFN0cmluZyYpCi17
Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xFUzo6
cHVzaEdyb3VwTWFya2VyRVhUKGNvbnN0IFN0cmluZyYpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQo
KTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xFUzo6cG9wR3JvdXBNYXJrZXJFWFQodm9p
ZCkKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCiBQbGF0Zm9ybUdMT2JqZWN0IEV4dGVu
c2lvbnNHTE9wZW5HTEVTOjpjcmVhdGVWZXJ0ZXhBcnJheU9FUygpCiB7CiAgICAgaWYgKG1fZ2xH
ZW5WZXJ0ZXhBcnJheXNPRVMpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xFUy5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVTLmgKaW5kZXggNWM3
NjAzN2ZhN2JjNmU4ZWVlM2U2NzNmOTlhN2RmYzJmNzhmYjRkMi4uYWRkMGJiNzYzZjRiZGE1YjY5
ZTYxYmFiNjAyMmE0MDgyNDhhZjNlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVTLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVTLmgKQEAg
LTI3LDYgKzI3LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiRXh0ZW5zaW9uc0dMT3Bl
bkdMQ29tbW9uLmgiCisjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaCIKIAogI2lm
IFVTRShPUEVOR0xfRVMpCiAKQEAgLTc1LDExICs3Niw3IEBAIHB1YmxpYzoKIAogICAgIC8vIEV4
dGVuc2lvbjNEIG1ldGhvZHMKICAgICBib29sIGlzRW5hYmxlZChjb25zdCBTdHJpbmcmKSBvdmVy
cmlkZTsKLSAgICB2b2lkIGJsaXRGcmFtZWJ1ZmZlckFOR0xFKEdDR0xpbnQgc3JjWDAsIEdDR0xp
bnQgc3JjWTAsIEdDR0xpbnQgc3JjWDEsIEdDR0xpbnQgc3JjWTEsIEdDR0xpbnQgZHN0WDAsIEdD
R0xpbnQgZHN0WTAsIEdDR0xpbnQgZHN0WDEsIEdDR0xpbnQgZHN0WTEsIEdDR0xiaXRmaWVsZCBt
YXNrLCBHQ0dMZW51bSBmaWx0ZXIpIG92ZXJyaWRlOwotICAgIHZvaWQgcmVuZGVyYnVmZmVyU3Rv
cmFnZU11bHRpc2FtcGxlQU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWkgc2FtcGxlcywg
R0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdo
dCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBpbnNlcnRFdmVudE1hcmtlckVYVChjb25zdCBTdHJpbmcm
KSBvdmVycmlkZTsKLSAgICB2b2lkIHB1c2hHcm91cE1hcmtlckVYVChjb25zdCBTdHJpbmcmKSBv
dmVycmlkZTsKLSAgICB2b2lkIHBvcEdyb3VwTWFya2VyRVhUKHZvaWQpIG92ZXJyaWRlOworICAg
IHZvaWQgcmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5HTEUoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMc2l6ZWkgc2FtcGxlcywgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3
aWR0aCwgR0NHTHNpemVpIGhlaWdodCk7CiAKICAgICBQbGF0Zm9ybUdMT2JqZWN0IGNyZWF0ZVZl
cnRleEFycmF5T0VTKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkZWxldGVWZXJ0ZXhBcnJheU9FUyhQ
bGF0Zm9ybUdMT2JqZWN0KSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdM
LmgKaW5kZXggZjUyNGRlOTJkY2Q5YTU5OGIwZmJlZjhkMzNiOWM0NDA5YjhjZDFiMC4uMzk1Yjk1
NzNiNzY1ZDkzYzA0Mjc0NmExZjU0OTEyMGFkZjIzZjgxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMLmgKQEAgLTQ1LDYgKzQ1LDcgQEAKIAogI2lmICFVU0UoQU5HTEUpCiAjaW5j
bHVkZSAiQU5HTEVXZWJLaXRCcmlkZ2UuaCIKKyNpbmNsdWRlICJFeHRlbnNpb25zR0xPcGVuR0xD
b21tb24uaCIKICNlbmRpZgogCiAvLyBGSVhNRTogRmluZCBhIGJldHRlciB3YXkgdG8gYXZvaWQg
dGhlIG5hbWUgY29uZmxpY3Rpb24gZm9yIE5PX0VSUk9SLgpAQCAtNDg2LDcgKzQ4NywxMiBAQCBw
dWJsaWM6CiAgICAgLy8gYWxsIG1ldGhvZHMgaXQgY29udGFpbnMgbWF5IG5lY2Vzc2FyaWx5IGJl
IHN1cHBvcnRlZCBvbiB0aGUKICAgICAvLyBjdXJyZW50IGhhcmR3YXJlLiBNdXN0IGNhbGwgRXh0
ZW5zaW9uc0dMOjpzdXBwb3J0cygpIHRvCiAgICAgLy8gZGV0ZXJtaW5lIHRoaXMuCisjaWYgIVVT
RShBTkdMRSkKKyAgICAvLyBVc2UgY292YXJpYW50IHJldHVybiB0eXBlIGZvciBPUEVOR0wvT1BF
TkdMX0VTCisgICAgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uJiBnZXRFeHRlbnNpb25zKCkgZmlu
YWw7CisjZWxzZQogICAgIEV4dGVuc2lvbnNHTCYgZ2V0RXh0ZW5zaW9ucygpIGZpbmFsOworI2Vu
ZGlmCiAKICAgICB2b2lkIHNldEZhaWxOZXh0R1BVU3RhdHVzQ2hlY2soKSBmaW5hbCB7IG1fZmFp
bE5leHRTdGF0dXNDaGVjayA9IHRydWU7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQmFzZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0xCYXNlLmNwcAppbmRleCBmNDE0ZjljOTYzNGQ2MWI4ZDkwMTVkNWE2YWZhNTI3Y2Mz
NDJiZThmLi4wZmY1MzNiZTcxMjg0ZWQwOGQ1MzQzYjk5OTZhOTZmYTE2ZTJiNWFmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0xCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xCYXNlLmNwcApAQCAtMTE2LDcgKzExNiw3
IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlc2hhcGVGQk9zKGNvbnN0IEludFNp
emUmIHNpemUpCiAgICAgICAgIC8vIFdlIGRvbid0IGFsbG93IHRoZSBsb2dpYyB3aGVyZSBzdGVu
Y2lsIGlzIHJlcXVpcmVkIGFuZCBkZXB0aCBpcyBub3QuCiAgICAgICAgIC8vIFNlZSBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6dmFsaWRhdGVBdHRyaWJ1dGVzLgogCi0gICAgICAgIEV4dGVuc2lv
bnNHTCYgZXh0ZW5zaW9ucyA9IGdldEV4dGVuc2lvbnMoKTsKKyAgICAgICAgRXh0ZW5zaW9uc0dM
T3BlbkdMQ29tbW9uJiBleHRlbnNpb25zID0gZ2V0RXh0ZW5zaW9ucygpOwogICAgICAgICAvLyBV
c2UgYSAyNCBiaXQgZGVwdGggYnVmZmVyIHdoZXJlIHdlIGtub3cgd2UgaGF2ZSBpdC4KICAgICAg
ICAgaWYgKGV4dGVuc2lvbnMuc3VwcG9ydHMoIkdMX0VYVF9wYWNrZWRfZGVwdGhfc3RlbmNpbCIp
KQogICAgICAgICAgICAgaW50ZXJuYWxEZXB0aFN0ZW5jaWxGb3JtYXQgPSBHTF9ERVBUSDI0X1NU
RU5DSUw4X0VYVDsKQEAgLTQxNyw3ICs0MTcsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjpjbGVhckRlcHRoKEdDR0xjbGFtcGYgZGVwdGgpCiB9CiAKICNpZiAhUExBVEZPUk0oR1RL
KQotRXh0ZW5zaW9uc0dMJiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0RXh0ZW5zaW9ucygp
CitFeHRlbnNpb25zR0xPcGVuR0xDb21tb24mIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRF
eHRlbnNpb25zKCkKIHsKICAgICBpZiAoIW1fZXh0ZW5zaW9ucykKICAgICAgICAgbV9leHRlbnNp
b25zID0gbWFrZVVuaXF1ZTxFeHRlbnNpb25zR0xPcGVuR0w+KHRoaXMsIGlzR0xFUzJDb21wbGlh
bnQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVu
Z2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb21tb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29tbW9uLmNwcApp
bmRleCAyZGUxODVhNjY4MTMwYTM2MmMxMjc2N2YzODNmNTdmMTM0OWRkNDgxLi5kZjk4M2ZkYTg4
MTEyODliNjAyMmRhZmVlOThkY2Y5MjlkYzI0NTEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb21tb24u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGlj
c0NvbnRleHRHTE9wZW5HTENvbW1vbi5jcHAKQEAgLTExOCw3ICsxMTgsNyBAQCB2b2lkIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjp2YWxpZGF0ZURlcHRoU3RlbmNpbChjb25zdCBjaGFyKiBwYWNr
ZWREZXB0aFN0ZW5jaQogewogICAgIGF1dG8gYXR0cnMgPSBjb250ZXh0QXR0cmlidXRlcygpOwog
Ci0gICAgRXh0ZW5zaW9uc0dMJiBleHRlbnNpb25zID0gZ2V0RXh0ZW5zaW9ucygpOworICAgIEV4
dGVuc2lvbnNHTE9wZW5HTENvbW1vbiYgZXh0ZW5zaW9ucyA9IGdldEV4dGVuc2lvbnMoKTsKICAg
ICBpZiAoYXR0cnMuc3RlbmNpbCkgewogICAgICAgICBpZiAoZXh0ZW5zaW9ucy5zdXBwb3J0cyhw
YWNrZWREZXB0aFN0ZW5jaWxFeHRlbnNpb24pKSB7CiAgICAgICAgICAgICBleHRlbnNpb25zLmVu
c3VyZUVuYWJsZWQocGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9w
ZW5HTEVTLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFw
aGljc0NvbnRleHRHTE9wZW5HTEVTLmNwcAppbmRleCAwZDQ3NmMyMjlkNmY2ZWU5NmNjZjk5M2Q4
MWQ1YzNkZDY1MjE1ZTQ4Li5hYjljMzVmODQ5NjQzNmM5NjBlMjEyYTQxYmMzZTBjZmU5YWJiZjA5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0xFUy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMRVMuY3BwCkBAIC0yNTQsNyAr
MjU0LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y2xlYXJEZXB0aChHQ0dMY2xh
bXBmIGRlcHRoKQogfQogCiAjaWYgIVBMQVRGT1JNKEdUSykKLUV4dGVuc2lvbnNHTCYgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OmdldEV4dGVuc2lvbnMoKQorRXh0ZW5zaW9uc0dMT3BlbkdMQ29t
bW9uJiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0RXh0ZW5zaW9ucygpCiB7CiAgICAgaWYg
KCFtX2V4dGVuc2lvbnMpCiAgICAgICAgIG1fZXh0ZW5zaW9ucyA9IG1ha2VVbmlxdWU8RXh0ZW5z
aW9uc0dMT3BlbkdMRVM+KHRoaXMsIGlzR0xFUzJDb21wbGlhbnQoKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0R0xU
ZXh0dXJlTWFwcGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9HcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXIuY3BwCmluZGV4IDg3MzE0MGIwZDk1MjQ3
NDc4YTIxZjE0Y2E5OThmNjcxNmVlN2FkN2EuLmVhNWRhOWY4ODE4ODc3MjFlN2FkNDJlODQwYmRi
MWE3ZGRmMjE1ZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9HcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0NvbnRleHRHTFRleHR1cmVN
YXBwZXIuY3BwCkBAIC00MjksNyArNDI5LDcgQEAgUGxhdGZvcm1MYXllciogR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OnBsYXRmb3JtTGF5ZXIoKSBjb25zdAogfQogCiAjaWYgUExBVEZPUk0oR1RL
KSAmJiAhVVNFKEFOR0xFKQotRXh0ZW5zaW9uc0dMJiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
Z2V0RXh0ZW5zaW9ucygpCitFeHRlbnNpb25zR0xPcGVuR0xDb21tb24mIEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjpnZXRFeHRlbnNpb25zKCkKIHsKICAgICBpZiAoIW1fZXh0ZW5zaW9ucykgewog
I2lmIFVTRShPUEVOR0xfRVMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
Z3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wubWVzc2FnZXMu
aW4KaW5kZXggYWEwMzQ3MjVmOWFhNDJmNDJiZDNjOGEwMGIwYWExODA5MGE1OWI5YS4uYzc4OGQ2
NWRiNGQ5NzFjMmQ0ZDU0MGM0Njg4OGM0NTExMTRiMzQ2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLm1lc3NhZ2Vz
LmluCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGlj
c0NvbnRleHRHTC5tZXNzYWdlcy5pbgpAQCAtMjc0LDE2ICsyNzQsMTEgQEAgbWVzc2FnZXMgLT4g
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0wgTm90UmVmQ291bnRlZCB7CiAgICAgdm9pZCBVbmlmb3Jt
QmxvY2tCaW5kaW5nKHVpbnQzMl90IHByb2dyYW0sIHVpbnQzMl90IHVuaWZvcm1CbG9ja0luZGV4
LCB1aW50MzJfdCB1bmlmb3JtQmxvY2tCaW5kaW5nKQogICAgIHZvaWQgR2V0QWN0aXZlVW5pZm9y
bUJsb2NraXYodWludDMyX3QgcHJvZ3JhbSwgdWludDMyX3QgdW5pZm9ybUJsb2NrSW5kZXgsIHVp
bnQzMl90IHBuYW1lLCB1aW50NjRfdCBwYXJhbXNTaXplKSAtPiAoSVBDOjpBcnJheVJlZmVyZW5j
ZTxpbnQzMl90PiBwYXJhbXMpIFN5bmNocm9ub3VzCiAgICAgdm9pZCBHZXRHcmFwaGljc1Jlc2V0
U3RhdHVzQVJCKCkgLT4gKGludDMyX3QgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCi0gICAgdm9p
ZCBCbGl0RnJhbWVidWZmZXJBTkdMRShpbnQzMl90IHNyY1gwLCBpbnQzMl90IHNyY1kwLCBpbnQz
Ml90IHNyY1gxLCBpbnQzMl90IHNyY1kxLCBpbnQzMl90IGRzdFgwLCBpbnQzMl90IGRzdFkwLCBp
bnQzMl90IGRzdFgxLCBpbnQzMl90IGRzdFkxLCB1aW50MzJfdCBtYXNrLCB1aW50MzJfdCBmaWx0
ZXIpCi0gICAgdm9pZCBSZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVBTkdMRSh1aW50MzJf
dCB0YXJnZXQsIGludDMyX3Qgc2FtcGxlcywgdWludDMyX3QgaW50ZXJuYWxmb3JtYXQsIGludDMy
X3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0KQogICAgIHZvaWQgQ3JlYXRlVmVydGV4QXJyYXlPRVMo
KSAtPiAodWludDMyX3QgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCiAgICAgdm9pZCBEZWxldGVW
ZXJ0ZXhBcnJheU9FUyh1aW50MzJfdCBhcmcwKQogICAgIHZvaWQgSXNWZXJ0ZXhBcnJheU9FUyh1
aW50MzJfdCBhcmcwKSAtPiAoYm9vbCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKICAgICB2b2lk
IEJpbmRWZXJ0ZXhBcnJheU9FUyh1aW50MzJfdCBhcmcwKQogICAgIHZvaWQgR2V0VHJhbnNsYXRl
ZFNoYWRlclNvdXJjZUFOR0xFKHVpbnQzMl90IGFyZzApIC0+IChTdHJpbmcgcmV0dXJuVmFsdWUp
IFN5bmNocm9ub3VzCi0gICAgdm9pZCBJbnNlcnRFdmVudE1hcmtlckVYVChTdHJpbmcgYXJnMCkK
LSAgICB2b2lkIFB1c2hHcm91cE1hcmtlckVYVChTdHJpbmcgYXJnMCkKLSAgICB2b2lkIFBvcEdy
b3VwTWFya2VyRVhUKCkKICAgICB2b2lkIERyYXdCdWZmZXJzRVhUKElQQzo6QXJyYXlSZWZlcmVu
Y2U8dWludDMyX3Q+IGJ1ZnMpCiAgICAgdm9pZCBEcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUodWlu
dDMyX3QgbW9kZSwgaW50MzJfdCBmaXJzdCwgaW50MzJfdCBjb3VudCwgaW50MzJfdCBwcmltY291
bnQpCiAgICAgdm9pZCBEcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRSh1aW50MzJfdCBtb2RlLCBp
bnQzMl90IGNvdW50LCB1aW50MzJfdCB0eXBlLCB1aW50NjRfdCBvZmZzZXQsIGludDMyX3QgcHJp
bWNvdW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1Jl
bW90ZUdyYXBoaWNzQ29udGV4dEdMRnVuY3Rpb25zR2VuZXJhdGVkLmggYi9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xGdW5jdGlvbnNHZW5l
cmF0ZWQuaAppbmRleCBhZjAxNjAyYWY0OTNlYjY3ZGUzZTYyY2YwZTUwYWMwYTJiOTkyNWYxLi4x
YmM1N2RmOWFmZGEyOGQ4YmU0ZWJjNmQ0NDkzMmVhOTU1MzJhY2E4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xGdW5j
dGlvbnNHZW5lcmF0ZWQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3Mv
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xGdW5jdGlvbnNHZW5lcmF0ZWQuaApAQCAtMTExOCwxNCAr
MTExOCw2IEBACiAgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5nZXRFeHRlbnNpb25z
KCkuZ2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQigpOwogICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihyZXR1cm5WYWx1ZSk7CiAgICAgfQotICAgIHZvaWQgYmxpdEZyYW1lYnVmZmVyQU5HTEUoaW50
MzJfdCBzcmNYMCwgaW50MzJfdCBzcmNZMCwgaW50MzJfdCBzcmNYMSwgaW50MzJfdCBzcmNZMSwg
aW50MzJfdCBkc3RYMCwgaW50MzJfdCBkc3RZMCwgaW50MzJfdCBkc3RYMSwgaW50MzJfdCBkc3RZ
MSwgdWludDMyX3QgbWFzaywgdWludDMyX3QgZmlsdGVyKQotICAgIHsKLSAgICAgICAgbV9jb250
ZXh0LT5nZXRFeHRlbnNpb25zKCkuYmxpdEZyYW1lYnVmZmVyQU5HTEUoc3JjWDAsIHNyY1kwLCBz
cmNYMSwgc3JjWTEsIGRzdFgwLCBkc3RZMCwgZHN0WDEsIGRzdFkxLCBtYXNrLCBmaWx0ZXIpOwot
ICAgIH0KLSAgICB2b2lkIHJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKHVpbnQz
Ml90IHRhcmdldCwgaW50MzJfdCBzYW1wbGVzLCB1aW50MzJfdCBpbnRlcm5hbGZvcm1hdCwgaW50
MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQpCi0gICAgewotICAgICAgICBtX2NvbnRleHQtPmdl
dEV4dGVuc2lvbnMoKS5yZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVBTkdMRSh0YXJnZXQs
IHNhbXBsZXMsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0KTsKLSAgICB9CiAgICAgdm9p
ZCBjcmVhdGVWZXJ0ZXhBcnJheU9FUyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQzMl90KT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKICAgICB7CiAgICAgICAgIFBsYXRmb3JtR0xPYmplY3QgcmV0
dXJuVmFsdWUgPSB7IH07CkBAIC0xMTUyLDE4ICsxMTQ0LDYgQEAKICAgICAgICAgcmV0dXJuVmFs
dWUgPSBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5nZXRUcmFuc2xhdGVkU2hhZGVyU291cmNl
QU5HTEUoYXJnMCk7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUocmV0dXJuVmFs
dWUpKTsKICAgICB9Ci0gICAgdm9pZCBpbnNlcnRFdmVudE1hcmtlckVYVChTdHJpbmcmJiBhcmcw
KQotICAgIHsKLSAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuaW5zZXJ0RXZlbnRN
YXJrZXJFWFQoYXJnMCk7Ci0gICAgfQotICAgIHZvaWQgcHVzaEdyb3VwTWFya2VyRVhUKFN0cmlu
ZyYmIGFyZzApCi0gICAgewotICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5wdXNo
R3JvdXBNYXJrZXJFWFQoYXJnMCk7Ci0gICAgfQotICAgIHZvaWQgcG9wR3JvdXBNYXJrZXJFWFQo
KQotICAgIHsKLSAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkucG9wR3JvdXBNYXJr
ZXJFWFQoKTsKLSAgICB9CiAgICAgdm9pZCBkcmF3QnVmZmVyc0VYVChJUEM6OkFycmF5UmVmZXJl
bmNlPHVpbnQzMl90PiYmIGJ1ZnMpCiAgICAgewogICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVu
c2lvbnMoKS5kcmF3QnVmZmVyc0VYVChtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25z
dCBHQ0dMZW51bSo+KGJ1ZnMuZGF0YSgpKSwgYnVmcy5zaXplKCkpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5LmgKaW5kZXggZDk5ZWRhMjlmNmRiNWUxODE5NzEzMTc4ZjJh
YTUzMWI0ZjVkZDZlMC4uOTBiZGQzNWMzMDQzMDk1MjQ0YzBkMTAzYWZkNGExNmI3Y2QyZjlhZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmgKQEAgLTMxMiw1NiArMzEy
LDE2IEBAIHB1YmxpYzoKICAgICB2b2lkIHVuaWZvcm1CbG9ja0JpbmRpbmcoUGxhdGZvcm1HTE9i
amVjdCBwcm9ncmFtLCBHQ0dMdWludCB1bmlmb3JtQmxvY2tJbmRleCwgR0NHTHVpbnQgdW5pZm9y
bUJsb2NrQmluZGluZykgZmluYWw7CiAgICAgdm9pZCBnZXRBY3RpdmVVbmlmb3JtQmxvY2tpdihH
Q0dMdWludCBwcm9ncmFtLCBHQ0dMdWludCB1bmlmb3JtQmxvY2tJbmRleCwgR0NHTGVudW0gcG5h
bWUsIEdDR0xTcGFuPEdDR0xpbnQ+IHBhcmFtcykgZmluYWw7CiAgICAgR0NHTGludCBnZXRHcmFw
aGljc1Jlc2V0U3RhdHVzQVJCKCkgZmluYWw7Ci0gICAgdm9pZCBibGl0RnJhbWVidWZmZXJBTkdM
RShHQ0dMaW50IHNyY1gwLCBHQ0dMaW50IHNyY1kwLCBHQ0dMaW50IHNyY1gxLCBHQ0dMaW50IHNy
Y1kxLCBHQ0dMaW50IGRzdFgwLCBHQ0dMaW50IGRzdFkwLCBHQ0dMaW50IGRzdFgxLCBHQ0dMaW50
IGRzdFkxLCBHQ0dMYml0ZmllbGQgbWFzaywgR0NHTGVudW0gZmlsdGVyKSBmaW5hbDsKLSAgICB2
b2lkIHJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKEdDR0xlbnVtIHRhcmdldCwg
R0NHTHNpemVpIHNhbXBsZXMsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lk
dGgsIEdDR0xzaXplaSBoZWlnaHQpIGZpbmFsOwogICAgIFBsYXRmb3JtR0xPYmplY3QgY3JlYXRl
VmVydGV4QXJyYXlPRVMoKSBmaW5hbDsKICAgICB2b2lkIGRlbGV0ZVZlcnRleEFycmF5T0VTKFBs
YXRmb3JtR0xPYmplY3QgYXJnMCkgZmluYWw7CiAgICAgR0NHTGJvb2xlYW4gaXNWZXJ0ZXhBcnJh
eU9FUyhQbGF0Zm9ybUdMT2JqZWN0IGFyZzApIGZpbmFsOwogICAgIHZvaWQgYmluZFZlcnRleEFy
cmF5T0VTKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkgZmluYWw7CiAgICAgU3RyaW5nIGdldFRyYW5z
bGF0ZWRTaGFkZXJTb3VyY2VBTkdMRShQbGF0Zm9ybUdMT2JqZWN0IGFyZzApIGZpbmFsOwotICAg
IHZvaWQgaW5zZXJ0RXZlbnRNYXJrZXJFWFQoY29uc3QgU3RyaW5nJiBhcmcwKSBmaW5hbDsKLSAg
ICB2b2lkIHB1c2hHcm91cE1hcmtlckVYVChjb25zdCBTdHJpbmcmIGFyZzApIGZpbmFsOwotICAg
IHZvaWQgcG9wR3JvdXBNYXJrZXJFWFQoKSBmaW5hbDsKICAgICB2b2lkIGRyYXdCdWZmZXJzRVhU
KEdDR0xTcGFuPGNvbnN0IEdDR0xlbnVtPiBidWZzKSBmaW5hbDsKICAgICB2b2lkIGRyYXdBcnJh
eXNJbnN0YW5jZWRBTkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMaW50IGZpcnN0LCBHQ0dMc2l6ZWkg
Y291bnQsIEdDR0xzaXplaSBwcmltY291bnQpIGZpbmFsOwogICAgIHZvaWQgZHJhd0VsZW1lbnRz
SW5zdGFuY2VkQU5HTEUoR0NHTGVudW0gbW9kZSwgR0NHTHNpemVpIGNvdW50LCBHQ0dMZW51bSB0
eXBlLCBHQ0dMdm9pZHB0ciBvZmZzZXQsIEdDR0xzaXplaSBwcmltY291bnQpIGZpbmFsOwogICAg
IHZvaWQgdmVydGV4QXR0cmliRGl2aXNvckFOR0xFKEdDR0x1aW50IGluZGV4LCBHQ0dMdWludCBk
aXZpc29yKSBmaW5hbDsKICAgICB2b2lkIGdldEludGVybmFsZm9ybWF0aXYoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdD
R0xpbnQ+IHBhcmFtcykgZmluYWw7Ci0gICAgdm9pZCByZWFkUGl4ZWxzUm9idXN0QU5HTEUoR0NH
TGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NH
TGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVp
KiBsZW5ndGgsIEdDR0xzaXplaSogY29sdW1ucywgR0NHTHNpemVpKiByb3dzLCBHQ0dMdm9pZCog
cGl4ZWxzKSBmaW5hbDsKLSAgICB2b2lkIHRleFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTGVu
dW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xm
bG9hdCogcGFyYW1zKSBmaW5hbDsKLSAgICB2b2lkIHRleFBhcmFtZXRlcml2Um9idXN0QU5HTEUo
R0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0
IEdDR0xpbnQqIHBhcmFtcykgZmluYWw7Ci0gICAgdm9pZCBnZXRRdWVyeWl2Um9idXN0QU5HTEUo
R0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xz
aXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpIGZpbmFsOwotICAgIHZvaWQgZ2V0UXVlcnlP
YmplY3R1aXZSb2J1c3RBTkdMRShHQ0dMdWludCBpZCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXpl
aSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHVpbnQqIHBhcmFtcykgZmluYWw7Ci0g
ICAgdm9pZCBnZXRCdWZmZXJQb2ludGVydlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NH
TGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHZv
aWQqKiBwYXJhbXMpIGZpbmFsOwotICAgIHZvaWQgZ2V0VmVydGV4QXR0cmliSWl2Um9idXN0QU5H
TEUoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NH
THNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykgZmluYWw7Ci0gICAgdm9pZCBnZXRWZXJ0
ZXhBdHRyaWJJdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBH
Q0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0x1aW50KiBwYXJhbXMpIGZp
bmFsOwotICAgIHZvaWQgZ2V0VW5pZm9ybXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0s
IEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwg
R0NHTHVpbnQqIHBhcmFtcykgZmluYWw7Ci0gICAgdm9pZCBnZXRCdWZmZXJQYXJhbWV0ZXJpNjR2
Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1
ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50NjQqIHBhcmFtcykgZmluYWw7Ci0gICAg
dm9pZCBzYW1wbGVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dM
ZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xpbnQqIHBhcmFtKSBmaW5h
bDsKLSAgICB2b2lkIHNhbXBsZXJQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBs
ZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGZsb2F0KiBw
YXJhbSkgZmluYWw7Ci0gICAgdm9pZCBnZXRTYW1wbGVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShH
Q0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xz
aXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpIGZpbmFsOwotICAgIHZvaWQgZ2V0U2FtcGxl
clBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUs
IEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGZsb2F0KiBwYXJhbXMp
IGZpbmFsOwotICAgIHZvaWQgZ2V0RnJhbWVidWZmZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdD
R0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6
ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1zKSBmaW5hbDsKLSAgICB2b2lkIGdldFByb2dyYW1J
bnRlcmZhY2VpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xlbnVtIHByb2dyYW1J
bnRlcmZhY2UsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBs
ZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykgZmluYWw7Ci0gICAgdm9pZCBnZXRCb29sZWFuaV92Um9i
dXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMdWludCBpbmRleCwgR0NHTHNpemVpIGJ1ZlNp
emUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMYm9vbGVhbiogZGF0YSkgZmluYWw7IC8vIE5PTElO
VAotICAgIHZvaWQgZ2V0TXVsdGlzYW1wbGVmdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHBuYW1lLCBH
Q0dMdWludCBpbmRleCwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dM
ZmxvYXQqIHZhbCkgZmluYWw7Ci0gICAgdm9pZCBnZXRUZXhMZXZlbFBhcmFtZXRlcml2Um9idXN0
QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBwbmFtZSwgR0NH
THNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpIGZpbmFs
OwotICAgIHZvaWQgZ2V0VGV4TGV2ZWxQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRh
cmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBH
Q0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGZsb2F0KiBwYXJhbXMpIGZpbmFsOwotICAgIHZvaWQgZ2V0
UG9pbnRlcnZSb2J1c3RBTkdMRVJvYnVzdEFOR0xFKEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkg
YnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0x2b2lkKiogcGFyYW1zKSBmaW5hbDsKLSAg
ICB2b2lkIGdldG5Vbmlmb3JtZnZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMaW50
IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xmbG9h
dCogcGFyYW1zKSBmaW5hbDsKLSAgICB2b2lkIGdldG5Vbmlmb3JtaXZSb2J1c3RBTkdMRShHQ0dM
dWludCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNp
emVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykgZmluYWw7Ci0gICAgdm9pZCBnZXRuVW5pZm9y
bXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xz
aXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHVpbnQqIHBhcmFtcykgZmluYWw7
Ci0gICAgdm9pZCB0ZXhQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdD
R0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGludCogcGFyYW1zKSBm
aW5hbDsKLSAgICB2b2lkIHRleFBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJn
ZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTHVpbnQqIHBh
cmFtcykgZmluYWw7Ci0gICAgdm9pZCBnZXRUZXhQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRShHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVp
KiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykgZmluYWw7Ci0gICAgdm9pZCBnZXRUZXhQYXJhbWV0
ZXJJdWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNp
emVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMdWludCogcGFyYW1zKSBmaW5hbDsK
LSAgICB2b2lkIHNhbXBsZXJQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVy
LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xpbnQqIHBhcmFt
KSBmaW5hbDsKLSAgICB2b2lkIHNhbXBsZXJQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUoR0NHTHVp
bnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dM
dWludCogcGFyYW0pIGZpbmFsOwotICAgIHZvaWQgZ2V0U2FtcGxlclBhcmFtZXRlcklpdlJvYnVz
dEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6
ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykgZmluYWw7Ci0gICAgdm9pZCBn
ZXRTYW1wbGVyUGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xl
bnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0x1aW50
KiBwYXJhbXMpIGZpbmFsOwotICAgIHZvaWQgZ2V0UXVlcnlPYmplY3RpdlJvYnVzdEFOR0xFKEdD
R0x1aW50IGlkLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSog
bGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpIGZpbmFsOwotICAgIHZvaWQgZ2V0UXVlcnlPYmplY3Rp
NjR2Um9idXN0QU5HTEUoR0NHTHVpbnQgaWQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVm
U2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQ2NCogcGFyYW1zKSBmaW5hbDsKLSAgICB2
b2lkIGdldFF1ZXJ5T2JqZWN0dWk2NHZSb2J1c3RBTkdMRShHQ0dMdWludCBpZCwgR0NHTGVudW0g
cG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHVpbnQ2NCog
cGFyYW1zKSBmaW5hbDsKICAgICAvLyBFbmQgb2YgbGlzdCB1c2VkIGJ5IGdlbmVyYXRlLWdwdXAt
d2ViZ2wgc2NyaXB0LgogCiBwcm90ZWN0ZWQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlGdW5jdGlv
bnNHZW5lcmF0ZWQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9S
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5RnVuY3Rpb25zR2VuZXJhdGVkLmNwcAppbmRleCBm
N2VjZjg2NTU2YTAwNzNhZjhmNTU0Y2ZjZmMwZWYzMzlmNjFlODlhLi5lMWE2ZGQzNGU1NWI1MjVm
ZWYyNmI1N2NiMTMyNTJjZjMyYmQwNjlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlGdW5jdGlvbnNH
ZW5lcmF0ZWQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mv
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUZ1bmN0aW9uc0dlbmVyYXRlZC5jcHAKQEAgLTEz
ODAsMTYgKzEzODAsNiBAQCBHQ0dMaW50IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Omdl
dEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIoKQogICAgIHJldHVybiByZXR1cm5WYWx1ZTsKIH0KIAot
dm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpibGl0RnJhbWVidWZmZXJBTkdMRShH
Q0dMaW50IHNyY1gwLCBHQ0dMaW50IHNyY1kwLCBHQ0dMaW50IHNyY1gxLCBHQ0dMaW50IHNyY1kx
LCBHQ0dMaW50IGRzdFgwLCBHQ0dMaW50IGRzdFkwLCBHQ0dMaW50IGRzdFgxLCBHQ0dMaW50IGRz
dFkxLCBHQ0dMYml0ZmllbGQgbWFzaywgR0NHTGVudW0gZmlsdGVyKQotewotICAgIHNlbmQoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpCbGl0RnJhbWVidWZmZXJBTkdMRShzcmNY
MCwgc3JjWTAsIHNyY1gxLCBzcmNZMSwgZHN0WDAsIGRzdFkwLCBkc3RYMSwgZHN0WTEsIG1hc2ss
IGZpbHRlciksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKLX0KLQotdm9pZCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpyZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVB
TkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xzaXplaSBzYW1wbGVzLCBHQ0dMZW51bSBpbnRlcm5h
bGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KQotewotICAgIHNlbmQo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpSZW5kZXJidWZmZXJTdG9yYWdlTXVs
dGlzYW1wbGVBTkdMRSh0YXJnZXQsIHNhbXBsZXMsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVp
Z2h0KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOwotfQotCiBQbGF0Zm9ybUdMT2Jq
ZWN0IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNyZWF0ZVZlcnRleEFycmF5T0VTKCkK
IHsKICAgICB1aW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKQEAgLTE0MjEsMjEgKzE0MTEsNiBA
QCBTdHJpbmcgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VHJhbnNsYXRlZFNoYWRl
clNvdXJjZUFOR0xFKFBsYXRmb3JtR0xPYgogICAgIHJldHVybiByZXR1cm5WYWx1ZTsKIH0KIAot
dm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjppbnNlcnRFdmVudE1hcmtlckVYVChj
b25zdCBTdHJpbmcmIGFyZzApCi17Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6Okluc2VydEV2ZW50TWFya2VyRVhUKGFyZzApLCBtX2dyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllcik7Ci19Ci0KLXZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cHVz
aEdyb3VwTWFya2VyRVhUKGNvbnN0IFN0cmluZyYgYXJnMCkKLXsKLSAgICBzZW5kKE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6UHVzaEdyb3VwTWFya2VyRVhUKGFyZzApLCBtX2dy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Ci19Ci0KLXZvaWQgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6cG9wR3JvdXBNYXJrZXJFWFQoKQotewotICAgIHNlbmQoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpQb3BHcm91cE1hcmtlckVYVCgpLCBtX2dyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllcik7Ci19Ci0KIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6ZHJhd0J1ZmZlcnNFWFQoR0NHTFNwYW48Y29uc3QgR0NHTGVudW0+IGJ1ZnMpCiB7CiAgICAg
c2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRyYXdCdWZmZXJzRVhUKElQ
Qzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDMy
X3QqPihidWZzLmRhdGEpLCBidWZzLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIpOwpAQCAtMTQ2NSwxODEgKzE0NDAsNiBAQCB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmdldEludGVybmFsZm9ybWF0aXYoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bQog
ICAgIAogfQogCi12b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnJlYWRQaXhlbHNS
b2J1c3RBTkdMRShHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6
ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZT
aXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHNpemVpKiBjb2x1bW5zLCBHQ0dMc2l6ZWkqIHJv
d3MsIEdDR0x2b2lkKiBwaXhlbHMpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9p
ZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhQYXJhbWV0ZXJmdlJvYnVzdEFOR0xF
KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25z
dCBHQ0dMZmxvYXQqIHBhcmFtcykKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lk
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnRleFBhcmFtZXRlcml2Um9idXN0QU5HTEUo
R0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0
IEdDR0xpbnQqIHBhcmFtcykKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFF1ZXJ5aXZSb2J1c3RBTkdMRShHQ0dMZW51
bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBs
ZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12
b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFF1ZXJ5T2JqZWN0dWl2Um9idXN0
QU5HTEUoR0NHTHVpbnQgaWQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NH
THNpemVpKiBsZW5ndGgsIEdDR0x1aW50KiBwYXJhbXMpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQo
KTsKLX0KLQotdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRCdWZmZXJQb2lu
dGVydlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXpl
aSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHZvaWQqKiBwYXJhbXMpCi17Ci0gICAg
bm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpnZXRWZXJ0ZXhBdHRyaWJJaXZSb2J1c3RBTkdMRShHQ0dMdWludCBpbmRleCwgR0NHTGVudW0g
cG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFy
YW1zKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6Z2V0VmVydGV4QXR0cmliSXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IGlu
ZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3Ro
LCBHQ0dMdWludCogcGFyYW1zKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VW5pZm9ybXVpdlJvYnVzdEFOR0xFKEdD
R0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dM
c2l6ZWkqIGxlbmd0aCwgR0NHTHVpbnQqIHBhcmFtcykKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgp
OwotfQotCi12b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEJ1ZmZlclBhcmFt
ZXRlcmk2NHZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dM
c2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQ2NCogcGFyYW1zKQotewot
ICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6c2FtcGxlclBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NH
TGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMaW50KiBwYXJhbSkKLXsK
LSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OnNhbXBsZXJQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdD
R0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGZsb2F0KiBwYXJhbSkK
LXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmdldFNhbXBsZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBs
ZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgs
IEdDR0xpbnQqIHBhcmFtcykKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFNhbXBsZXJQYXJhbWV0ZXJmdlJvYnVzdEFO
R0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwg
R0NHTHNpemVpKiBsZW5ndGgsIEdDR0xmbG9hdCogcGFyYW1zKQotewotICAgIG5vdEltcGxlbWVu
dGVkKCk7Ci19Ci0KLXZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0RnJhbWVi
dWZmZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5h
bWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1z
KQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6Z2V0UHJvZ3JhbUludGVyZmFjZWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJv
Z3JhbSwgR0NHTGVudW0gcHJvZ3JhbUludGVyZmFjZSwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXpl
aSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1zKQotewotICAgIG5v
dEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
Z2V0Qm9vbGVhbmlfdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTHVpbnQgaW5kZXgs
IEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGJvb2xlYW4qIGRhdGEp
IC8vIE5PTElOVAotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0TXVsdGlzYW1wbGVmdlJvYnVzdEFOR0xFKEdDR0xlbnVt
IHBuYW1lLCBHQ0dMdWludCBpbmRleCwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVu
Z3RoLCBHQ0dMZmxvYXQqIHZhbCkKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lk
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFRleExldmVsUGFyYW1ldGVyaXZSb2J1
c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIHBuYW1lLCBH
Q0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykKLXsK
LSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmdldFRleExldmVsUGFyYW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQs
IEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNp
emVpKiBsZW5ndGgsIEdDR0xmbG9hdCogcGFyYW1zKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7
Ci19Ci0KLXZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0UG9pbnRlcnZSb2J1
c3RBTkdMRVJvYnVzdEFOR0xFKEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NH
THNpemVpKiBsZW5ndGgsIEdDR0x2b2lkKiogcGFyYW1zKQotewotICAgIG5vdEltcGxlbWVudGVk
KCk7Ci19Ci0KLXZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0blVuaWZvcm1m
dlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXpl
aSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGZsb2F0KiBwYXJhbXMpCi17Ci0gICAg
bm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpnZXRuVW5pZm9ybWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2Nh
dGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJh
bXMpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpnZXRuVW5pZm9ybXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0s
IEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwg
R0NHTHVpbnQqIHBhcmFtcykKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnRleFBhcmFtZXRlcklpdlJvYnVzdEFOR0xFKEdD
R0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBH
Q0dMaW50KiBwYXJhbXMpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUoR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdD
R0x1aW50KiBwYXJhbXMpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRUZXhQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRShH
Q0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNp
emVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwot
fQotCi12b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFRleFBhcmFtZXRlckl1
aXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkg
YnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0x1aW50KiBwYXJhbXMpCi17Ci0gICAgbm90
SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpz
YW1wbGVyUGFyYW1ldGVySWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0g
cG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMaW50KiBwYXJhbSkKLXsKLSAgICBu
b3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OnNhbXBsZXJQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVu
dW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMdWludCogcGFyYW0pCi17Ci0g
ICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpnZXRTYW1wbGVyUGFyYW1ldGVySWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwg
R0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NH
TGludCogcGFyYW1zKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0U2FtcGxlclBhcmFtZXRlckl1aXZSb2J1c3RBTkdM
RShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdD
R0xzaXplaSogbGVuZ3RoLCBHQ0dMdWludCogcGFyYW1zKQotewotICAgIG5vdEltcGxlbWVudGVk
KCk7Ci19Ci0KLXZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0UXVlcnlPYmpl
Y3RpdlJvYnVzdEFOR0xFKEdDR0x1aW50IGlkLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1
ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpCi17Ci0gICAgbm90SW1w
bGVtZW50ZWQoKTsKLX0KLQotdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRR
dWVyeU9iamVjdGk2NHZSb2J1c3RBTkdMRShHQ0dMdWludCBpZCwgR0NHTGVudW0gcG5hbWUsIEdD
R0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludDY0KiBwYXJhbXMpCi17
Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjpnZXRRdWVyeU9iamVjdHVpNjR2Um9idXN0QU5HTEUoR0NHTHVpbnQgaWQsIEdDR0xl
bnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0x1aW50
NjQqIHBhcmFtcykKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCiB9CiAKICNlbmRpZgo=
</data>
<flag name="commit-queue"
          id="433141"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>415827</attachid>
            <date>2020-12-09 21:30:16 -0800</date>
            <delta_ts>2020-12-09 21:36:59 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-218896-20201209213015.patch</filename>
            <type>text/plain</type>
            <size>87418</size>
            <attacher name="Rini Patel">rini_patel</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwNTk0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTg5YmE0ODhlN2IwMmI3
YzFjMmUzOTNmOWI4MjgwMjM4YWIwMTI0Yy4uZTc5NmNiMjQzODFiNDE3YTkzMWMxY2JmNjQ5OWVh
OWEwMzA1MmM5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyOSBAQAorMjAyMC0xMi0wNyAgUmlu
aSBQYXRlbCAgPHJpbmlfcGF0ZWxAYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZSB1bnVzZWQg
ZnVuY3Rpb25zIGZyb20gR3JhcGhpY3NDb250ZXh0R0wgYW5kIEV4dGVuc2lvbnNHTAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE4ODk2CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVtb3ZlIHVudXNlZCBm
dW5jdGlvbnMgZnJvbSBHcmFwaGljc0NvbnRleHRHTCBhbmQgRXh0ZW5zaW9uc0dMCisgICAgICAg
IFRoZXkncmUgZGVhZCBjb2RlIGFuZCBtYWtlIGl0IGhhcmRlciB0byBpbXBsZW1lbnQgdGhlIEdQ
VSBQcm9jZXNzIHZlcnNpb24uCisKKyAgICAgICAgLSBJZiB0aGUgZnVuY3Rpb24gaXMgdW51c2Vk
LCByZW1vdmUgaXQgZnVsbHkKKyAgICAgICAgLSBJZiB0aGUgZnVuY3Rpb24gaXMgdW51c2VkIGlu
IFVTRShBTkdMRSkgV2ViR0wgcGFydCwgcmVtb3ZlIHRoZSBmdW5jdGlvbiBmcm9tIEdyYXBoaWNz
Q29udGV4dEdMIGFuZCBBTkdMRSBHcmFwaGljc0NvbnRleHRHTE9wZW5HTAorCisgICAgICAgICog
aHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL0V4dGVuc2lvbnNHTC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lv
bnNHTEFOR0xFOjpFeHRlbnNpb25zR0xBTkdMRSk6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNp
b25zR0xBTkdMRTo6aW5pdGlhbGl6ZUF2YWlsYWJsZUV4dGVuc2lvbnMpOgorICAgICAgICAoV2Vi
Q29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmJsaXRGcmFtZWJ1ZmZlckFOR0xFKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpyZW5kZXJidWZmZXJTdG9yYWdl
TXVsdGlzYW1wbGVBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25z
R0xBTkdMRTo6aW5zZXJ0RXZlbnRNYXJrZXJFWFQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OnB1c2hHcm91cE1hcmtlckVYVCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6cG9wR3JvdXBNYXJrZXJFWFQpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OnJlYWRQaXhlbHNSb2J1
c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6
dGV4UGFyYW1ldGVyZnZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpF
eHRlbnNpb25zR0xBTkdMRTo6dGV4UGFyYW1ldGVyaXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6Z2V0UXVlcnlpdlJvYnVzdEFOR0xF
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpnZXRRdWVy
eU9iamVjdHVpdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVu
c2lvbnNHTEFOR0xFOjpnZXRCdWZmZXJQb2ludGVydlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpnZXRWZXJ0ZXhBdHRyaWJJaXZSb2J1
c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6
Z2V0VmVydGV4QXR0cmliSXVpdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpnZXRVbmlmb3JtdWl2Um9idXN0QU5HTEUpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldEJ1ZmZlclBhcmFtZXRl
cmk2NHZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25z
R0xBTkdMRTo6c2FtcGxlclBhcmFtZXRlcml2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OnNhbXBsZXJQYXJhbWV0ZXJmdlJvYnVzdEFO
R0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpnZXRT
YW1wbGVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpFeHRlbnNpb25zR0xBTkdMRTo6Z2V0U2FtcGxlclBhcmFtZXRlcmZ2Um9idXN0QU5HTEUpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldEZyYW1lYnVm
ZmVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpF
eHRlbnNpb25zR0xBTkdMRTo6Z2V0UHJvZ3JhbUludGVyZmFjZWl2Um9idXN0QU5HTEUpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldEJvb2xlYW5pX3ZS
b2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdM
RTo6Z2V0TXVsdGlzYW1wbGVmdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpnZXRUZXhMZXZlbFBhcmFtZXRlcml2Um9idXN0QU5HTEUp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldFRleExl
dmVsUGFyYW1ldGVyZnZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpF
eHRlbnNpb25zR0xBTkdMRTo6Z2V0UG9pbnRlcnZSb2J1c3RBTkdMRVJvYnVzdEFOR0xFKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpnZXRuVW5pZm9ybWZ2
Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5H
TEU6OmdldG5Vbmlmb3JtaXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpFeHRlbnNpb25zR0xBTkdMRTo6Z2V0blVuaWZvcm11aXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6dGV4UGFyYW1ldGVySWl2Um9i
dXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6
OnRleFBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpFeHRlbnNpb25zR0xBTkdMRTo6Z2V0VGV4UGFyYW1ldGVySWl2Um9idXN0QU5HTEUpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldFRleFBhcmFtZXRl
ckl1aXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25z
R0xBTkdMRTo6c2FtcGxlclBhcmFtZXRlcklpdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpzYW1wbGVyUGFyYW1ldGVySXVpdlJvYnVz
dEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpn
ZXRTYW1wbGVyUGFyYW1ldGVySWl2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldFNhbXBsZXJQYXJhbWV0ZXJJdWl2Um9idXN0QU5H
TEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldFF1
ZXJ5T2JqZWN0aXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRl
bnNpb25zR0xBTkdMRTo6Z2V0UXVlcnlPYmplY3RpNjR2Um9idXN0QU5HTEUpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldFF1ZXJ5T2JqZWN0dWk2NHZS
b2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUv
RXh0ZW5zaW9uc0dMQU5HTEUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wv
RXh0ZW5zaW9uc0dMT3BlbkdMLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9w
ZW5HTDo6YmxpdEZyYW1lYnVmZmVyQU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
RXh0ZW5zaW9uc0dMT3BlbkdMOjpyZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVBTkdMRSk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0w6Omluc2VydEV2
ZW50TWFya2VyRVhUKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9w
ZW5HTDo6cHVzaEdyb3VwTWFya2VyRVhUKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4
dGVuc2lvbnNHTE9wZW5HTDo6cG9wR3JvdXBNYXJrZXJFWFQpOiBEZWxldGVkLgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6cmVhZFBpeGVsc1Jv
YnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5H
TENvbW1vbjo6dGV4UGFyYW1ldGVyZnZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OnRleFBhcmFtZXRlcml2Um9idXN0QU5H
TEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9u
OjpnZXRRdWVyeWl2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0
ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRRdWVyeU9iamVjdHVpdlJvYnVzdEFOR0xFKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0QnVm
ZmVyUG9pbnRlcnZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRl
bnNpb25zR0xPcGVuR0xDb21tb246OmdldFZlcnRleEF0dHJpYklpdlJvYnVzdEFOR0xFKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0VmVy
dGV4QXR0cmliSXVpdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4
dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0VW5pZm9ybXVpdlJvYnVzdEFOR0xFKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0QnVmZmVy
UGFyYW1ldGVyaTY0dlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4
dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6c2FtcGxlclBhcmFtZXRlcml2Um9idXN0QU5HTEUpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpzYW1w
bGVyUGFyYW1ldGVyZnZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpF
eHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFNhbXBsZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xF
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6
Z2V0U2FtcGxlclBhcmFtZXRlcmZ2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRGcmFtZWJ1ZmZlclBhcmFtZXRlcml2
Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3Bl
bkdMQ29tbW9uOjpnZXRQcm9ncmFtSW50ZXJmYWNlaXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldEJvb2xlYW5pX3ZS
b2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVu
R0xDb21tb246OmdldE11bHRpc2FtcGxlZnZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFRleExldmVsUGFyYW1ldGVy
aXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xP
cGVuR0xDb21tb246OmdldFRleExldmVsUGFyYW1ldGVyZnZSb2J1c3RBTkdMRSk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFBvaW50ZXJ2
Um9idXN0QU5HTEVSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRl
bnNpb25zR0xPcGVuR0xDb21tb246OmdldG5Vbmlmb3JtZnZSb2J1c3RBTkdMRSk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldG5Vbmlmb3Jt
aXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xP
cGVuR0xDb21tb246OmdldG5Vbmlmb3JtdWl2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjp0ZXhQYXJhbWV0ZXJJaXZSb2J1
c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xD
b21tb246OnRleFBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFRleFBhcmFtZXRlcklpdlJvYnVz
dEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTENv
bW1vbjo6Z2V0VGV4UGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6c2FtcGxlclBhcmFtZXRlcklpdlJv
YnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5H
TENvbW1vbjo6c2FtcGxlclBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFNhbXBsZXJQYXJhbWV0
ZXJJaXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25z
R0xPcGVuR0xDb21tb246OmdldFNhbXBsZXJQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRRdWVy
eU9iamVjdGl2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5z
aW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRRdWVyeU9iamVjdGk2NHZSb2J1c3RBTkdMRSk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFF1ZXJ5
T2JqZWN0dWk2NHZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5oOgorICAgICAgICAoV2ViQ29y
ZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjppc05WSURJQSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmlzQU1EIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6aXNJbnRlbCBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmlzSW1hZ2luYXRpb24gY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjp2ZW5kb3Ig
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpyZXF1
aXJlc0J1aWx0SW5GdW5jdGlvbkVtdWxhdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpF
eHRlbnNpb25zR0xPcGVuR0xDb21tb246OnJlcXVpcmVzUmVzdHJpY3RlZE1heGltdW1UZXh0dXJl
U2l6ZSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lv
bnNHTE9wZW5HTEVTLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTEVT
OjpibGl0RnJhbWVidWZmZXJBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRl
bnNpb25zR0xPcGVuR0xFUzo6aW5zZXJ0RXZlbnRNYXJrZXJFWFQpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMRVM6OnB1c2hHcm91cE1hcmtlckVYVCk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xFUzo6cG9wR3JvdXBN
YXJrZXJFWFQpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9F
eHRlbnNpb25zR0xPcGVuR0xFUy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5n
bC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEJhc2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlc2hhcGVGQk9zKToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRFeHRlbnNpb25zKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb21tb24uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnZhbGlkYXRlRGVw
dGhTdGVuY2lsKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0xFUy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6Z2V0RXh0ZW5zaW9ucyk6CisKIDIwMjAtMTItMDkgIFJ5YW4gSGFkZGFkICA8cnlh
bmhhZGRhZEBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcmV2ZXJ0aW5nIHIyNzA1
NDQgYW5kIHIyNzA1NjkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCmluZGV4IGY3YzZhMmU4MmE0YmYwMzdhMWI0
NzdkNzgzZmE1NDFhYzRmNTQ2OTYuLjkxODhhNjM5YmE3OTYyZThjY2Q4OTNlNTAwOTUwMmU3Mzgx
MDFkNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCkBAIC03NDEsMTAgKzc0MSw2IEBAIHN0ZDo6dW5pcXVl
X3B0cjxXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlPiBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
OjpjcmVhdGUoQ2FuCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIGF1dG8m
IGV4dGVuc2lvbnMgPSBjb250ZXh0LT5nZXRFeHRlbnNpb25zKCk7Ci0gICAgaWYgKGV4dGVuc2lv
bnMuc3VwcG9ydHMoIkdMX0VYVF9kZWJ1Z19tYXJrZXIiX3MpKQotICAgICAgICBleHRlbnNpb25z
LnB1c2hHcm91cE1hcmtlckVYVCgiV2ViR0xSZW5kZXJpbmdDb250ZXh0Il9zKTsKLQogICAgIHN0
ZDo6dW5pcXVlX3B0cjxXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlPiByZW5kZXJpbmdDb250ZXh0
OwogI2lmIEVOQUJMRShXRUJHTDIpCiAgICAgaWYgKHR5cGUgPT0gIndlYmdsMiIpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9FeHRlbnNpb25zR0wuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0V4dGVuc2lvbnNHTC5oCmluZGV4IGQ1MDIx
ZGQzMzRlZGY5MWEzNDIzMGJlMDE2ODkyMDc0MjQ5ZWIwZTguLmFjOGM4ODkzMjM0NTY3MmU5ZDA1
M2ZjZDk3YTIyZGE4ZTk5MDVlOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0V4dGVuc2lvbnNHTC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0V4dGVuc2lvbnNHTC5oCkBAIC0yODEsMTIgKzI4MSw2IEBAIHB1YmxpYzoKICAgICAv
LyBleHRlcm5hbGx5LgogICAgIHZpcnR1YWwgR0NHTGludCBnZXRHcmFwaGljc1Jlc2V0U3RhdHVz
QVJCKCkgPSAwOwogCi0gICAgLy8gR0xfQU5HTEVfZnJhbWVidWZmZXJfYmxpdAotICAgIHZpcnR1
YWwgdm9pZCBibGl0RnJhbWVidWZmZXJBTkdMRShHQ0dMaW50IHNyY1gwLCBHQ0dMaW50IHNyY1kw
LCBHQ0dMaW50IHNyY1gxLCBHQ0dMaW50IHNyY1kxLCBHQ0dMaW50IGRzdFgwLCBHQ0dMaW50IGRz
dFkwLCBHQ0dMaW50IGRzdFgxLCBHQ0dMaW50IGRzdFkxLCBHQ0dMYml0ZmllbGQgbWFzaywgR0NH
TGVudW0gZmlsdGVyKSA9IDA7Ci0KLSAgICAvLyBHTF9BTkdMRV9mcmFtZWJ1ZmZlcl9tdWx0aXNh
bXBsZQotICAgIHZpcnR1YWwgdm9pZCByZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVBTkdM
RShHQ0dMZW51bSB0YXJnZXQsIEdDR0xzaXplaSBzYW1wbGVzLCBHQ0dMZW51bSBpbnRlcm5hbGZv
cm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KSA9IDA7Ci0KICAgICAvLyBH
TF9PRVNfdmVydGV4X2FycmF5X29iamVjdAogICAgIHZpcnR1YWwgUGxhdGZvcm1HTE9iamVjdCBj
cmVhdGVWZXJ0ZXhBcnJheU9FUygpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlVmVydGV4
QXJyYXlPRVMoUGxhdGZvcm1HTE9iamVjdCkgPSAwOwpAQCAtMjk2LDExICsyOTAsNiBAQCBwdWJs
aWM6CiAgICAgLy8gR0xfQU5HTEVfdHJhbnNsYXRlZF9zaGFkZXJfc291cmNlCiAgICAgdmlydHVh
bCBTdHJpbmcgZ2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFKFBsYXRmb3JtR0xPYmplY3Qp
ID0gMDsKIAotICAgIC8vIEdMX0VYVF9kZWJ1Z19tYXJrZXIKLSAgICB2aXJ0dWFsIHZvaWQgaW5z
ZXJ0RXZlbnRNYXJrZXJFWFQoY29uc3QgU3RyaW5nJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBw
dXNoR3JvdXBNYXJrZXJFWFQoY29uc3QgU3RyaW5nJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBw
b3BHcm91cE1hcmtlckVYVCgpID0gMDsKLQogICAgIC8vIEdMX0FSQl9kcmF3X2J1ZmZlcnMgLyBH
TF9FWFRfZHJhd19idWZmZXJzCiAgICAgdmlydHVhbCB2b2lkIGRyYXdCdWZmZXJzRVhUKEdDR0xT
cGFuPGNvbnN0IEdDR0xlbnVtPiBidWZzKSA9IDA7CiAKQEAgLTMwOSw0NyArMjk4LDYgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgdm9pZCBkcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRShHQ0dMZW51
bSBtb2RlLCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xlbnVtIHR5cGUsIEdDR0x2b2lkcHRyIG9mZnNl
dCwgR0NHTHNpemVpIHByaW1jb3VudCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB2ZXJ0ZXhBdHRy
aWJEaXZpc29yQU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0x1aW50IGRpdmlzb3IpID0gMDsKIAot
ICAgIC8vIEdMX0FOR0xFX3JvYnVzdF9jbGllbnRfbWVtb3J5Ci0gICAgdmlydHVhbCB2b2lkIHJl
YWRQaXhlbHNSb2J1c3RBTkdMRShHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRo
LCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xz
aXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHNpemVpKiBjb2x1bW5zLCBHQ0dM
c2l6ZWkqIHJvd3MsIEdDR0x2b2lkKiBwaXhlbHMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgdGV4
UGFyYW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBH
Q0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGZsb2F0KiBwYXJhbXMpID0gMDsKLSAgICB2aXJ0
dWFsIHZvaWQgdGV4UGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xl
bnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGludCogcGFyYW1zKSA9IDA7
Ci0KLSAgICB2aXJ0dWFsIHZvaWQgZ2V0UXVlcnlpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdl
dCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwg
R0NHTGludCogcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldFF1ZXJ5T2JqZWN0dWl2
Um9idXN0QU5HTEUoR0NHTHVpbnQgaWQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6
ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0x1aW50KiBwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFs
IHZvaWQgZ2V0QnVmZmVyUG9pbnRlcnZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xl
bnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0x2b2lk
KiogcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldFZlcnRleEF0dHJpYklpdlJvYnVz
dEFOR0xFKEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUs
IEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZv
aWQgZ2V0VmVydGV4QXR0cmliSXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IGluZGV4LCBHQ0dMZW51
bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMdWludCog
cGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldFVuaWZvcm11aXZSb2J1c3RBTkdMRShH
Q0dMdWludCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NH
THNpemVpKiBsZW5ndGgsIEdDR0x1aW50KiBwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQg
Z2V0QnVmZmVyUGFyYW1ldGVyaTY0dlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVu
dW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludDY0
KiBwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgc2FtcGxlclBhcmFtZXRlcml2Um9idXN0
QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXpl
LCBjb25zdCBHQ0dMaW50KiBwYXJhbSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBzYW1wbGVyUGFy
YW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NH
THNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xmbG9hdCogcGFyYW0pID0gMDsKLSAgICB2aXJ0dWFs
IHZvaWQgZ2V0U2FtcGxlclBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwg
R0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NH
TGludCogcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldFNhbXBsZXJQYXJhbWV0ZXJm
dlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkg
YnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xmbG9hdCogcGFyYW1zKSA9IDA7Ci0KLSAg
ICB2aXJ0dWFsIHZvaWQgZ2V0RnJhbWVidWZmZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xl
bnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkq
IGxlbmd0aCwgR0NHTGludCogcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldFByb2dy
YW1JbnRlcmZhY2VpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xlbnVtIHByb2dy
YW1JbnRlcmZhY2UsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVp
KiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRCb29s
ZWFuaV92Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMdWludCBpbmRleCwgR0NHTHNp
emVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMYm9vbGVhbiogZGF0YSkgPSAwOyAv
LyBOT0xJTlQKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0TXVsdGlzYW1wbGVmdlJvYnVzdEFOR0xFKEdD
R0xlbnVtIHBuYW1lLCBHQ0dMdWludCBpbmRleCwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXpl
aSogbGVuZ3RoLCBHQ0dMZmxvYXQqIHZhbCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRUZXhM
ZXZlbFBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVs
LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBH
Q0dMaW50KiBwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0VGV4TGV2ZWxQYXJhbWV0
ZXJmdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0g
cG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGZsb2F0KiBw
YXJhbXMpID0gMDsKLQotICAgIHZpcnR1YWwgdm9pZCBnZXRQb2ludGVydlJvYnVzdEFOR0xFUm9i
dXN0QU5HTEUoR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxl
bmd0aCwgR0NHTHZvaWQqKiBwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0blVuaWZv
cm1mdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xz
aXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGZsb2F0KiBwYXJhbXMpID0gMDsK
LSAgICB2aXJ0dWFsIHZvaWQgZ2V0blVuaWZvcm1pdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dy
YW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0
aCwgR0NHTGludCogcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldG5Vbmlmb3JtdWl2
Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVp
IGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMdWludCogcGFyYW1zKSA9IDA7Ci0gICAg
dmlydHVhbCB2b2lkIHRleFBhcmFtZXRlcklpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwg
R0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMaW50KiBwYXJhbXMp
ID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgdGV4UGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFKEdDR0xl
bnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dM
dWludCogcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldFRleFBhcmFtZXRlcklpdlJv
YnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZT
aXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVh
bCB2b2lkIGdldFRleFBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdD
R0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0x1
aW50KiBwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgc2FtcGxlclBhcmFtZXRlcklpdlJv
YnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVm
U2l6ZSwgY29uc3QgR0NHTGludCogcGFyYW0pID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgc2FtcGxl
clBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFt
ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0x1aW50KiBwYXJhbSkgPSAwOwotICAgIHZp
cnR1YWwgdm9pZCBnZXRTYW1wbGVyUGFyYW1ldGVySWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2Ft
cGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0
aCwgR0NHTGludCogcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldFNhbXBsZXJQYXJh
bWV0ZXJJdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdD
R0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHVpbnQqIHBhcmFtcykgPSAw
OwotCi0gICAgdmlydHVhbCB2b2lkIGdldFF1ZXJ5T2JqZWN0aXZSb2J1c3RBTkdMRShHQ0dMdWlu
dCBpZCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0
aCwgR0NHTGludCogcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldFF1ZXJ5T2JqZWN0
aTY0dlJvYnVzdEFOR0xFKEdDR0x1aW50IGlkLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1
ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50NjQqIHBhcmFtcykgPSAwOwotICAgIHZp
cnR1YWwgdm9pZCBnZXRRdWVyeU9iamVjdHVpNjR2Um9idXN0QU5HTEUoR0NHTHVpbnQgaWQsIEdD
R0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0x1
aW50NjQqIHBhcmFtcykgPSAwOwotCiAgICAgLy8gT3RoZXIgZnVuY3Rpb25zLgogI2lmICFVU0Uo
QU5HTEUpCiAgICAgLy8gRVhUIFJvYnVzdG5lc3MgLSB1c2VzIGdldEdyYXBoaWNzUmVzZXRTdGF0
dXNBUkIKQEAgLTM1NywxNiArMzA1LDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBnZXRu
VW5pZm9ybWZ2RVhUKEdDR0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXpl
aSBidWZTaXplLCBHQ0dMZmxvYXQqIHBhcmFtcykgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBnZXRu
VW5pZm9ybWl2RVhUKEdDR0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXpl
aSBidWZTaXplLCBHQ0dMaW50KiBwYXJhbXMpID0gMDsKIAotICAgIHZpcnR1YWwgYm9vbCBpc05W
SURJQSgpID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgaXNBTUQoKSA9IDA7Ci0gICAgdmlydHVhbCBi
b29sIGlzSW50ZWwoKSA9IDA7Ci0gICAgdmlydHVhbCBib29sIGlzSW1hZ2luYXRpb24oKSA9IDA7
Ci0gICAgdmlydHVhbCBTdHJpbmcgdmVuZG9yKCkgPSAwOwotCi0gICAgLy8gU29tZSBjb25maWd1
cmF0aW9ucyBoYXZlIGJ1Z3MgcmVnYXJkaW5nIGJ1aWx0LWluIGZ1bmN0aW9ucyBpbiB0aGVpciBP
cGVuR0wgZHJpdmVycwotICAgIC8vIHRoYXQgbXVzdCBiZSBhdm9pZGVkLiBQb3J0cyBzaG91bGQg
aW1wbGVtZW50IHRoZXNlIGZsYWdzIG9uIHN1Y2ggY29uZmlndXJhdGlvbnMuCi0gICAgdmlydHVh
bCBib29sIHJlcXVpcmVzQnVpbHRJbkZ1bmN0aW9uRW11bGF0aW9uKCkgPSAwOwotICAgIHZpcnR1
YWwgYm9vbCByZXF1aXJlc1Jlc3RyaWN0ZWRNYXhpbXVtVGV4dHVyZVNpemUoKSA9IDA7CiAjZW5k
aWYKIAogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1Jl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5oCmluZGV4IDcyNmFh
ZjZjNmEwZjYyZmYyODJlNWI4ZDIwMmExMjk0ZTFkZTg1NzEuLjk2NWI0MzQ3YmM0N2VjMDIwNTMz
MGY4ZTEwOGM5YjQwZjY5Mzk3NjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJh
c2UuaApAQCAtMzAsNiArMzAsMTAgQEAKICNpbmNsdWRlICJFeHRlbnNpb25zR0wuaCIKICNpbmNs
dWRlICJHcmFwaGljc0NvbnRleHRHTC5oIgogCisjaWYgIVVTRShBTkdMRSkKKyNpbmNsdWRlICJF
eHRlbnNpb25zR0xPcGVuR0xDb21tb24uaCIKKyNlbmRpZgorCiAjaW5jbHVkZSA8d3RmL0hhc2hT
ZXQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAKQEAgLTU5LDcgKzYzLDEy
IEBAIHB1YmxpYzoKICAgICAvLyBPdGhlciBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTCBvdmVy
cmlkZXMuCiAgICAgdXNpbmcgR3JhcGhpY3NDb250ZXh0R0w6OmlzRW5hYmxlZDsKICAgICBQbGF0
Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3QgZmluYWw7CisjaWYgIVVTRShBTkdMRSkK
KyAgICAvLyBVc2UgY292YXJpYW50IHJldHVybiB0eXBlIGZvciBPUEVOR0wvT1BFTkdMX0VTCisg
ICAgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uJiBnZXRFeHRlbnNpb25zKCkgZmluYWw7CisjZWxz
ZQogICAgIEV4dGVuc2lvbnNHTCYgZ2V0RXh0ZW5zaW9ucygpIGZpbmFsOworI2VuZGlmCiAgICAg
dm9pZCBzZXRDb250ZXh0VmlzaWJpbGl0eShib29sKSBmaW5hbDsKICAgICBHcmFwaGljc0NvbnRl
eHRHTFBvd2VyUHJlZmVyZW5jZSBwb3dlclByZWZlcmVuY2VVc2VkRm9yQ3JlYXRpb24oKSBjb25z
dCBmaW5hbDsKICAgICBib29sIGlzR0xFUzJDb21wbGlhbnQoKSBjb25zdCBmaW5hbDsKQEAgLTgw
LDIwICs4OSw2IEBAIHB1YmxpYzoKICAgICB2b2lkIGVuc3VyZUVuYWJsZWQoY29uc3QgU3RyaW5n
JikgZmluYWw7CiAgICAgYm9vbCBpc0VuYWJsZWQoY29uc3QgU3RyaW5nJikgZmluYWw7CiAKLSNp
ZiAhVVNFKEFOR0xFKQotICAgIC8vIEZJWE1FOiBUaGVzZSBhcmUgc3VwcG9zZWQgdG8gYmUgcmVt
b3ZlZCBpbiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE4ODk2Lgot
ICAgIHZvaWQgcmVhZG5QaXhlbHNFWFQoR0NHTGludCwgR0NHTGludCwgR0NHTHNpemVpLCBHQ0dM
c2l6ZWksIEdDR0xlbnVtLCBHQ0dMZW51bSwgR0NHTHNpemVpLCBHQ0dMdm9pZCopIGZpbmFsOwot
ICAgIHZvaWQgZ2V0blVuaWZvcm1mdkVYVChHQ0dMdWludCwgR0NHTGludCwgR0NHTHNpemVpLCBH
Q0dMZmxvYXQqKSBmaW5hbDsKLSAgICB2b2lkIGdldG5Vbmlmb3JtaXZFWFQoR0NHTHVpbnQsIEdD
R0xpbnQsIEdDR0xzaXplaSwgR0NHTGludCopIGZpbmFsOwotICAgIGJvb2wgaXNOVklESUEoKSBm
aW5hbDsKLSAgICBib29sIGlzQU1EKCkgZmluYWw7Ci0gICAgYm9vbCBpc0ludGVsKCkgZmluYWw7
Ci0gICAgYm9vbCBpc0ltYWdpbmF0aW9uKCkgZmluYWw7Ci0gICAgU3RyaW5nIHZlbmRvcigpIGZp
bmFsOwotICAgIGJvb2wgcmVxdWlyZXNCdWlsdEluRnVuY3Rpb25FbXVsYXRpb24oKSBmaW5hbDsK
LSAgICBib29sIHJlcXVpcmVzUmVzdHJpY3RlZE1heGltdW1UZXh0dXJlU2l6ZSgpIGZpbmFsOwot
I2VuZGlmCi0KIHByb3RlY3RlZDoKICAgICB2b2lkIGluaXRpYWxpemUoY29uc3QgU3RyaW5nJiBh
dmFpbGFibGVFeHRlbnNpb25zLCBjb25zdCBTdHJpbmcmIHJlcXVlc3RhYmxlRXh0ZW5zaW9ucyk7
CiAgICAgdmlydHVhbCB2b2lkIHdhaXRVbnRpbEluaXRpYWxpemVkKCkgPSAwOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvRXh0ZW5zaW9uc0dMQU5H
TEUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvRXh0ZW5zaW9u
c0dMQU5HTEUuY3BwCmluZGV4IDkyMGQ5MmYzNWNhZGQ4YmIwODUyM2QxNzY1NzU0MTIwOTdmNmM5
NmYuLmY1NDBhYjNjYTg1MGIxZjI3Y2M2MmVlOTY0Y2YwNGUxZDgxNWU4YWEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xF
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRlbnNp
b25zR0xBTkdMRS5jcHAKQEAgLTMzLDEwICszMyw5IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotRXh0ZW5zaW9uc0dMQU5HTEU6OkV4dGVuc2lvbnNHTEFOR0xFKEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMKiBjb250ZXh0LCBib29sIHVzZUluZGV4ZWRHZXRTdHJpbmcpCitFeHRlbnNpb25zR0xB
TkdMRTo6RXh0ZW5zaW9uc0dMQU5HTEUoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqIGNvbnRleHQp
CiAgICAgOiBtX2luaXRpYWxpemVkQXZhaWxhYmxlRXh0ZW5zaW9ucyhmYWxzZSkKICAgICAsIG1f
Y29udGV4dChjb250ZXh0KQotICAgICwgbV91c2VJbmRleGVkR2V0U3RyaW5nKHVzZUluZGV4ZWRH
ZXRTdHJpbmcpCiB7CiB9CiAKQEAgLTk5LDQyICs5OCwxNSBAQCBTdHJpbmcgRXh0ZW5zaW9uc0dM
QU5HTEU6OmdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRShQbGF0Zm9ybUdMT2JqZWN0IHNo
YWRlcgogCiB2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjppbml0aWFsaXplQXZhaWxhYmxlRXh0ZW5z
aW9ucygpCiB7Ci0gICAgaWYgKG1fdXNlSW5kZXhlZEdldFN0cmluZykgewotICAgICAgICBHTGlu
dCBudW1FeHRlbnNpb25zID0gMDsKLSAgICAgICAgZ2w6OkdldEludGVnZXJ2KEdMX05VTV9FWFRF
TlNJT05TLCAmbnVtRXh0ZW5zaW9ucyk7Ci0gICAgICAgIGZvciAoR0xpbnQgaSA9IDA7IGkgPCBu
dW1FeHRlbnNpb25zOyArK2kpCi0gICAgICAgICAgICBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuYWRk
KGdsOjpHZXRTdHJpbmdpKEdMX0VYVEVOU0lPTlMsIGkpKTsKLSAgICAgICAgZ2w6OkdldEludGVn
ZXJ2KEdMX05VTV9SRVFVRVNUQUJMRV9FWFRFTlNJT05TX0FOR0xFLCAmbnVtRXh0ZW5zaW9ucyk7
Ci0gICAgICAgIGZvciAoR0xpbnQgaSA9IDA7IGkgPCBudW1FeHRlbnNpb25zOyArK2kpCi0gICAg
ICAgICAgICBtX3JlcXVlc3RhYmxlRXh0ZW5zaW9ucy5hZGQoZ2w6OkdldFN0cmluZ2koR0xfUkVR
VUVTVEFCTEVfRVhURU5TSU9OU19BTkdMRSwgaSkpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIFN0
cmluZyBleHRlbnNpb25zU3RyaW5nID0gZ2V0RXh0ZW5zaW9ucygpOwotICAgICAgICBmb3IgKGF1
dG8mIGV4dGVuc2lvbiA6IGV4dGVuc2lvbnNTdHJpbmcuc3BsaXQoJyAnKSkKLSAgICAgICAgICAg
IG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5hZGQoZXh0ZW5zaW9uKTsKLSAgICAgICAgZXh0ZW5zaW9u
c1N0cmluZyA9IFN0cmluZyhyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihnbDo6R2V0U3Ry
aW5nKEdMX1JFUVVFU1RBQkxFX0VYVEVOU0lPTlNfQU5HTEUpKSk7Ci0gICAgICAgIGZvciAoYXV0
byYgZXh0ZW5zaW9uIDogZXh0ZW5zaW9uc1N0cmluZy5zcGxpdCgnICcpKQotICAgICAgICAgICAg
bV9yZXF1ZXN0YWJsZUV4dGVuc2lvbnMuYWRkKGV4dGVuc2lvbik7Ci0gICAgfQorICAgIFN0cmlu
ZyBleHRlbnNpb25zU3RyaW5nID0gZ2V0RXh0ZW5zaW9ucygpOworICAgIGZvciAoYXV0byYgZXh0
ZW5zaW9uIDogZXh0ZW5zaW9uc1N0cmluZy5zcGxpdCgnICcpKQorICAgICAgICBtX2F2YWlsYWJs
ZUV4dGVuc2lvbnMuYWRkKGV4dGVuc2lvbik7CisgICAgZXh0ZW5zaW9uc1N0cmluZyA9IFN0cmlu
ZyhyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihnbDo6R2V0U3RyaW5nKEdMX1JFUVVFU1RB
QkxFX0VYVEVOU0lPTlNfQU5HTEUpKSk7CisgICAgZm9yIChhdXRvJiBleHRlbnNpb24gOiBleHRl
bnNpb25zU3RyaW5nLnNwbGl0KCcgJykpCisgICAgICAgIG1fcmVxdWVzdGFibGVFeHRlbnNpb25z
LmFkZChleHRlbnNpb24pOwogICAgIG1faW5pdGlhbGl6ZWRBdmFpbGFibGVFeHRlbnNpb25zID0g
dHJ1ZTsKIH0KIAotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6YmxpdEZyYW1lYnVmZmVyQU5HTEUo
R0NHTGludCBzcmNYMCwgR0NHTGludCBzcmNZMCwgR0NHTGludCBzcmNYMSwgR0NHTGludCBzcmNZ
MSwgR0NHTGludCBkc3RYMCwgR0NHTGludCBkc3RZMCwgR0NHTGludCBkc3RYMSwgR0NHTGludCBk
c3RZMSwgR0NHTGJpdGZpZWxkIG1hc2ssIEdDR0xlbnVtIGZpbHRlcikKLXsKLSAgICAvLyBGSVhN
RTogY29uc2lkZXIgYWRkaW5nIHN1cHBvcnQgZm9yIEFQUExFX2ZyYW1lYnVmZmVyX211bHRpc2Ft
cGxlLgotICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgZ2w6OkJsaXRGcmFtZWJ1ZmZlckFOR0xFKHNyY1gwLCBzcmNZMCwgc3Jj
WDEsIHNyY1kxLCBkc3RYMCwgZHN0WTAsIGRzdFgxLCBkc3RZMSwgbWFzaywgZmlsdGVyKTsKLX0K
LQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6cmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxl
QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWkgc2FtcGxlcywgR0NHTGVudW0gaW50ZXJu
YWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkKLXsKLSAgICBpZiAo
IW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAg
IGdsOjpSZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVBTkdMRSh0YXJnZXQsIHNhbXBsZXMs
IGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0KTsKLX0KLQogUGxhdGZvcm1HTE9iamVjdCBF
eHRlbnNpb25zR0xBTkdMRTo6Y3JlYXRlVmVydGV4QXJyYXlPRVMoKQogewogICAgIGlmICghbV9j
b250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKQEAgLTE3NSwyNCArMTQ3LDYgQEAgdm9pZCBF
eHRlbnNpb25zR0xBTkdMRTo6YmluZFZlcnRleEFycmF5T0VTKFBsYXRmb3JtR0xPYmplY3QgYXJy
YXkpCiAgICAgZ2w6OkJpbmRWZXJ0ZXhBcnJheU9FUyhhcnJheSk7CiB9CiAKLXZvaWQgRXh0ZW5z
aW9uc0dMQU5HTEU6Omluc2VydEV2ZW50TWFya2VyRVhUKGNvbnN0IFN0cmluZyYpCi17Ci0gICAg
Ly8gRklYTUU6IGltcGxlbWVudCB0aGlzIGZ1bmN0aW9uIGFuZCBhZGQgR0xfRVhUX2RlYnVnX21h
cmtlciBpbiBzdXBwb3J0cygpLgotICAgIHJldHVybjsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xB
TkdMRTo6cHVzaEdyb3VwTWFya2VyRVhUKGNvbnN0IFN0cmluZyYpCi17Ci0gICAgLy8gRklYTUU6
IGltcGxlbWVudCB0aGlzIGZ1bmN0aW9uIGFuZCBhZGQgR0xfRVhUX2RlYnVnX21hcmtlciBpbiBz
dXBwb3J0cygpLgotICAgIHJldHVybjsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6cG9w
R3JvdXBNYXJrZXJFWFQodm9pZCkKLXsKLSAgICAvLyBGSVhNRTogaW1wbGVtZW50IHRoaXMgZnVu
Y3Rpb24gYW5kIGFkZCBHTF9FWFRfZGVidWdfbWFya2VyIGluIHN1cHBvcnRzKCkuCi0gICAgcmV0
dXJuOwotfQotCiBib29sIEV4dGVuc2lvbnNHTEFOR0xFOjpzdXBwb3J0c0V4dGVuc2lvbihjb25z
dCBTdHJpbmcmIG5hbWUpCiB7CiAgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250
YWlucyhuYW1lKSB8fCBtX3JlcXVlc3RhYmxlRXh0ZW5zaW9ucy5jb250YWlucyhuYW1lKTsKQEAg
LTI0OCwyOTEgKzIwMiw2IEBAIEdDR0xlbnVtIEV4dGVuc2lvbnNHTEFOR0xFOjphZGp1c3RXZWJH
TDFUZXh0dXJlSW50ZXJuYWxGb3JtYXQoR0NHTGVudW0gaW50ZXJuYWxmCiAgICAgcmV0dXJuIGlu
dGVybmFsZm9ybWF0OwogfQogCi0vLyBHTF9BTkdMRV9yb2J1c3RfY2xpZW50X21lbW9yeQotdm9p
ZCBFeHRlbnNpb25zR0xBTkdMRTo6cmVhZFBpeGVsc1JvYnVzdEFOR0xFKGludCB4LCBpbnQgeSwg
R0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xl
bnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHNpemVp
ICpjb2x1bW5zLCBHQ0dMc2l6ZWkgKnJvd3MsIHZvaWQgKnBpeGVscykKLXsKLSAgICBpZiAoIW1f
Y29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGds
OjpSZWFkUGl4ZWxzUm9idXN0QU5HTEUoeCwgeSwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBl
LCBidWZTaXplLCBsZW5ndGgsIGNvbHVtbnMsIHJvd3MsIHBpeGVscyk7Ci19Ci0KLXZvaWQgRXh0
ZW5zaW9uc0dMQU5HTEU6OnRleFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xmbG9hdCAqcGFy
YW1zKQotewotICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAg
ICAgcmV0dXJuOwotCi0gICAgZ2w6OlRleFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUodGFyZ2V0LCBw
bmFtZSwgYnVmU2l6ZSwgcGFyYW1zKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6dGV4
UGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBH
Q0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGludCAqcGFyYW1zKQotewotICAgIGlmICghbV9j
b250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6
OlRleFBhcmFtZXRlcml2Um9idXN0QU5HTEUodGFyZ2V0LCBwbmFtZSwgYnVmU2l6ZSwgcGFyYW1z
KTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0UXVlcnlpdlJvYnVzdEFOR0xFKEdD
R0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6
ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKQotewotICAgIGlmICghbV9jb250ZXh0LT5tYWtl
Q29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OkdldFF1ZXJ5aXZS
b2J1c3RBTkdMRSh0YXJnZXQsIHBuYW1lLCBidWZTaXplLCBsZW5ndGgsIHBhcmFtcyk7Ci19Ci0K
LXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldFF1ZXJ5T2JqZWN0dWl2Um9idXN0QU5HTEUoR0NH
THVpbnQgaWQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICps
ZW5ndGgsIEdDR0x1aW50ICpwYXJhbXMpCi17Ci0gICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250
ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6R2V0UXVlcnlPYmplY3R1
aXZSb2J1c3RBTkdMRShpZCwgcG5hbWUsIGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1zKTsKLX0KLQot
dm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0QnVmZmVyUG9pbnRlcnZSb2J1c3RBTkdMRShHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVp
ICpsZW5ndGgsIHZvaWQgKipwYXJhbXMpCi17Ci0gICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250
ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6R2V0QnVmZmVyUG9pbnRl
cnZSb2J1c3RBTkdMRSh0YXJnZXQsIHBuYW1lLCBidWZTaXplLCBsZW5ndGgsIHBhcmFtcyk7Ci19
Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldFZlcnRleEF0dHJpYklpdlJvYnVzdEFOR0xF
KEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xz
aXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpCi17Ci0gICAgaWYgKCFtX2NvbnRleHQtPm1h
a2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6R2V0VmVydGV4
QXR0cmliSWl2Um9idXN0QU5HTEUoaW5kZXgsIHBuYW1lLCBidWZTaXplLCBsZW5ndGgsIHBhcmFt
cyk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldFZlcnRleEF0dHJpYkl1aXZSb2J1
c3RBTkdMRShHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXpl
LCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHVpbnQgKnBhcmFtcykKLXsKLSAgICBpZiAoIW1fY29u
dGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpH
ZXRWZXJ0ZXhBdHRyaWJJdWl2Um9idXN0QU5HTEUoaW5kZXgsIHBuYW1lLCBidWZTaXplLCBsZW5n
dGgsIHBhcmFtcyk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldFVuaWZvcm11aXZS
b2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkg
YnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0x1aW50ICpwYXJhbXMpCi17Ci0gICAgaWYg
KCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAg
ICBnbDo6R2V0VW5pZm9ybXVpdlJvYnVzdEFOR0xFKHByb2dyYW0sIGxvY2F0aW9uLCBidWZTaXpl
LCBsZW5ndGgsIHBhcmFtcyk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldEJ1ZmZl
clBhcmFtZXRlcmk2NHZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1l
LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQ2NCAqcGFyYW1z
KQotewotICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgZ2w6OkdldEJ1ZmZlclBhcmFtZXRlcmk2NHZSb2J1c3RBTkdMRSh0YXJn
ZXQsIHBuYW1lLCBidWZTaXplLCBsZW5ndGgsIHJlaW50ZXJwcmV0X2Nhc3Q8R0xpbnQ2NCo+KHBh
cmFtcykpOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpzYW1wbGVyUGFyYW1ldGVyaXZS
b2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1
ZlNpemUsIGNvbnN0IEdDR0xpbnQgKnBhcmFtKQotewotICAgIGlmICghbV9jb250ZXh0LT5tYWtl
Q29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OlNhbXBsZXJQYXJh
bWV0ZXJpdlJvYnVzdEFOR0xFKHNhbXBsZXIsIHBuYW1lLCBidWZTaXplLCBwYXJhbSk7Ci19Ci0K
LXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OnNhbXBsZXJQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdD
R0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3Qg
R0NHTGZsb2F0ICpwYXJhbSkKLXsKLSAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJy
ZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpTYW1wbGVyUGFyYW1ldGVyZnZSb2J1
c3RBTkdMRShzYW1wbGVyLCBwbmFtZSwgYnVmU2l6ZSwgcGFyYW0pOwotfQotCi12b2lkIEV4dGVu
c2lvbnNHTEFOR0xFOjpnZXRTYW1wbGVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMdWludCBz
YW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVu
Z3RoLCBHQ0dMaW50ICpwYXJhbXMpCi17Ci0gICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0
Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6R2V0U2FtcGxlclBhcmFtZXRl
cml2Um9idXN0QU5HTEUoc2FtcGxlciwgcG5hbWUsIGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1zKTsK
LX0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0U2FtcGxlclBhcmFtZXRlcmZ2Um9idXN0
QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXpl
LCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGZsb2F0ICpwYXJhbXMpCi17Ci0gICAgaWYgKCFtX2Nv
bnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6
R2V0U2FtcGxlclBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoc2FtcGxlciwgcG5hbWUsIGJ1ZlNpemUs
IGxlbmd0aCwgcGFyYW1zKTsKLX0KLQotCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRGcmFt
ZWJ1ZmZlclBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBw
bmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJh
bXMpCi17Ci0gICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAg
ICByZXR1cm47Ci0KLSAgICBnbDo6R2V0RnJhbWVidWZmZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xF
KHRhcmdldCwgcG5hbWUsIGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1zKTsKLX0KLQotdm9pZCBFeHRl
bnNpb25zR0xBTkdMRTo6Z2V0UHJvZ3JhbUludGVyZmFjZWl2Um9idXN0QU5HTEUoR0NHTHVpbnQg
cHJvZ3JhbSwgR0NHTGVudW0gcHJvZ3JhbUludGVyZmFjZSwgR0NHTGVudW0gcG5hbWUsIEdDR0xz
aXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKQotewotICAg
IGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwot
Ci0gICAgZ2w6OkdldFByb2dyYW1JbnRlcmZhY2VpdlJvYnVzdEFOR0xFKHByb2dyYW0sIHByb2dy
YW1JbnRlcmZhY2UsIHBuYW1lLCBidWZTaXplLCBsZW5ndGgsIHBhcmFtcyk7Ci19Ci0KLXZvaWQg
RXh0ZW5zaW9uc0dMQU5HTEU6OmdldEJvb2xlYW5pX3ZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJn
ZXQsIEdDR0x1aW50IGluZGV4LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgs
IEdDR0xib29sZWFuICpkYXRhKQotewotICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1
cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OkdldEJvb2xlYW5pX3ZSb2J1c3RB
TkdMRSh0YXJnZXQsIGluZGV4LCBidWZTaXplLCBsZW5ndGgsIGRhdGEpOwotfQotCi12b2lkIEV4
dGVuc2lvbnNHTEFOR0xFOjpnZXRNdWx0aXNhbXBsZWZ2Um9idXN0QU5HTEUoR0NHTGVudW0gcG5h
bWUsIEdDR0x1aW50IGluZGV4LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgs
IEdDR0xmbG9hdCAqdmFsKQotewotICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJl
bnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OkdldE11bHRpc2FtcGxlZnZSb2J1c3RB
TkdMRShwbmFtZSwgaW5kZXgsIGJ1ZlNpemUsIGxlbmd0aCwgdmFsKTsKLX0KLQotdm9pZCBFeHRl
bnNpb25zR0xBTkdMRTo6Z2V0VGV4TGV2ZWxQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVt
IHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXpl
LCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKQotewotICAgIGlmICghbV9jb250
ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6Okdl
dFRleExldmVsUGFyYW1ldGVyaXZSb2J1c3RBTkdMRSh0YXJnZXQsIGxldmVsLCBwbmFtZSwgYnVm
U2l6ZSwgbGVuZ3RoLCBwYXJhbXMpOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRU
ZXhMZXZlbFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxl
dmVsLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3Ro
LCBHQ0dMZmxvYXQgKnBhcmFtcykKLXsKLSAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRD
dXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpHZXRUZXhMZXZlbFBhcmFtZXRl
cmZ2Um9idXN0QU5HTEUodGFyZ2V0LCBsZXZlbCwgcG5hbWUsIGJ1ZlNpemUsIGxlbmd0aCwgcGFy
YW1zKTsKLX0KLQotCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRQb2ludGVydlJvYnVzdEFO
R0xFUm9idXN0QU5HTEUoR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6
ZWkgKmxlbmd0aCwgdm9pZCAqKnBhcmFtcykKLXsKLSAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNv
bnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpHZXRQb2ludGVydlJv
YnVzdEFOR0xFUm9idXN0QU5HTEUocG5hbWUsIGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1zKTsKLX0K
LQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0blVuaWZvcm1mdlJvYnVzdEFOR0xFKEdDR0x1
aW50IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6
ZWkgKmxlbmd0aCwgR0NHTGZsb2F0ICpwYXJhbXMpCi17Ci0gICAgaWYgKCFtX2NvbnRleHQtPm1h
a2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6R2V0blVuaWZv
cm1mdlJvYnVzdEFOR0xFKHByb2dyYW0sIGxvY2F0aW9uLCBidWZTaXplLCBsZW5ndGgsIHBhcmFt
cyk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldG5Vbmlmb3JtaXZSb2J1c3RBTkdM
RShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwg
R0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykKLXsKLSAgICBpZiAoIW1fY29udGV4
dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpHZXRu
VW5pZm9ybWl2Um9idXN0QU5HTEUocHJvZ3JhbSwgbG9jYXRpb24sIGJ1ZlNpemUsIGxlbmd0aCwg
cGFyYW1zKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0blVuaWZvcm11aXZSb2J1
c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVm
U2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0x1aW50ICpwYXJhbXMpCi17Ci0gICAgaWYgKCFt
X2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBn
bDo6R2V0blVuaWZvcm11aXZSb2J1c3RBTkdMRShwcm9ncmFtLCBsb2NhdGlvbiwgYnVmU2l6ZSwg
bGVuZ3RoLCBwYXJhbXMpOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjp0ZXhQYXJhbWV0
ZXJJaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6
ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGludCAqcGFyYW1zKQotewotICAgIGlmICghbV9jb250ZXh0
LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OlRleFBh
cmFtZXRlcklpdlJvYnVzdEFOR0xFKHRhcmdldCwgcG5hbWUsIGJ1ZlNpemUsIHBhcmFtcyk7Ci19
Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OnRleFBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRShH
Q0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3Qg
R0NHTHVpbnQgKnBhcmFtcykKLXsKLSAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJy
ZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpUZXhQYXJhbWV0ZXJJdWl2Um9idXN0
QU5HTEUodGFyZ2V0LCBwbmFtZSwgYnVmU2l6ZSwgcGFyYW1zKTsKLX0KLQotdm9pZCBFeHRlbnNp
b25zR0xBTkdMRTo6Z2V0VGV4UGFyYW1ldGVySWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBH
Q0dMaW50ICpwYXJhbXMpCi17Ci0gICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVu
dCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6R2V0VGV4UGFyYW1ldGVySWl2Um9idXN0
QU5HTEUodGFyZ2V0LCBwbmFtZSwgYnVmU2l6ZSwgbGVuZ3RoLCBwYXJhbXMpOwotfQotCi12b2lk
IEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRUZXhQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUoR0NHTGVu
dW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAq
bGVuZ3RoLCBHQ0dMdWludCAqcGFyYW1zKQotewotICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29u
dGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OkdldFRleFBhcmFtZXRl
ckl1aXZSb2J1c3RBTkdMRSh0YXJnZXQsIHBuYW1lLCBidWZTaXplLCBsZW5ndGgsIHBhcmFtcyk7
Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OnNhbXBsZXJQYXJhbWV0ZXJJaXZSb2J1c3RB
TkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUs
IGNvbnN0IEdDR0xpbnQgKnBhcmFtKQotewotICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4
dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OlNhbXBsZXJQYXJhbWV0ZXJJ
aXZSb2J1c3RBTkdMRShzYW1wbGVyLCBwbmFtZSwgYnVmU2l6ZSwgcGFyYW0pOwotfQotCi12b2lk
IEV4dGVuc2lvbnNHTEFOR0xFOjpzYW1wbGVyUGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFKEdDR0x1
aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NH
THVpbnQgKnBhcmFtKQotewotICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQo
KSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OlNhbXBsZXJQYXJhbWV0ZXJJdWl2Um9idXN0
QU5HTEUoc2FtcGxlciwgcG5hbWUsIGJ1ZlNpemUsIHBhcmFtKTsKLX0KLQotdm9pZCBFeHRlbnNp
b25zR0xBTkdMRTo6Z2V0U2FtcGxlclBhcmFtZXRlcklpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNh
bXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5n
dGgsIEdDR0xpbnQgKnBhcmFtcykKLXsKLSAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRD
dXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpHZXRTYW1wbGVyUGFyYW1ldGVy
SWl2Um9idXN0QU5HTEUoc2FtcGxlciwgcG5hbWUsIGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1zKTsK
LX0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0U2FtcGxlclBhcmFtZXRlckl1aXZSb2J1
c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNp
emUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMdWludCAqcGFyYW1zKQotewotICAgIGlmICghbV9j
b250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6
OkdldFNhbXBsZXJQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUoc2FtcGxlciwgcG5hbWUsIGJ1ZlNp
emUsIGxlbmd0aCwgcGFyYW1zKTsKLX0KLQotCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRR
dWVyeU9iamVjdGl2Um9idXN0QU5HTEUoR0NHTHVpbnQgaWQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dM
c2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykKLXsKLSAg
ICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsK
LQotICAgIGdsOjpHZXRRdWVyeU9iamVjdGl2Um9idXN0QU5HTEUoaWQsIHBuYW1lLCBidWZTaXpl
LCBsZW5ndGgsIHBhcmFtcyk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldFF1ZXJ5
T2JqZWN0aTY0dlJvYnVzdEFOR0xFKEdDR0x1aW50IGlkLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNp
emVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50NjQgKnBhcmFtcykKLXsKLSAg
ICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsK
LQotICAgIGdsOjpHZXRRdWVyeU9iamVjdGk2NHZSb2J1c3RBTkdMRShpZCwgcG5hbWUsIGJ1ZlNp
emUsIGxlbmd0aCwgcmVpbnRlcnByZXRfY2FzdDxHTGludDY0Kj4ocGFyYW1zKSk7Ci19Ci0KLXZv
aWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldFF1ZXJ5T2JqZWN0dWk2NHZSb2J1c3RBTkdMRShHQ0dM
dWludCBpZCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxl
bmd0aCwgR0NHTHVpbnQ2NCAqcGFyYW1zKQotewotICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29u
dGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OkdldFF1ZXJ5T2JqZWN0
dWk2NHZSb2J1c3RBTkdMRShpZCwgcG5hbWUsIGJ1ZlNpemUsIGxlbmd0aCwgcmVpbnRlcnByZXRf
Y2FzdDxHTHVpbnQ2NCo+KHBhcmFtcykpOwotfQotCi0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
IAogI2VuZGlmIC8vIEVOQUJMRShXRUJHTCkgJiYgVVNFKEFOR0xFKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xF
LmgKaW5kZXggYjJkMjc3YjlhYzlkMjc4NjBmNTVhYmFiZjhjZmU1NWU4NGI1ZjU3ZS4uMDA0MjMz
NzcyMDM0YmZhM2VhYzEzN2RjMzYzNDgwOTE2ZGVhYWY3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRlbnNpb25zR0xBTkdMRS5o
CkBAIC0zNiw3ICszNiw3IEBAIGNsYXNzIEV4dGVuc2lvbnNHTEFOR0xFIDogcHVibGljIEV4dGVu
c2lvbnNHTCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgLy8g
VGhpcyBjbGFzcyBvbmx5IG5lZWRzIHRvIGJlIGluc3RhbnRpYXRlZCBieSBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTCBpbXBsZW1lbnRhdGlvbnMuCi0gICAgRXh0ZW5zaW9uc0dMQU5HTEUoR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0wqLCBib29sIHVzZUluZGV4ZWRHZXRTdHJpbmcgPSBmYWxzZSk7Cisg
ICAgZXhwbGljaXQgRXh0ZW5zaW9uc0dMQU5HTEUoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqKTsK
ICAgICB2aXJ0dWFsIH5FeHRlbnNpb25zR0xBTkdMRSgpOwogCiAgICAgLy8gRXh0ZW5zaW9uc0dM
IG1ldGhvZHMuCkBAIC00OSw2MCArNDksMTQgQEAgcHVibGljOgogICAgIHZvaWQgZGVsZXRlVmVy
dGV4QXJyYXlPRVMoUGxhdGZvcm1HTE9iamVjdCkgb3ZlcnJpZGU7CiAgICAgR0NHTGJvb2xlYW4g
aXNWZXJ0ZXhBcnJheU9FUyhQbGF0Zm9ybUdMT2JqZWN0KSBvdmVycmlkZTsKICAgICB2b2lkIGJp
bmRWZXJ0ZXhBcnJheU9FUyhQbGF0Zm9ybUdMT2JqZWN0KSBvdmVycmlkZTsKLSAgICB2b2lkIGlu
c2VydEV2ZW50TWFya2VyRVhUKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwotICAgIHZvaWQgcHVz
aEdyb3VwTWFya2VyRVhUKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwotICAgIHZvaWQgcG9wR3Jv
dXBNYXJrZXJFWFQodm9pZCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkcmF3QnVmZmVyc0VYVChHQ0dM
U3Bhbjxjb25zdCBHQ0dMZW51bT4pIG92ZXJyaWRlOwogCiAgICAgU3RyaW5nIGdldFRyYW5zbGF0
ZWRTaGFkZXJTb3VyY2VBTkdMRShQbGF0Zm9ybUdMT2JqZWN0KSBvdmVycmlkZTsKIAotICAgIHZv
aWQgYmxpdEZyYW1lYnVmZmVyQU5HTEUoR0NHTGludCBzcmNYMCwgR0NHTGludCBzcmNZMCwgR0NH
TGludCBzcmNYMSwgR0NHTGludCBzcmNZMSwgR0NHTGludCBkc3RYMCwgR0NHTGludCBkc3RZMCwg
R0NHTGludCBkc3RYMSwgR0NHTGludCBkc3RZMSwgR0NHTGJpdGZpZWxkIG1hc2ssIEdDR0xlbnVt
IGZpbHRlcikgb3ZlcnJpZGU7Ci0gICAgdm9pZCByZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1w
bGVBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xzaXplaSBzYW1wbGVzLCBHQ0dMZW51bSBpbnRl
cm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KSBvdmVycmlkZTsK
LQogICAgIHZvaWQgZHJhd0FycmF5c0luc3RhbmNlZEFOR0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xp
bnQgZmlyc3QsIEdDR0xzaXplaSBjb3VudCwgR0NHTHNpemVpIHByaW1jb3VudCkgb3ZlcnJpZGU7
CiAgICAgdm9pZCBkcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dM
c2l6ZWkgY291bnQsIEdDR0xlbnVtIHR5cGUsIEdDR0x2b2lkcHRyIG9mZnNldCwgR0NHTHNpemVp
IHByaW1jb3VudCkgb3ZlcnJpZGU7CiAgICAgdm9pZCB2ZXJ0ZXhBdHRyaWJEaXZpc29yQU5HTEUo
R0NHTHVpbnQgaW5kZXgsIEdDR0x1aW50IGRpdmlzb3IpIG92ZXJyaWRlOwogCi0gICAgLy8gR0xf
QU5HTEVfcm9idXN0X2NsaWVudF9tZW1vcnkKLSAgICB2b2lkIHJlYWRQaXhlbHNSb2J1c3RBTkdM
RShHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0
LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dM
c2l6ZWkgKmxlbmd0aCwgR0NHTHNpemVpICpjb2x1bW5zLCBHQ0dMc2l6ZWkgKnJvd3MsIHZvaWQg
KnBpeGVscykgb3ZlcnJpZGU7Ci0gICAgdm9pZCB0ZXhQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdD
R0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBH
Q0dMZmxvYXQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCB0ZXhQYXJhbWV0ZXJpdlJvYnVz
dEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXpl
LCBjb25zdCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0UXVlcnlpdlJv
YnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZT
aXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2
b2lkIGdldFF1ZXJ5T2JqZWN0dWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgaWQsIEdDR0xlbnVtIHBu
YW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0x1aW50ICpwYXJh
bXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0QnVmZmVyUG9pbnRlcnZSb2J1c3RBTkdMRShHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVp
ICpsZW5ndGgsIHZvaWQgKipwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0VmVydGV4QXR0
cmliSWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6
ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykgb3ZlcnJpZGU7
Ci0gICAgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJJdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgaW5kZXgs
IEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdD
R0x1aW50ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0VW5pZm9ybXVpdlJvYnVzdEFO
R0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXpl
LCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHVpbnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9p
ZCBnZXRCdWZmZXJQYXJhbWV0ZXJpNjR2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dM
ZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50
NjQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzYW1wbGVyUGFyYW1ldGVyaXZSb2J1c3RB
TkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUs
IGNvbnN0IEdDR0xpbnQgKnBhcmFtKSBvdmVycmlkZTsKLSAgICB2b2lkIHNhbXBsZXJQYXJhbWV0
ZXJmdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6
ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGZsb2F0ICpwYXJhbSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBn
ZXRTYW1wbGVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51
bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpw
YXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0U2FtcGxlclBhcmFtZXRlcmZ2Um9idXN0QU5H
TEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBH
Q0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGZsb2F0ICpwYXJhbXMpIG92ZXJyaWRlOwotCi0gICAgdm9p
ZCBnZXRGcmFtZWJ1ZmZlclBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dM
aW50ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0UHJvZ3JhbUludGVyZmFjZWl2Um9i
dXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGVudW0gcHJvZ3JhbUludGVyZmFjZSwgR0NH
TGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGlu
dCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldEJvb2xlYW5pX3ZSb2J1c3RBTkdMRShH
Q0dMZW51bSB0YXJnZXQsIEdDR0x1aW50IGluZGV4LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNp
emVpICpsZW5ndGgsIEdDR0xib29sZWFuICpkYXRhKSBvdmVycmlkZTsgLy8gTk9MSU5UCi0gICAg
dm9pZCBnZXRNdWx0aXNhbXBsZWZ2Um9idXN0QU5HTEUoR0NHTGVudW0gcG5hbWUsIEdDR0x1aW50
IGluZGV4LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xmbG9hdCAq
dmFsKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldFRleExldmVsUGFyYW1ldGVyaXZSb2J1c3RBTkdM
RShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6
ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykgb3ZlcnJpZGU7
Ci0gICAgdm9pZCBnZXRUZXhMZXZlbFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdD
R0xzaXplaSAqbGVuZ3RoLCBHQ0dMZmxvYXQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0KLSAgICB2b2lk
IGdldFBvaW50ZXJ2Um9idXN0QU5HTEVSb2J1c3RBTkdMRShHQ0dMZW51bSBwbmFtZSwgR0NHTHNp
emVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCB2b2lkICoqcGFyYW1zKSBvdmVycmlkZTsK
LSAgICB2b2lkIGdldG5Vbmlmb3JtZnZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dM
aW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xm
bG9hdCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldG5Vbmlmb3JtaXZSb2J1c3RBTkdM
RShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwg
R0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBn
ZXRuVW5pZm9ybXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRp
b24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHVpbnQgKnBhcmFt
cykgb3ZlcnJpZGU7Ci0gICAgdm9pZCB0ZXhQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRShHQ0dMZW51
bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGlu
dCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIHRleFBhcmFtZXRlckl1aXZSb2J1c3RBTkdM
RShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29u
c3QgR0NHTHVpbnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRUZXhQYXJhbWV0ZXJJ
aXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkg
YnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0g
ICAgdm9pZCBnZXRUZXhQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dM
dWludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIHNhbXBsZXJQYXJhbWV0ZXJJaXZSb2J1
c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNp
emUsIGNvbnN0IEdDR0xpbnQgKnBhcmFtKSBvdmVycmlkZTsKLSAgICB2b2lkIHNhbXBsZXJQYXJh
bWV0ZXJJdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdD
R0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMdWludCAqcGFyYW0pIG92ZXJyaWRlOwotICAgIHZv
aWQgZ2V0U2FtcGxlclBhcmFtZXRlcklpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdD
R0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xp
bnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRTYW1wbGVyUGFyYW1ldGVySXVpdlJv
YnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVm
U2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0x1aW50ICpwYXJhbXMpIG92ZXJyaWRlOwotCi0g
ICAgdm9pZCBnZXRRdWVyeU9iamVjdGl2Um9idXN0QU5HTEUoR0NHTHVpbnQgaWQsIEdDR0xlbnVt
IHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBh
cmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRRdWVyeU9iamVjdGk2NHZSb2J1c3RBTkdMRShH
Q0dMdWludCBpZCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkg
Kmxlbmd0aCwgR0NHTGludDY0ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0UXVlcnlP
YmplY3R1aTY0dlJvYnVzdEFOR0xFKEdDR0x1aW50IGlkLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNp
emVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMdWludDY0ICpwYXJhbXMpIG92ZXJy
aWRlOwotCiAgICAgLy8gT25seSBmb3Igbm9uLVdlYkdMIDIuMCBjb250ZXh0cy4KICAgICBHQ0dM
ZW51bSBhZGp1c3RXZWJHTDFUZXh0dXJlSW50ZXJuYWxGb3JtYXQoR0NHTGVudW0gaW50ZXJuYWxm
b3JtYXQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSk7CiAKQEAgLTExOSw4ICs3Myw2
IEBAIHByaXZhdGU6CiAgICAgLy8gV2VhayBwb2ludGVyIGJhY2sgdG8gR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0wuCiAgICAgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqIG1fY29udGV4dDsKIAotICAg
IGJvb2wgbV91c2VJbmRleGVkR2V0U3RyaW5nIHsgZmFsc2UgfTsKLQogICAgIC8vIFdoZXRoZXIg
dGhlIFdlYkdMIDEuMC1yZWxhdGVkIGZsb2F0aW5nLXBvaW50IHJlbmRlcmFiaWxpdHkgZXh0ZW5z
aW9ucyBoYXZlIGJlZW4gZW5hYmxlZC4KICAgICBib29sIG1fd2ViZ2xDb2xvckJ1ZmZlckZsb2F0
UkdCIHsgZmFsc2UgfTsKICAgICBib29sIG1fd2ViZ2xDb2xvckJ1ZmZlckZsb2F0UkdCQSB7IGZh
bHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmds
ZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwCmluZGV4IDMwOWE1MzA5YjY0
MGEzZDZhMjgxNDFjYTdiMWE3NWRiNDZlOWY5NTEuLjFkMjRlM2Q0ZWNiOTU1NTk4MDFlOGE4M2M5
NTM0YTVhZmQyMDkyNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwCkBAIC0y
MjUwLDYgKzIyNTAsOSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjptYXJrQ29udGV4
dENoYW5nZWQoKQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjptYXJrTGF5ZXJDb21w
b3NpdGVkKCkKIHsKKyAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQorICAgICAgICByZXR1
cm47CisKICAgICBtX2xheWVyQ29tcG9zaXRlZCA9IHRydWU7CiAgICAgcmVzZXRCdWZmZXJzVG9B
dXRvQ2xlYXIoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMLmNwcAppbmRleCA4NDIyODQ2YjZm
NjJhNzU1NGU4YjJkY2YwMjQ3ZmY2MDUzOTVkNDVhLi44NmQxOWNhYWZiNmUzZjBlMzIxZGUxNzMy
MTJhNTRmY2U2MWY3MWVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMLmNwcApAQCAtNDgsMjIg
KzQ4LDYgQEAgRXh0ZW5zaW9uc0dMT3BlbkdMOjpFeHRlbnNpb25zR0xPcGVuR0woR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0wqIGNvbnRleHQsIGJvb2wgdXMKIEV4dGVuc2lvbnNHTE9wZW5HTDo6fkV4
dGVuc2lvbnNHTE9wZW5HTCgpID0gZGVmYXVsdDsKIAogCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5H
TDo6YmxpdEZyYW1lYnVmZmVyQU5HTEUoR0NHTGludCBzcmNYMCwgR0NHTGludCBzcmNZMCwgR0NH
TGludCBzcmNYMSwgR0NHTGludCBzcmNZMSwgR0NHTGludCBkc3RYMCwgR0NHTGludCBkc3RZMCwg
R0NHTGludCBkc3RYMSwgR0NHTGludCBkc3RZMSwgR0NHTGJpdGZpZWxkIG1hc2ssIEdDR0xlbnVt
IGZpbHRlcikKLXsKLSAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0g
ICAgICAgIHJldHVybjsKLQotICAgIDo6Z2xCbGl0RnJhbWVidWZmZXJFWFQoc3JjWDAsIHNyY1kw
LCBzcmNYMSwgc3JjWTEsIGRzdFgwLCBkc3RZMCwgZHN0WDEsIGRzdFkxLCBtYXNrLCBmaWx0ZXIp
OwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTDo6cmVuZGVyYnVmZmVyU3RvcmFnZU11bHRp
c2FtcGxlQU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWkgc2FtcGxlcywgR0NHTGVudW0g
aW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkKLXsKLSAg
ICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsK
LQotICAgIDo6Z2xSZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVFWFQodGFyZ2V0LCBzYW1w
bGVzLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCk7Ci19Ci0KIFBsYXRmb3JtR0xPYmpl
Y3QgRXh0ZW5zaW9uc0dMT3BlbkdMOjpjcmVhdGVWZXJ0ZXhBcnJheU9FUygpCiB7CiAgICAgaWYg
KCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQpAQCAtMTI3LDI0ICsxMTEsNiBAQCB2
b2lkIEV4dGVuc2lvbnNHTE9wZW5HTDo6YmluZFZlcnRleEFycmF5T0VTKFBsYXRmb3JtR0xPYmpl
Y3QgYXJyYXkpCiAjZW5kaWYKIH0KIAotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0w6Omluc2VydEV2
ZW50TWFya2VyRVhUKGNvbnN0IFN0cmluZyYpCi17Ci0gICAgLy8gRklYTUU6IGltcGxlbWVudCB0
aGlzIGZ1bmN0aW9uIGFuZCBhZGQgR0xfRVhUX2RlYnVnX21hcmtlciBpbiBzdXBwb3J0cygpLgot
ICAgIHJldHVybjsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0w6OnB1c2hHcm91cE1hcmtl
ckVYVChjb25zdCBTdHJpbmcmKQotewotICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQgdGhpcyBmdW5j
dGlvbiBhbmQgYWRkIEdMX0VYVF9kZWJ1Z19tYXJrZXIgaW4gc3VwcG9ydHMoKS4KLSAgICByZXR1
cm47Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMOjpwb3BHcm91cE1hcmtlckVYVCh2b2lk
KQotewotICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQgdGhpcyBmdW5jdGlvbiBhbmQgYWRkIEdMX0VY
VF9kZWJ1Z19tYXJrZXIgaW4gc3VwcG9ydHMoKS4KLSAgICByZXR1cm47Ci19Ci0KIGJvb2wgRXh0
ZW5zaW9uc0dMT3BlbkdMOjpzdXBwb3J0c0V4dGVuc2lvbihjb25zdCBTdHJpbmcmIG5hbWUpCiB7
CiAgICAgLy8gR0xfQU5HTEVfZnJhbWVidWZmZXJfYmxpdCBhbmQgR0xfQU5HTEVfZnJhbWVidWZm
ZXJfbXVsdGlzYW1wbGUgYXJlICJmYWtlIi4gVGhleSBhcmUgaW1wbGVtZW50ZWQgdXNpbmcgb3Ro
ZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9F
eHRlbnNpb25zR0xPcGVuR0wuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29w
ZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuaAppbmRleCA0NzUwMjI2ZWNlY2VmNDQzOTZlOTkzODY3
NmNiNjM5YmU4MzQzN2I2Li4wYWRiZDcwNTBiN2UzZjc3ZTAxODg5NDMzMmZmYzg3Y2YzMGQ5MGM1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0
ZW5zaW9uc0dMT3BlbkdMLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
b3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTC5oCkBAIC00MCwxNiArNDAsMTAgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgfkV4dGVuc2lvbnNHTE9wZW5HTCgpOwogCiAgICAgLy8gRXh0ZW5zaW9uc0dM
IG1ldGhvZHMuCi0gICAgdm9pZCBibGl0RnJhbWVidWZmZXJBTkdMRShHQ0dMaW50IHNyY1gwLCBH
Q0dMaW50IHNyY1kwLCBHQ0dMaW50IHNyY1gxLCBHQ0dMaW50IHNyY1kxLCBHQ0dMaW50IGRzdFgw
LCBHQ0dMaW50IGRzdFkwLCBHQ0dMaW50IGRzdFgxLCBHQ0dMaW50IGRzdFkxLCBHQ0dMYml0Zmll
bGQgbWFzaywgR0NHTGVudW0gZmlsdGVyKSBvdmVycmlkZTsKLSAgICB2b2lkIHJlbmRlcmJ1ZmZl
clN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVpIHNhbXBs
ZXMsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBo
ZWlnaHQpIG92ZXJyaWRlOwotCiAgICAgUGxhdGZvcm1HTE9iamVjdCBjcmVhdGVWZXJ0ZXhBcnJh
eU9FUygpIG92ZXJyaWRlOwogICAgIHZvaWQgZGVsZXRlVmVydGV4QXJyYXlPRVMoUGxhdGZvcm1H
TE9iamVjdCkgb3ZlcnJpZGU7CiAgICAgR0NHTGJvb2xlYW4gaXNWZXJ0ZXhBcnJheU9FUyhQbGF0
Zm9ybUdMT2JqZWN0KSBvdmVycmlkZTsKICAgICB2b2lkIGJpbmRWZXJ0ZXhBcnJheU9FUyhQbGF0
Zm9ybUdMT2JqZWN0KSBvdmVycmlkZTsKLSAgICB2b2lkIGluc2VydEV2ZW50TWFya2VyRVhUKGNv
bnN0IFN0cmluZyYpIG92ZXJyaWRlOwotICAgIHZvaWQgcHVzaEdyb3VwTWFya2VyRVhUKGNvbnN0
IFN0cmluZyYpIG92ZXJyaWRlOwotICAgIHZvaWQgcG9wR3JvdXBNYXJrZXJFWFQodm9pZCkgb3Zl
cnJpZGU7CiAgICAgdm9pZCBkcmF3QnVmZmVyc0VYVChHQ0dMU3Bhbjxjb25zdCBHQ0dMZW51bT4p
IG92ZXJyaWRlOwogCiAgICAgdm9pZCBkcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUoR0NHTGVudW0g
bW9kZSwgR0NHTGludCBmaXJzdCwgR0NHTHNpemVpIGNvdW50LCBHQ0dMc2l6ZWkgcHJpbWNvdW50
KSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5jcHAKaW5kZXgg
YzM0MzhkNTkxYzA3YTM2Y2YxZTA0MjZjMWI5ZmQ3YjNlOTE3NzlkNS4uMDlkYjg1NDAwMjIxZGY5
NzU3ODg4NTlhNGEyODdhYmFhMjRmODI3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5H
TENvbW1vbi5jcHAKQEAgLTI1NCwxODUgKzI1NCw2IEBAIHZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdM
Q29tbW9uOjpnZXRuVW5pZm9ybWl2RVhUKEdDR0x1aW50LCBpbnQsIEdDR0xzaXplaSwgR0NHTGlu
CiAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7
CiB9CiAKLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpyZWFkUGl4ZWxzUm9idXN0QU5H
TEUoaW50LCBpbnQsIEdDR0xzaXplaSwgR0NHTHNpemVpLCBHQ0dMZW51bSwgR0NHTGVudW0sIEdD
R0xzaXplaSwgR0NHTHNpemVpICosIEdDR0xzaXplaSAqLCBHQ0dMc2l6ZWkgKiwgdm9pZCAqKQot
ewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04p
OwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6dGV4UGFyYW1ldGVyZnZSb2J1
c3RBTkdMRShHQ0dMZW51bSwgR0NHTGVudW0sIEdDR0xzaXplaSwgY29uc3QgR0NHTGZsb2F0ICop
Ci17Ci0gICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElP
Tik7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjp0ZXhQYXJhbWV0ZXJpdlJv
YnVzdEFOR0xFKEdDR0xlbnVtLCBHQ0dMZW51bSwgR0NHTHNpemVpLCBjb25zdCBHQ0dMaW50ICop
Ci17Ci0gICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElP
Tik7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRRdWVyeWl2Um9idXN0
QU5HTEUoR0NHTGVudW0sIEdDR0xlbnVtLCBHQ0dMc2l6ZWksIEdDR0xzaXplaSAqLCBHQ0dMaW50
ICopCi17Ci0gICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJB
VElPTik7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRRdWVyeU9iamVj
dHVpdlJvYnVzdEFOR0xFKEdDR0x1aW50LCBHQ0dMZW51bSwgR0NHTHNpemVpLCBHQ0dMc2l6ZWkg
KiwgR0NHTHVpbnQgKikKLXsKLSAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lO
VkFMSURfT1BFUkFUSU9OKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246Omdl
dEJ1ZmZlclBvaW50ZXJ2Um9idXN0QU5HTEUoR0NHTGVudW0sIEdDR0xlbnVtLCBHQ0dMc2l6ZWks
IEdDR0xzaXplaSAqLCB2b2lkICoqKQotewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJy
b3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENv
bW1vbjo6Z2V0VmVydGV4QXR0cmliSWl2Um9idXN0QU5HTEUoR0NHTHVpbnQsIEdDR0xlbnVtLCBH
Q0dMc2l6ZWksIEdDR0xzaXplaSAqLCBHQ0dMaW50ICopCi17Ci0gICAgbV9jb250ZXh0LT5zeW50
aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9u
c0dMT3BlbkdMQ29tbW9uOjpnZXRWZXJ0ZXhBdHRyaWJJdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQs
IEdDR0xlbnVtLCBHQ0dMc2l6ZWksIEdDR0xzaXplaSAqLCBHQ0dMdWludCAqKQotewotICAgIG1f
Y29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi12
b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0VW5pZm9ybXVpdlJvYnVzdEFOR0xFKEdD
R0x1aW50LCBpbnQsIEdDR0xzaXplaSwgR0NHTHNpemVpICosIEdDR0x1aW50ICopCi17Ci0gICAg
bV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Ci19Ci0K
LXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRCdWZmZXJQYXJhbWV0ZXJpNjR2Um9i
dXN0QU5HTEUoR0NHTGVudW0sIEdDR0xlbnVtLCBHQ0dMc2l6ZWksIEdDR0xzaXplaSAqLCBHQ0dM
aW50NjQgKikKLXsKLSAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURf
T1BFUkFUSU9OKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OnNhbXBsZXJQ
YXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0x1aW50LCBHQ0dMZW51bSwgR0NHTHNpemVpLCBjb25z
dCBHQ0dMaW50ICopCi17Ci0gICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZB
TElEX09QRVJBVElPTik7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpzYW1w
bGVyUGFyYW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dMdWludCwgR0NHTGVudW0sIEdDR0xzaXplaSwg
Y29uc3QgR0NHTGZsb2F0ICopCi17Ci0gICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihH
TF9JTlZBTElEX09QRVJBVElPTik7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9u
OjpnZXRTYW1wbGVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMdWludCwgR0NHTGVudW0sIEdD
R0xzaXplaSwgR0NHTHNpemVpICosIEdDR0xpbnQgKikKLXsKLSAgICBtX2NvbnRleHQtPnN5bnRo
ZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLX0KLQotdm9pZCBFeHRlbnNpb25z
R0xPcGVuR0xDb21tb246OmdldFNhbXBsZXJQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0x1aW50
LCBHQ0dMZW51bSwgR0NHTHNpemVpLCBHQ0dMc2l6ZWkgKiwgR0NHTGZsb2F0ICopCi17Ci0gICAg
bV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Ci19Ci0K
LQotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldEZyYW1lYnVmZmVyUGFyYW1ldGVy
aXZSb2J1c3RBTkdMRShHQ0dMZW51bSwgR0NHTGVudW0sIEdDR0xzaXplaSwgR0NHTHNpemVpICos
IEdDR0xpbnQgKikKLXsKLSAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFM
SURfT1BFUkFUSU9OKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFBy
b2dyYW1JbnRlcmZhY2VpdlJvYnVzdEFOR0xFKEdDR0x1aW50LCBHQ0dMZW51bSwgR0NHTGVudW0s
IEdDR0xzaXplaSwgR0NHTHNpemVpICosIEdDR0xpbnQgKikKLXsKLSAgICBtX2NvbnRleHQtPnN5
bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLX0KLQotdm9pZCBFeHRlbnNp
b25zR0xPcGVuR0xDb21tb246OmdldEJvb2xlYW5pX3ZSb2J1c3RBTkdMRShHQ0dMZW51bSwgR0NH
THVpbnQsIEdDR0xzaXplaSwgR0NHTHNpemVpICosIEdDR0xib29sZWFuICopCi17Ci0gICAgbV9j
b250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Ci19Ci0KLXZv
aWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRNdWx0aXNhbXBsZWZ2Um9idXN0QU5HTEUo
R0NHTGVudW0sIEdDR0x1aW50LCBHQ0dMc2l6ZWksIEdDR0xzaXplaSAqLCBHQ0dMZmxvYXQgKikK
LXsKLSAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9O
KTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFRleExldmVsUGFyYW1l
dGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51bSwgaW50LCBHQ0dMZW51bSwgR0NHTHNpemVpLCBHQ0dM
c2l6ZWkgKiwgR0NHTGludCAqKQotewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3Io
R0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1v
bjo6Z2V0VGV4TGV2ZWxQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0xlbnVtLCBpbnQsIEdDR0xl
bnVtLCBHQ0dMc2l6ZWksIEdDR0xzaXplaSAqLCBHQ0dMZmxvYXQgKikKLXsKLSAgICBtX2NvbnRl
eHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLX0KLQotCi12b2lk
IEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0UG9pbnRlcnZSb2J1c3RBTkdMRVJvYnVzdEFO
R0xFKEdDR0xlbnVtLCBHQ0dMc2l6ZWksIEdDR0xzaXplaSAqLCB2b2lkICoqKQotewotICAgIG1f
Y29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi12
b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0blVuaWZvcm1mdlJvYnVzdEFOR0xFKEdD
R0x1aW50LCBpbnQsIEdDR0xzaXplaSwgR0NHTHNpemVpICosIEdDR0xmbG9hdCAqKQotewotICAg
IG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQot
Ci12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0blVuaWZvcm1pdlJvYnVzdEFOR0xF
KEdDR0x1aW50LCBpbnQsIEdDR0xzaXplaSwgR0NHTHNpemVpICosIEdDR0xpbnQgKikKLXsKLSAg
ICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLX0K
LQotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldG5Vbmlmb3JtdWl2Um9idXN0QU5H
TEUoR0NHTHVpbnQsIGludCwgR0NHTHNpemVpLCBHQ0dMc2l6ZWkgKiwgR0NHTHVpbnQgKikKLXsK
LSAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsK
LX0KLQotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OnRleFBhcmFtZXRlcklpdlJvYnVz
dEFOR0xFKEdDR0xlbnVtLCBHQ0dMZW51bSwgR0NHTHNpemVpLCBjb25zdCBHQ0dMaW50ICopCi17
Ci0gICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7
Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjp0ZXhQYXJhbWV0ZXJJdWl2Um9i
dXN0QU5HTEUoR0NHTGVudW0sIEdDR0xlbnVtLCBHQ0dMc2l6ZWksIGNvbnN0IEdDR0x1aW50ICop
Ci17Ci0gICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElP
Tik7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRUZXhQYXJhbWV0ZXJJ
aXZSb2J1c3RBTkdMRShHQ0dMZW51bSwgR0NHTGVudW0sIEdDR0xzaXplaSwgR0NHTHNpemVpICos
IEdDR0xpbnQgKikKLXsKLSAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFM
SURfT1BFUkFUSU9OKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFRl
eFBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRShHQ0dMZW51bSwgR0NHTGVudW0sIEdDR0xzaXplaSwg
R0NHTHNpemVpICosIEdDR0x1aW50ICopCi17Ci0gICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xF
cnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdM
Q29tbW9uOjpzYW1wbGVyUGFyYW1ldGVySWl2Um9idXN0QU5HTEUoR0NHTHVpbnQsIEdDR0xlbnVt
LCBHQ0dMc2l6ZWksIGNvbnN0IEdDR0xpbnQgKikKLXsKLSAgICBtX2NvbnRleHQtPnN5bnRoZXNp
emVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xP
cGVuR0xDb21tb246OnNhbXBsZXJQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQsIEdD
R0xlbnVtLCBHQ0dMc2l6ZWksIGNvbnN0IEdDR0x1aW50ICopCi17Ci0gICAgbV9jb250ZXh0LT5z
eW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Ci19Ci0KLXZvaWQgRXh0ZW5z
aW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRTYW1wbGVyUGFyYW1ldGVySWl2Um9idXN0QU5HTEUoR0NH
THVpbnQsIEdDR0xlbnVtLCBHQ0dMc2l6ZWksIEdDR0xzaXplaSAqLCBHQ0dMaW50ICopCi17Ci0g
ICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Ci19
Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRTYW1wbGVyUGFyYW1ldGVySXVp
dlJvYnVzdEFOR0xFKEdDR0x1aW50LCBHQ0dMZW51bSwgR0NHTHNpemVpLCBHQ0dMc2l6ZWkgKiwg
R0NHTHVpbnQgKikKLXsKLSAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFM
SURfT1BFUkFUSU9OKTsKLX0KLQotCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0
UXVlcnlPYmplY3RpdlJvYnVzdEFOR0xFKEdDR0x1aW50LCBHQ0dMZW51bSwgR0NHTHNpemVpLCBH
Q0dMc2l6ZWkgKiwgR0NHTGludCAqKQotewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJy
b3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENv
bW1vbjo6Z2V0UXVlcnlPYmplY3RpNjR2Um9idXN0QU5HTEUoR0NHTHVpbnQsIEdDR0xlbnVtLCBH
Q0dMc2l6ZWksIEdDR0xzaXplaSAqLCBHQ0dMaW50NjQgKikKLXsKLSAgICBtX2NvbnRleHQtPnN5
bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLX0KLQotdm9pZCBFeHRlbnNp
b25zR0xPcGVuR0xDb21tb246OmdldFF1ZXJ5T2JqZWN0dWk2NHZSb2J1c3RBTkdMRShHQ0dMdWlu
dCwgR0NHTGVudW0sIEdDR0xzaXplaSwgR0NHTHNpemVpICosIEdDR0x1aW50NjQgKikKLXsKLSAg
ICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLX0K
LQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoV0VCR0wpICYm
ICFVU0UoQU5HTEUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmgKaW5kZXggM2Yx
MDQwMTYyZmZhMDdhMmRjMTMwYWJiMjJmYjFiMWZmYzNmZGYyMC4uZGNjMGUzYWYyMTczMmU3NDdl
YTFiZDU2NGJiOTY3ODQzMmNhM2Y3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21t
b24uaApAQCAtMjgsMTEgKzI4LDExIEBACiAKICNpbmNsdWRlICJFeHRlbnNpb25zR0wuaCIKIAot
I2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hT
ZXQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKK2NsYXNzIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOwogCiBjbGFzcyBFeHRlbnNpb25z
R0xPcGVuR0xDb21tb24gOiBwdWJsaWMgRXh0ZW5zaW9uc0dMIHsKICAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKQEAgLTU1LDU4ICs1NSwxOCBAQCBwdWJsaWM6CiAgICAgU3RyaW5nIGdldFRy
YW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRShQbGF0Zm9ybUdMT2JqZWN0KSBvdmVycmlkZTsKIAog
ICAgIC8vIEVYVCBSb2J1c3RuZXNzIC0gdXNlcyBnZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJCKCkK
LSAgICB2b2lkIHJlYWRuUGl4ZWxzRVhUKGludCB4LCBpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBH
Q0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXpl
aSBidWZTaXplLCB2b2lkICpkYXRhKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldG5Vbmlmb3JtZnZF
WFQoR0NHTHVpbnQgcHJvZ3JhbSwgaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgZmxv
YXQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRuVW5pZm9ybWl2RVhUKEdDR0x1aW50
IHByb2dyYW0sIGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIGludCAqcGFyYW1zKSBv
dmVycmlkZTsKLQotICAgIGJvb2wgaXNOVklESUEoKSBvdmVycmlkZSB7IHJldHVybiBtX2lzTlZJ
RElBOyB9Ci0gICAgYm9vbCBpc0FNRCgpIG92ZXJyaWRlIHsgcmV0dXJuIG1faXNBTUQ7IH0KLSAg
ICBib29sIGlzSW50ZWwoKSBvdmVycmlkZSB7IHJldHVybiBtX2lzSW50ZWw7IH0KLSAgICBib29s
IGlzSW1hZ2luYXRpb24oKSBvdmVycmlkZSB7IHJldHVybiBtX2lzSW1hZ2luYXRpb247IH0KLSAg
ICBTdHJpbmcgdmVuZG9yKCkgb3ZlcnJpZGUgeyByZXR1cm4gbV92ZW5kb3I7IH0KLQotICAgIGJv
b2wgcmVxdWlyZXNCdWlsdEluRnVuY3Rpb25FbXVsYXRpb24oKSBvdmVycmlkZSB7IHJldHVybiBt
X3JlcXVpcmVzQnVpbHRJbkZ1bmN0aW9uRW11bGF0aW9uOyB9Ci0gICAgYm9vbCByZXF1aXJlc1Jl
c3RyaWN0ZWRNYXhpbXVtVGV4dHVyZVNpemUoKSBvdmVycmlkZSB7IHJldHVybiBtX3JlcXVpcmVz
UmVzdHJpY3RlZE1heGltdW1UZXh0dXJlU2l6ZTsgfQotCi0gICAgLy8gR0xfQU5HTEVfcm9idXN0
X2NsaWVudF9tZW1vcnkKLSAgICB2b2lkIHJlYWRQaXhlbHNSb2J1c3RBTkdMRShpbnQgeCwgaW50
IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBH
Q0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xz
aXplaSAqY29sdW1ucywgR0NHTHNpemVpICpyb3dzLCB2b2lkICpwaXhlbHMpIG92ZXJyaWRlOwot
ICAgIHZvaWQgdGV4UGFyYW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xl
bnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGZsb2F0ICpwYXJhbXMpIG92
ZXJyaWRlOwotICAgIHZvaWQgdGV4UGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJn
ZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGludCAqcGFy
YW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldFF1ZXJ5aXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0
YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5n
dGgsIEdDR0xpbnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRRdWVyeU9iamVjdHVp
dlJvYnVzdEFOR0xFKEdDR0x1aW50IGlkLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNp
emUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMdWludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2
b2lkIGdldEJ1ZmZlclBvaW50ZXJ2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51
bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCB2b2lkICoqcGFy
YW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldFZlcnRleEF0dHJpYklpdlJvYnVzdEFOR0xFKEdD
R0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXpl
aSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0VmVydGV4
QXR0cmliSXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NH
THNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMdWludCAqcGFyYW1zKSBvdmVy
cmlkZTsKLSAgICB2b2lkIGdldFVuaWZvcm11aXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFt
LCBpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NH
THVpbnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRCdWZmZXJQYXJhbWV0ZXJpNjR2
Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1
ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50NjQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0g
ICAgdm9pZCBzYW1wbGVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBH
Q0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xpbnQgKnBhcmFtKSBv
dmVycmlkZTsKLSAgICB2b2lkIHNhbXBsZXJQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0x1aW50
IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGZs
b2F0ICpwYXJhbSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRTYW1wbGVyUGFyYW1ldGVyaXZSb2J1
c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNp
emUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZv
aWQgZ2V0U2FtcGxlclBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NH
TGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGZs
b2F0ICpwYXJhbXMpIG92ZXJyaWRlOwotCi0gICAgdm9pZCBnZXRGcmFtZWJ1ZmZlclBhcmFtZXRl
cml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVp
IGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJyaWRlOwot
ICAgIHZvaWQgZ2V0UHJvZ3JhbUludGVyZmFjZWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3Jh
bSwgR0NHTGVudW0gcHJvZ3JhbUludGVyZmFjZSwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBi
dWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAg
ICB2b2lkIGdldEJvb2xlYW5pX3ZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0x1aW50
IGluZGV4LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xib29sZWFu
ICpkYXRhKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldE11bHRpc2FtcGxlZnZSb2J1c3RBTkdMRShH
Q0dMZW51bSBwbmFtZSwgR0NHTHVpbnQgaW5kZXgsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6
ZWkgKmxlbmd0aCwgR0NHTGZsb2F0ICp2YWwpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0VGV4TGV2
ZWxQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgaW50IGxldmVsLCBHQ0dM
ZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50
ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0VGV4TGV2ZWxQYXJhbWV0ZXJmdlJvYnVz
dEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgaW50IGxldmVsLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNp
emVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMZmxvYXQgKnBhcmFtcykgb3ZlcnJp
ZGU7Ci0KLSAgICB2b2lkIGdldFBvaW50ZXJ2Um9idXN0QU5HTEVSb2J1c3RBTkdMRShHQ0dMZW51
bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCB2b2lkICoqcGFy
YW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldG5Vbmlmb3JtZnZSb2J1c3RBTkdMRShHQ0dMdWlu
dCBwcm9ncmFtLCBpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxl
bmd0aCwgR0NHTGZsb2F0ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0blVuaWZvcm1p
dlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1
ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJyaWRlOwotICAg
IHZvaWQgZ2V0blVuaWZvcm11aXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBpbnQgbG9j
YXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHVpbnQgKnBh
cmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCB0ZXhQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRShHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NH
TGludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIHRleFBhcmFtZXRlckl1aXZSb2J1c3RB
TkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwg
Y29uc3QgR0NHTHVpbnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRUZXhQYXJhbWV0
ZXJJaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6
ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykgb3ZlcnJpZGU7
Ci0gICAgdm9pZCBnZXRUZXhQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBH
Q0dMdWludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIHNhbXBsZXJQYXJhbWV0ZXJJaXZS
b2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1
ZlNpemUsIGNvbnN0IEdDR0xpbnQgKnBhcmFtKSBvdmVycmlkZTsKLSAgICB2b2lkIHNhbXBsZXJQ
YXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUs
IEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMdWludCAqcGFyYW0pIG92ZXJyaWRlOwotICAg
IHZvaWQgZ2V0U2FtcGxlclBhcmFtZXRlcklpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIs
IEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdD
R0xpbnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRTYW1wbGVyUGFyYW1ldGVySXVp
dlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkg
YnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0x1aW50ICpwYXJhbXMpIG92ZXJyaWRlOwot
Ci0gICAgdm9pZCBnZXRRdWVyeU9iamVjdGl2Um9idXN0QU5HTEUoR0NHTHVpbnQgaWQsIEdDR0xl
bnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQg
KnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRRdWVyeU9iamVjdGk2NHZSb2J1c3RBTkdM
RShHQ0dMdWludCBpZCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6
ZWkgKmxlbmd0aCwgR0NHTGludDY0ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0UXVl
cnlPYmplY3R1aTY0dlJvYnVzdEFOR0xFKEdDR0x1aW50IGlkLCBHQ0dMZW51bSBwbmFtZSwgR0NH
THNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMdWludDY0ICpwYXJhbXMpIG92
ZXJyaWRlOworICAgIHZvaWQgcmVhZG5QaXhlbHNFWFQoaW50IHgsIGludCB5LCBHQ0dMc2l6ZWkg
d2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwg
R0NHTHNpemVpIGJ1ZlNpemUsIHZvaWQgKmRhdGEpOworICAgIHZvaWQgZ2V0blVuaWZvcm1mdkVY
VChHQ0dMdWludCBwcm9ncmFtLCBpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBmbG9h
dCAqcGFyYW1zKTsKKyAgICB2b2lkIGdldG5Vbmlmb3JtaXZFWFQoR0NHTHVpbnQgcHJvZ3JhbSwg
aW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgaW50ICpwYXJhbXMpOworCisgICAgYm9v
bCBpc05WSURJQSgpIGNvbnN0IHsgcmV0dXJuIG1faXNOVklESUE7IH0KKyAgICBib29sIGlzQU1E
KCkgY29uc3QgeyByZXR1cm4gbV9pc0FNRDsgfQorICAgIGJvb2wgaXNJbnRlbCgpIGNvbnN0IHsg
cmV0dXJuIG1faXNJbnRlbDsgfQorICAgIGJvb2wgaXNJbWFnaW5hdGlvbigpIGNvbnN0IHsgcmV0
dXJuIG1faXNJbWFnaW5hdGlvbjsgfQorICAgIFN0cmluZyB2ZW5kb3IoKSBjb25zdCB7IHJldHVy
biBtX3ZlbmRvcjsgfQorCisgICAgYm9vbCByZXF1aXJlc0J1aWx0SW5GdW5jdGlvbkVtdWxhdGlv
bigpIGNvbnN0IHsgcmV0dXJuIG1fcmVxdWlyZXNCdWlsdEluRnVuY3Rpb25FbXVsYXRpb247IH0K
KyAgICBib29sIHJlcXVpcmVzUmVzdHJpY3RlZE1heGltdW1UZXh0dXJlU2l6ZSgpIGNvbnN0IHsg
cmV0dXJuIG1fcmVxdWlyZXNSZXN0cmljdGVkTWF4aW11bVRleHR1cmVTaXplOyB9CiAKIHByb3Rl
Y3RlZDoKICAgICBmcmllbmQgY2xhc3MgRXh0ZW5zaW9uc0dMT3BlbkdMRVM7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3Bl
bkdMRVMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVu
c2lvbnNHTE9wZW5HTEVTLmNwcAppbmRleCA4Y2E4Nzc4ODRlZWFiOGEyY2ExZGRlMmRiMmVjOGQ2
YjIxMjJmZGUxLi5iMmUzYzhiOTg0OTM0NWQ1NzM4ZjdhNWMxMGUxMmRiNTk0ZDJhMDAzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9u
c0dMT3BlbkdMRVMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29w
ZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xFUy5jcHAKQEAgLTEwMCwxMSArMTAwLDYgQEAgdm9pZCBF
eHRlbnNpb25zR0xPcGVuR0xFUzo6cmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlSU1HKHVu
c2lnbmVkIGxvbmcgdGFyZ2UKICAgICAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihH
TF9JTlZBTElEX09QRVJBVElPTik7CiB9CiAKLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMRVM6OmJs
aXRGcmFtZWJ1ZmZlckFOR0xFKEdDR0xpbnQsIEdDR0xpbnQsIEdDR0xpbnQsIEdDR0xpbnQsIEdD
R0xpbnQsIEdDR0xpbnQsIEdDR0xpbnQsIEdDR0xpbnQsIEdDR0xiaXRmaWVsZCwgR0NHTGVudW0p
Ci17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQogdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xF
Uzo6cmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMc2l6ZWkgc2FtcGxlcywgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0
aCwgR0NHTHNpemVpIGhlaWdodCkKIHsKICAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRD
dXJyZW50KCkpCkBAIC0xMTUsMjEgKzExMCw2IEBAIHZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMRVM6
OnJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKEdDR0xlbnVtIHRhcmdldCwKICAg
ICAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xFUzo6
aW5zZXJ0RXZlbnRNYXJrZXJFWFQoY29uc3QgU3RyaW5nJikKLXsKLSAgICBub3RJbXBsZW1lbnRl
ZCgpOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTEVTOjpwdXNoR3JvdXBNYXJrZXJFWFQo
Y29uc3QgU3RyaW5nJikKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIEV4dGVu
c2lvbnNHTE9wZW5HTEVTOjpwb3BHcm91cE1hcmtlckVYVCh2b2lkKQotewotICAgIG5vdEltcGxl
bWVudGVkKCk7Ci19Ci0KIFBsYXRmb3JtR0xPYmplY3QgRXh0ZW5zaW9uc0dMT3BlbkdMRVM6OmNy
ZWF0ZVZlcnRleEFycmF5T0VTKCkKIHsKICAgICBpZiAobV9nbEdlblZlcnRleEFycmF5c09FUykg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4
dGVuc2lvbnNHTE9wZW5HTEVTLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9v
cGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMRVMuaAppbmRleCA1Yzc2MDM3ZmE3YmM2ZThlZWUzZTY3
M2Y5OWE3ZGZjMmY3OGZiNGQyLi5hZGQwYmI3NjNmNGJkYTViNjllNjFiYWI2MDIyYTQwODI0OGFm
M2VmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wv
RXh0ZW5zaW9uc0dMT3BlbkdMRVMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMRVMuaApAQCAtMjcsNiArMjcsNyBAQAogI3By
YWdtYSBvbmNlCiAKICNpbmNsdWRlICJFeHRlbnNpb25zR0xPcGVuR0xDb21tb24uaCIKKyNpbmNs
dWRlICJHcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oIgogCiAjaWYgVVNFKE9QRU5HTF9FUykKIApA
QCAtNzUsMTEgKzc2LDcgQEAgcHVibGljOgogCiAgICAgLy8gRXh0ZW5zaW9uM0QgbWV0aG9kcwog
ICAgIGJvb2wgaXNFbmFibGVkKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwotICAgIHZvaWQgYmxp
dEZyYW1lYnVmZmVyQU5HTEUoR0NHTGludCBzcmNYMCwgR0NHTGludCBzcmNZMCwgR0NHTGludCBz
cmNYMSwgR0NHTGludCBzcmNZMSwgR0NHTGludCBkc3RYMCwgR0NHTGludCBkc3RZMCwgR0NHTGlu
dCBkc3RYMSwgR0NHTGludCBkc3RZMSwgR0NHTGJpdGZpZWxkIG1hc2ssIEdDR0xlbnVtIGZpbHRl
cikgb3ZlcnJpZGU7Ci0gICAgdm9pZCByZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVBTkdM
RShHQ0dMZW51bSB0YXJnZXQsIEdDR0xzaXplaSBzYW1wbGVzLCBHQ0dMZW51bSBpbnRlcm5hbGZv
cm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KSBvdmVycmlkZTsKLSAgICB2
b2lkIGluc2VydEV2ZW50TWFya2VyRVhUKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwotICAgIHZv
aWQgcHVzaEdyb3VwTWFya2VyRVhUKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwotICAgIHZvaWQg
cG9wR3JvdXBNYXJrZXJFWFQodm9pZCkgb3ZlcnJpZGU7CisgICAgdm9pZCByZW5kZXJidWZmZXJT
dG9yYWdlTXVsdGlzYW1wbGVBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xzaXplaSBzYW1wbGVz
LCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVp
Z2h0KTsKIAogICAgIFBsYXRmb3JtR0xPYmplY3QgY3JlYXRlVmVydGV4QXJyYXlPRVMoKSBvdmVy
cmlkZTsKICAgICB2b2lkIGRlbGV0ZVZlcnRleEFycmF5T0VTKFBsYXRmb3JtR0xPYmplY3QpIG92
ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Bl
bmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaAppbmRleCBmNTI0ZGU5MmRj
ZDlhNTk4YjBmYmVmOGQzM2I5YzQ0MDliOGNkMWIwLi4zOTViOTU3M2I3NjVkOTNjMDQyNzQ2YTFm
NTQ5MTIwYWRmMjNmODExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaApAQCAt
NDUsNiArNDUsNyBAQAogCiAjaWYgIVVTRShBTkdMRSkKICNpbmNsdWRlICJBTkdMRVdlYktpdEJy
aWRnZS5oIgorI2luY2x1ZGUgIkV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5oIgogI2VuZGlmCiAK
IC8vIEZJWE1FOiBGaW5kIGEgYmV0dGVyIHdheSB0byBhdm9pZCB0aGUgbmFtZSBjb25mbGljdGlv
biBmb3IgTk9fRVJST1IuCkBAIC00ODYsNyArNDg3LDEyIEBAIHB1YmxpYzoKICAgICAvLyBhbGwg
bWV0aG9kcyBpdCBjb250YWlucyBtYXkgbmVjZXNzYXJpbHkgYmUgc3VwcG9ydGVkIG9uIHRoZQog
ICAgIC8vIGN1cnJlbnQgaGFyZHdhcmUuIE11c3QgY2FsbCBFeHRlbnNpb25zR0w6OnN1cHBvcnRz
KCkgdG8KICAgICAvLyBkZXRlcm1pbmUgdGhpcy4KKyNpZiAhVVNFKEFOR0xFKQorICAgIC8vIFVz
ZSBjb3ZhcmlhbnQgcmV0dXJuIHR5cGUgZm9yIE9QRU5HTC9PUEVOR0xfRVMKKyAgICBFeHRlbnNp
b25zR0xPcGVuR0xDb21tb24mIGdldEV4dGVuc2lvbnMoKSBmaW5hbDsKKyNlbHNlCiAgICAgRXh0
ZW5zaW9uc0dMJiBnZXRFeHRlbnNpb25zKCkgZmluYWw7CisjZW5kaWYKIAogICAgIHZvaWQgc2V0
RmFpbE5leHRHUFVTdGF0dXNDaGVjaygpIGZpbmFsIHsgbV9mYWlsTmV4dFN0YXR1c0NoZWNrID0g
dHJ1ZTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9v
cGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEJhc2UuY3BwCmlu
ZGV4IGY0MTRmOWM5NjM0ZDYxYjhkOTAxNWQ1YTZhZmE1MjdjYzM0MmJlOGYuLjBmZjUzM2JlNzEy
ODRlZDA4ZDUzNDNiOTk5NmE5NmZhMTZlMmI1YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEJhc2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0Nv
bnRleHRHTE9wZW5HTEJhc2UuY3BwCkBAIC0xMTYsNyArMTE2LDcgQEAgYm9vbCBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6cmVzaGFwZUZCT3MoY29uc3QgSW50U2l6ZSYgc2l6ZSkKICAgICAgICAg
Ly8gV2UgZG9uJ3QgYWxsb3cgdGhlIGxvZ2ljIHdoZXJlIHN0ZW5jaWwgaXMgcmVxdWlyZWQgYW5k
IGRlcHRoIGlzIG5vdC4KICAgICAgICAgLy8gU2VlIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2
YWxpZGF0ZUF0dHJpYnV0ZXMuCiAKLSAgICAgICAgRXh0ZW5zaW9uc0dMJiBleHRlbnNpb25zID0g
Z2V0RXh0ZW5zaW9ucygpOworICAgICAgICBFeHRlbnNpb25zR0xPcGVuR0xDb21tb24mIGV4dGVu
c2lvbnMgPSBnZXRFeHRlbnNpb25zKCk7CiAgICAgICAgIC8vIFVzZSBhIDI0IGJpdCBkZXB0aCBi
dWZmZXIgd2hlcmUgd2Uga25vdyB3ZSBoYXZlIGl0LgogICAgICAgICBpZiAoZXh0ZW5zaW9ucy5z
dXBwb3J0cygiR0xfRVhUX3BhY2tlZF9kZXB0aF9zdGVuY2lsIikpCiAgICAgICAgICAgICBpbnRl
cm5hbERlcHRoU3RlbmNpbEZvcm1hdCA9IEdMX0RFUFRIMjRfU1RFTkNJTDhfRVhUOwpAQCAtNDE3
LDcgKzQxNyw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNsZWFyRGVwdGgoR0NH
TGNsYW1wZiBkZXB0aCkKIH0KIAogI2lmICFQTEFURk9STShHVEspCi1FeHRlbnNpb25zR0wmIEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRFeHRlbnNpb25zKCkKK0V4dGVuc2lvbnNHTE9wZW5H
TENvbW1vbiYgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEV4dGVuc2lvbnMoKQogewogICAg
IGlmICghbV9leHRlbnNpb25zKQogICAgICAgICBtX2V4dGVuc2lvbnMgPSBtYWtlVW5pcXVlPEV4
dGVuc2lvbnNHTE9wZW5HTD4odGhpcywgaXNHTEVTMkNvbXBsaWFudCgpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRH
TE9wZW5HTENvbW1vbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVu
Z2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb21tb24uY3BwCmluZGV4IDJkZTE4NWE2NjgxMzBh
MzYyYzEyNzY3ZjM4M2Y1N2YxMzQ5ZGQ0ODEuLmRmOTgzZmRhODgxMTI4OWI2MDIyZGFmZWU5OGRj
ZjkyOWRjMjQ1MTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvbW1vbi5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29t
bW9uLmNwcApAQCAtMTE4LDcgKzExOCw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OnZhbGlkYXRlRGVwdGhTdGVuY2lsKGNvbnN0IGNoYXIqIHBhY2tlZERlcHRoU3RlbmNpCiB7CiAg
ICAgYXV0byBhdHRycyA9IGNvbnRleHRBdHRyaWJ1dGVzKCk7CiAKLSAgICBFeHRlbnNpb25zR0wm
IGV4dGVuc2lvbnMgPSBnZXRFeHRlbnNpb25zKCk7CisgICAgRXh0ZW5zaW9uc0dMT3BlbkdMQ29t
bW9uJiBleHRlbnNpb25zID0gZ2V0RXh0ZW5zaW9ucygpOwogICAgIGlmIChhdHRycy5zdGVuY2ls
KSB7CiAgICAgICAgIGlmIChleHRlbnNpb25zLnN1cHBvcnRzKHBhY2tlZERlcHRoU3RlbmNpbEV4
dGVuc2lvbikpIHsKICAgICAgICAgICAgIGV4dGVuc2lvbnMuZW5zdXJlRW5hYmxlZChwYWNrZWRE
ZXB0aFN0ZW5jaWxFeHRlbnNpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMRVMuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdM
RVMuY3BwCmluZGV4IDBkNDc2YzIyOWQ2ZjZlZTk2Y2NmOTkzZDgxZDVjM2RkNjUyMTVlNDguLmFi
OWMzNWY4NDk2NDM2Yzk2MGUyMTJhNDFiYzNlMGNmZTlhYmJmMDkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5H
TEVTLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0xFUy5jcHAKQEAgLTI1NCw3ICsyNTQsNyBAQCB2b2lkIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjpjbGVhckRlcHRoKEdDR0xjbGFtcGYgZGVwdGgpCiB9CiAKICNp
ZiAhUExBVEZPUk0oR1RLKQotRXh0ZW5zaW9uc0dMJiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
Z2V0RXh0ZW5zaW9ucygpCitFeHRlbnNpb25zR0xPcGVuR0xDb21tb24mIEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjpnZXRFeHRlbnNpb25zKCkKIHsKICAgICBpZiAoIW1fZXh0ZW5zaW9ucykKICAg
ICAgICAgbV9leHRlbnNpb25zID0gbWFrZVVuaXF1ZTxFeHRlbnNpb25zR0xPcGVuR0xFUz4odGhp
cywgaXNHTEVTMkNvbXBsaWFudCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dEdM
VGV4dHVyZU1hcHBlci5jcHAKaW5kZXggODczMTQwYjBkOTUyNDc0NzhhMjFmMTRjYTk5OGY2NzE2
ZWU3YWQ3YS4uZWE1ZGE5Zjg4MTg4NzcyMWU3YWQ0MmU4NDBiZGIxYTdkZGYyMTVkZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29u
dGV4dEdMVGV4dHVyZU1hcHBlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlci5jcHAKQEAgLTQyOSw3
ICs0MjksNyBAQCBQbGF0Zm9ybUxheWVyKiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cGxhdGZv
cm1MYXllcigpIGNvbnN0CiB9CiAKICNpZiBQTEFURk9STShHVEspICYmICFVU0UoQU5HTEUpCi1F
eHRlbnNpb25zR0wmIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRFeHRlbnNpb25zKCkKK0V4
dGVuc2lvbnNHTE9wZW5HTENvbW1vbiYgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEV4dGVu
c2lvbnMoKQogewogICAgIGlmICghbV9leHRlbnNpb25zKSB7CiAjaWYgVVNFKE9QRU5HTF9FUykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFw
aGljc0NvbnRleHRHTC5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFw
aGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5tZXNzYWdlcy5pbgppbmRleCBhYTAzNDcyNWY5
YWE0MmY0MmJkM2M4YTAwYjBhYTE4MDkwYTU5YjlhLi5jNzg4ZDY1ZGI0ZDk3MWMyZDRkNTQwYzQ2
ODg4YzQ1MTExNGIzNDZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3Jh
cGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLm1lc3NhZ2Vz
LmluCkBAIC0yNzQsMTYgKzI3NCwxMSBAQCBtZXNzYWdlcyAtPiBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTCBOb3RSZWZDb3VudGVkIHsKICAgICB2b2lkIFVuaWZvcm1CbG9ja0JpbmRpbmcodWludDMy
X3QgcHJvZ3JhbSwgdWludDMyX3QgdW5pZm9ybUJsb2NrSW5kZXgsIHVpbnQzMl90IHVuaWZvcm1C
bG9ja0JpbmRpbmcpCiAgICAgdm9pZCBHZXRBY3RpdmVVbmlmb3JtQmxvY2tpdih1aW50MzJfdCBw
cm9ncmFtLCB1aW50MzJfdCB1bmlmb3JtQmxvY2tJbmRleCwgdWludDMyX3QgcG5hbWUsIHVpbnQ2
NF90IHBhcmFtc1NpemUpIC0+IChJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+IHBhcmFtcykg
U3luY2hyb25vdXMKICAgICB2b2lkIEdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIoKSAtPiAoaW50
MzJfdCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKLSAgICB2b2lkIEJsaXRGcmFtZWJ1ZmZlckFO
R0xFKGludDMyX3Qgc3JjWDAsIGludDMyX3Qgc3JjWTAsIGludDMyX3Qgc3JjWDEsIGludDMyX3Qg
c3JjWTEsIGludDMyX3QgZHN0WDAsIGludDMyX3QgZHN0WTAsIGludDMyX3QgZHN0WDEsIGludDMy
X3QgZHN0WTEsIHVpbnQzMl90IG1hc2ssIHVpbnQzMl90IGZpbHRlcikKLSAgICB2b2lkIFJlbmRl
cmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBz
YW1wbGVzLCB1aW50MzJfdCBpbnRlcm5hbGZvcm1hdCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBo
ZWlnaHQpCiAgICAgdm9pZCBDcmVhdGVWZXJ0ZXhBcnJheU9FUygpIC0+ICh1aW50MzJfdCByZXR1
cm5WYWx1ZSkgU3luY2hyb25vdXMKICAgICB2b2lkIERlbGV0ZVZlcnRleEFycmF5T0VTKHVpbnQz
Ml90IGFyZzApCiAgICAgdm9pZCBJc1ZlcnRleEFycmF5T0VTKHVpbnQzMl90IGFyZzApIC0+IChi
b29sIHJldHVyblZhbHVlKSBTeW5jaHJvbm91cwogICAgIHZvaWQgQmluZFZlcnRleEFycmF5T0VT
KHVpbnQzMl90IGFyZzApCiAgICAgdm9pZCBHZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUo
dWludDMyX3QgYXJnMCkgLT4gKFN0cmluZyByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKLSAgICB2
b2lkIEluc2VydEV2ZW50TWFya2VyRVhUKFN0cmluZyBhcmcwKQotICAgIHZvaWQgUHVzaEdyb3Vw
TWFya2VyRVhUKFN0cmluZyBhcmcwKQotICAgIHZvaWQgUG9wR3JvdXBNYXJrZXJFWFQoKQogICAg
IHZvaWQgRHJhd0J1ZmZlcnNFWFQoSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdD4gYnVmcykK
ICAgICB2b2lkIERyYXdBcnJheXNJbnN0YW5jZWRBTkdMRSh1aW50MzJfdCBtb2RlLCBpbnQzMl90
IGZpcnN0LCBpbnQzMl90IGNvdW50LCBpbnQzMl90IHByaW1jb3VudCkKICAgICB2b2lkIERyYXdF
bGVtZW50c0luc3RhbmNlZEFOR0xFKHVpbnQzMl90IG1vZGUsIGludDMyX3QgY291bnQsIHVpbnQz
Ml90IHR5cGUsIHVpbnQ2NF90IG9mZnNldCwgaW50MzJfdCBwcmltY291bnQpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xGdW5jdGlvbnNHZW5lcmF0ZWQuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGlj
cy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTEZ1bmN0aW9uc0dlbmVyYXRlZC5oCmluZGV4IGFmMDE2
MDJhZjQ5M2ViNjdkZTNlNjJjZjBlNTBhYzBhMmI5OTI1ZjEuLjFiYzU3ZGY5YWZkYTI4ZDhiZTRl
YmM2ZDQ0OTMyZWE5NTUzMmFjYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTEZ1bmN0aW9uc0dlbmVyYXRlZC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRl
eHRHTEZ1bmN0aW9uc0dlbmVyYXRlZC5oCkBAIC0xMTE4LDE0ICsxMTE4LDYgQEAKICAgICAgICAg
cmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5nZXRHcmFwaGljc1Jlc2V0
U3RhdHVzQVJCKCk7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJldHVyblZhbHVlKTsKICAg
ICB9Ci0gICAgdm9pZCBibGl0RnJhbWVidWZmZXJBTkdMRShpbnQzMl90IHNyY1gwLCBpbnQzMl90
IHNyY1kwLCBpbnQzMl90IHNyY1gxLCBpbnQzMl90IHNyY1kxLCBpbnQzMl90IGRzdFgwLCBpbnQz
Ml90IGRzdFkwLCBpbnQzMl90IGRzdFgxLCBpbnQzMl90IGRzdFkxLCB1aW50MzJfdCBtYXNrLCB1
aW50MzJfdCBmaWx0ZXIpCi0gICAgewotICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMo
KS5ibGl0RnJhbWVidWZmZXJBTkdMRShzcmNYMCwgc3JjWTAsIHNyY1gxLCBzcmNZMSwgZHN0WDAs
IGRzdFkwLCBkc3RYMSwgZHN0WTEsIG1hc2ssIGZpbHRlcik7Ci0gICAgfQotICAgIHZvaWQgcmVu
ZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5HTEUodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90
IHNhbXBsZXMsIHVpbnQzMl90IGludGVybmFsZm9ybWF0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90
IGhlaWdodCkKLSAgICB7Ci0gICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnJlbmRl
cmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKHRhcmdldCwgc2FtcGxlcywgaW50ZXJuYWxm
b3JtYXQsIHdpZHRoLCBoZWlnaHQpOwotICAgIH0KICAgICB2b2lkIGNyZWF0ZVZlcnRleEFycmF5
T0VTKENvbXBsZXRpb25IYW5kbGVyPHZvaWQodWludDMyX3QpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQogICAgIHsKICAgICAgICAgUGxhdGZvcm1HTE9iamVjdCByZXR1cm5WYWx1ZSA9IHsgfTsKQEAg
LTExNTIsMTggKzExNDQsNiBAQAogICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Z2V0
RXh0ZW5zaW9ucygpLmdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRShhcmcwKTsKICAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShyZXR1cm5WYWx1ZSkpOwogICAgIH0KLSAgICB2
b2lkIGluc2VydEV2ZW50TWFya2VyRVhUKFN0cmluZyYmIGFyZzApCi0gICAgewotICAgICAgICBt
X2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5pbnNlcnRFdmVudE1hcmtlckVYVChhcmcwKTsKLSAg
ICB9Ci0gICAgdm9pZCBwdXNoR3JvdXBNYXJrZXJFWFQoU3RyaW5nJiYgYXJnMCkKLSAgICB7Ci0g
ICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnB1c2hHcm91cE1hcmtlckVYVChhcmcw
KTsKLSAgICB9Ci0gICAgdm9pZCBwb3BHcm91cE1hcmtlckVYVCgpCi0gICAgewotICAgICAgICBt
X2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5wb3BHcm91cE1hcmtlckVYVCgpOwotICAgIH0KICAg
ICB2b2lkIGRyYXdCdWZmZXJzRVhUKElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+JiYgYnVm
cykKICAgICB7CiAgICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmRyYXdCdWZmZXJz
RVhUKG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0xlbnVtKj4oYnVmcy5k
YXRhKCkpLCBidWZzLnNpemUoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmggYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHkuaAppbmRleCBkOTllZGEyOWY2ZGI1ZTE4MTk3MTMxNzhmMmFhNTMxYjRmNWRkNmUwLi45MGJk
ZDM1YzMwNDMwOTUyNDRjMGQxMDNhZmQ0YTE2YjdjZDJmOWFkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHkuaApAQCAtMzEyLDU2ICszMTIsMTYgQEAgcHVibGljOgogICAg
IHZvaWQgdW5pZm9ybUJsb2NrQmluZGluZyhQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0x1
aW50IHVuaWZvcm1CbG9ja0luZGV4LCBHQ0dMdWludCB1bmlmb3JtQmxvY2tCaW5kaW5nKSBmaW5h
bDsKICAgICB2b2lkIGdldEFjdGl2ZVVuaWZvcm1CbG9ja2l2KEdDR0x1aW50IHByb2dyYW0sIEdD
R0x1aW50IHVuaWZvcm1CbG9ja0luZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGlu
dD4gcGFyYW1zKSBmaW5hbDsKICAgICBHQ0dMaW50IGdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIo
KSBmaW5hbDsKLSAgICB2b2lkIGJsaXRGcmFtZWJ1ZmZlckFOR0xFKEdDR0xpbnQgc3JjWDAsIEdD
R0xpbnQgc3JjWTAsIEdDR0xpbnQgc3JjWDEsIEdDR0xpbnQgc3JjWTEsIEdDR0xpbnQgZHN0WDAs
IEdDR0xpbnQgZHN0WTAsIEdDR0xpbnQgZHN0WDEsIEdDR0xpbnQgZHN0WTEsIEdDR0xiaXRmaWVs
ZCBtYXNrLCBHQ0dMZW51bSBmaWx0ZXIpIGZpbmFsOwotICAgIHZvaWQgcmVuZGVyYnVmZmVyU3Rv
cmFnZU11bHRpc2FtcGxlQU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWkgc2FtcGxlcywg
R0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdo
dCkgZmluYWw7CiAgICAgUGxhdGZvcm1HTE9iamVjdCBjcmVhdGVWZXJ0ZXhBcnJheU9FUygpIGZp
bmFsOwogICAgIHZvaWQgZGVsZXRlVmVydGV4QXJyYXlPRVMoUGxhdGZvcm1HTE9iamVjdCBhcmcw
KSBmaW5hbDsKICAgICBHQ0dMYm9vbGVhbiBpc1ZlcnRleEFycmF5T0VTKFBsYXRmb3JtR0xPYmpl
Y3QgYXJnMCkgZmluYWw7CiAgICAgdm9pZCBiaW5kVmVydGV4QXJyYXlPRVMoUGxhdGZvcm1HTE9i
amVjdCBhcmcwKSBmaW5hbDsKICAgICBTdHJpbmcgZ2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFO
R0xFKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkgZmluYWw7Ci0gICAgdm9pZCBpbnNlcnRFdmVudE1h
cmtlckVYVChjb25zdCBTdHJpbmcmIGFyZzApIGZpbmFsOwotICAgIHZvaWQgcHVzaEdyb3VwTWFy
a2VyRVhUKGNvbnN0IFN0cmluZyYgYXJnMCkgZmluYWw7Ci0gICAgdm9pZCBwb3BHcm91cE1hcmtl
ckVYVCgpIGZpbmFsOwogICAgIHZvaWQgZHJhd0J1ZmZlcnNFWFQoR0NHTFNwYW48Y29uc3QgR0NH
TGVudW0+IGJ1ZnMpIGZpbmFsOwogICAgIHZvaWQgZHJhd0FycmF5c0luc3RhbmNlZEFOR0xFKEdD
R0xlbnVtIG1vZGUsIEdDR0xpbnQgZmlyc3QsIEdDR0xzaXplaSBjb3VudCwgR0NHTHNpemVpIHBy
aW1jb3VudCkgZmluYWw7CiAgICAgdm9pZCBkcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRShHQ0dM
ZW51bSBtb2RlLCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xlbnVtIHR5cGUsIEdDR0x2b2lkcHRyIG9m
ZnNldCwgR0NHTHNpemVpIHByaW1jb3VudCkgZmluYWw7CiAgICAgdm9pZCB2ZXJ0ZXhBdHRyaWJE
aXZpc29yQU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0x1aW50IGRpdmlzb3IpIGZpbmFsOwogICAg
IHZvaWQgZ2V0SW50ZXJuYWxmb3JtYXRpdihHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIGludGVy
bmFsZm9ybWF0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGludD4gcGFyYW1zKSBmaW5h
bDsKLSAgICB2b2lkIHJlYWRQaXhlbHNSb2J1c3RBTkdMRShHQ0dMaW50IHgsIEdDR0xpbnQgeSwg
R0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xl
bnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHNpemVp
KiBjb2x1bW5zLCBHQ0dMc2l6ZWkqIHJvd3MsIEdDR0x2b2lkKiBwaXhlbHMpIGZpbmFsOwotICAg
IHZvaWQgdGV4UGFyYW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVt
IHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGZsb2F0KiBwYXJhbXMpIGZpbmFs
OwotICAgIHZvaWQgdGV4UGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdD
R0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGludCogcGFyYW1zKSBm
aW5hbDsKLSAgICB2b2lkIGdldFF1ZXJ5aXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdD
R0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xp
bnQqIHBhcmFtcykgZmluYWw7Ci0gICAgdm9pZCBnZXRRdWVyeU9iamVjdHVpdlJvYnVzdEFOR0xF
KEdDR0x1aW50IGlkLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXpl
aSogbGVuZ3RoLCBHQ0dMdWludCogcGFyYW1zKSBmaW5hbDsKLSAgICB2b2lkIGdldEJ1ZmZlclBv
aW50ZXJ2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNp
emVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMdm9pZCoqIHBhcmFtcykgZmluYWw7
Ci0gICAgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJJaXZSb2J1c3RBTkdMRShHQ0dMdWludCBpbmRleCwg
R0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NH
TGludCogcGFyYW1zKSBmaW5hbDsKLSAgICB2b2lkIGdldFZlcnRleEF0dHJpYkl1aXZSb2J1c3RB
TkdMRShHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBH
Q0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHVpbnQqIHBhcmFtcykgZmluYWw7Ci0gICAgdm9pZCBnZXRV
bmlmb3JtdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwg
R0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMdWludCogcGFyYW1zKSBm
aW5hbDsKLSAgICB2b2lkIGdldEJ1ZmZlclBhcmFtZXRlcmk2NHZSb2J1c3RBTkdMRShHQ0dMZW51
bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBs
ZW5ndGgsIEdDR0xpbnQ2NCogcGFyYW1zKSBmaW5hbDsKLSAgICB2b2lkIHNhbXBsZXJQYXJhbWV0
ZXJpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6
ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGludCogcGFyYW0pIGZpbmFsOwotICAgIHZvaWQgc2FtcGxl
clBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUs
IEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMZmxvYXQqIHBhcmFtKSBmaW5hbDsKLSAgICB2
b2lkIGdldFNhbXBsZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdD
R0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xp
bnQqIHBhcmFtcykgZmluYWw7Ci0gICAgdm9pZCBnZXRTYW1wbGVyUGFyYW1ldGVyZnZSb2J1c3RB
TkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUs
IEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMZmxvYXQqIHBhcmFtcykgZmluYWw7Ci0gICAgdm9pZCBn
ZXRGcmFtZWJ1ZmZlclBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dM
ZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50
KiBwYXJhbXMpIGZpbmFsOwotICAgIHZvaWQgZ2V0UHJvZ3JhbUludGVyZmFjZWl2Um9idXN0QU5H
TEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGVudW0gcHJvZ3JhbUludGVyZmFjZSwgR0NHTGVudW0g
cG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFy
YW1zKSBmaW5hbDsKLSAgICB2b2lkIGdldEJvb2xlYW5pX3ZSb2J1c3RBTkdMRShHQ0dMZW51bSB0
YXJnZXQsIEdDR0x1aW50IGluZGV4LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5n
dGgsIEdDR0xib29sZWFuKiBkYXRhKSBmaW5hbDsgLy8gTk9MSU5UCi0gICAgdm9pZCBnZXRNdWx0
aXNhbXBsZWZ2Um9idXN0QU5HTEUoR0NHTGVudW0gcG5hbWUsIEdDR0x1aW50IGluZGV4LCBHQ0dM
c2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xmbG9hdCogdmFsKSBmaW5hbDsK
LSAgICB2b2lkIGdldFRleExldmVsUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJn
ZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NH
THNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykgZmluYWw7Ci0gICAgdm9pZCBnZXRUZXhM
ZXZlbFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVs
LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBH
Q0dMZmxvYXQqIHBhcmFtcykgZmluYWw7Ci0gICAgdm9pZCBnZXRQb2ludGVydlJvYnVzdEFOR0xF
Um9idXN0QU5HTEUoR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkq
IGxlbmd0aCwgR0NHTHZvaWQqKiBwYXJhbXMpIGZpbmFsOwotICAgIHZvaWQgZ2V0blVuaWZvcm1m
dlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXpl
aSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGZsb2F0KiBwYXJhbXMpIGZpbmFsOwot
ICAgIHZvaWQgZ2V0blVuaWZvcm1pdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xp
bnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGlu
dCogcGFyYW1zKSBmaW5hbDsKLSAgICB2b2lkIGdldG5Vbmlmb3JtdWl2Um9idXN0QU5HTEUoR0NH
THVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xz
aXplaSogbGVuZ3RoLCBHQ0dMdWludCogcGFyYW1zKSBmaW5hbDsKLSAgICB2b2lkIHRleFBhcmFt
ZXRlcklpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xz
aXplaSBidWZTaXplLCBjb25zdCBHQ0dMaW50KiBwYXJhbXMpIGZpbmFsOwotICAgIHZvaWQgdGV4
UGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUs
IEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMdWludCogcGFyYW1zKSBmaW5hbDsKLSAgICB2
b2lkIGdldFRleFBhcmFtZXRlcklpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVu
dW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCog
cGFyYW1zKSBmaW5hbDsKLSAgICB2b2lkIGdldFRleFBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRShH
Q0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNp
emVpKiBsZW5ndGgsIEdDR0x1aW50KiBwYXJhbXMpIGZpbmFsOwotICAgIHZvaWQgc2FtcGxlclBh
cmFtZXRlcklpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBH
Q0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGludCogcGFyYW0pIGZpbmFsOwotICAgIHZvaWQg
c2FtcGxlclBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51
bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0x1aW50KiBwYXJhbSkgZmluYWw7
Ci0gICAgdm9pZCBnZXRTYW1wbGVyUGFyYW1ldGVySWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2Ft
cGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0
aCwgR0NHTGludCogcGFyYW1zKSBmaW5hbDsKLSAgICB2b2lkIGdldFNhbXBsZXJQYXJhbWV0ZXJJ
dWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXpl
aSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHVpbnQqIHBhcmFtcykgZmluYWw7Ci0g
ICAgdm9pZCBnZXRRdWVyeU9iamVjdGl2Um9idXN0QU5HTEUoR0NHTHVpbnQgaWQsIEdDR0xlbnVt
IHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBh
cmFtcykgZmluYWw7Ci0gICAgdm9pZCBnZXRRdWVyeU9iamVjdGk2NHZSb2J1c3RBTkdMRShHQ0dM
dWludCBpZCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxl
bmd0aCwgR0NHTGludDY0KiBwYXJhbXMpIGZpbmFsOwotICAgIHZvaWQgZ2V0UXVlcnlPYmplY3R1
aTY0dlJvYnVzdEFOR0xFKEdDR0x1aW50IGlkLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1
ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMdWludDY0KiBwYXJhbXMpIGZpbmFsOwogICAg
IC8vIEVuZCBvZiBsaXN0IHVzZWQgYnkgZ2VuZXJhdGUtZ3B1cC13ZWJnbCBzY3JpcHQuCiAKIHBy
b3RlY3RlZDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhp
Y3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUZ1bmN0aW9uc0dlbmVyYXRlZC5jcHAgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHlGdW5jdGlvbnNHZW5lcmF0ZWQuY3BwCmluZGV4IGY3ZWNmODY1NTZhMDA3M2FmOGY1
NTRjZmNmYzBlZjMzOWY2MWU4OWEuLmUxYTZkZDM0ZTU1YjUyNWZlZjI2YjU3Y2IxMzI1MmNmMzJi
ZDA2OWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mv
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUZ1bmN0aW9uc0dlbmVyYXRlZC5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5RnVuY3Rpb25zR2VuZXJhdGVkLmNwcApAQCAtMTM4MCwxNiArMTM4MCw2IEBAIEdD
R0xpbnQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0R3JhcGhpY3NSZXNldFN0YXR1
c0FSQigpCiAgICAgcmV0dXJuIHJldHVyblZhbHVlOwogfQogCi12b2lkIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmJsaXRGcmFtZWJ1ZmZlckFOR0xFKEdDR0xpbnQgc3JjWDAsIEdDR0xp
bnQgc3JjWTAsIEdDR0xpbnQgc3JjWDEsIEdDR0xpbnQgc3JjWTEsIEdDR0xpbnQgZHN0WDAsIEdD
R0xpbnQgZHN0WTAsIEdDR0xpbnQgZHN0WDEsIEdDR0xpbnQgZHN0WTEsIEdDR0xiaXRmaWVsZCBt
YXNrLCBHQ0dMZW51bSBmaWx0ZXIpCi17Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OkJsaXRGcmFtZWJ1ZmZlckFOR0xFKHNyY1gwLCBzcmNZMCwgc3JjWDEsIHNy
Y1kxLCBkc3RYMCwgZHN0WTAsIGRzdFgxLCBkc3RZMSwgbWFzaywgZmlsdGVyKSwgbV9ncmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIpOwotfQotCi12b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OnJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKEdDR0xlbnVtIHRhcmdl
dCwgR0NHTHNpemVpIHNhbXBsZXMsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkg
d2lkdGgsIEdDR0xzaXplaSBoZWlnaHQpCi17Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OlJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKHRhcmdl
dCwgc2FtcGxlcywgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQpLCBtX2dyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllcik7Ci19Ci0KIFBsYXRmb3JtR0xPYmplY3QgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6Y3JlYXRlVmVydGV4QXJyYXlPRVMoKQogewogICAgIHVpbnQzMl90IHJl
dHVyblZhbHVlID0geyB9OwpAQCAtMTQyMSwyMSArMTQxMSw2IEBAIFN0cmluZyBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpnZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUoUGxhdGZv
cm1HTE9iCiAgICAgcmV0dXJuIHJldHVyblZhbHVlOwogfQogCi12b2lkIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6Omluc2VydEV2ZW50TWFya2VyRVhUKGNvbnN0IFN0cmluZyYgYXJnMCkK
LXsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SW5zZXJ0RXZl
bnRNYXJrZXJFWFQoYXJnMCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKLX0KLQot
dm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpwdXNoR3JvdXBNYXJrZXJFWFQoY29u
c3QgU3RyaW5nJiBhcmcwKQotewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpQdXNoR3JvdXBNYXJrZXJFWFQoYXJnMCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyKTsKLX0KLQotdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpwb3BHcm91
cE1hcmtlckVYVCgpCi17Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OlBvcEdyb3VwTWFya2VyRVhUKCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsK
LX0KLQogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkcmF3QnVmZmVyc0VYVChH
Q0dMU3Bhbjxjb25zdCBHQ0dMZW51bT4gYnVmcykKIHsKICAgICBzZW5kKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6RHJhd0J1ZmZlcnNFWFQoSVBDOjpBcnJheVJlZmVyZW5jZTx1
aW50MzJfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50MzJfdCo+KGJ1ZnMuZGF0YSksIGJ1
ZnMuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CkBAIC0xNDY1LDE4
MSArMTQ0MCw2IEBAIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0SW50ZXJu
YWxmb3JtYXRpdihHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtCiAgICAgCiB9CiAKLXZvaWQgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cmVhZFBpeGVsc1JvYnVzdEFOR0xFKEdDR0xpbnQg
eCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVt
IGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVu
Z3RoLCBHQ0dMc2l6ZWkqIGNvbHVtbnMsIEdDR0xzaXplaSogcm93cywgR0NHTHZvaWQqIHBpeGVs
cykKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OnRleFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xmbG9hdCogcGFyYW1z
KQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6dGV4UGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdD
R0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGludCogcGFyYW1zKQot
ewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6Z2V0UXVlcnlpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0g
cG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFy
YW1zKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6Z2V0UXVlcnlPYmplY3R1aXZSb2J1c3RBTkdMRShHQ0dMdWludCBpZCwg
R0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NH
THVpbnQqIHBhcmFtcykKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEJ1ZmZlclBvaW50ZXJ2Um9idXN0QU5HTEUoR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXpl
aSogbGVuZ3RoLCBHQ0dMdm9pZCoqIHBhcmFtcykKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwot
fQotCi12b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFZlcnRleEF0dHJpYklp
dlJvYnVzdEFOR0xFKEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1
ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpCi17Ci0gICAgbm90SW1w
bGVtZW50ZWQoKTsKLX0KLQotdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRW
ZXJ0ZXhBdHRyaWJJdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1l
LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0x1aW50KiBwYXJhbXMp
Ci17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpnZXRVbmlmb3JtdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NH
TGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dM
dWludCogcGFyYW1zKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0QnVmZmVyUGFyYW1ldGVyaTY0dlJvYnVzdEFOR0xF
KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dM
c2l6ZWkqIGxlbmd0aCwgR0NHTGludDY0KiBwYXJhbXMpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQo
KTsKLX0KLQotdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpzYW1wbGVyUGFyYW1l
dGVyaXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNp
emVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xpbnQqIHBhcmFtKQotewotICAgIG5vdEltcGxlbWVudGVk
KCk7Ci19Ci0KLXZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c2FtcGxlclBhcmFt
ZXRlcmZ2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xz
aXplaSBidWZTaXplLCBjb25zdCBHQ0dMZmxvYXQqIHBhcmFtKQotewotICAgIG5vdEltcGxlbWVu
dGVkKCk7Ci19Ci0KLXZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0U2FtcGxl
clBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUs
IEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1zKQot
ewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6Z2V0U2FtcGxlclBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxl
ciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwg
R0NHTGZsb2F0KiBwYXJhbXMpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRGcmFtZWJ1ZmZlclBhcmFtZXRlcml2Um9i
dXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNp
emUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpCi17Ci0gICAgbm90SW1wbGVt
ZW50ZWQoKTsKLX0KLQotdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRQcm9n
cmFtSW50ZXJmYWNlaXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMZW51bSBwcm9n
cmFtSW50ZXJmYWNlLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXpl
aSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0K
LQotdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRCb29sZWFuaV92Um9idXN0
QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMdWludCBpbmRleCwgR0NHTHNpemVpIGJ1ZlNpemUs
IEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMYm9vbGVhbiogZGF0YSkgLy8gTk9MSU5UCi17Ci0gICAg
bm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpnZXRNdWx0aXNhbXBsZWZ2Um9idXN0QU5HTEUoR0NHTGVudW0gcG5hbWUsIEdDR0x1aW50IGlu
ZGV4LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xmbG9hdCogdmFs
KQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6Z2V0VGV4TGV2ZWxQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRh
cmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBH
Q0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1zKQotewotICAgIG5vdEltcGxlbWVudGVk
KCk7Ci19Ci0KLXZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VGV4TGV2ZWxQ
YXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NH
TGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGZs
b2F0KiBwYXJhbXMpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRQb2ludGVydlJvYnVzdEFOR0xFUm9idXN0QU5HTEUo
R0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NH
THZvaWQqKiBwYXJhbXMpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRuVW5pZm9ybWZ2Um9idXN0QU5HTEUoR0NHTHVp
bnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXpl
aSogbGVuZ3RoLCBHQ0dMZmxvYXQqIHBhcmFtcykKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwot
fQotCi12b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldG5Vbmlmb3JtaXZSb2J1
c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVm
U2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykKLXsKLSAgICBub3RJbXBs
ZW1lbnRlZCgpOwotfQotCi12b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldG5V
bmlmb3JtdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwg
R0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMdWludCogcGFyYW1zKQot
ewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6dGV4UGFyYW1ldGVySWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dM
ZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xpbnQqIHBhcmFtcykKLXsK
LSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OnRleFBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xl
bnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTHVpbnQqIHBhcmFtcykKLXsK
LSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmdldFRleFBhcmFtZXRlcklpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NH
TGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGlu
dCogcGFyYW1zKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VGV4UGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFKEdDR0xl
bnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkq
IGxlbmd0aCwgR0NHTHVpbnQqIHBhcmFtcykKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQot
Ci12b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnNhbXBsZXJQYXJhbWV0ZXJJaXZS
b2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1
ZlNpemUsIGNvbnN0IEdDR0xpbnQqIHBhcmFtKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19
Ci0KLXZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c2FtcGxlclBhcmFtZXRlckl1
aXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVp
IGJ1ZlNpemUsIGNvbnN0IEdDR0x1aW50KiBwYXJhbSkKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgp
OwotfQotCi12b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFNhbXBsZXJQYXJh
bWV0ZXJJaXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NH
THNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpCi17Ci0g
ICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpnZXRTYW1wbGVyUGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIs
IEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdD
R0x1aW50KiBwYXJhbXMpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRRdWVyeU9iamVjdGl2Um9idXN0QU5HTEUoR0NH
THVpbnQgaWQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBs
ZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12
b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFF1ZXJ5T2JqZWN0aTY0dlJvYnVz
dEFOR0xFKEdDR0x1aW50IGlkLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdD
R0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50NjQqIHBhcmFtcykKLXsKLSAgICBub3RJbXBsZW1lbnRl
ZCgpOwotfQotCi12b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFF1ZXJ5T2Jq
ZWN0dWk2NHZSb2J1c3RBTkdMRShHQ0dMdWludCBpZCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXpl
aSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHVpbnQ2NCogcGFyYW1zKQotewotICAg
IG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KIH0KIAogI2VuZGlmCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>415829</attachid>
            <date>2020-12-09 21:37:01 -0800</date>
            <delta_ts>2020-12-09 22:07:17 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-218896-20201209213700.patch</filename>
            <type>text/plain</type>
            <size>89416</size>
            <attacher name="Rini Patel">rini_patel</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwNTk0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTg5YmE0ODhlN2IwMmI3
YzFjMmUzOTNmOWI4MjgwMjM4YWIwMTI0Yy4uZTc5NmNiMjQzODFiNDE3YTkzMWMxY2JmNjQ5OWVh
OWEwMzA1MmM5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyOSBAQAorMjAyMC0xMi0wNyAgUmlu
aSBQYXRlbCAgPHJpbmlfcGF0ZWxAYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZSB1bnVzZWQg
ZnVuY3Rpb25zIGZyb20gR3JhcGhpY3NDb250ZXh0R0wgYW5kIEV4dGVuc2lvbnNHTAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE4ODk2CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVtb3ZlIHVudXNlZCBm
dW5jdGlvbnMgZnJvbSBHcmFwaGljc0NvbnRleHRHTCBhbmQgRXh0ZW5zaW9uc0dMCisgICAgICAg
IFRoZXkncmUgZGVhZCBjb2RlIGFuZCBtYWtlIGl0IGhhcmRlciB0byBpbXBsZW1lbnQgdGhlIEdQ
VSBQcm9jZXNzIHZlcnNpb24uCisKKyAgICAgICAgLSBJZiB0aGUgZnVuY3Rpb24gaXMgdW51c2Vk
LCByZW1vdmUgaXQgZnVsbHkKKyAgICAgICAgLSBJZiB0aGUgZnVuY3Rpb24gaXMgdW51c2VkIGlu
IFVTRShBTkdMRSkgV2ViR0wgcGFydCwgcmVtb3ZlIHRoZSBmdW5jdGlvbiBmcm9tIEdyYXBoaWNz
Q29udGV4dEdMIGFuZCBBTkdMRSBHcmFwaGljc0NvbnRleHRHTE9wZW5HTAorCisgICAgICAgICog
aHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL0V4dGVuc2lvbnNHTC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lv
bnNHTEFOR0xFOjpFeHRlbnNpb25zR0xBTkdMRSk6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNp
b25zR0xBTkdMRTo6aW5pdGlhbGl6ZUF2YWlsYWJsZUV4dGVuc2lvbnMpOgorICAgICAgICAoV2Vi
Q29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmJsaXRGcmFtZWJ1ZmZlckFOR0xFKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpyZW5kZXJidWZmZXJTdG9yYWdl
TXVsdGlzYW1wbGVBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25z
R0xBTkdMRTo6aW5zZXJ0RXZlbnRNYXJrZXJFWFQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OnB1c2hHcm91cE1hcmtlckVYVCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6cG9wR3JvdXBNYXJrZXJFWFQpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OnJlYWRQaXhlbHNSb2J1
c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6
dGV4UGFyYW1ldGVyZnZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpF
eHRlbnNpb25zR0xBTkdMRTo6dGV4UGFyYW1ldGVyaXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6Z2V0UXVlcnlpdlJvYnVzdEFOR0xF
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpnZXRRdWVy
eU9iamVjdHVpdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVu
c2lvbnNHTEFOR0xFOjpnZXRCdWZmZXJQb2ludGVydlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpnZXRWZXJ0ZXhBdHRyaWJJaXZSb2J1
c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6
Z2V0VmVydGV4QXR0cmliSXVpdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpnZXRVbmlmb3JtdWl2Um9idXN0QU5HTEUpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldEJ1ZmZlclBhcmFtZXRl
cmk2NHZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25z
R0xBTkdMRTo6c2FtcGxlclBhcmFtZXRlcml2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OnNhbXBsZXJQYXJhbWV0ZXJmdlJvYnVzdEFO
R0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpnZXRT
YW1wbGVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpFeHRlbnNpb25zR0xBTkdMRTo6Z2V0U2FtcGxlclBhcmFtZXRlcmZ2Um9idXN0QU5HTEUpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldEZyYW1lYnVm
ZmVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpF
eHRlbnNpb25zR0xBTkdMRTo6Z2V0UHJvZ3JhbUludGVyZmFjZWl2Um9idXN0QU5HTEUpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldEJvb2xlYW5pX3ZS
b2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdM
RTo6Z2V0TXVsdGlzYW1wbGVmdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpnZXRUZXhMZXZlbFBhcmFtZXRlcml2Um9idXN0QU5HTEUp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldFRleExl
dmVsUGFyYW1ldGVyZnZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpF
eHRlbnNpb25zR0xBTkdMRTo6Z2V0UG9pbnRlcnZSb2J1c3RBTkdMRVJvYnVzdEFOR0xFKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpnZXRuVW5pZm9ybWZ2
Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5H
TEU6OmdldG5Vbmlmb3JtaXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpFeHRlbnNpb25zR0xBTkdMRTo6Z2V0blVuaWZvcm11aXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6dGV4UGFyYW1ldGVySWl2Um9i
dXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6
OnRleFBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpFeHRlbnNpb25zR0xBTkdMRTo6Z2V0VGV4UGFyYW1ldGVySWl2Um9idXN0QU5HTEUpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldFRleFBhcmFtZXRl
ckl1aXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25z
R0xBTkdMRTo6c2FtcGxlclBhcmFtZXRlcklpdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpzYW1wbGVyUGFyYW1ldGVySXVpdlJvYnVz
dEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpn
ZXRTYW1wbGVyUGFyYW1ldGVySWl2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldFNhbXBsZXJQYXJhbWV0ZXJJdWl2Um9idXN0QU5H
TEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldFF1
ZXJ5T2JqZWN0aXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRl
bnNpb25zR0xBTkdMRTo6Z2V0UXVlcnlPYmplY3RpNjR2Um9idXN0QU5HTEUpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldFF1ZXJ5T2JqZWN0dWk2NHZS
b2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUv
RXh0ZW5zaW9uc0dMQU5HTEUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wv
RXh0ZW5zaW9uc0dMT3BlbkdMLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9w
ZW5HTDo6YmxpdEZyYW1lYnVmZmVyQU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
RXh0ZW5zaW9uc0dMT3BlbkdMOjpyZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVBTkdMRSk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0w6Omluc2VydEV2
ZW50TWFya2VyRVhUKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9w
ZW5HTDo6cHVzaEdyb3VwTWFya2VyRVhUKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4
dGVuc2lvbnNHTE9wZW5HTDo6cG9wR3JvdXBNYXJrZXJFWFQpOiBEZWxldGVkLgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6cmVhZFBpeGVsc1Jv
YnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5H
TENvbW1vbjo6dGV4UGFyYW1ldGVyZnZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OnRleFBhcmFtZXRlcml2Um9idXN0QU5H
TEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9u
OjpnZXRRdWVyeWl2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0
ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRRdWVyeU9iamVjdHVpdlJvYnVzdEFOR0xFKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0QnVm
ZmVyUG9pbnRlcnZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRl
bnNpb25zR0xPcGVuR0xDb21tb246OmdldFZlcnRleEF0dHJpYklpdlJvYnVzdEFOR0xFKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0VmVy
dGV4QXR0cmliSXVpdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4
dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0VW5pZm9ybXVpdlJvYnVzdEFOR0xFKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0QnVmZmVy
UGFyYW1ldGVyaTY0dlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4
dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6c2FtcGxlclBhcmFtZXRlcml2Um9idXN0QU5HTEUpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpzYW1w
bGVyUGFyYW1ldGVyZnZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpF
eHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFNhbXBsZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xF
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6
Z2V0U2FtcGxlclBhcmFtZXRlcmZ2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRGcmFtZWJ1ZmZlclBhcmFtZXRlcml2
Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3Bl
bkdMQ29tbW9uOjpnZXRQcm9ncmFtSW50ZXJmYWNlaXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldEJvb2xlYW5pX3ZS
b2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVu
R0xDb21tb246OmdldE11bHRpc2FtcGxlZnZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFRleExldmVsUGFyYW1ldGVy
aXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xP
cGVuR0xDb21tb246OmdldFRleExldmVsUGFyYW1ldGVyZnZSb2J1c3RBTkdMRSk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFBvaW50ZXJ2
Um9idXN0QU5HTEVSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRl
bnNpb25zR0xPcGVuR0xDb21tb246OmdldG5Vbmlmb3JtZnZSb2J1c3RBTkdMRSk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldG5Vbmlmb3Jt
aXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xP
cGVuR0xDb21tb246OmdldG5Vbmlmb3JtdWl2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjp0ZXhQYXJhbWV0ZXJJaXZSb2J1
c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xD
b21tb246OnRleFBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFRleFBhcmFtZXRlcklpdlJvYnVz
dEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTENv
bW1vbjo6Z2V0VGV4UGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6c2FtcGxlclBhcmFtZXRlcklpdlJv
YnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5H
TENvbW1vbjo6c2FtcGxlclBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFNhbXBsZXJQYXJhbWV0
ZXJJaXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25z
R0xPcGVuR0xDb21tb246OmdldFNhbXBsZXJQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRRdWVy
eU9iamVjdGl2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5z
aW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRRdWVyeU9iamVjdGk2NHZSb2J1c3RBTkdMRSk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFF1ZXJ5
T2JqZWN0dWk2NHZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5oOgorICAgICAgICAoV2ViQ29y
ZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjppc05WSURJQSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmlzQU1EIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6aXNJbnRlbCBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmlzSW1hZ2luYXRpb24gY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjp2ZW5kb3Ig
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpyZXF1
aXJlc0J1aWx0SW5GdW5jdGlvbkVtdWxhdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpF
eHRlbnNpb25zR0xPcGVuR0xDb21tb246OnJlcXVpcmVzUmVzdHJpY3RlZE1heGltdW1UZXh0dXJl
U2l6ZSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lv
bnNHTE9wZW5HTEVTLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTEVT
OjpibGl0RnJhbWVidWZmZXJBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRl
bnNpb25zR0xPcGVuR0xFUzo6aW5zZXJ0RXZlbnRNYXJrZXJFWFQpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMRVM6OnB1c2hHcm91cE1hcmtlckVYVCk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xFUzo6cG9wR3JvdXBN
YXJrZXJFWFQpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9F
eHRlbnNpb25zR0xPcGVuR0xFUy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5n
bC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEJhc2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlc2hhcGVGQk9zKToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRFeHRlbnNpb25zKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb21tb24uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnZhbGlkYXRlRGVw
dGhTdGVuY2lsKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0xFUy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6Z2V0RXh0ZW5zaW9ucyk6CisKIDIwMjAtMTItMDkgIFJ5YW4gSGFkZGFkICA8cnlh
bmhhZGRhZEBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcmV2ZXJ0aW5nIHIyNzA1
NDQgYW5kIHIyNzA1NjkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCmluZGV4IGY3YzZhMmU4MmE0YmYwMzdhMWI0
NzdkNzgzZmE1NDFhYzRmNTQ2OTYuLjkxODhhNjM5YmE3OTYyZThjY2Q4OTNlNTAwOTUwMmU3Mzgx
MDFkNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCkBAIC03NDEsMTAgKzc0MSw2IEBAIHN0ZDo6dW5pcXVl
X3B0cjxXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlPiBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
OjpjcmVhdGUoQ2FuCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIGF1dG8m
IGV4dGVuc2lvbnMgPSBjb250ZXh0LT5nZXRFeHRlbnNpb25zKCk7Ci0gICAgaWYgKGV4dGVuc2lv
bnMuc3VwcG9ydHMoIkdMX0VYVF9kZWJ1Z19tYXJrZXIiX3MpKQotICAgICAgICBleHRlbnNpb25z
LnB1c2hHcm91cE1hcmtlckVYVCgiV2ViR0xSZW5kZXJpbmdDb250ZXh0Il9zKTsKLQogICAgIHN0
ZDo6dW5pcXVlX3B0cjxXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlPiByZW5kZXJpbmdDb250ZXh0
OwogI2lmIEVOQUJMRShXRUJHTDIpCiAgICAgaWYgKHR5cGUgPT0gIndlYmdsMiIpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9FeHRlbnNpb25zR0wuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0V4dGVuc2lvbnNHTC5oCmluZGV4IGQ1MDIx
ZGQzMzRlZGY5MWEzNDIzMGJlMDE2ODkyMDc0MjQ5ZWIwZTguLmFjOGM4ODkzMjM0NTY3MmU5ZDA1
M2ZjZDk3YTIyZGE4ZTk5MDVlOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0V4dGVuc2lvbnNHTC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0V4dGVuc2lvbnNHTC5oCkBAIC0yODEsMTIgKzI4MSw2IEBAIHB1YmxpYzoKICAgICAv
LyBleHRlcm5hbGx5LgogICAgIHZpcnR1YWwgR0NHTGludCBnZXRHcmFwaGljc1Jlc2V0U3RhdHVz
QVJCKCkgPSAwOwogCi0gICAgLy8gR0xfQU5HTEVfZnJhbWVidWZmZXJfYmxpdAotICAgIHZpcnR1
YWwgdm9pZCBibGl0RnJhbWVidWZmZXJBTkdMRShHQ0dMaW50IHNyY1gwLCBHQ0dMaW50IHNyY1kw
LCBHQ0dMaW50IHNyY1gxLCBHQ0dMaW50IHNyY1kxLCBHQ0dMaW50IGRzdFgwLCBHQ0dMaW50IGRz
dFkwLCBHQ0dMaW50IGRzdFgxLCBHQ0dMaW50IGRzdFkxLCBHQ0dMYml0ZmllbGQgbWFzaywgR0NH
TGVudW0gZmlsdGVyKSA9IDA7Ci0KLSAgICAvLyBHTF9BTkdMRV9mcmFtZWJ1ZmZlcl9tdWx0aXNh
bXBsZQotICAgIHZpcnR1YWwgdm9pZCByZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVBTkdM
RShHQ0dMZW51bSB0YXJnZXQsIEdDR0xzaXplaSBzYW1wbGVzLCBHQ0dMZW51bSBpbnRlcm5hbGZv
cm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KSA9IDA7Ci0KICAgICAvLyBH
TF9PRVNfdmVydGV4X2FycmF5X29iamVjdAogICAgIHZpcnR1YWwgUGxhdGZvcm1HTE9iamVjdCBj
cmVhdGVWZXJ0ZXhBcnJheU9FUygpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlVmVydGV4
QXJyYXlPRVMoUGxhdGZvcm1HTE9iamVjdCkgPSAwOwpAQCAtMjk2LDExICsyOTAsNiBAQCBwdWJs
aWM6CiAgICAgLy8gR0xfQU5HTEVfdHJhbnNsYXRlZF9zaGFkZXJfc291cmNlCiAgICAgdmlydHVh
bCBTdHJpbmcgZ2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFKFBsYXRmb3JtR0xPYmplY3Qp
ID0gMDsKIAotICAgIC8vIEdMX0VYVF9kZWJ1Z19tYXJrZXIKLSAgICB2aXJ0dWFsIHZvaWQgaW5z
ZXJ0RXZlbnRNYXJrZXJFWFQoY29uc3QgU3RyaW5nJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBw
dXNoR3JvdXBNYXJrZXJFWFQoY29uc3QgU3RyaW5nJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBw
b3BHcm91cE1hcmtlckVYVCgpID0gMDsKLQogICAgIC8vIEdMX0FSQl9kcmF3X2J1ZmZlcnMgLyBH
TF9FWFRfZHJhd19idWZmZXJzCiAgICAgdmlydHVhbCB2b2lkIGRyYXdCdWZmZXJzRVhUKEdDR0xT
cGFuPGNvbnN0IEdDR0xlbnVtPiBidWZzKSA9IDA7CiAKQEAgLTMwOSw0NyArMjk4LDYgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgdm9pZCBkcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRShHQ0dMZW51
bSBtb2RlLCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xlbnVtIHR5cGUsIEdDR0x2b2lkcHRyIG9mZnNl
dCwgR0NHTHNpemVpIHByaW1jb3VudCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB2ZXJ0ZXhBdHRy
aWJEaXZpc29yQU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0x1aW50IGRpdmlzb3IpID0gMDsKIAot
ICAgIC8vIEdMX0FOR0xFX3JvYnVzdF9jbGllbnRfbWVtb3J5Ci0gICAgdmlydHVhbCB2b2lkIHJl
YWRQaXhlbHNSb2J1c3RBTkdMRShHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRo
LCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xz
aXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHNpemVpKiBjb2x1bW5zLCBHQ0dM
c2l6ZWkqIHJvd3MsIEdDR0x2b2lkKiBwaXhlbHMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgdGV4
UGFyYW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBH
Q0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGZsb2F0KiBwYXJhbXMpID0gMDsKLSAgICB2aXJ0
dWFsIHZvaWQgdGV4UGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xl
bnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGludCogcGFyYW1zKSA9IDA7
Ci0KLSAgICB2aXJ0dWFsIHZvaWQgZ2V0UXVlcnlpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdl
dCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwg
R0NHTGludCogcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldFF1ZXJ5T2JqZWN0dWl2
Um9idXN0QU5HTEUoR0NHTHVpbnQgaWQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6
ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0x1aW50KiBwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFs
IHZvaWQgZ2V0QnVmZmVyUG9pbnRlcnZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xl
bnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0x2b2lk
KiogcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldFZlcnRleEF0dHJpYklpdlJvYnVz
dEFOR0xFKEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUs
IEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZv
aWQgZ2V0VmVydGV4QXR0cmliSXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IGluZGV4LCBHQ0dMZW51
bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMdWludCog
cGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldFVuaWZvcm11aXZSb2J1c3RBTkdMRShH
Q0dMdWludCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NH
THNpemVpKiBsZW5ndGgsIEdDR0x1aW50KiBwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQg
Z2V0QnVmZmVyUGFyYW1ldGVyaTY0dlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVu
dW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludDY0
KiBwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgc2FtcGxlclBhcmFtZXRlcml2Um9idXN0
QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXpl
LCBjb25zdCBHQ0dMaW50KiBwYXJhbSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBzYW1wbGVyUGFy
YW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NH
THNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xmbG9hdCogcGFyYW0pID0gMDsKLSAgICB2aXJ0dWFs
IHZvaWQgZ2V0U2FtcGxlclBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwg
R0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NH
TGludCogcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldFNhbXBsZXJQYXJhbWV0ZXJm
dlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkg
YnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xmbG9hdCogcGFyYW1zKSA9IDA7Ci0KLSAg
ICB2aXJ0dWFsIHZvaWQgZ2V0RnJhbWVidWZmZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xl
bnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkq
IGxlbmd0aCwgR0NHTGludCogcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldFByb2dy
YW1JbnRlcmZhY2VpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xlbnVtIHByb2dy
YW1JbnRlcmZhY2UsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVp
KiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRCb29s
ZWFuaV92Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMdWludCBpbmRleCwgR0NHTHNp
emVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMYm9vbGVhbiogZGF0YSkgPSAwOyAv
LyBOT0xJTlQKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0TXVsdGlzYW1wbGVmdlJvYnVzdEFOR0xFKEdD
R0xlbnVtIHBuYW1lLCBHQ0dMdWludCBpbmRleCwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXpl
aSogbGVuZ3RoLCBHQ0dMZmxvYXQqIHZhbCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRUZXhM
ZXZlbFBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVs
LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBH
Q0dMaW50KiBwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0VGV4TGV2ZWxQYXJhbWV0
ZXJmdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0g
cG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGZsb2F0KiBw
YXJhbXMpID0gMDsKLQotICAgIHZpcnR1YWwgdm9pZCBnZXRQb2ludGVydlJvYnVzdEFOR0xFUm9i
dXN0QU5HTEUoR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxl
bmd0aCwgR0NHTHZvaWQqKiBwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0blVuaWZv
cm1mdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xz
aXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGZsb2F0KiBwYXJhbXMpID0gMDsK
LSAgICB2aXJ0dWFsIHZvaWQgZ2V0blVuaWZvcm1pdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dy
YW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0
aCwgR0NHTGludCogcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldG5Vbmlmb3JtdWl2
Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVp
IGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMdWludCogcGFyYW1zKSA9IDA7Ci0gICAg
dmlydHVhbCB2b2lkIHRleFBhcmFtZXRlcklpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwg
R0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMaW50KiBwYXJhbXMp
ID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgdGV4UGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFKEdDR0xl
bnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dM
dWludCogcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldFRleFBhcmFtZXRlcklpdlJv
YnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZT
aXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVh
bCB2b2lkIGdldFRleFBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdD
R0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0x1
aW50KiBwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgc2FtcGxlclBhcmFtZXRlcklpdlJv
YnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVm
U2l6ZSwgY29uc3QgR0NHTGludCogcGFyYW0pID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgc2FtcGxl
clBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFt
ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0x1aW50KiBwYXJhbSkgPSAwOwotICAgIHZp
cnR1YWwgdm9pZCBnZXRTYW1wbGVyUGFyYW1ldGVySWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2Ft
cGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0
aCwgR0NHTGludCogcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldFNhbXBsZXJQYXJh
bWV0ZXJJdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdD
R0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHVpbnQqIHBhcmFtcykgPSAw
OwotCi0gICAgdmlydHVhbCB2b2lkIGdldFF1ZXJ5T2JqZWN0aXZSb2J1c3RBTkdMRShHQ0dMdWlu
dCBpZCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0
aCwgR0NHTGludCogcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldFF1ZXJ5T2JqZWN0
aTY0dlJvYnVzdEFOR0xFKEdDR0x1aW50IGlkLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1
ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50NjQqIHBhcmFtcykgPSAwOwotICAgIHZp
cnR1YWwgdm9pZCBnZXRRdWVyeU9iamVjdHVpNjR2Um9idXN0QU5HTEUoR0NHTHVpbnQgaWQsIEdD
R0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0x1
aW50NjQqIHBhcmFtcykgPSAwOwotCiAgICAgLy8gT3RoZXIgZnVuY3Rpb25zLgogI2lmICFVU0Uo
QU5HTEUpCiAgICAgLy8gRVhUIFJvYnVzdG5lc3MgLSB1c2VzIGdldEdyYXBoaWNzUmVzZXRTdGF0
dXNBUkIKQEAgLTM1NywxNiArMzA1LDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBnZXRu
VW5pZm9ybWZ2RVhUKEdDR0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXpl
aSBidWZTaXplLCBHQ0dMZmxvYXQqIHBhcmFtcykgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBnZXRu
VW5pZm9ybWl2RVhUKEdDR0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXpl
aSBidWZTaXplLCBHQ0dMaW50KiBwYXJhbXMpID0gMDsKIAotICAgIHZpcnR1YWwgYm9vbCBpc05W
SURJQSgpID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgaXNBTUQoKSA9IDA7Ci0gICAgdmlydHVhbCBi
b29sIGlzSW50ZWwoKSA9IDA7Ci0gICAgdmlydHVhbCBib29sIGlzSW1hZ2luYXRpb24oKSA9IDA7
Ci0gICAgdmlydHVhbCBTdHJpbmcgdmVuZG9yKCkgPSAwOwotCi0gICAgLy8gU29tZSBjb25maWd1
cmF0aW9ucyBoYXZlIGJ1Z3MgcmVnYXJkaW5nIGJ1aWx0LWluIGZ1bmN0aW9ucyBpbiB0aGVpciBP
cGVuR0wgZHJpdmVycwotICAgIC8vIHRoYXQgbXVzdCBiZSBhdm9pZGVkLiBQb3J0cyBzaG91bGQg
aW1wbGVtZW50IHRoZXNlIGZsYWdzIG9uIHN1Y2ggY29uZmlndXJhdGlvbnMuCi0gICAgdmlydHVh
bCBib29sIHJlcXVpcmVzQnVpbHRJbkZ1bmN0aW9uRW11bGF0aW9uKCkgPSAwOwotICAgIHZpcnR1
YWwgYm9vbCByZXF1aXJlc1Jlc3RyaWN0ZWRNYXhpbXVtVGV4dHVyZVNpemUoKSA9IDA7CiAjZW5k
aWYKIAogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1Jl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmNwcAppbmRleCA2
MGY3YTk0N2VmY2JiMzcxNTZjMDk4ZTBiNWVlMzNjM2I2MmI4NDliLi44Mzc0ZmUzN2U0ZWY5ZGJi
ZTI3MTgxZDk0MzI3ZDE5YTZhZjc2NDU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eUJhc2UuY3BwCkBAIC0zOSwxMCArMzksMTcgQEAgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eUJhc2U6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlKGNvbnN0IEdyYXBoaWMK
IAogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6On5SZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5QmFzZSgpID0gZGVmYXVsdDsKIAorI2lmICFVU0UoQU5HTEUpCitFeHRlbnNpb25z
R0xPcGVuR0xDb21tb24mIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjpnZXRFeHRl
bnNpb25zKCkKK3sKKyAgICByZXR1cm4gKnRoaXM7Cit9CisjZWxzZQogRXh0ZW5zaW9uc0dMJiBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6Z2V0RXh0ZW5zaW9ucygpCiB7CiAgICAg
cmV0dXJuICp0aGlzOwogfQorI2VuZGlmCiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eUJhc2U6OnNldENvbnRleHRWaXNpYmlsaXR5KGJvb2wpCiB7CkBAIC0xNTAsNTMgKzE1Nyw1
IEBAIFBsYXRmb3JtTGF5ZXIqIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjpwbGF0
Zm9ybUxheWVyKCkgY29uc3QKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KICNlbmRpZgotI2lmICFV
U0UoQU5HTEUpCi12b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjpyZWFkblBp
eGVsc0VYVChHQ0dMaW50LCBHQ0dMaW50LCBHQ0dMc2l6ZWksIEdDR0xzaXplaSwgR0NHTGVudW0s
IEdDR0xlbnVtLCBHQ0dMc2l6ZWksIEdDR0x2b2lkKikKLXsKLX0KLQotdm9pZCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5QmFzZTo6Z2V0blVuaWZvcm1mdkVYVChHQ0dMdWludCwgR0NHTGlu
dCwgR0NHTHNpemVpLCBHQ0dMZmxvYXQqKQotewotfQotCi12b2lkIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHlCYXNlOjpnZXRuVW5pZm9ybWl2RVhUKEdDR0x1aW50LCBHQ0dMaW50LCBHQ0dM
c2l6ZWksIEdDR0xpbnQqKQotewotfQotCi1ib29sIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHlCYXNlOjppc05WSURJQSgpCi17Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi1ib29sIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjppc0FNRCgpCi17Ci0gICAgcmV0dXJuIGZhbHNl
OwotfQotCi1ib29sIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjppc0ludGVsKCkK
LXsKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLWJvb2wgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eUJhc2U6OmlzSW1hZ2luYXRpb24oKQotewotICAgIHJldHVybiBmYWxzZTsKLX0KLQotU3Ry
aW5nIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjp2ZW5kb3IoKQotewotICAgIHJl
dHVybiB7IH07Ci19Ci0KLWJvb2wgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OnJl
cXVpcmVzQnVpbHRJbkZ1bmN0aW9uRW11bGF0aW9uKCkKLXsKLSAgICByZXR1cm4gZmFsc2U7Ci19
Ci0KLWJvb2wgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OnJlcXVpcmVzUmVzdHJp
Y3RlZE1heGltdW1UZXh0dXJlU2l6ZSgpCi17Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotI2VuZGlm
CiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5oCmluZGV4IDcy
NmFhZjZjNmEwZjYyZmYyODJlNWI4ZDIwMmExMjk0ZTFkZTg1NzEuLjk2NWI0MzQ3YmM0N2VjMDIw
NTMzMGY4ZTEwOGM5YjQwZjY5Mzk3NjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eUJhc2UuaApAQCAtMzAsNiArMzAsMTAgQEAKICNpbmNsdWRlICJFeHRlbnNpb25zR0wuaCIKICNp
bmNsdWRlICJHcmFwaGljc0NvbnRleHRHTC5oIgogCisjaWYgIVVTRShBTkdMRSkKKyNpbmNsdWRl
ICJFeHRlbnNpb25zR0xPcGVuR0xDb21tb24uaCIKKyNlbmRpZgorCiAjaW5jbHVkZSA8d3RmL0hh
c2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAKQEAgLTU5LDcgKzYz
LDEyIEBAIHB1YmxpYzoKICAgICAvLyBPdGhlciBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTCBv
dmVycmlkZXMuCiAgICAgdXNpbmcgR3JhcGhpY3NDb250ZXh0R0w6OmlzRW5hYmxlZDsKICAgICBQ
bGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3QgZmluYWw7CisjaWYgIVVTRShBTkdM
RSkKKyAgICAvLyBVc2UgY292YXJpYW50IHJldHVybiB0eXBlIGZvciBPUEVOR0wvT1BFTkdMX0VT
CisgICAgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uJiBnZXRFeHRlbnNpb25zKCkgZmluYWw7Cisj
ZWxzZQogICAgIEV4dGVuc2lvbnNHTCYgZ2V0RXh0ZW5zaW9ucygpIGZpbmFsOworI2VuZGlmCiAg
ICAgdm9pZCBzZXRDb250ZXh0VmlzaWJpbGl0eShib29sKSBmaW5hbDsKICAgICBHcmFwaGljc0Nv
bnRleHRHTFBvd2VyUHJlZmVyZW5jZSBwb3dlclByZWZlcmVuY2VVc2VkRm9yQ3JlYXRpb24oKSBj
b25zdCBmaW5hbDsKICAgICBib29sIGlzR0xFUzJDb21wbGlhbnQoKSBjb25zdCBmaW5hbDsKQEAg
LTgwLDIwICs4OSw2IEBAIHB1YmxpYzoKICAgICB2b2lkIGVuc3VyZUVuYWJsZWQoY29uc3QgU3Ry
aW5nJikgZmluYWw7CiAgICAgYm9vbCBpc0VuYWJsZWQoY29uc3QgU3RyaW5nJikgZmluYWw7CiAK
LSNpZiAhVVNFKEFOR0xFKQotICAgIC8vIEZJWE1FOiBUaGVzZSBhcmUgc3VwcG9zZWQgdG8gYmUg
cmVtb3ZlZCBpbiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE4ODk2
LgotICAgIHZvaWQgcmVhZG5QaXhlbHNFWFQoR0NHTGludCwgR0NHTGludCwgR0NHTHNpemVpLCBH
Q0dMc2l6ZWksIEdDR0xlbnVtLCBHQ0dMZW51bSwgR0NHTHNpemVpLCBHQ0dMdm9pZCopIGZpbmFs
OwotICAgIHZvaWQgZ2V0blVuaWZvcm1mdkVYVChHQ0dMdWludCwgR0NHTGludCwgR0NHTHNpemVp
LCBHQ0dMZmxvYXQqKSBmaW5hbDsKLSAgICB2b2lkIGdldG5Vbmlmb3JtaXZFWFQoR0NHTHVpbnQs
IEdDR0xpbnQsIEdDR0xzaXplaSwgR0NHTGludCopIGZpbmFsOwotICAgIGJvb2wgaXNOVklESUEo
KSBmaW5hbDsKLSAgICBib29sIGlzQU1EKCkgZmluYWw7Ci0gICAgYm9vbCBpc0ludGVsKCkgZmlu
YWw7Ci0gICAgYm9vbCBpc0ltYWdpbmF0aW9uKCkgZmluYWw7Ci0gICAgU3RyaW5nIHZlbmRvcigp
IGZpbmFsOwotICAgIGJvb2wgcmVxdWlyZXNCdWlsdEluRnVuY3Rpb25FbXVsYXRpb24oKSBmaW5h
bDsKLSAgICBib29sIHJlcXVpcmVzUmVzdHJpY3RlZE1heGltdW1UZXh0dXJlU2l6ZSgpIGZpbmFs
OwotI2VuZGlmCi0KIHByb3RlY3RlZDoKICAgICB2b2lkIGluaXRpYWxpemUoY29uc3QgU3RyaW5n
JiBhdmFpbGFibGVFeHRlbnNpb25zLCBjb25zdCBTdHJpbmcmIHJlcXVlc3RhYmxlRXh0ZW5zaW9u
cyk7CiAgICAgdmlydHVhbCB2b2lkIHdhaXRVbnRpbEluaXRpYWxpemVkKCkgPSAwOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvRXh0ZW5zaW9uc0dM
QU5HTEUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvRXh0ZW5z
aW9uc0dMQU5HTEUuY3BwCmluZGV4IDkyMGQ5MmYzNWNhZGQ4YmIwODUyM2QxNzY1NzU0MTIwOTdm
NmM5NmYuLmY1NDBhYjNjYTg1MGIxZjI3Y2M2MmVlOTY0Y2YwNGUxZDgxNWU4YWEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFO
R0xFLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRl
bnNpb25zR0xBTkdMRS5jcHAKQEAgLTMzLDEwICszMyw5IEBACiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotRXh0ZW5zaW9uc0dMQU5HTEU6OkV4dGVuc2lvbnNHTEFOR0xFKEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMKiBjb250ZXh0LCBib29sIHVzZUluZGV4ZWRHZXRTdHJpbmcpCitFeHRlbnNpb25z
R0xBTkdMRTo6RXh0ZW5zaW9uc0dMQU5HTEUoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqIGNvbnRl
eHQpCiAgICAgOiBtX2luaXRpYWxpemVkQXZhaWxhYmxlRXh0ZW5zaW9ucyhmYWxzZSkKICAgICAs
IG1fY29udGV4dChjb250ZXh0KQotICAgICwgbV91c2VJbmRleGVkR2V0U3RyaW5nKHVzZUluZGV4
ZWRHZXRTdHJpbmcpCiB7CiB9CiAKQEAgLTk5LDQyICs5OCwxNSBAQCBTdHJpbmcgRXh0ZW5zaW9u
c0dMQU5HTEU6OmdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRShQbGF0Zm9ybUdMT2JqZWN0
IHNoYWRlcgogCiB2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjppbml0aWFsaXplQXZhaWxhYmxlRXh0
ZW5zaW9ucygpCiB7Ci0gICAgaWYgKG1fdXNlSW5kZXhlZEdldFN0cmluZykgewotICAgICAgICBH
TGludCBudW1FeHRlbnNpb25zID0gMDsKLSAgICAgICAgZ2w6OkdldEludGVnZXJ2KEdMX05VTV9F
WFRFTlNJT05TLCAmbnVtRXh0ZW5zaW9ucyk7Ci0gICAgICAgIGZvciAoR0xpbnQgaSA9IDA7IGkg
PCBudW1FeHRlbnNpb25zOyArK2kpCi0gICAgICAgICAgICBtX2F2YWlsYWJsZUV4dGVuc2lvbnMu
YWRkKGdsOjpHZXRTdHJpbmdpKEdMX0VYVEVOU0lPTlMsIGkpKTsKLSAgICAgICAgZ2w6OkdldElu
dGVnZXJ2KEdMX05VTV9SRVFVRVNUQUJMRV9FWFRFTlNJT05TX0FOR0xFLCAmbnVtRXh0ZW5zaW9u
cyk7Ci0gICAgICAgIGZvciAoR0xpbnQgaSA9IDA7IGkgPCBudW1FeHRlbnNpb25zOyArK2kpCi0g
ICAgICAgICAgICBtX3JlcXVlc3RhYmxlRXh0ZW5zaW9ucy5hZGQoZ2w6OkdldFN0cmluZ2koR0xf
UkVRVUVTVEFCTEVfRVhURU5TSU9OU19BTkdMRSwgaSkpOwotICAgIH0gZWxzZSB7Ci0gICAgICAg
IFN0cmluZyBleHRlbnNpb25zU3RyaW5nID0gZ2V0RXh0ZW5zaW9ucygpOwotICAgICAgICBmb3Ig
KGF1dG8mIGV4dGVuc2lvbiA6IGV4dGVuc2lvbnNTdHJpbmcuc3BsaXQoJyAnKSkKLSAgICAgICAg
ICAgIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5hZGQoZXh0ZW5zaW9uKTsKLSAgICAgICAgZXh0ZW5z
aW9uc1N0cmluZyA9IFN0cmluZyhyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihnbDo6R2V0
U3RyaW5nKEdMX1JFUVVFU1RBQkxFX0VYVEVOU0lPTlNfQU5HTEUpKSk7Ci0gICAgICAgIGZvciAo
YXV0byYgZXh0ZW5zaW9uIDogZXh0ZW5zaW9uc1N0cmluZy5zcGxpdCgnICcpKQotICAgICAgICAg
ICAgbV9yZXF1ZXN0YWJsZUV4dGVuc2lvbnMuYWRkKGV4dGVuc2lvbik7Ci0gICAgfQorICAgIFN0
cmluZyBleHRlbnNpb25zU3RyaW5nID0gZ2V0RXh0ZW5zaW9ucygpOworICAgIGZvciAoYXV0byYg
ZXh0ZW5zaW9uIDogZXh0ZW5zaW9uc1N0cmluZy5zcGxpdCgnICcpKQorICAgICAgICBtX2F2YWls
YWJsZUV4dGVuc2lvbnMuYWRkKGV4dGVuc2lvbik7CisgICAgZXh0ZW5zaW9uc1N0cmluZyA9IFN0
cmluZyhyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihnbDo6R2V0U3RyaW5nKEdMX1JFUVVF
U1RBQkxFX0VYVEVOU0lPTlNfQU5HTEUpKSk7CisgICAgZm9yIChhdXRvJiBleHRlbnNpb24gOiBl
eHRlbnNpb25zU3RyaW5nLnNwbGl0KCcgJykpCisgICAgICAgIG1fcmVxdWVzdGFibGVFeHRlbnNp
b25zLmFkZChleHRlbnNpb24pOwogICAgIG1faW5pdGlhbGl6ZWRBdmFpbGFibGVFeHRlbnNpb25z
ID0gdHJ1ZTsKIH0KIAotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6YmxpdEZyYW1lYnVmZmVyQU5H
TEUoR0NHTGludCBzcmNYMCwgR0NHTGludCBzcmNZMCwgR0NHTGludCBzcmNYMSwgR0NHTGludCBz
cmNZMSwgR0NHTGludCBkc3RYMCwgR0NHTGludCBkc3RZMCwgR0NHTGludCBkc3RYMSwgR0NHTGlu
dCBkc3RZMSwgR0NHTGJpdGZpZWxkIG1hc2ssIEdDR0xlbnVtIGZpbHRlcikKLXsKLSAgICAvLyBG
SVhNRTogY29uc2lkZXIgYWRkaW5nIHN1cHBvcnQgZm9yIEFQUExFX2ZyYW1lYnVmZmVyX211bHRp
c2FtcGxlLgotICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAg
ICAgcmV0dXJuOwotCi0gICAgZ2w6OkJsaXRGcmFtZWJ1ZmZlckFOR0xFKHNyY1gwLCBzcmNZMCwg
c3JjWDEsIHNyY1kxLCBkc3RYMCwgZHN0WTAsIGRzdFgxLCBkc3RZMSwgbWFzaywgZmlsdGVyKTsK
LX0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6cmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2Ft
cGxlQU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWkgc2FtcGxlcywgR0NHTGVudW0gaW50
ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkKLXsKLSAgICBp
ZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQot
ICAgIGdsOjpSZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVBTkdMRSh0YXJnZXQsIHNhbXBs
ZXMsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0KTsKLX0KLQogUGxhdGZvcm1HTE9iamVj
dCBFeHRlbnNpb25zR0xBTkdMRTo6Y3JlYXRlVmVydGV4QXJyYXlPRVMoKQogewogICAgIGlmICgh
bV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKQEAgLTE3NSwyNCArMTQ3LDYgQEAgdm9p
ZCBFeHRlbnNpb25zR0xBTkdMRTo6YmluZFZlcnRleEFycmF5T0VTKFBsYXRmb3JtR0xPYmplY3Qg
YXJyYXkpCiAgICAgZ2w6OkJpbmRWZXJ0ZXhBcnJheU9FUyhhcnJheSk7CiB9CiAKLXZvaWQgRXh0
ZW5zaW9uc0dMQU5HTEU6Omluc2VydEV2ZW50TWFya2VyRVhUKGNvbnN0IFN0cmluZyYpCi17Ci0g
ICAgLy8gRklYTUU6IGltcGxlbWVudCB0aGlzIGZ1bmN0aW9uIGFuZCBhZGQgR0xfRVhUX2RlYnVn
X21hcmtlciBpbiBzdXBwb3J0cygpLgotICAgIHJldHVybjsKLX0KLQotdm9pZCBFeHRlbnNpb25z
R0xBTkdMRTo6cHVzaEdyb3VwTWFya2VyRVhUKGNvbnN0IFN0cmluZyYpCi17Ci0gICAgLy8gRklY
TUU6IGltcGxlbWVudCB0aGlzIGZ1bmN0aW9uIGFuZCBhZGQgR0xfRVhUX2RlYnVnX21hcmtlciBp
biBzdXBwb3J0cygpLgotICAgIHJldHVybjsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6
cG9wR3JvdXBNYXJrZXJFWFQodm9pZCkKLXsKLSAgICAvLyBGSVhNRTogaW1wbGVtZW50IHRoaXMg
ZnVuY3Rpb24gYW5kIGFkZCBHTF9FWFRfZGVidWdfbWFya2VyIGluIHN1cHBvcnRzKCkuCi0gICAg
cmV0dXJuOwotfQotCiBib29sIEV4dGVuc2lvbnNHTEFOR0xFOjpzdXBwb3J0c0V4dGVuc2lvbihj
b25zdCBTdHJpbmcmIG5hbWUpCiB7CiAgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5j
b250YWlucyhuYW1lKSB8fCBtX3JlcXVlc3RhYmxlRXh0ZW5zaW9ucy5jb250YWlucyhuYW1lKTsK
QEAgLTI0OCwyOTEgKzIwMiw2IEBAIEdDR0xlbnVtIEV4dGVuc2lvbnNHTEFOR0xFOjphZGp1c3RX
ZWJHTDFUZXh0dXJlSW50ZXJuYWxGb3JtYXQoR0NHTGVudW0gaW50ZXJuYWxmCiAgICAgcmV0dXJu
IGludGVybmFsZm9ybWF0OwogfQogCi0vLyBHTF9BTkdMRV9yb2J1c3RfY2xpZW50X21lbW9yeQot
dm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6cmVhZFBpeGVsc1JvYnVzdEFOR0xFKGludCB4LCBpbnQg
eSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdD
R0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHNp
emVpICpjb2x1bW5zLCBHQ0dMc2l6ZWkgKnJvd3MsIHZvaWQgKnBpeGVscykKLXsKLSAgICBpZiAo
IW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAg
IGdsOjpSZWFkUGl4ZWxzUm9idXN0QU5HTEUoeCwgeSwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0
eXBlLCBidWZTaXplLCBsZW5ndGgsIGNvbHVtbnMsIHJvd3MsIHBpeGVscyk7Ci19Ci0KLXZvaWQg
RXh0ZW5zaW9uc0dMQU5HTEU6OnRleFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xmbG9hdCAq
cGFyYW1zKQotewotICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAg
ICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OlRleFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUodGFyZ2V0
LCBwbmFtZSwgYnVmU2l6ZSwgcGFyYW1zKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6
dGV4UGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1l
LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGludCAqcGFyYW1zKQotewotICAgIGlmICgh
bV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAg
Z2w6OlRleFBhcmFtZXRlcml2Um9idXN0QU5HTEUodGFyZ2V0LCBwbmFtZSwgYnVmU2l6ZSwgcGFy
YW1zKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0UXVlcnlpdlJvYnVzdEFOR0xF
KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dM
c2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKQotewotICAgIGlmICghbV9jb250ZXh0LT5t
YWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OkdldFF1ZXJ5
aXZSb2J1c3RBTkdMRSh0YXJnZXQsIHBuYW1lLCBidWZTaXplLCBsZW5ndGgsIHBhcmFtcyk7Ci19
Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldFF1ZXJ5T2JqZWN0dWl2Um9idXN0QU5HTEUo
R0NHTHVpbnQgaWQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVp
ICpsZW5ndGgsIEdDR0x1aW50ICpwYXJhbXMpCi17Ci0gICAgaWYgKCFtX2NvbnRleHQtPm1ha2VD
b250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6R2V0UXVlcnlPYmpl
Y3R1aXZSb2J1c3RBTkdMRShpZCwgcG5hbWUsIGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1zKTsKLX0K
LQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0QnVmZmVyUG9pbnRlcnZSb2J1c3RBTkdMRShH
Q0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNp
emVpICpsZW5ndGgsIHZvaWQgKipwYXJhbXMpCi17Ci0gICAgaWYgKCFtX2NvbnRleHQtPm1ha2VD
b250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6R2V0QnVmZmVyUG9p
bnRlcnZSb2J1c3RBTkdMRSh0YXJnZXQsIHBuYW1lLCBidWZTaXplLCBsZW5ndGgsIHBhcmFtcyk7
Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldFZlcnRleEF0dHJpYklpdlJvYnVzdEFO
R0xFKEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdD
R0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpCi17Ci0gICAgaWYgKCFtX2NvbnRleHQt
Pm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6R2V0VmVy
dGV4QXR0cmliSWl2Um9idXN0QU5HTEUoaW5kZXgsIHBuYW1lLCBidWZTaXplLCBsZW5ndGgsIHBh
cmFtcyk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldFZlcnRleEF0dHJpYkl1aXZS
b2J1c3RBTkdMRShHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZT
aXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHVpbnQgKnBhcmFtcykKLXsKLSAgICBpZiAoIW1f
Y29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGds
OjpHZXRWZXJ0ZXhBdHRyaWJJdWl2Um9idXN0QU5HTEUoaW5kZXgsIHBuYW1lLCBidWZTaXplLCBs
ZW5ndGgsIHBhcmFtcyk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldFVuaWZvcm11
aXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6
ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0x1aW50ICpwYXJhbXMpCi17Ci0gICAg
aWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0K
LSAgICBnbDo6R2V0VW5pZm9ybXVpdlJvYnVzdEFOR0xFKHByb2dyYW0sIGxvY2F0aW9uLCBidWZT
aXplLCBsZW5ndGgsIHBhcmFtcyk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldEJ1
ZmZlclBhcmFtZXRlcmk2NHZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBu
YW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQ2NCAqcGFy
YW1zKQotewotICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAg
ICAgcmV0dXJuOwotCi0gICAgZ2w6OkdldEJ1ZmZlclBhcmFtZXRlcmk2NHZSb2J1c3RBTkdMRSh0
YXJnZXQsIHBuYW1lLCBidWZTaXplLCBsZW5ndGgsIHJlaW50ZXJwcmV0X2Nhc3Q8R0xpbnQ2NCo+
KHBhcmFtcykpOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpzYW1wbGVyUGFyYW1ldGVy
aXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVp
IGJ1ZlNpemUsIGNvbnN0IEdDR0xpbnQgKnBhcmFtKQotewotICAgIGlmICghbV9jb250ZXh0LT5t
YWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OlNhbXBsZXJQ
YXJhbWV0ZXJpdlJvYnVzdEFOR0xFKHNhbXBsZXIsIHBuYW1lLCBidWZTaXplLCBwYXJhbSk7Ci19
Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OnNhbXBsZXJQYXJhbWV0ZXJmdlJvYnVzdEFOR0xF
KEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29u
c3QgR0NHTGZsb2F0ICpwYXJhbSkKLXsKLSAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRD
dXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpTYW1wbGVyUGFyYW1ldGVyZnZS
b2J1c3RBTkdMRShzYW1wbGVyLCBwbmFtZSwgYnVmU2l6ZSwgcGFyYW0pOwotfQotCi12b2lkIEV4
dGVuc2lvbnNHTEFOR0xFOjpnZXRTYW1wbGVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMdWlu
dCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAq
bGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpCi17Ci0gICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250
ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6R2V0U2FtcGxlclBhcmFt
ZXRlcml2Um9idXN0QU5HTEUoc2FtcGxlciwgcG5hbWUsIGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1z
KTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0U2FtcGxlclBhcmFtZXRlcmZ2Um9i
dXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZT
aXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGZsb2F0ICpwYXJhbXMpCi17Ci0gICAgaWYgKCFt
X2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBn
bDo6R2V0U2FtcGxlclBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoc2FtcGxlciwgcG5hbWUsIGJ1ZlNp
emUsIGxlbmd0aCwgcGFyYW1zKTsKLX0KLQotCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRG
cmFtZWJ1ZmZlclBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51
bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpw
YXJhbXMpCi17Ci0gICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAg
ICAgICByZXR1cm47Ci0KLSAgICBnbDo6R2V0RnJhbWVidWZmZXJQYXJhbWV0ZXJpdlJvYnVzdEFO
R0xFKHRhcmdldCwgcG5hbWUsIGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1zKTsKLX0KLQotdm9pZCBF
eHRlbnNpb25zR0xBTkdMRTo6Z2V0UHJvZ3JhbUludGVyZmFjZWl2Um9idXN0QU5HTEUoR0NHTHVp
bnQgcHJvZ3JhbSwgR0NHTGVudW0gcHJvZ3JhbUludGVyZmFjZSwgR0NHTGVudW0gcG5hbWUsIEdD
R0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKQotewot
ICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJu
OwotCi0gICAgZ2w6OkdldFByb2dyYW1JbnRlcmZhY2VpdlJvYnVzdEFOR0xFKHByb2dyYW0sIHBy
b2dyYW1JbnRlcmZhY2UsIHBuYW1lLCBidWZTaXplLCBsZW5ndGgsIHBhcmFtcyk7Ci19Ci0KLXZv
aWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldEJvb2xlYW5pX3ZSb2J1c3RBTkdMRShHQ0dMZW51bSB0
YXJnZXQsIEdDR0x1aW50IGluZGV4LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5n
dGgsIEdDR0xib29sZWFuICpkYXRhKQotewotICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4
dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OkdldEJvb2xlYW5pX3ZSb2J1
c3RBTkdMRSh0YXJnZXQsIGluZGV4LCBidWZTaXplLCBsZW5ndGgsIGRhdGEpOwotfQotCi12b2lk
IEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRNdWx0aXNhbXBsZWZ2Um9idXN0QU5HTEUoR0NHTGVudW0g
cG5hbWUsIEdDR0x1aW50IGluZGV4LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5n
dGgsIEdDR0xmbG9hdCAqdmFsKQotewotICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1
cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OkdldE11bHRpc2FtcGxlZnZSb2J1
c3RBTkdMRShwbmFtZSwgaW5kZXgsIGJ1ZlNpemUsIGxlbmd0aCwgdmFsKTsKLX0KLQotdm9pZCBF
eHRlbnNpb25zR0xBTkdMRTo6Z2V0VGV4TGV2ZWxQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xl
bnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZT
aXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKQotewotICAgIGlmICghbV9j
b250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6
OkdldFRleExldmVsUGFyYW1ldGVyaXZSb2J1c3RBTkdMRSh0YXJnZXQsIGxldmVsLCBwbmFtZSwg
YnVmU2l6ZSwgbGVuZ3RoLCBwYXJhbXMpOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpn
ZXRUZXhMZXZlbFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50
IGxldmVsLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVu
Z3RoLCBHQ0dMZmxvYXQgKnBhcmFtcykKLXsKLSAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRl
eHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpHZXRUZXhMZXZlbFBhcmFt
ZXRlcmZ2Um9idXN0QU5HTEUodGFyZ2V0LCBsZXZlbCwgcG5hbWUsIGJ1ZlNpemUsIGxlbmd0aCwg
cGFyYW1zKTsKLX0KLQotCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRQb2ludGVydlJvYnVz
dEFOR0xFUm9idXN0QU5HTEUoR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dM
c2l6ZWkgKmxlbmd0aCwgdm9pZCAqKnBhcmFtcykKLXsKLSAgICBpZiAoIW1fY29udGV4dC0+bWFr
ZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpHZXRQb2ludGVy
dlJvYnVzdEFOR0xFUm9idXN0QU5HTEUocG5hbWUsIGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1zKTsK
LX0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0blVuaWZvcm1mdlJvYnVzdEFOR0xFKEdD
R0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dM
c2l6ZWkgKmxlbmd0aCwgR0NHTGZsb2F0ICpwYXJhbXMpCi17Ci0gICAgaWYgKCFtX2NvbnRleHQt
Pm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6R2V0blVu
aWZvcm1mdlJvYnVzdEFOR0xFKHByb2dyYW0sIGxvY2F0aW9uLCBidWZTaXplLCBsZW5ndGgsIHBh
cmFtcyk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldG5Vbmlmb3JtaXZSb2J1c3RB
TkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6
ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykKLXsKLSAgICBpZiAoIW1fY29u
dGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpH
ZXRuVW5pZm9ybWl2Um9idXN0QU5HTEUocHJvZ3JhbSwgbG9jYXRpb24sIGJ1ZlNpemUsIGxlbmd0
aCwgcGFyYW1zKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0blVuaWZvcm11aXZS
b2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkg
YnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0x1aW50ICpwYXJhbXMpCi17Ci0gICAgaWYg
KCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAg
ICBnbDo6R2V0blVuaWZvcm11aXZSb2J1c3RBTkdMRShwcm9ncmFtLCBsb2NhdGlvbiwgYnVmU2l6
ZSwgbGVuZ3RoLCBwYXJhbXMpOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjp0ZXhQYXJh
bWV0ZXJJaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dM
c2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGludCAqcGFyYW1zKQotewotICAgIGlmICghbV9jb250
ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OlRl
eFBhcmFtZXRlcklpdlJvYnVzdEFOR0xFKHRhcmdldCwgcG5hbWUsIGJ1ZlNpemUsIHBhcmFtcyk7
Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OnRleFBhcmFtZXRlckl1aXZSb2J1c3RBTkdM
RShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29u
c3QgR0NHTHVpbnQgKnBhcmFtcykKLXsKLSAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRD
dXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpUZXhQYXJhbWV0ZXJJdWl2Um9i
dXN0QU5HTEUodGFyZ2V0LCBwbmFtZSwgYnVmU2l6ZSwgcGFyYW1zKTsKLX0KLQotdm9pZCBFeHRl
bnNpb25zR0xBTkdMRTo6Z2V0VGV4UGFyYW1ldGVySWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3Ro
LCBHQ0dMaW50ICpwYXJhbXMpCi17Ci0gICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3Vy
cmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6R2V0VGV4UGFyYW1ldGVySWl2Um9i
dXN0QU5HTEUodGFyZ2V0LCBwbmFtZSwgYnVmU2l6ZSwgbGVuZ3RoLCBwYXJhbXMpOwotfQotCi12
b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRUZXhQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUoR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXpl
aSAqbGVuZ3RoLCBHQ0dMdWludCAqcGFyYW1zKQotewotICAgIGlmICghbV9jb250ZXh0LT5tYWtl
Q29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OkdldFRleFBhcmFt
ZXRlckl1aXZSb2J1c3RBTkdMRSh0YXJnZXQsIHBuYW1lLCBidWZTaXplLCBsZW5ndGgsIHBhcmFt
cyk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OnNhbXBsZXJQYXJhbWV0ZXJJaXZSb2J1
c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNp
emUsIGNvbnN0IEdDR0xpbnQgKnBhcmFtKQotewotICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29u
dGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OlNhbXBsZXJQYXJhbWV0
ZXJJaXZSb2J1c3RBTkdMRShzYW1wbGVyLCBwbmFtZSwgYnVmU2l6ZSwgcGFyYW0pOwotfQotCi12
b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpzYW1wbGVyUGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFKEdD
R0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3Qg
R0NHTHVpbnQgKnBhcmFtKQotewotICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJl
bnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OlNhbXBsZXJQYXJhbWV0ZXJJdWl2Um9i
dXN0QU5HTEUoc2FtcGxlciwgcG5hbWUsIGJ1ZlNpemUsIHBhcmFtKTsKLX0KLQotdm9pZCBFeHRl
bnNpb25zR0xBTkdMRTo6Z2V0U2FtcGxlclBhcmFtZXRlcklpdlJvYnVzdEFOR0xFKEdDR0x1aW50
IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICps
ZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykKLXsKLSAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRl
eHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpHZXRTYW1wbGVyUGFyYW1l
dGVySWl2Um9idXN0QU5HTEUoc2FtcGxlciwgcG5hbWUsIGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1z
KTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0U2FtcGxlclBhcmFtZXRlckl1aXZS
b2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1
ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMdWludCAqcGFyYW1zKQotewotICAgIGlmICgh
bV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAg
Z2w6OkdldFNhbXBsZXJQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUoc2FtcGxlciwgcG5hbWUsIGJ1
ZlNpemUsIGxlbmd0aCwgcGFyYW1zKTsKLX0KLQotCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpn
ZXRRdWVyeU9iamVjdGl2Um9idXN0QU5HTEUoR0NHTHVpbnQgaWQsIEdDR0xlbnVtIHBuYW1lLCBH
Q0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykKLXsK
LSAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVy
bjsKLQotICAgIGdsOjpHZXRRdWVyeU9iamVjdGl2Um9idXN0QU5HTEUoaWQsIHBuYW1lLCBidWZT
aXplLCBsZW5ndGgsIHBhcmFtcyk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldFF1
ZXJ5T2JqZWN0aTY0dlJvYnVzdEFOR0xFKEdDR0x1aW50IGlkLCBHQ0dMZW51bSBwbmFtZSwgR0NH
THNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50NjQgKnBhcmFtcykKLXsK
LSAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVy
bjsKLQotICAgIGdsOjpHZXRRdWVyeU9iamVjdGk2NHZSb2J1c3RBTkdMRShpZCwgcG5hbWUsIGJ1
ZlNpemUsIGxlbmd0aCwgcmVpbnRlcnByZXRfY2FzdDxHTGludDY0Kj4ocGFyYW1zKSk7Ci19Ci0K
LXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldFF1ZXJ5T2JqZWN0dWk2NHZSb2J1c3RBTkdMRShH
Q0dMdWludCBpZCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkg
Kmxlbmd0aCwgR0NHTHVpbnQ2NCAqcGFyYW1zKQotewotICAgIGlmICghbV9jb250ZXh0LT5tYWtl
Q29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OkdldFF1ZXJ5T2Jq
ZWN0dWk2NHZSb2J1c3RBTkdMRShpZCwgcG5hbWUsIGJ1ZlNpemUsIGxlbmd0aCwgcmVpbnRlcnBy
ZXRfY2FzdDxHTHVpbnQ2NCo+KHBhcmFtcykpOwotfQotCi0KIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKIAogI2VuZGlmIC8vIEVOQUJMRShXRUJHTCkgJiYgVVNFKEFOR0xFKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFO
R0xFLmgKaW5kZXggYjJkMjc3YjlhYzlkMjc4NjBmNTVhYmFiZjhjZmU1NWU4NGI1ZjU3ZS4uMDA0
MjMzNzcyMDM0YmZhM2VhYzEzN2RjMzYzNDgwOTE2ZGVhYWY3YSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRlbnNpb25zR0xBTkdM
RS5oCkBAIC0zNiw3ICszNiw3IEBAIGNsYXNzIEV4dGVuc2lvbnNHTEFOR0xFIDogcHVibGljIEV4
dGVuc2lvbnNHTCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAg
Ly8gVGhpcyBjbGFzcyBvbmx5IG5lZWRzIHRvIGJlIGluc3RhbnRpYXRlZCBieSBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTCBpbXBsZW1lbnRhdGlvbnMuCi0gICAgRXh0ZW5zaW9uc0dMQU5HTEUoR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0wqLCBib29sIHVzZUluZGV4ZWRHZXRTdHJpbmcgPSBmYWxzZSk7
CisgICAgZXhwbGljaXQgRXh0ZW5zaW9uc0dMQU5HTEUoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wq
KTsKICAgICB2aXJ0dWFsIH5FeHRlbnNpb25zR0xBTkdMRSgpOwogCiAgICAgLy8gRXh0ZW5zaW9u
c0dMIG1ldGhvZHMuCkBAIC00OSw2MCArNDksMTQgQEAgcHVibGljOgogICAgIHZvaWQgZGVsZXRl
VmVydGV4QXJyYXlPRVMoUGxhdGZvcm1HTE9iamVjdCkgb3ZlcnJpZGU7CiAgICAgR0NHTGJvb2xl
YW4gaXNWZXJ0ZXhBcnJheU9FUyhQbGF0Zm9ybUdMT2JqZWN0KSBvdmVycmlkZTsKICAgICB2b2lk
IGJpbmRWZXJ0ZXhBcnJheU9FUyhQbGF0Zm9ybUdMT2JqZWN0KSBvdmVycmlkZTsKLSAgICB2b2lk
IGluc2VydEV2ZW50TWFya2VyRVhUKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwotICAgIHZvaWQg
cHVzaEdyb3VwTWFya2VyRVhUKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwotICAgIHZvaWQgcG9w
R3JvdXBNYXJrZXJFWFQodm9pZCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkcmF3QnVmZmVyc0VYVChH
Q0dMU3Bhbjxjb25zdCBHQ0dMZW51bT4pIG92ZXJyaWRlOwogCiAgICAgU3RyaW5nIGdldFRyYW5z
bGF0ZWRTaGFkZXJTb3VyY2VBTkdMRShQbGF0Zm9ybUdMT2JqZWN0KSBvdmVycmlkZTsKIAotICAg
IHZvaWQgYmxpdEZyYW1lYnVmZmVyQU5HTEUoR0NHTGludCBzcmNYMCwgR0NHTGludCBzcmNZMCwg
R0NHTGludCBzcmNYMSwgR0NHTGludCBzcmNZMSwgR0NHTGludCBkc3RYMCwgR0NHTGludCBkc3RZ
MCwgR0NHTGludCBkc3RYMSwgR0NHTGludCBkc3RZMSwgR0NHTGJpdGZpZWxkIG1hc2ssIEdDR0xl
bnVtIGZpbHRlcikgb3ZlcnJpZGU7Ci0gICAgdm9pZCByZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlz
YW1wbGVBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xzaXplaSBzYW1wbGVzLCBHQ0dMZW51bSBp
bnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KSBvdmVycmlk
ZTsKLQogICAgIHZvaWQgZHJhd0FycmF5c0luc3RhbmNlZEFOR0xFKEdDR0xlbnVtIG1vZGUsIEdD
R0xpbnQgZmlyc3QsIEdDR0xzaXplaSBjb3VudCwgR0NHTHNpemVpIHByaW1jb3VudCkgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBkcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRShHQ0dMZW51bSBtb2RlLCBH
Q0dMc2l6ZWkgY291bnQsIEdDR0xlbnVtIHR5cGUsIEdDR0x2b2lkcHRyIG9mZnNldCwgR0NHTHNp
emVpIHByaW1jb3VudCkgb3ZlcnJpZGU7CiAgICAgdm9pZCB2ZXJ0ZXhBdHRyaWJEaXZpc29yQU5H
TEUoR0NHTHVpbnQgaW5kZXgsIEdDR0x1aW50IGRpdmlzb3IpIG92ZXJyaWRlOwogCi0gICAgLy8g
R0xfQU5HTEVfcm9idXN0X2NsaWVudF9tZW1vcnkKLSAgICB2b2lkIHJlYWRQaXhlbHNSb2J1c3RB
TkdMRShHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVp
Z2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXplLCBH
Q0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHNpemVpICpjb2x1bW5zLCBHQ0dMc2l6ZWkgKnJvd3MsIHZv
aWQgKnBpeGVscykgb3ZlcnJpZGU7Ci0gICAgdm9pZCB0ZXhQYXJhbWV0ZXJmdlJvYnVzdEFOR0xF
KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25z
dCBHQ0dMZmxvYXQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCB0ZXhQYXJhbWV0ZXJpdlJv
YnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZT
aXplLCBjb25zdCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0UXVlcnlp
dlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBi
dWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAg
ICB2b2lkIGdldFF1ZXJ5T2JqZWN0dWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgaWQsIEdDR0xlbnVt
IHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0x1aW50ICpw
YXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0QnVmZmVyUG9pbnRlcnZSb2J1c3RBTkdMRShH
Q0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNp
emVpICpsZW5ndGgsIHZvaWQgKipwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0VmVydGV4
QXR0cmliSWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dM
c2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykgb3ZlcnJp
ZGU7Ci0gICAgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJJdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgaW5k
ZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgs
IEdDR0x1aW50ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0VW5pZm9ybXVpdlJvYnVz
dEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZT
aXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHVpbnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAg
dm9pZCBnZXRCdWZmZXJQYXJhbWV0ZXJpNjR2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dM
aW50NjQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzYW1wbGVyUGFyYW1ldGVyaXZSb2J1
c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNp
emUsIGNvbnN0IEdDR0xpbnQgKnBhcmFtKSBvdmVycmlkZTsKLSAgICB2b2lkIHNhbXBsZXJQYXJh
bWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dM
c2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGZsb2F0ICpwYXJhbSkgb3ZlcnJpZGU7Ci0gICAgdm9p
ZCBnZXRTYW1wbGVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dM
ZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50
ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0U2FtcGxlclBhcmFtZXRlcmZ2Um9idXN0
QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXpl
LCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGZsb2F0ICpwYXJhbXMpIG92ZXJyaWRlOwotCi0gICAg
dm9pZCBnZXRGcmFtZWJ1ZmZlclBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBH
Q0dMaW50ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0UHJvZ3JhbUludGVyZmFjZWl2
Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGVudW0gcHJvZ3JhbUludGVyZmFjZSwg
R0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NH
TGludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldEJvb2xlYW5pX3ZSb2J1c3RBTkdM
RShHQ0dMZW51bSB0YXJnZXQsIEdDR0x1aW50IGluZGV4LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NH
THNpemVpICpsZW5ndGgsIEdDR0xib29sZWFuICpkYXRhKSBvdmVycmlkZTsgLy8gTk9MSU5UCi0g
ICAgdm9pZCBnZXRNdWx0aXNhbXBsZWZ2Um9idXN0QU5HTEUoR0NHTGVudW0gcG5hbWUsIEdDR0x1
aW50IGluZGV4LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xmbG9h
dCAqdmFsKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldFRleExldmVsUGFyYW1ldGVyaXZSb2J1c3RB
TkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIHBuYW1lLCBHQ0dM
c2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykgb3ZlcnJp
ZGU7Ci0gICAgdm9pZCBnZXRUZXhMZXZlbFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTGVudW0g
dGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUs
IEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMZmxvYXQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0KLSAgICB2
b2lkIGdldFBvaW50ZXJ2Um9idXN0QU5HTEVSb2J1c3RBTkdMRShHQ0dMZW51bSBwbmFtZSwgR0NH
THNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCB2b2lkICoqcGFyYW1zKSBvdmVycmlk
ZTsKLSAgICB2b2lkIGdldG5Vbmlmb3JtZnZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBH
Q0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdD
R0xmbG9hdCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldG5Vbmlmb3JtaXZSb2J1c3RB
TkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6
ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9p
ZCBnZXRuVW5pZm9ybXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9j
YXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHVpbnQgKnBh
cmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCB0ZXhQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRShHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NH
TGludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIHRleFBhcmFtZXRlckl1aXZSb2J1c3RB
TkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwg
Y29uc3QgR0NHTHVpbnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRUZXhQYXJhbWV0
ZXJJaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6
ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykgb3ZlcnJpZGU7
Ci0gICAgdm9pZCBnZXRUZXhQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBH
Q0dMdWludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIHNhbXBsZXJQYXJhbWV0ZXJJaXZS
b2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1
ZlNpemUsIGNvbnN0IEdDR0xpbnQgKnBhcmFtKSBvdmVycmlkZTsKLSAgICB2b2lkIHNhbXBsZXJQ
YXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUs
IEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMdWludCAqcGFyYW0pIG92ZXJyaWRlOwotICAg
IHZvaWQgZ2V0U2FtcGxlclBhcmFtZXRlcklpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIs
IEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdD
R0xpbnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRTYW1wbGVyUGFyYW1ldGVySXVp
dlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkg
YnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0x1aW50ICpwYXJhbXMpIG92ZXJyaWRlOwot
Ci0gICAgdm9pZCBnZXRRdWVyeU9iamVjdGl2Um9idXN0QU5HTEUoR0NHTHVpbnQgaWQsIEdDR0xl
bnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQg
KnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRRdWVyeU9iamVjdGk2NHZSb2J1c3RBTkdM
RShHQ0dMdWludCBpZCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6
ZWkgKmxlbmd0aCwgR0NHTGludDY0ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0UXVl
cnlPYmplY3R1aTY0dlJvYnVzdEFOR0xFKEdDR0x1aW50IGlkLCBHQ0dMZW51bSBwbmFtZSwgR0NH
THNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMdWludDY0ICpwYXJhbXMpIG92
ZXJyaWRlOwotCiAgICAgLy8gT25seSBmb3Igbm9uLVdlYkdMIDIuMCBjb250ZXh0cy4KICAgICBH
Q0dMZW51bSBhZGp1c3RXZWJHTDFUZXh0dXJlSW50ZXJuYWxGb3JtYXQoR0NHTGVudW0gaW50ZXJu
YWxmb3JtYXQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSk7CiAKQEAgLTExOSw4ICs3
Myw2IEBAIHByaXZhdGU6CiAgICAgLy8gV2VhayBwb2ludGVyIGJhY2sgdG8gR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0wuCiAgICAgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqIG1fY29udGV4dDsKIAot
ICAgIGJvb2wgbV91c2VJbmRleGVkR2V0U3RyaW5nIHsgZmFsc2UgfTsKLQogICAgIC8vIFdoZXRo
ZXIgdGhlIFdlYkdMIDEuMC1yZWxhdGVkIGZsb2F0aW5nLXBvaW50IHJlbmRlcmFiaWxpdHkgZXh0
ZW5zaW9ucyBoYXZlIGJlZW4gZW5hYmxlZC4KICAgICBib29sIG1fd2ViZ2xDb2xvckJ1ZmZlckZs
b2F0UkdCIHsgZmFsc2UgfTsKICAgICBib29sIG1fd2ViZ2xDb2xvckJ1ZmZlckZsb2F0UkdCQSB7
IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
bmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwCmluZGV4IDMwOWE1MzA5
YjY0MGEzZDZhMjgxNDFjYTdiMWE3NWRiNDZlOWY5NTEuLjFkMjRlM2Q0ZWNiOTU1NTk4MDFlOGE4
M2M5NTM0YTVhZmQyMDkyNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwCkBA
IC0yMjUwLDYgKzIyNTAsOSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjptYXJrQ29u
dGV4dENoYW5nZWQoKQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjptYXJrTGF5ZXJD
b21wb3NpdGVkKCkKIHsKKyAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQorICAgICAgICBy
ZXR1cm47CisKICAgICBtX2xheWVyQ29tcG9zaXRlZCA9IHRydWU7CiAgICAgcmVzZXRCdWZmZXJz
VG9BdXRvQ2xlYXIoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMLmNwcAppbmRleCA4NDIyODQ2
YjZmNjJhNzU1NGU4YjJkY2YwMjQ3ZmY2MDUzOTVkNDVhLi44NmQxOWNhYWZiNmUzZjBlMzIxZGUx
NzMyMTJhNTRmY2U2MWY3MWVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMLmNwcApAQCAtNDgs
MjIgKzQ4LDYgQEAgRXh0ZW5zaW9uc0dMT3BlbkdMOjpFeHRlbnNpb25zR0xPcGVuR0woR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0wqIGNvbnRleHQsIGJvb2wgdXMKIEV4dGVuc2lvbnNHTE9wZW5HTDo6
fkV4dGVuc2lvbnNHTE9wZW5HTCgpID0gZGVmYXVsdDsKIAogCi12b2lkIEV4dGVuc2lvbnNHTE9w
ZW5HTDo6YmxpdEZyYW1lYnVmZmVyQU5HTEUoR0NHTGludCBzcmNYMCwgR0NHTGludCBzcmNZMCwg
R0NHTGludCBzcmNYMSwgR0NHTGludCBzcmNZMSwgR0NHTGludCBkc3RYMCwgR0NHTGludCBkc3RZ
MCwgR0NHTGludCBkc3RYMSwgR0NHTGludCBkc3RZMSwgR0NHTGJpdGZpZWxkIG1hc2ssIEdDR0xl
bnVtIGZpbHRlcikKLXsKLSAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkp
Ci0gICAgICAgIHJldHVybjsKLQotICAgIDo6Z2xCbGl0RnJhbWVidWZmZXJFWFQoc3JjWDAsIHNy
Y1kwLCBzcmNYMSwgc3JjWTEsIGRzdFgwLCBkc3RZMCwgZHN0WDEsIGRzdFkxLCBtYXNrLCBmaWx0
ZXIpOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTDo6cmVuZGVyYnVmZmVyU3RvcmFnZU11
bHRpc2FtcGxlQU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWkgc2FtcGxlcywgR0NHTGVu
dW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkKLXsK
LSAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVy
bjsKLQotICAgIDo6Z2xSZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVFWFQodGFyZ2V0LCBz
YW1wbGVzLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCk7Ci19Ci0KIFBsYXRmb3JtR0xP
YmplY3QgRXh0ZW5zaW9uc0dMT3BlbkdMOjpjcmVhdGVWZXJ0ZXhBcnJheU9FUygpCiB7CiAgICAg
aWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQpAQCAtMTI3LDI0ICsxMTEsNiBA
QCB2b2lkIEV4dGVuc2lvbnNHTE9wZW5HTDo6YmluZFZlcnRleEFycmF5T0VTKFBsYXRmb3JtR0xP
YmplY3QgYXJyYXkpCiAjZW5kaWYKIH0KIAotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0w6Omluc2Vy
dEV2ZW50TWFya2VyRVhUKGNvbnN0IFN0cmluZyYpCi17Ci0gICAgLy8gRklYTUU6IGltcGxlbWVu
dCB0aGlzIGZ1bmN0aW9uIGFuZCBhZGQgR0xfRVhUX2RlYnVnX21hcmtlciBpbiBzdXBwb3J0cygp
LgotICAgIHJldHVybjsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0w6OnB1c2hHcm91cE1h
cmtlckVYVChjb25zdCBTdHJpbmcmKQotewotICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQgdGhpcyBm
dW5jdGlvbiBhbmQgYWRkIEdMX0VYVF9kZWJ1Z19tYXJrZXIgaW4gc3VwcG9ydHMoKS4KLSAgICBy
ZXR1cm47Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMOjpwb3BHcm91cE1hcmtlckVYVCh2
b2lkKQotewotICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQgdGhpcyBmdW5jdGlvbiBhbmQgYWRkIEdM
X0VYVF9kZWJ1Z19tYXJrZXIgaW4gc3VwcG9ydHMoKS4KLSAgICByZXR1cm47Ci19Ci0KIGJvb2wg
RXh0ZW5zaW9uc0dMT3BlbkdMOjpzdXBwb3J0c0V4dGVuc2lvbihjb25zdCBTdHJpbmcmIG5hbWUp
CiB7CiAgICAgLy8gR0xfQU5HTEVfZnJhbWVidWZmZXJfYmxpdCBhbmQgR0xfQU5HTEVfZnJhbWVi
dWZmZXJfbXVsdGlzYW1wbGUgYXJlICJmYWtlIi4gVGhleSBhcmUgaW1wbGVtZW50ZWQgdXNpbmcg
b3RoZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5n
bC9FeHRlbnNpb25zR0xPcGVuR0wuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuaAppbmRleCA0NzUwMjI2ZWNlY2VmNDQzOTZlOTkz
ODY3NmNiNjM5YmU4MzQzN2I2Li4wYWRiZDcwNTBiN2UzZjc3ZTAxODg5NDMzMmZmYzg3Y2YzMGQ5
MGM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wv
RXh0ZW5zaW9uc0dMT3BlbkdMLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTC5oCkBAIC00MCwxNiArNDAsMTAgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgfkV4dGVuc2lvbnNHTE9wZW5HTCgpOwogCiAgICAgLy8gRXh0ZW5zaW9u
c0dMIG1ldGhvZHMuCi0gICAgdm9pZCBibGl0RnJhbWVidWZmZXJBTkdMRShHQ0dMaW50IHNyY1gw
LCBHQ0dMaW50IHNyY1kwLCBHQ0dMaW50IHNyY1gxLCBHQ0dMaW50IHNyY1kxLCBHQ0dMaW50IGRz
dFgwLCBHQ0dMaW50IGRzdFkwLCBHQ0dMaW50IGRzdFgxLCBHQ0dMaW50IGRzdFkxLCBHQ0dMYml0
ZmllbGQgbWFzaywgR0NHTGVudW0gZmlsdGVyKSBvdmVycmlkZTsKLSAgICB2b2lkIHJlbmRlcmJ1
ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVpIHNh
bXBsZXMsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXpl
aSBoZWlnaHQpIG92ZXJyaWRlOwotCiAgICAgUGxhdGZvcm1HTE9iamVjdCBjcmVhdGVWZXJ0ZXhB
cnJheU9FUygpIG92ZXJyaWRlOwogICAgIHZvaWQgZGVsZXRlVmVydGV4QXJyYXlPRVMoUGxhdGZv
cm1HTE9iamVjdCkgb3ZlcnJpZGU7CiAgICAgR0NHTGJvb2xlYW4gaXNWZXJ0ZXhBcnJheU9FUyhQ
bGF0Zm9ybUdMT2JqZWN0KSBvdmVycmlkZTsKICAgICB2b2lkIGJpbmRWZXJ0ZXhBcnJheU9FUyhQ
bGF0Zm9ybUdMT2JqZWN0KSBvdmVycmlkZTsKLSAgICB2b2lkIGluc2VydEV2ZW50TWFya2VyRVhU
KGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwotICAgIHZvaWQgcHVzaEdyb3VwTWFya2VyRVhUKGNv
bnN0IFN0cmluZyYpIG92ZXJyaWRlOwotICAgIHZvaWQgcG9wR3JvdXBNYXJrZXJFWFQodm9pZCkg
b3ZlcnJpZGU7CiAgICAgdm9pZCBkcmF3QnVmZmVyc0VYVChHQ0dMU3Bhbjxjb25zdCBHQ0dMZW51
bT4pIG92ZXJyaWRlOwogCiAgICAgdm9pZCBkcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUoR0NHTGVu
dW0gbW9kZSwgR0NHTGludCBmaXJzdCwgR0NHTHNpemVpIGNvdW50LCBHQ0dMc2l6ZWkgcHJpbWNv
dW50KSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5jcHAKaW5k
ZXggYzM0MzhkNTkxYzA3YTM2Y2YxZTA0MjZjMWI5ZmQ3YjNlOTE3NzlkNS4uMDlkYjg1NDAwMjIx
ZGY5NzU3ODg4NTlhNGEyODdhYmFhMjRmODI3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9w
ZW5HTENvbW1vbi5jcHAKQEAgLTI1NCwxODUgKzI1NCw2IEBAIHZvaWQgRXh0ZW5zaW9uc0dMT3Bl
bkdMQ29tbW9uOjpnZXRuVW5pZm9ybWl2RVhUKEdDR0x1aW50LCBpbnQsIEdDR0xzaXplaSwgR0NH
TGluCiAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElP
Tik7CiB9CiAKLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpyZWFkUGl4ZWxzUm9idXN0
QU5HTEUoaW50LCBpbnQsIEdDR0xzaXplaSwgR0NHTHNpemVpLCBHQ0dMZW51bSwgR0NHTGVudW0s
IEdDR0xzaXplaSwgR0NHTHNpemVpICosIEdDR0xzaXplaSAqLCBHQ0dMc2l6ZWkgKiwgdm9pZCAq
KQotewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJ
T04pOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6dGV4UGFyYW1ldGVyZnZS
b2J1c3RBTkdMRShHQ0dMZW51bSwgR0NHTGVudW0sIEdDR0xzaXplaSwgY29uc3QgR0NHTGZsb2F0
ICopCi17Ci0gICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJB
VElPTik7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjp0ZXhQYXJhbWV0ZXJp
dlJvYnVzdEFOR0xFKEdDR0xlbnVtLCBHQ0dMZW51bSwgR0NHTHNpemVpLCBjb25zdCBHQ0dMaW50
ICopCi17Ci0gICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJB
VElPTik7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRRdWVyeWl2Um9i
dXN0QU5HTEUoR0NHTGVudW0sIEdDR0xlbnVtLCBHQ0dMc2l6ZWksIEdDR0xzaXplaSAqLCBHQ0dM
aW50ICopCi17Ci0gICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09Q
RVJBVElPTik7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRRdWVyeU9i
amVjdHVpdlJvYnVzdEFOR0xFKEdDR0x1aW50LCBHQ0dMZW51bSwgR0NHTHNpemVpLCBHQ0dMc2l6
ZWkgKiwgR0NHTHVpbnQgKikKLXsKLSAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdM
X0lOVkFMSURfT1BFUkFUSU9OKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246
OmdldEJ1ZmZlclBvaW50ZXJ2Um9idXN0QU5HTEUoR0NHTGVudW0sIEdDR0xlbnVtLCBHQ0dMc2l6
ZWksIEdDR0xzaXplaSAqLCB2b2lkICoqKQotewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdM
RXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5H
TENvbW1vbjo6Z2V0VmVydGV4QXR0cmliSWl2Um9idXN0QU5HTEUoR0NHTHVpbnQsIEdDR0xlbnVt
LCBHQ0dMc2l6ZWksIEdDR0xzaXplaSAqLCBHQ0dMaW50ICopCi17Ci0gICAgbV9jb250ZXh0LT5z
eW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Ci19Ci0KLXZvaWQgRXh0ZW5z
aW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRWZXJ0ZXhBdHRyaWJJdWl2Um9idXN0QU5HTEUoR0NHTHVp
bnQsIEdDR0xlbnVtLCBHQ0dMc2l6ZWksIEdDR0xzaXplaSAqLCBHQ0dMdWludCAqKQotewotICAg
IG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQot
Ci12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0VW5pZm9ybXVpdlJvYnVzdEFOR0xF
KEdDR0x1aW50LCBpbnQsIEdDR0xzaXplaSwgR0NHTHNpemVpICosIEdDR0x1aW50ICopCi17Ci0g
ICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Ci19
Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRCdWZmZXJQYXJhbWV0ZXJpNjR2
Um9idXN0QU5HTEUoR0NHTGVudW0sIEdDR0xlbnVtLCBHQ0dMc2l6ZWksIEdDR0xzaXplaSAqLCBH
Q0dMaW50NjQgKikKLXsKLSAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFM
SURfT1BFUkFUSU9OKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OnNhbXBs
ZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0x1aW50LCBHQ0dMZW51bSwgR0NHTHNpemVpLCBj
b25zdCBHQ0dMaW50ICopCi17Ci0gICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9J
TlZBTElEX09QRVJBVElPTik7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpz
YW1wbGVyUGFyYW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dMdWludCwgR0NHTGVudW0sIEdDR0xzaXpl
aSwgY29uc3QgR0NHTGZsb2F0ICopCi17Ci0gICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJv
cihHTF9JTlZBTElEX09QRVJBVElPTik7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29t
bW9uOjpnZXRTYW1wbGVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMdWludCwgR0NHTGVudW0s
IEdDR0xzaXplaSwgR0NHTHNpemVpICosIEdDR0xpbnQgKikKLXsKLSAgICBtX2NvbnRleHQtPnN5
bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLX0KLQotdm9pZCBFeHRlbnNp
b25zR0xPcGVuR0xDb21tb246OmdldFNhbXBsZXJQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0x1
aW50LCBHQ0dMZW51bSwgR0NHTHNpemVpLCBHQ0dMc2l6ZWkgKiwgR0NHTGZsb2F0ICopCi17Ci0g
ICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Ci19
Ci0KLQotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldEZyYW1lYnVmZmVyUGFyYW1l
dGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51bSwgR0NHTGVudW0sIEdDR0xzaXplaSwgR0NHTHNpemVp
ICosIEdDR0xpbnQgKikKLXsKLSAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lO
VkFMSURfT1BFUkFUSU9OKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246Omdl
dFByb2dyYW1JbnRlcmZhY2VpdlJvYnVzdEFOR0xFKEdDR0x1aW50LCBHQ0dMZW51bSwgR0NHTGVu
dW0sIEdDR0xzaXplaSwgR0NHTHNpemVpICosIEdDR0xpbnQgKikKLXsKLSAgICBtX2NvbnRleHQt
PnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLX0KLQotdm9pZCBFeHRl
bnNpb25zR0xPcGVuR0xDb21tb246OmdldEJvb2xlYW5pX3ZSb2J1c3RBTkdMRShHQ0dMZW51bSwg
R0NHTHVpbnQsIEdDR0xzaXplaSwgR0NHTHNpemVpICosIEdDR0xib29sZWFuICopCi17Ci0gICAg
bV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Ci19Ci0K
LXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRNdWx0aXNhbXBsZWZ2Um9idXN0QU5H
TEUoR0NHTGVudW0sIEdDR0x1aW50LCBHQ0dMc2l6ZWksIEdDR0xzaXplaSAqLCBHQ0dMZmxvYXQg
KikKLXsKLSAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFU
SU9OKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFRleExldmVsUGFy
YW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51bSwgaW50LCBHQ0dMZW51bSwgR0NHTHNpemVpLCBH
Q0dMc2l6ZWkgKiwgR0NHTGludCAqKQotewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJy
b3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENv
bW1vbjo6Z2V0VGV4TGV2ZWxQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0xlbnVtLCBpbnQsIEdD
R0xlbnVtLCBHQ0dMc2l6ZWksIEdDR0xzaXplaSAqLCBHQ0dMZmxvYXQgKikKLXsKLSAgICBtX2Nv
bnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLX0KLQotCi12
b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0UG9pbnRlcnZSb2J1c3RBTkdMRVJvYnVz
dEFOR0xFKEdDR0xlbnVtLCBHQ0dMc2l6ZWksIEdDR0xzaXplaSAqLCB2b2lkICoqKQotewotICAg
IG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQot
Ci12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0blVuaWZvcm1mdlJvYnVzdEFOR0xF
KEdDR0x1aW50LCBpbnQsIEdDR0xzaXplaSwgR0NHTHNpemVpICosIEdDR0xmbG9hdCAqKQotewot
ICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwot
fQotCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0blVuaWZvcm1pdlJvYnVzdEFO
R0xFKEdDR0x1aW50LCBpbnQsIEdDR0xzaXplaSwgR0NHTHNpemVpICosIEdDR0xpbnQgKikKLXsK
LSAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsK
LX0KLQotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldG5Vbmlmb3JtdWl2Um9idXN0
QU5HTEUoR0NHTHVpbnQsIGludCwgR0NHTHNpemVpLCBHQ0dMc2l6ZWkgKiwgR0NHTHVpbnQgKikK
LXsKLSAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9O
KTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OnRleFBhcmFtZXRlcklpdlJv
YnVzdEFOR0xFKEdDR0xlbnVtLCBHQ0dMZW51bSwgR0NHTHNpemVpLCBjb25zdCBHQ0dMaW50ICop
Ci17Ci0gICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElP
Tik7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjp0ZXhQYXJhbWV0ZXJJdWl2
Um9idXN0QU5HTEUoR0NHTGVudW0sIEdDR0xlbnVtLCBHQ0dMc2l6ZWksIGNvbnN0IEdDR0x1aW50
ICopCi17Ci0gICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJB
VElPTik7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRUZXhQYXJhbWV0
ZXJJaXZSb2J1c3RBTkdMRShHQ0dMZW51bSwgR0NHTGVudW0sIEdDR0xzaXplaSwgR0NHTHNpemVp
ICosIEdDR0xpbnQgKikKLXsKLSAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lO
VkFMSURfT1BFUkFUSU9OKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246Omdl
dFRleFBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRShHQ0dMZW51bSwgR0NHTGVudW0sIEdDR0xzaXpl
aSwgR0NHTHNpemVpICosIEdDR0x1aW50ICopCi17Ci0gICAgbV9jb250ZXh0LT5zeW50aGVzaXpl
R0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMT3Bl
bkdMQ29tbW9uOjpzYW1wbGVyUGFyYW1ldGVySWl2Um9idXN0QU5HTEUoR0NHTHVpbnQsIEdDR0xl
bnVtLCBHQ0dMc2l6ZWksIGNvbnN0IEdDR0xpbnQgKikKLXsKLSAgICBtX2NvbnRleHQtPnN5bnRo
ZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLX0KLQotdm9pZCBFeHRlbnNpb25z
R0xPcGVuR0xDb21tb246OnNhbXBsZXJQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQs
IEdDR0xlbnVtLCBHQ0dMc2l6ZWksIGNvbnN0IEdDR0x1aW50ICopCi17Ci0gICAgbV9jb250ZXh0
LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Ci19Ci0KLXZvaWQgRXh0
ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRTYW1wbGVyUGFyYW1ldGVySWl2Um9idXN0QU5HTEUo
R0NHTHVpbnQsIEdDR0xlbnVtLCBHQ0dMc2l6ZWksIEdDR0xzaXplaSAqLCBHQ0dMaW50ICopCi17
Ci0gICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7
Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRTYW1wbGVyUGFyYW1ldGVy
SXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50LCBHQ0dMZW51bSwgR0NHTHNpemVpLCBHQ0dMc2l6ZWkg
KiwgR0NHTHVpbnQgKikKLXsKLSAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lO
VkFMSURfT1BFUkFUSU9OKTsKLX0KLQotCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6
Z2V0UXVlcnlPYmplY3RpdlJvYnVzdEFOR0xFKEdDR0x1aW50LCBHQ0dMZW51bSwgR0NHTHNpemVp
LCBHQ0dMc2l6ZWkgKiwgR0NHTGludCAqKQotewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdM
RXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5H
TENvbW1vbjo6Z2V0UXVlcnlPYmplY3RpNjR2Um9idXN0QU5HTEUoR0NHTHVpbnQsIEdDR0xlbnVt
LCBHQ0dMc2l6ZWksIEdDR0xzaXplaSAqLCBHQ0dMaW50NjQgKikKLXsKLSAgICBtX2NvbnRleHQt
PnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLX0KLQotdm9pZCBFeHRl
bnNpb25zR0xPcGVuR0xDb21tb246OmdldFF1ZXJ5T2JqZWN0dWk2NHZSb2J1c3RBTkdMRShHQ0dM
dWludCwgR0NHTGVudW0sIEdDR0xzaXplaSwgR0NHTHNpemVpICosIEdDR0x1aW50NjQgKikKLXsK
LSAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsK
LX0KLQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoV0VCR0wp
ICYmICFVU0UoQU5HTEUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmgKaW5kZXgg
M2YxMDQwMTYyZmZhMDdhMmRjMTMwYWJiMjJmYjFiMWZmYzNmZGYyMC4uZGNjMGUzYWYyMTczMmU3
NDdlYTFiZDU2NGJiOTY3ODQzMmNhM2Y3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xD
b21tb24uaApAQCAtMjgsMTEgKzI4LDExIEBACiAKICNpbmNsdWRlICJFeHRlbnNpb25zR0wuaCIK
IAotI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgiCiAjaW5jbHVkZSA8d3RmL0hh
c2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKK2NsYXNzIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOwogCiBjbGFzcyBFeHRlbnNp
b25zR0xPcGVuR0xDb21tb24gOiBwdWJsaWMgRXh0ZW5zaW9uc0dMIHsKICAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKQEAgLTU1LDU4ICs1NSwxOCBAQCBwdWJsaWM6CiAgICAgU3RyaW5nIGdl
dFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRShQbGF0Zm9ybUdMT2JqZWN0KSBvdmVycmlkZTsK
IAogICAgIC8vIEVYVCBSb2J1c3RuZXNzIC0gdXNlcyBnZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJC
KCkKLSAgICB2b2lkIHJlYWRuUGl4ZWxzRVhUKGludCB4LCBpbnQgeSwgR0NHTHNpemVpIHdpZHRo
LCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xz
aXplaSBidWZTaXplLCB2b2lkICpkYXRhKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldG5Vbmlmb3Jt
ZnZFWFQoR0NHTHVpbnQgcHJvZ3JhbSwgaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwg
ZmxvYXQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRuVW5pZm9ybWl2RVhUKEdDR0x1
aW50IHByb2dyYW0sIGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIGludCAqcGFyYW1z
KSBvdmVycmlkZTsKLQotICAgIGJvb2wgaXNOVklESUEoKSBvdmVycmlkZSB7IHJldHVybiBtX2lz
TlZJRElBOyB9Ci0gICAgYm9vbCBpc0FNRCgpIG92ZXJyaWRlIHsgcmV0dXJuIG1faXNBTUQ7IH0K
LSAgICBib29sIGlzSW50ZWwoKSBvdmVycmlkZSB7IHJldHVybiBtX2lzSW50ZWw7IH0KLSAgICBi
b29sIGlzSW1hZ2luYXRpb24oKSBvdmVycmlkZSB7IHJldHVybiBtX2lzSW1hZ2luYXRpb247IH0K
LSAgICBTdHJpbmcgdmVuZG9yKCkgb3ZlcnJpZGUgeyByZXR1cm4gbV92ZW5kb3I7IH0KLQotICAg
IGJvb2wgcmVxdWlyZXNCdWlsdEluRnVuY3Rpb25FbXVsYXRpb24oKSBvdmVycmlkZSB7IHJldHVy
biBtX3JlcXVpcmVzQnVpbHRJbkZ1bmN0aW9uRW11bGF0aW9uOyB9Ci0gICAgYm9vbCByZXF1aXJl
c1Jlc3RyaWN0ZWRNYXhpbXVtVGV4dHVyZVNpemUoKSBvdmVycmlkZSB7IHJldHVybiBtX3JlcXVp
cmVzUmVzdHJpY3RlZE1heGltdW1UZXh0dXJlU2l6ZTsgfQotCi0gICAgLy8gR0xfQU5HTEVfcm9i
dXN0X2NsaWVudF9tZW1vcnkKLSAgICB2b2lkIHJlYWRQaXhlbHNSb2J1c3RBTkdMRShpbnQgeCwg
aW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0
LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdD
R0xzaXplaSAqY29sdW1ucywgR0NHTHNpemVpICpyb3dzLCB2b2lkICpwaXhlbHMpIG92ZXJyaWRl
OwotICAgIHZvaWQgdGV4UGFyYW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdD
R0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGZsb2F0ICpwYXJhbXMp
IG92ZXJyaWRlOwotICAgIHZvaWQgdGV4UGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0
YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGludCAq
cGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldFF1ZXJ5aXZSb2J1c3RBTkdMRShHQ0dMZW51
bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICps
ZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRRdWVyeU9iamVj
dHVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IGlkLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1
ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMdWludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAg
ICB2b2lkIGdldEJ1ZmZlclBvaW50ZXJ2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dM
ZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCB2b2lkICoq
cGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldFZlcnRleEF0dHJpYklpdlJvYnVzdEFOR0xF
KEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xz
aXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0VmVy
dGV4QXR0cmliSXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwg
R0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMdWludCAqcGFyYW1zKSBv
dmVycmlkZTsKLSAgICB2b2lkIGdldFVuaWZvcm11aXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9n
cmFtLCBpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwg
R0NHTHVpbnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRCdWZmZXJQYXJhbWV0ZXJp
NjR2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVp
IGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50NjQgKnBhcmFtcykgb3ZlcnJpZGU7
Ci0gICAgdm9pZCBzYW1wbGVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVy
LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xpbnQgKnBhcmFt
KSBvdmVycmlkZTsKLSAgICB2b2lkIHNhbXBsZXJQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0x1
aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NH
TGZsb2F0ICpwYXJhbSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRTYW1wbGVyUGFyYW1ldGVyaXZS
b2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1
ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJyaWRlOwotICAg
IHZvaWQgZ2V0U2FtcGxlclBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwg
R0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NH
TGZsb2F0ICpwYXJhbXMpIG92ZXJyaWRlOwotCi0gICAgdm9pZCBnZXRGcmFtZWJ1ZmZlclBhcmFt
ZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNp
emVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJyaWRl
OwotICAgIHZvaWQgZ2V0UHJvZ3JhbUludGVyZmFjZWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJv
Z3JhbSwgR0NHTGVudW0gcHJvZ3JhbUludGVyZmFjZSwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXpl
aSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVycmlkZTsK
LSAgICB2b2lkIGdldEJvb2xlYW5pX3ZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0x1
aW50IGluZGV4LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xib29s
ZWFuICpkYXRhKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldE11bHRpc2FtcGxlZnZSb2J1c3RBTkdM
RShHQ0dMZW51bSBwbmFtZSwgR0NHTHVpbnQgaW5kZXgsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dM
c2l6ZWkgKmxlbmd0aCwgR0NHTGZsb2F0ICp2YWwpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0VGV4
TGV2ZWxQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgaW50IGxldmVsLCBH
Q0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dM
aW50ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0VGV4TGV2ZWxQYXJhbWV0ZXJmdlJv
YnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgaW50IGxldmVsLCBHQ0dMZW51bSBwbmFtZSwgR0NH
THNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMZmxvYXQgKnBhcmFtcykgb3Zl
cnJpZGU7Ci0KLSAgICB2b2lkIGdldFBvaW50ZXJ2Um9idXN0QU5HTEVSb2J1c3RBTkdMRShHQ0dM
ZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCB2b2lkICoq
cGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldG5Vbmlmb3JtZnZSb2J1c3RBTkdMRShHQ0dM
dWludCBwcm9ncmFtLCBpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkg
Kmxlbmd0aCwgR0NHTGZsb2F0ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0blVuaWZv
cm1pdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIGludCBsb2NhdGlvbiwgR0NHTHNpemVp
IGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJyaWRlOwot
ICAgIHZvaWQgZ2V0blVuaWZvcm11aXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBpbnQg
bG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHVpbnQg
KnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCB0ZXhQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRShH
Q0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3Qg
R0NHTGludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIHRleFBhcmFtZXRlckl1aXZSb2J1
c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6
ZSwgY29uc3QgR0NHTHVpbnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRUZXhQYXJh
bWV0ZXJJaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dM
c2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykgb3ZlcnJp
ZGU7Ci0gICAgdm9pZCBnZXRUZXhQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3Ro
LCBHQ0dMdWludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIHNhbXBsZXJQYXJhbWV0ZXJJ
aXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVp
IGJ1ZlNpemUsIGNvbnN0IEdDR0xpbnQgKnBhcmFtKSBvdmVycmlkZTsKLSAgICB2b2lkIHNhbXBs
ZXJQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5h
bWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMdWludCAqcGFyYW0pIG92ZXJyaWRlOwot
ICAgIHZvaWQgZ2V0U2FtcGxlclBhcmFtZXRlcklpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBs
ZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgs
IEdDR0xpbnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRTYW1wbGVyUGFyYW1ldGVy
SXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6
ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0x1aW50ICpwYXJhbXMpIG92ZXJyaWRl
OwotCi0gICAgdm9pZCBnZXRRdWVyeU9iamVjdGl2Um9idXN0QU5HTEUoR0NHTHVpbnQgaWQsIEdD
R0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xp
bnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRRdWVyeU9iamVjdGk2NHZSb2J1c3RB
TkdMRShHQ0dMdWludCBpZCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dM
c2l6ZWkgKmxlbmd0aCwgR0NHTGludDY0ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0
UXVlcnlPYmplY3R1aTY0dlJvYnVzdEFOR0xFKEdDR0x1aW50IGlkLCBHQ0dMZW51bSBwbmFtZSwg
R0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMdWludDY0ICpwYXJhbXMp
IG92ZXJyaWRlOworICAgIHZvaWQgcmVhZG5QaXhlbHNFWFQoaW50IHgsIGludCB5LCBHQ0dMc2l6
ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlw
ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIHZvaWQgKmRhdGEpOworICAgIHZvaWQgZ2V0blVuaWZvcm1m
dkVYVChHQ0dMdWludCBwcm9ncmFtLCBpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBm
bG9hdCAqcGFyYW1zKTsKKyAgICB2b2lkIGdldG5Vbmlmb3JtaXZFWFQoR0NHTHVpbnQgcHJvZ3Jh
bSwgaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgaW50ICpwYXJhbXMpOworCisgICAg
Ym9vbCBpc05WSURJQSgpIGNvbnN0IHsgcmV0dXJuIG1faXNOVklESUE7IH0KKyAgICBib29sIGlz
QU1EKCkgY29uc3QgeyByZXR1cm4gbV9pc0FNRDsgfQorICAgIGJvb2wgaXNJbnRlbCgpIGNvbnN0
IHsgcmV0dXJuIG1faXNJbnRlbDsgfQorICAgIGJvb2wgaXNJbWFnaW5hdGlvbigpIGNvbnN0IHsg
cmV0dXJuIG1faXNJbWFnaW5hdGlvbjsgfQorICAgIFN0cmluZyB2ZW5kb3IoKSBjb25zdCB7IHJl
dHVybiBtX3ZlbmRvcjsgfQorCisgICAgYm9vbCByZXF1aXJlc0J1aWx0SW5GdW5jdGlvbkVtdWxh
dGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fcmVxdWlyZXNCdWlsdEluRnVuY3Rpb25FbXVsYXRpb247
IH0KKyAgICBib29sIHJlcXVpcmVzUmVzdHJpY3RlZE1heGltdW1UZXh0dXJlU2l6ZSgpIGNvbnN0
IHsgcmV0dXJuIG1fcmVxdWlyZXNSZXN0cmljdGVkTWF4aW11bVRleHR1cmVTaXplOyB9CiAKIHBy
b3RlY3RlZDoKICAgICBmcmllbmQgY2xhc3MgRXh0ZW5zaW9uc0dMT3BlbkdMRVM7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dM
T3BlbkdMRVMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4
dGVuc2lvbnNHTE9wZW5HTEVTLmNwcAppbmRleCA4Y2E4Nzc4ODRlZWFiOGEyY2ExZGRlMmRiMmVj
OGQ2YjIxMjJmZGUxLi5iMmUzYzhiOTg0OTM0NWQ1NzM4ZjdhNWMxMGUxMmRiNTk0ZDJhMDAzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5z
aW9uc0dMT3BlbkdMRVMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xFUy5jcHAKQEAgLTEwMCwxMSArMTAwLDYgQEAgdm9p
ZCBFeHRlbnNpb25zR0xPcGVuR0xFUzo6cmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlSU1H
KHVuc2lnbmVkIGxvbmcgdGFyZ2UKICAgICAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJv
cihHTF9JTlZBTElEX09QRVJBVElPTik7CiB9CiAKLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMRVM6
OmJsaXRGcmFtZWJ1ZmZlckFOR0xFKEdDR0xpbnQsIEdDR0xpbnQsIEdDR0xpbnQsIEdDR0xpbnQs
IEdDR0xpbnQsIEdDR0xpbnQsIEdDR0xpbnQsIEdDR0xpbnQsIEdDR0xiaXRmaWVsZCwgR0NHTGVu
dW0pCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQogdm9pZCBFeHRlbnNpb25zR0xPcGVu
R0xFUzo6cmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5HTEUoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMc2l6ZWkgc2FtcGxlcywgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3
aWR0aCwgR0NHTHNpemVpIGhlaWdodCkKIHsKICAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRl
eHRDdXJyZW50KCkpCkBAIC0xMTUsMjEgKzExMCw2IEBAIHZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdM
RVM6OnJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKEdDR0xlbnVtIHRhcmdldCwK
ICAgICAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xF
Uzo6aW5zZXJ0RXZlbnRNYXJrZXJFWFQoY29uc3QgU3RyaW5nJikKLXsKLSAgICBub3RJbXBsZW1l
bnRlZCgpOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTEVTOjpwdXNoR3JvdXBNYXJrZXJF
WFQoY29uc3QgU3RyaW5nJikKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIEV4
dGVuc2lvbnNHTE9wZW5HTEVTOjpwb3BHcm91cE1hcmtlckVYVCh2b2lkKQotewotICAgIG5vdElt
cGxlbWVudGVkKCk7Ci19Ci0KIFBsYXRmb3JtR0xPYmplY3QgRXh0ZW5zaW9uc0dMT3BlbkdMRVM6
OmNyZWF0ZVZlcnRleEFycmF5T0VTKCkKIHsKICAgICBpZiAobV9nbEdlblZlcnRleEFycmF5c09F
UykgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Blbmds
L0V4dGVuc2lvbnNHTE9wZW5HTEVTLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMRVMuaAppbmRleCA1Yzc2MDM3ZmE3YmM2ZThlZWUz
ZTY3M2Y5OWE3ZGZjMmY3OGZiNGQyLi5hZGQwYmI3NjNmNGJkYTViNjllNjFiYWI2MDIyYTQwODI0
OGFmM2VmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVu
Z2wvRXh0ZW5zaW9uc0dMT3BlbkdMRVMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMRVMuaApAQCAtMjcsNiArMjcsNyBAQAog
I3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJFeHRlbnNpb25zR0xPcGVuR0xDb21tb24uaCIKKyNp
bmNsdWRlICJHcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oIgogCiAjaWYgVVNFKE9QRU5HTF9FUykK
IApAQCAtNzUsMTEgKzc2LDcgQEAgcHVibGljOgogCiAgICAgLy8gRXh0ZW5zaW9uM0QgbWV0aG9k
cwogICAgIGJvb2wgaXNFbmFibGVkKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwotICAgIHZvaWQg
YmxpdEZyYW1lYnVmZmVyQU5HTEUoR0NHTGludCBzcmNYMCwgR0NHTGludCBzcmNZMCwgR0NHTGlu
dCBzcmNYMSwgR0NHTGludCBzcmNZMSwgR0NHTGludCBkc3RYMCwgR0NHTGludCBkc3RZMCwgR0NH
TGludCBkc3RYMSwgR0NHTGludCBkc3RZMSwgR0NHTGJpdGZpZWxkIG1hc2ssIEdDR0xlbnVtIGZp
bHRlcikgb3ZlcnJpZGU7Ci0gICAgdm9pZCByZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVB
TkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xzaXplaSBzYW1wbGVzLCBHQ0dMZW51bSBpbnRlcm5h
bGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KSBvdmVycmlkZTsKLSAg
ICB2b2lkIGluc2VydEV2ZW50TWFya2VyRVhUKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwotICAg
IHZvaWQgcHVzaEdyb3VwTWFya2VyRVhUKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwotICAgIHZv
aWQgcG9wR3JvdXBNYXJrZXJFWFQodm9pZCkgb3ZlcnJpZGU7CisgICAgdm9pZCByZW5kZXJidWZm
ZXJTdG9yYWdlTXVsdGlzYW1wbGVBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xzaXplaSBzYW1w
bGVzLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkg
aGVpZ2h0KTsKIAogICAgIFBsYXRmb3JtR0xPYmplY3QgY3JlYXRlVmVydGV4QXJyYXlPRVMoKSBv
dmVycmlkZTsKICAgICB2b2lkIGRlbGV0ZVZlcnRleEFycmF5T0VTKFBsYXRmb3JtR0xPYmplY3Qp
IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
b3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaAppbmRleCBmNTI0ZGU5
MmRjZDlhNTk4YjBmYmVmOGQzM2I5YzQ0MDliOGNkMWIwLi4zOTViOTU3M2I3NjVkOTNjMDQyNzQ2
YTFmNTQ5MTIwYWRmMjNmODExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaApA
QCAtNDUsNiArNDUsNyBAQAogCiAjaWYgIVVTRShBTkdMRSkKICNpbmNsdWRlICJBTkdMRVdlYktp
dEJyaWRnZS5oIgorI2luY2x1ZGUgIkV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5oIgogI2VuZGlm
CiAKIC8vIEZJWE1FOiBGaW5kIGEgYmV0dGVyIHdheSB0byBhdm9pZCB0aGUgbmFtZSBjb25mbGlj
dGlvbiBmb3IgTk9fRVJST1IuCkBAIC00ODYsNyArNDg3LDEyIEBAIHB1YmxpYzoKICAgICAvLyBh
bGwgbWV0aG9kcyBpdCBjb250YWlucyBtYXkgbmVjZXNzYXJpbHkgYmUgc3VwcG9ydGVkIG9uIHRo
ZQogICAgIC8vIGN1cnJlbnQgaGFyZHdhcmUuIE11c3QgY2FsbCBFeHRlbnNpb25zR0w6OnN1cHBv
cnRzKCkgdG8KICAgICAvLyBkZXRlcm1pbmUgdGhpcy4KKyNpZiAhVVNFKEFOR0xFKQorICAgIC8v
IFVzZSBjb3ZhcmlhbnQgcmV0dXJuIHR5cGUgZm9yIE9QRU5HTC9PUEVOR0xfRVMKKyAgICBFeHRl
bnNpb25zR0xPcGVuR0xDb21tb24mIGdldEV4dGVuc2lvbnMoKSBmaW5hbDsKKyNlbHNlCiAgICAg
RXh0ZW5zaW9uc0dMJiBnZXRFeHRlbnNpb25zKCkgZmluYWw7CisjZW5kaWYKIAogICAgIHZvaWQg
c2V0RmFpbE5leHRHUFVTdGF0dXNDaGVjaygpIGZpbmFsIHsgbV9mYWlsTmV4dFN0YXR1c0NoZWNr
ID0gdHJ1ZTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEJhc2UuY3Bw
CmluZGV4IGY0MTRmOWM5NjM0ZDYxYjhkOTAxNWQ1YTZhZmE1MjdjYzM0MmJlOGYuLjBmZjUzM2Jl
NzEyODRlZDA4ZDUzNDNiOTk5NmE5NmZhMTZlMmI1YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEJhc2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGlj
c0NvbnRleHRHTE9wZW5HTEJhc2UuY3BwCkBAIC0xMTYsNyArMTE2LDcgQEAgYm9vbCBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6cmVzaGFwZUZCT3MoY29uc3QgSW50U2l6ZSYgc2l6ZSkKICAgICAg
ICAgLy8gV2UgZG9uJ3QgYWxsb3cgdGhlIGxvZ2ljIHdoZXJlIHN0ZW5jaWwgaXMgcmVxdWlyZWQg
YW5kIGRlcHRoIGlzIG5vdC4KICAgICAgICAgLy8gU2VlIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
Ojp2YWxpZGF0ZUF0dHJpYnV0ZXMuCiAKLSAgICAgICAgRXh0ZW5zaW9uc0dMJiBleHRlbnNpb25z
ID0gZ2V0RXh0ZW5zaW9ucygpOworICAgICAgICBFeHRlbnNpb25zR0xPcGVuR0xDb21tb24mIGV4
dGVuc2lvbnMgPSBnZXRFeHRlbnNpb25zKCk7CiAgICAgICAgIC8vIFVzZSBhIDI0IGJpdCBkZXB0
aCBidWZmZXIgd2hlcmUgd2Uga25vdyB3ZSBoYXZlIGl0LgogICAgICAgICBpZiAoZXh0ZW5zaW9u
cy5zdXBwb3J0cygiR0xfRVhUX3BhY2tlZF9kZXB0aF9zdGVuY2lsIikpCiAgICAgICAgICAgICBp
bnRlcm5hbERlcHRoU3RlbmNpbEZvcm1hdCA9IEdMX0RFUFRIMjRfU1RFTkNJTDhfRVhUOwpAQCAt
NDE3LDcgKzQxNyw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNsZWFyRGVwdGgo
R0NHTGNsYW1wZiBkZXB0aCkKIH0KIAogI2lmICFQTEFURk9STShHVEspCi1FeHRlbnNpb25zR0wm
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRFeHRlbnNpb25zKCkKK0V4dGVuc2lvbnNHTE9w
ZW5HTENvbW1vbiYgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEV4dGVuc2lvbnMoKQogewog
ICAgIGlmICghbV9leHRlbnNpb25zKQogICAgICAgICBtX2V4dGVuc2lvbnMgPSBtYWtlVW5pcXVl
PEV4dGVuc2lvbnNHTE9wZW5HTD4odGhpcywgaXNHTEVTMkNvbXBsaWFudCgpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRl
eHRHTE9wZW5HTENvbW1vbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9v
cGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb21tb24uY3BwCmluZGV4IDJkZTE4NWE2Njgx
MzBhMzYyYzEyNzY3ZjM4M2Y1N2YxMzQ5ZGQ0ODEuLmRmOTgzZmRhODgxMTI4OWI2MDIyZGFmZWU5
OGRjZjkyOWRjMjQ1MTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvbW1vbi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdM
Q29tbW9uLmNwcApAQCAtMTE4LDcgKzExOCw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OnZhbGlkYXRlRGVwdGhTdGVuY2lsKGNvbnN0IGNoYXIqIHBhY2tlZERlcHRoU3RlbmNpCiB7
CiAgICAgYXV0byBhdHRycyA9IGNvbnRleHRBdHRyaWJ1dGVzKCk7CiAKLSAgICBFeHRlbnNpb25z
R0wmIGV4dGVuc2lvbnMgPSBnZXRFeHRlbnNpb25zKCk7CisgICAgRXh0ZW5zaW9uc0dMT3BlbkdM
Q29tbW9uJiBleHRlbnNpb25zID0gZ2V0RXh0ZW5zaW9ucygpOwogICAgIGlmIChhdHRycy5zdGVu
Y2lsKSB7CiAgICAgICAgIGlmIChleHRlbnNpb25zLnN1cHBvcnRzKHBhY2tlZERlcHRoU3RlbmNp
bEV4dGVuc2lvbikpIHsKICAgICAgICAgICAgIGV4dGVuc2lvbnMuZW5zdXJlRW5hYmxlZChwYWNr
ZWREZXB0aFN0ZW5jaWxFeHRlbnNpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMRVMuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMRVMuY3BwCmluZGV4IDBkNDc2YzIyOWQ2ZjZlZTk2Y2NmOTkzZDgxZDVjM2RkNjUyMTVlNDgu
LmFiOWMzNWY4NDk2NDM2Yzk2MGUyMTJhNDFiYzNlMGNmZTlhYmJmMDkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9w
ZW5HTEVTLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wv
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0xFUy5jcHAKQEAgLTI1NCw3ICsyNTQsNyBAQCB2b2lkIEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjbGVhckRlcHRoKEdDR0xjbGFtcGYgZGVwdGgpCiB9CiAK
ICNpZiAhUExBVEZPUk0oR1RLKQotRXh0ZW5zaW9uc0dMJiBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6Z2V0RXh0ZW5zaW9ucygpCitFeHRlbnNpb25zR0xPcGVuR0xDb21tb24mIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjpnZXRFeHRlbnNpb25zKCkKIHsKICAgICBpZiAoIW1fZXh0ZW5zaW9ucykK
ICAgICAgICAgbV9leHRlbnNpb25zID0gbWFrZVVuaXF1ZTxFeHRlbnNpb25zR0xPcGVuR0xFUz4o
dGhpcywgaXNHTEVTMkNvbXBsaWFudCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4
dEdMVGV4dHVyZU1hcHBlci5jcHAKaW5kZXggODczMTQwYjBkOTUyNDc0NzhhMjFmMTRjYTk5OGY2
NzE2ZWU3YWQ3YS4uZWE1ZGE5Zjg4MTg4NzcyMWU3YWQ0MmU4NDBiZGIxYTdkZGYyMTVkZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNz
Q29udGV4dEdMVGV4dHVyZU1hcHBlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlci5jcHAKQEAgLTQy
OSw3ICs0MjksNyBAQCBQbGF0Zm9ybUxheWVyKiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cGxh
dGZvcm1MYXllcigpIGNvbnN0CiB9CiAKICNpZiBQTEFURk9STShHVEspICYmICFVU0UoQU5HTEUp
Ci1FeHRlbnNpb25zR0wmIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRFeHRlbnNpb25zKCkK
K0V4dGVuc2lvbnNHTE9wZW5HTENvbW1vbiYgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEV4
dGVuc2lvbnMoKQogewogICAgIGlmICghbV9leHRlbnNpb25zKSB7CiAjaWYgVVNFKE9QRU5HTF9F
UykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVH
cmFwaGljc0NvbnRleHRHTC5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9n
cmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5tZXNzYWdlcy5pbgppbmRleCBhYTAzNDcy
NWY5YWE0MmY0MmJkM2M4YTAwYjBhYTE4MDkwYTU5YjlhLi5jNzg4ZDY1ZGI0ZDk3MWMyZDRkNTQw
YzQ2ODg4YzQ1MTExNGIzNDZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
Z3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wubWVzc2FnZXMuaW4KKysrIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLm1lc3Nh
Z2VzLmluCkBAIC0yNzQsMTYgKzI3NCwxMSBAQCBtZXNzYWdlcyAtPiBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTCBOb3RSZWZDb3VudGVkIHsKICAgICB2b2lkIFVuaWZvcm1CbG9ja0JpbmRpbmcodWlu
dDMyX3QgcHJvZ3JhbSwgdWludDMyX3QgdW5pZm9ybUJsb2NrSW5kZXgsIHVpbnQzMl90IHVuaWZv
cm1CbG9ja0JpbmRpbmcpCiAgICAgdm9pZCBHZXRBY3RpdmVVbmlmb3JtQmxvY2tpdih1aW50MzJf
dCBwcm9ncmFtLCB1aW50MzJfdCB1bmlmb3JtQmxvY2tJbmRleCwgdWludDMyX3QgcG5hbWUsIHVp
bnQ2NF90IHBhcmFtc1NpemUpIC0+IChJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+IHBhcmFt
cykgU3luY2hyb25vdXMKICAgICB2b2lkIEdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIoKSAtPiAo
aW50MzJfdCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKLSAgICB2b2lkIEJsaXRGcmFtZWJ1ZmZl
ckFOR0xFKGludDMyX3Qgc3JjWDAsIGludDMyX3Qgc3JjWTAsIGludDMyX3Qgc3JjWDEsIGludDMy
X3Qgc3JjWTEsIGludDMyX3QgZHN0WDAsIGludDMyX3QgZHN0WTAsIGludDMyX3QgZHN0WDEsIGlu
dDMyX3QgZHN0WTEsIHVpbnQzMl90IG1hc2ssIHVpbnQzMl90IGZpbHRlcikKLSAgICB2b2lkIFJl
bmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKHVpbnQzMl90IHRhcmdldCwgaW50MzJf
dCBzYW1wbGVzLCB1aW50MzJfdCBpbnRlcm5hbGZvcm1hdCwgaW50MzJfdCB3aWR0aCwgaW50MzJf
dCBoZWlnaHQpCiAgICAgdm9pZCBDcmVhdGVWZXJ0ZXhBcnJheU9FUygpIC0+ICh1aW50MzJfdCBy
ZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKICAgICB2b2lkIERlbGV0ZVZlcnRleEFycmF5T0VTKHVp
bnQzMl90IGFyZzApCiAgICAgdm9pZCBJc1ZlcnRleEFycmF5T0VTKHVpbnQzMl90IGFyZzApIC0+
IChib29sIHJldHVyblZhbHVlKSBTeW5jaHJvbm91cwogICAgIHZvaWQgQmluZFZlcnRleEFycmF5
T0VTKHVpbnQzMl90IGFyZzApCiAgICAgdm9pZCBHZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5H
TEUodWludDMyX3QgYXJnMCkgLT4gKFN0cmluZyByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKLSAg
ICB2b2lkIEluc2VydEV2ZW50TWFya2VyRVhUKFN0cmluZyBhcmcwKQotICAgIHZvaWQgUHVzaEdy
b3VwTWFya2VyRVhUKFN0cmluZyBhcmcwKQotICAgIHZvaWQgUG9wR3JvdXBNYXJrZXJFWFQoKQog
ICAgIHZvaWQgRHJhd0J1ZmZlcnNFWFQoSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdD4gYnVm
cykKICAgICB2b2lkIERyYXdBcnJheXNJbnN0YW5jZWRBTkdMRSh1aW50MzJfdCBtb2RlLCBpbnQz
Ml90IGZpcnN0LCBpbnQzMl90IGNvdW50LCBpbnQzMl90IHByaW1jb3VudCkKICAgICB2b2lkIERy
YXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKHVpbnQzMl90IG1vZGUsIGludDMyX3QgY291bnQsIHVp
bnQzMl90IHR5cGUsIHVpbnQ2NF90IG9mZnNldCwgaW50MzJfdCBwcmltY291bnQpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xGdW5jdGlvbnNHZW5lcmF0ZWQuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFw
aGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTEZ1bmN0aW9uc0dlbmVyYXRlZC5oCmluZGV4IGFm
MDE2MDJhZjQ5M2ViNjdkZTNlNjJjZjBlNTBhYzBhMmI5OTI1ZjEuLjFiYzU3ZGY5YWZkYTI4ZDhi
ZTRlYmM2ZDQ0OTMyZWE5NTUzMmFjYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTEZ1bmN0aW9uc0dlbmVyYXRlZC5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0Nv
bnRleHRHTEZ1bmN0aW9uc0dlbmVyYXRlZC5oCkBAIC0xMTE4LDE0ICsxMTE4LDYgQEAKICAgICAg
ICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5nZXRHcmFwaGljc1Jl
c2V0U3RhdHVzQVJCKCk7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJldHVyblZhbHVlKTsK
ICAgICB9Ci0gICAgdm9pZCBibGl0RnJhbWVidWZmZXJBTkdMRShpbnQzMl90IHNyY1gwLCBpbnQz
Ml90IHNyY1kwLCBpbnQzMl90IHNyY1gxLCBpbnQzMl90IHNyY1kxLCBpbnQzMl90IGRzdFgwLCBp
bnQzMl90IGRzdFkwLCBpbnQzMl90IGRzdFgxLCBpbnQzMl90IGRzdFkxLCB1aW50MzJfdCBtYXNr
LCB1aW50MzJfdCBmaWx0ZXIpCi0gICAgewotICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lv
bnMoKS5ibGl0RnJhbWVidWZmZXJBTkdMRShzcmNYMCwgc3JjWTAsIHNyY1gxLCBzcmNZMSwgZHN0
WDAsIGRzdFkwLCBkc3RYMSwgZHN0WTEsIG1hc2ssIGZpbHRlcik7Ci0gICAgfQotICAgIHZvaWQg
cmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5HTEUodWludDMyX3QgdGFyZ2V0LCBpbnQz
Ml90IHNhbXBsZXMsIHVpbnQzMl90IGludGVybmFsZm9ybWF0LCBpbnQzMl90IHdpZHRoLCBpbnQz
Ml90IGhlaWdodCkKLSAgICB7Ci0gICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnJl
bmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKHRhcmdldCwgc2FtcGxlcywgaW50ZXJu
YWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQpOwotICAgIH0KICAgICB2b2lkIGNyZWF0ZVZlcnRleEFy
cmF5T0VTKENvbXBsZXRpb25IYW5kbGVyPHZvaWQodWludDMyX3QpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQogICAgIHsKICAgICAgICAgUGxhdGZvcm1HTE9iamVjdCByZXR1cm5WYWx1ZSA9IHsgfTsK
QEAgLTExNTIsMTggKzExNDQsNiBAQAogICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+
Z2V0RXh0ZW5zaW9ucygpLmdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRShhcmcwKTsKICAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShyZXR1cm5WYWx1ZSkpOwogICAgIH0KLSAg
ICB2b2lkIGluc2VydEV2ZW50TWFya2VyRVhUKFN0cmluZyYmIGFyZzApCi0gICAgewotICAgICAg
ICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5pbnNlcnRFdmVudE1hcmtlckVYVChhcmcwKTsK
LSAgICB9Ci0gICAgdm9pZCBwdXNoR3JvdXBNYXJrZXJFWFQoU3RyaW5nJiYgYXJnMCkKLSAgICB7
Ci0gICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnB1c2hHcm91cE1hcmtlckVYVChh
cmcwKTsKLSAgICB9Ci0gICAgdm9pZCBwb3BHcm91cE1hcmtlckVYVCgpCi0gICAgewotICAgICAg
ICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5wb3BHcm91cE1hcmtlckVYVCgpOwotICAgIH0K
ICAgICB2b2lkIGRyYXdCdWZmZXJzRVhUKElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+JiYg
YnVmcykKICAgICB7CiAgICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmRyYXdCdWZm
ZXJzRVhUKG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0xlbnVtKj4oYnVm
cy5kYXRhKCkpLCBidWZzLnNpemUoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmggYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHkuaAppbmRleCBkOTllZGEyOWY2ZGI1ZTE4MTk3MTMxNzhmMmFhNTMxYjRmNWRkNmUwLi45
MGJkZDM1YzMwNDMwOTUyNDRjMGQxMDNhZmQ0YTE2YjdjZDJmOWFkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuaApAQCAtMzEyLDU2ICszMTIsMTYgQEAgcHVibGljOgog
ICAgIHZvaWQgdW5pZm9ybUJsb2NrQmluZGluZyhQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdD
R0x1aW50IHVuaWZvcm1CbG9ja0luZGV4LCBHQ0dMdWludCB1bmlmb3JtQmxvY2tCaW5kaW5nKSBm
aW5hbDsKICAgICB2b2lkIGdldEFjdGl2ZVVuaWZvcm1CbG9ja2l2KEdDR0x1aW50IHByb2dyYW0s
IEdDR0x1aW50IHVuaWZvcm1CbG9ja0luZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NH
TGludD4gcGFyYW1zKSBmaW5hbDsKICAgICBHQ0dMaW50IGdldEdyYXBoaWNzUmVzZXRTdGF0dXNB
UkIoKSBmaW5hbDsKLSAgICB2b2lkIGJsaXRGcmFtZWJ1ZmZlckFOR0xFKEdDR0xpbnQgc3JjWDAs
IEdDR0xpbnQgc3JjWTAsIEdDR0xpbnQgc3JjWDEsIEdDR0xpbnQgc3JjWTEsIEdDR0xpbnQgZHN0
WDAsIEdDR0xpbnQgZHN0WTAsIEdDR0xpbnQgZHN0WDEsIEdDR0xpbnQgZHN0WTEsIEdDR0xiaXRm
aWVsZCBtYXNrLCBHQ0dMZW51bSBmaWx0ZXIpIGZpbmFsOwotICAgIHZvaWQgcmVuZGVyYnVmZmVy
U3RvcmFnZU11bHRpc2FtcGxlQU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWkgc2FtcGxl
cywgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhl
aWdodCkgZmluYWw7CiAgICAgUGxhdGZvcm1HTE9iamVjdCBjcmVhdGVWZXJ0ZXhBcnJheU9FUygp
IGZpbmFsOwogICAgIHZvaWQgZGVsZXRlVmVydGV4QXJyYXlPRVMoUGxhdGZvcm1HTE9iamVjdCBh
cmcwKSBmaW5hbDsKICAgICBHQ0dMYm9vbGVhbiBpc1ZlcnRleEFycmF5T0VTKFBsYXRmb3JtR0xP
YmplY3QgYXJnMCkgZmluYWw7CiAgICAgdm9pZCBiaW5kVmVydGV4QXJyYXlPRVMoUGxhdGZvcm1H
TE9iamVjdCBhcmcwKSBmaW5hbDsKICAgICBTdHJpbmcgZ2V0VHJhbnNsYXRlZFNoYWRlclNvdXJj
ZUFOR0xFKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkgZmluYWw7Ci0gICAgdm9pZCBpbnNlcnRFdmVu
dE1hcmtlckVYVChjb25zdCBTdHJpbmcmIGFyZzApIGZpbmFsOwotICAgIHZvaWQgcHVzaEdyb3Vw
TWFya2VyRVhUKGNvbnN0IFN0cmluZyYgYXJnMCkgZmluYWw7Ci0gICAgdm9pZCBwb3BHcm91cE1h
cmtlckVYVCgpIGZpbmFsOwogICAgIHZvaWQgZHJhd0J1ZmZlcnNFWFQoR0NHTFNwYW48Y29uc3Qg
R0NHTGVudW0+IGJ1ZnMpIGZpbmFsOwogICAgIHZvaWQgZHJhd0FycmF5c0luc3RhbmNlZEFOR0xF
KEdDR0xlbnVtIG1vZGUsIEdDR0xpbnQgZmlyc3QsIEdDR0xzaXplaSBjb3VudCwgR0NHTHNpemVp
IHByaW1jb3VudCkgZmluYWw7CiAgICAgdm9pZCBkcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRShH
Q0dMZW51bSBtb2RlLCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xlbnVtIHR5cGUsIEdDR0x2b2lkcHRy
IG9mZnNldCwgR0NHTHNpemVpIHByaW1jb3VudCkgZmluYWw7CiAgICAgdm9pZCB2ZXJ0ZXhBdHRy
aWJEaXZpc29yQU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0x1aW50IGRpdmlzb3IpIGZpbmFsOwog
ICAgIHZvaWQgZ2V0SW50ZXJuYWxmb3JtYXRpdihHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIGlu
dGVybmFsZm9ybWF0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGludD4gcGFyYW1zKSBm
aW5hbDsKLSAgICB2b2lkIHJlYWRQaXhlbHNSb2J1c3RBTkdMRShHQ0dMaW50IHgsIEdDR0xpbnQg
eSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdD
R0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHNp
emVpKiBjb2x1bW5zLCBHQ0dMc2l6ZWkqIHJvd3MsIEdDR0x2b2lkKiBwaXhlbHMpIGZpbmFsOwot
ICAgIHZvaWQgdGV4UGFyYW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xl
bnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGZsb2F0KiBwYXJhbXMpIGZp
bmFsOwotICAgIHZvaWQgdGV4UGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQs
IEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGludCogcGFyYW1z
KSBmaW5hbDsKLSAgICB2b2lkIGdldFF1ZXJ5aXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQs
IEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdD
R0xpbnQqIHBhcmFtcykgZmluYWw7Ci0gICAgdm9pZCBnZXRRdWVyeU9iamVjdHVpdlJvYnVzdEFO
R0xFKEdDR0x1aW50IGlkLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xz
aXplaSogbGVuZ3RoLCBHQ0dMdWludCogcGFyYW1zKSBmaW5hbDsKLSAgICB2b2lkIGdldEJ1ZmZl
clBvaW50ZXJ2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NH
THNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMdm9pZCoqIHBhcmFtcykgZmlu
YWw7Ci0gICAgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJJaXZSb2J1c3RBTkdMRShHQ0dMdWludCBpbmRl
eCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwg
R0NHTGludCogcGFyYW1zKSBmaW5hbDsKLSAgICB2b2lkIGdldFZlcnRleEF0dHJpYkl1aXZSb2J1
c3RBTkdMRShHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXpl
LCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHVpbnQqIHBhcmFtcykgZmluYWw7Ci0gICAgdm9pZCBn
ZXRVbmlmb3JtdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlv
biwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMdWludCogcGFyYW1z
KSBmaW5hbDsKLSAgICB2b2lkIGdldEJ1ZmZlclBhcmFtZXRlcmk2NHZSb2J1c3RBTkdMRShHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVp
KiBsZW5ndGgsIEdDR0xpbnQ2NCogcGFyYW1zKSBmaW5hbDsKLSAgICB2b2lkIHNhbXBsZXJQYXJh
bWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dM
c2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGludCogcGFyYW0pIGZpbmFsOwotICAgIHZvaWQgc2Ft
cGxlclBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5h
bWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMZmxvYXQqIHBhcmFtKSBmaW5hbDsKLSAg
ICB2b2lkIGdldFNhbXBsZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIs
IEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdD
R0xpbnQqIHBhcmFtcykgZmluYWw7Ci0gICAgdm9pZCBnZXRTYW1wbGVyUGFyYW1ldGVyZnZSb2J1
c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNp
emUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMZmxvYXQqIHBhcmFtcykgZmluYWw7Ci0gICAgdm9p
ZCBnZXRGcmFtZWJ1ZmZlclBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dM
aW50KiBwYXJhbXMpIGZpbmFsOwotICAgIHZvaWQgZ2V0UHJvZ3JhbUludGVyZmFjZWl2Um9idXN0
QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGVudW0gcHJvZ3JhbUludGVyZmFjZSwgR0NHTGVu
dW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCog
cGFyYW1zKSBmaW5hbDsKLSAgICB2b2lkIGdldEJvb2xlYW5pX3ZSb2J1c3RBTkdMRShHQ0dMZW51
bSB0YXJnZXQsIEdDR0x1aW50IGluZGV4LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBs
ZW5ndGgsIEdDR0xib29sZWFuKiBkYXRhKSBmaW5hbDsgLy8gTk9MSU5UCi0gICAgdm9pZCBnZXRN
dWx0aXNhbXBsZWZ2Um9idXN0QU5HTEUoR0NHTGVudW0gcG5hbWUsIEdDR0x1aW50IGluZGV4LCBH
Q0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xmbG9hdCogdmFsKSBmaW5h
bDsKLSAgICB2b2lkIGdldFRleExldmVsUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0
YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwg
R0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykgZmluYWw7Ci0gICAgdm9pZCBnZXRU
ZXhMZXZlbFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxl
dmVsLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3Ro
LCBHQ0dMZmxvYXQqIHBhcmFtcykgZmluYWw7Ci0gICAgdm9pZCBnZXRQb2ludGVydlJvYnVzdEFO
R0xFUm9idXN0QU5HTEUoR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6
ZWkqIGxlbmd0aCwgR0NHTHZvaWQqKiBwYXJhbXMpIGZpbmFsOwotICAgIHZvaWQgZ2V0blVuaWZv
cm1mdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xz
aXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGZsb2F0KiBwYXJhbXMpIGZpbmFs
OwotICAgIHZvaWQgZ2V0blVuaWZvcm1pdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdD
R0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NH
TGludCogcGFyYW1zKSBmaW5hbDsKLSAgICB2b2lkIGdldG5Vbmlmb3JtdWl2Um9idXN0QU5HTEUo
R0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdD
R0xzaXplaSogbGVuZ3RoLCBHQ0dMdWludCogcGFyYW1zKSBmaW5hbDsKLSAgICB2b2lkIHRleFBh
cmFtZXRlcklpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdD
R0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMaW50KiBwYXJhbXMpIGZpbmFsOwotICAgIHZvaWQg
dGV4UGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5h
bWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMdWludCogcGFyYW1zKSBmaW5hbDsKLSAg
ICB2b2lkIGdldFRleFBhcmFtZXRlcklpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NH
TGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGlu
dCogcGFyYW1zKSBmaW5hbDsKLSAgICB2b2lkIGdldFRleFBhcmFtZXRlckl1aXZSb2J1c3RBTkdM
RShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NH
THNpemVpKiBsZW5ndGgsIEdDR0x1aW50KiBwYXJhbXMpIGZpbmFsOwotICAgIHZvaWQgc2FtcGxl
clBhcmFtZXRlcklpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1l
LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGludCogcGFyYW0pIGZpbmFsOwotICAgIHZv
aWQgc2FtcGxlclBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dM
ZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0x1aW50KiBwYXJhbSkgZmlu
YWw7Ci0gICAgdm9pZCBnZXRTYW1wbGVyUGFyYW1ldGVySWl2Um9idXN0QU5HTEUoR0NHTHVpbnQg
c2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxl
bmd0aCwgR0NHTGludCogcGFyYW1zKSBmaW5hbDsKLSAgICB2b2lkIGdldFNhbXBsZXJQYXJhbWV0
ZXJJdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xz
aXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHVpbnQqIHBhcmFtcykgZmluYWw7
Ci0gICAgdm9pZCBnZXRRdWVyeU9iamVjdGl2Um9idXN0QU5HTEUoR0NHTHVpbnQgaWQsIEdDR0xl
bnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQq
IHBhcmFtcykgZmluYWw7Ci0gICAgdm9pZCBnZXRRdWVyeU9iamVjdGk2NHZSb2J1c3RBTkdMRShH
Q0dMdWludCBpZCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkq
IGxlbmd0aCwgR0NHTGludDY0KiBwYXJhbXMpIGZpbmFsOwotICAgIHZvaWQgZ2V0UXVlcnlPYmpl
Y3R1aTY0dlJvYnVzdEFOR0xFKEdDR0x1aW50IGlkLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVp
IGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMdWludDY0KiBwYXJhbXMpIGZpbmFsOwog
ICAgIC8vIEVuZCBvZiBsaXN0IHVzZWQgYnkgZ2VuZXJhdGUtZ3B1cC13ZWJnbCBzY3JpcHQuCiAK
IHByb3RlY3RlZDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3Jh
cGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUZ1bmN0aW9uc0dlbmVyYXRlZC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHlGdW5jdGlvbnNHZW5lcmF0ZWQuY3BwCmluZGV4IGY3ZWNmODY1NTZhMDA3M2Fm
OGY1NTRjZmNmYzBlZjMzOWY2MWU4OWEuLmUxYTZkZDM0ZTU1YjUyNWZlZjI2YjU3Y2IxMzI1MmNm
MzJiZDA2OWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhp
Y3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUZ1bmN0aW9uc0dlbmVyYXRlZC5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5RnVuY3Rpb25zR2VuZXJhdGVkLmNwcApAQCAtMTM4MCwxNiArMTM4MCw2IEBA
IEdDR0xpbnQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0R3JhcGhpY3NSZXNldFN0
YXR1c0FSQigpCiAgICAgcmV0dXJuIHJldHVyblZhbHVlOwogfQogCi12b2lkIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OmJsaXRGcmFtZWJ1ZmZlckFOR0xFKEdDR0xpbnQgc3JjWDAsIEdD
R0xpbnQgc3JjWTAsIEdDR0xpbnQgc3JjWDEsIEdDR0xpbnQgc3JjWTEsIEdDR0xpbnQgZHN0WDAs
IEdDR0xpbnQgZHN0WTAsIEdDR0xpbnQgZHN0WDEsIEdDR0xpbnQgZHN0WTEsIEdDR0xiaXRmaWVs
ZCBtYXNrLCBHQ0dMZW51bSBmaWx0ZXIpCi17Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OkJsaXRGcmFtZWJ1ZmZlckFOR0xFKHNyY1gwLCBzcmNZMCwgc3JjWDEs
IHNyY1kxLCBkc3RYMCwgZHN0WTAsIGRzdFgxLCBkc3RZMSwgbWFzaywgZmlsdGVyKSwgbV9ncmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIpOwotfQotCi12b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OnJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKEdDR0xlbnVtIHRh
cmdldCwgR0NHTHNpemVpIHNhbXBsZXMsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6
ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQpCi17Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OlJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKHRh
cmdldCwgc2FtcGxlcywgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQpLCBtX2dyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllcik7Ci19Ci0KIFBsYXRmb3JtR0xPYmplY3QgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6Y3JlYXRlVmVydGV4QXJyYXlPRVMoKQogewogICAgIHVpbnQzMl90
IHJldHVyblZhbHVlID0geyB9OwpAQCAtMTQyMSwyMSArMTQxMSw2IEBAIFN0cmluZyBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUoUGxh
dGZvcm1HTE9iCiAgICAgcmV0dXJuIHJldHVyblZhbHVlOwogfQogCi12b2lkIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6Omluc2VydEV2ZW50TWFya2VyRVhUKGNvbnN0IFN0cmluZyYgYXJn
MCkKLXsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SW5zZXJ0
RXZlbnRNYXJrZXJFWFQoYXJnMCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKLX0K
LQotdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpwdXNoR3JvdXBNYXJrZXJFWFQo
Y29uc3QgU3RyaW5nJiBhcmcwKQotewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpQdXNoR3JvdXBNYXJrZXJFWFQoYXJnMCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyKTsKLX0KLQotdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpwb3BH
cm91cE1hcmtlckVYVCgpCi17Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OlBvcEdyb3VwTWFya2VyRVhUKCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
KTsKLX0KLQogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkcmF3QnVmZmVyc0VY
VChHQ0dMU3Bhbjxjb25zdCBHQ0dMZW51bT4gYnVmcykKIHsKICAgICBzZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RHJhd0J1ZmZlcnNFWFQoSVBDOjpBcnJheVJlZmVyZW5j
ZTx1aW50MzJfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50MzJfdCo+KGJ1ZnMuZGF0YSks
IGJ1ZnMuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CkBAIC0xNDY1
LDE4MSArMTQ0MCw2IEBAIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0SW50
ZXJuYWxmb3JtYXRpdihHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtCiAgICAgCiB9CiAKLXZvaWQg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cmVhZFBpeGVsc1JvYnVzdEFOR0xFKEdDR0xp
bnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xl
bnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSog
bGVuZ3RoLCBHQ0dMc2l6ZWkqIGNvbHVtbnMsIEdDR0xzaXplaSogcm93cywgR0NHTHZvaWQqIHBp
eGVscykKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OnRleFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xmbG9hdCogcGFy
YW1zKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6dGV4UGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQs
IEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGludCogcGFyYW1z
KQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6Z2V0UXVlcnlpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVu
dW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCog
cGFyYW1zKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6Z2V0UXVlcnlPYmplY3R1aXZSb2J1c3RBTkdMRShHQ0dMdWludCBp
ZCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwg
R0NHTHVpbnQqIHBhcmFtcykKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEJ1ZmZlclBvaW50ZXJ2Um9idXN0QU5HTEUo
R0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xz
aXplaSogbGVuZ3RoLCBHQ0dMdm9pZCoqIHBhcmFtcykKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgp
OwotfQotCi12b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFZlcnRleEF0dHJp
YklpdlJvYnVzdEFOR0xFKEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVp
IGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpCi17Ci0gICAgbm90
SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpn
ZXRWZXJ0ZXhBdHRyaWJJdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBu
YW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0x1aW50KiBwYXJh
bXMpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpnZXRVbmlmb3JtdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwg
R0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBH
Q0dMdWludCogcGFyYW1zKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0QnVmZmVyUGFyYW1ldGVyaTY0dlJvYnVzdEFO
R0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBH
Q0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludDY0KiBwYXJhbXMpCi17Ci0gICAgbm90SW1wbGVtZW50
ZWQoKTsKLX0KLQotdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpzYW1wbGVyUGFy
YW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NH
THNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xpbnQqIHBhcmFtKQotewotICAgIG5vdEltcGxlbWVu
dGVkKCk7Ci19Ci0KLXZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c2FtcGxlclBh
cmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdD
R0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMZmxvYXQqIHBhcmFtKQotewotICAgIG5vdEltcGxl
bWVudGVkKCk7Ci19Ci0KLXZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0U2Ft
cGxlclBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5h
bWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1z
KQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6Z2V0U2FtcGxlclBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2Ft
cGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0
aCwgR0NHTGZsb2F0KiBwYXJhbXMpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9p
ZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRGcmFtZWJ1ZmZlclBhcmFtZXRlcml2
Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1
ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpCi17Ci0gICAgbm90SW1w
bGVtZW50ZWQoKTsKLX0KLQotdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRQ
cm9ncmFtSW50ZXJmYWNlaXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMZW51bSBw
cm9ncmFtSW50ZXJmYWNlLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xz
aXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsK
LX0KLQotdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRCb29sZWFuaV92Um9i
dXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMdWludCBpbmRleCwgR0NHTHNpemVpIGJ1ZlNp
emUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMYm9vbGVhbiogZGF0YSkgLy8gTk9MSU5UCi17Ci0g
ICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpnZXRNdWx0aXNhbXBsZWZ2Um9idXN0QU5HTEUoR0NHTGVudW0gcG5hbWUsIEdDR0x1aW50
IGluZGV4LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xmbG9hdCog
dmFsKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6Z2V0VGV4TGV2ZWxQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVt
IHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXpl
LCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1zKQotewotICAgIG5vdEltcGxlbWVu
dGVkKCk7Ci19Ci0KLXZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VGV4TGV2
ZWxQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwg
R0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NH
TGZsb2F0KiBwYXJhbXMpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRQb2ludGVydlJvYnVzdEFOR0xFUm9idXN0QU5H
TEUoR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwg
R0NHTHZvaWQqKiBwYXJhbXMpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRuVW5pZm9ybWZ2Um9idXN0QU5HTEUoR0NH
THVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xz
aXplaSogbGVuZ3RoLCBHQ0dMZmxvYXQqIHBhcmFtcykKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgp
OwotfQotCi12b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldG5Vbmlmb3JtaXZS
b2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkg
YnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykKLXsKLSAgICBub3RJ
bXBsZW1lbnRlZCgpOwotfQotCi12b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Omdl
dG5Vbmlmb3JtdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlv
biwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMdWludCogcGFyYW1z
KQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6dGV4UGFyYW1ldGVySWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xpbnQqIHBhcmFtcykK
LXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OnRleFBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdD
R0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTHVpbnQqIHBhcmFtcykK
LXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmdldFRleFBhcmFtZXRlcklpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwg
R0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NH
TGludCogcGFyYW1zKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VGV4UGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFKEdD
R0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6
ZWkqIGxlbmd0aCwgR0NHTHVpbnQqIHBhcmFtcykKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwot
fQotCi12b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnNhbXBsZXJQYXJhbWV0ZXJJ
aXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVp
IGJ1ZlNpemUsIGNvbnN0IEdDR0xpbnQqIHBhcmFtKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7
Ci19Ci0KLXZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c2FtcGxlclBhcmFtZXRl
ckl1aXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNp
emVpIGJ1ZlNpemUsIGNvbnN0IEdDR0x1aW50KiBwYXJhbSkKLXsKLSAgICBub3RJbXBsZW1lbnRl
ZCgpOwotfQotCi12b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFNhbXBsZXJQ
YXJhbWV0ZXJJaXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwg
R0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpCi17
Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjpnZXRTYW1wbGVyUGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBs
ZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgs
IEdDR0x1aW50KiBwYXJhbXMpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRRdWVyeU9iamVjdGl2Um9idXN0QU5HTEUo
R0NHTHVpbnQgaWQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVp
KiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQot
Ci12b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFF1ZXJ5T2JqZWN0aTY0dlJv
YnVzdEFOR0xFKEdDR0x1aW50IGlkLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUs
IEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50NjQqIHBhcmFtcykKLXsKLSAgICBub3RJbXBsZW1l
bnRlZCgpOwotfQotCi12b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFF1ZXJ5
T2JqZWN0dWk2NHZSb2J1c3RBTkdMRShHQ0dMdWludCBpZCwgR0NHTGVudW0gcG5hbWUsIEdDR0xz
aXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHVpbnQ2NCogcGFyYW1zKQotewot
ICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KIH0KIAogI2VuZGlmCg==
</data>
<flag name="commit-queue"
          id="433142"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>415831</attachid>
            <date>2020-12-09 21:56:03 -0800</date>
            <delta_ts>2020-12-09 22:20:33 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-218896-20201209215602.patch</filename>
            <type>text/plain</type>
            <size>89456</size>
            <attacher name="Rini Patel">rini_patel</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwNTk0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTg5YmE0ODhlN2IwMmI3
YzFjMmUzOTNmOWI4MjgwMjM4YWIwMTI0Yy4uZTc5NmNiMjQzODFiNDE3YTkzMWMxY2JmNjQ5OWVh
OWEwMzA1MmM5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyOSBAQAorMjAyMC0xMi0wNyAgUmlu
aSBQYXRlbCAgPHJpbmlfcGF0ZWxAYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZSB1bnVzZWQg
ZnVuY3Rpb25zIGZyb20gR3JhcGhpY3NDb250ZXh0R0wgYW5kIEV4dGVuc2lvbnNHTAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE4ODk2CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVtb3ZlIHVudXNlZCBm
dW5jdGlvbnMgZnJvbSBHcmFwaGljc0NvbnRleHRHTCBhbmQgRXh0ZW5zaW9uc0dMCisgICAgICAg
IFRoZXkncmUgZGVhZCBjb2RlIGFuZCBtYWtlIGl0IGhhcmRlciB0byBpbXBsZW1lbnQgdGhlIEdQ
VSBQcm9jZXNzIHZlcnNpb24uCisKKyAgICAgICAgLSBJZiB0aGUgZnVuY3Rpb24gaXMgdW51c2Vk
LCByZW1vdmUgaXQgZnVsbHkKKyAgICAgICAgLSBJZiB0aGUgZnVuY3Rpb24gaXMgdW51c2VkIGlu
IFVTRShBTkdMRSkgV2ViR0wgcGFydCwgcmVtb3ZlIHRoZSBmdW5jdGlvbiBmcm9tIEdyYXBoaWNz
Q29udGV4dEdMIGFuZCBBTkdMRSBHcmFwaGljc0NvbnRleHRHTE9wZW5HTAorCisgICAgICAgICog
aHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL0V4dGVuc2lvbnNHTC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lv
bnNHTEFOR0xFOjpFeHRlbnNpb25zR0xBTkdMRSk6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNp
b25zR0xBTkdMRTo6aW5pdGlhbGl6ZUF2YWlsYWJsZUV4dGVuc2lvbnMpOgorICAgICAgICAoV2Vi
Q29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmJsaXRGcmFtZWJ1ZmZlckFOR0xFKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpyZW5kZXJidWZmZXJTdG9yYWdl
TXVsdGlzYW1wbGVBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25z
R0xBTkdMRTo6aW5zZXJ0RXZlbnRNYXJrZXJFWFQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OnB1c2hHcm91cE1hcmtlckVYVCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6cG9wR3JvdXBNYXJrZXJFWFQpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OnJlYWRQaXhlbHNSb2J1
c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6
dGV4UGFyYW1ldGVyZnZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpF
eHRlbnNpb25zR0xBTkdMRTo6dGV4UGFyYW1ldGVyaXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6Z2V0UXVlcnlpdlJvYnVzdEFOR0xF
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpnZXRRdWVy
eU9iamVjdHVpdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVu
c2lvbnNHTEFOR0xFOjpnZXRCdWZmZXJQb2ludGVydlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpnZXRWZXJ0ZXhBdHRyaWJJaXZSb2J1
c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6
Z2V0VmVydGV4QXR0cmliSXVpdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpnZXRVbmlmb3JtdWl2Um9idXN0QU5HTEUpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldEJ1ZmZlclBhcmFtZXRl
cmk2NHZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25z
R0xBTkdMRTo6c2FtcGxlclBhcmFtZXRlcml2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OnNhbXBsZXJQYXJhbWV0ZXJmdlJvYnVzdEFO
R0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpnZXRT
YW1wbGVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpFeHRlbnNpb25zR0xBTkdMRTo6Z2V0U2FtcGxlclBhcmFtZXRlcmZ2Um9idXN0QU5HTEUpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldEZyYW1lYnVm
ZmVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpF
eHRlbnNpb25zR0xBTkdMRTo6Z2V0UHJvZ3JhbUludGVyZmFjZWl2Um9idXN0QU5HTEUpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldEJvb2xlYW5pX3ZS
b2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdM
RTo6Z2V0TXVsdGlzYW1wbGVmdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpnZXRUZXhMZXZlbFBhcmFtZXRlcml2Um9idXN0QU5HTEUp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldFRleExl
dmVsUGFyYW1ldGVyZnZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpF
eHRlbnNpb25zR0xBTkdMRTo6Z2V0UG9pbnRlcnZSb2J1c3RBTkdMRVJvYnVzdEFOR0xFKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpnZXRuVW5pZm9ybWZ2
Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5H
TEU6OmdldG5Vbmlmb3JtaXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpFeHRlbnNpb25zR0xBTkdMRTo6Z2V0blVuaWZvcm11aXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6dGV4UGFyYW1ldGVySWl2Um9i
dXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6
OnRleFBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpFeHRlbnNpb25zR0xBTkdMRTo6Z2V0VGV4UGFyYW1ldGVySWl2Um9idXN0QU5HTEUpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldFRleFBhcmFtZXRl
ckl1aXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25z
R0xBTkdMRTo6c2FtcGxlclBhcmFtZXRlcklpdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpzYW1wbGVyUGFyYW1ldGVySXVpdlJvYnVz
dEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpn
ZXRTYW1wbGVyUGFyYW1ldGVySWl2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldFNhbXBsZXJQYXJhbWV0ZXJJdWl2Um9idXN0QU5H
TEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldFF1
ZXJ5T2JqZWN0aXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRl
bnNpb25zR0xBTkdMRTo6Z2V0UXVlcnlPYmplY3RpNjR2Um9idXN0QU5HTEUpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldFF1ZXJ5T2JqZWN0dWk2NHZS
b2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUv
RXh0ZW5zaW9uc0dMQU5HTEUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wv
RXh0ZW5zaW9uc0dMT3BlbkdMLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9w
ZW5HTDo6YmxpdEZyYW1lYnVmZmVyQU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
RXh0ZW5zaW9uc0dMT3BlbkdMOjpyZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVBTkdMRSk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0w6Omluc2VydEV2
ZW50TWFya2VyRVhUKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9w
ZW5HTDo6cHVzaEdyb3VwTWFya2VyRVhUKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4
dGVuc2lvbnNHTE9wZW5HTDo6cG9wR3JvdXBNYXJrZXJFWFQpOiBEZWxldGVkLgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6cmVhZFBpeGVsc1Jv
YnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5H
TENvbW1vbjo6dGV4UGFyYW1ldGVyZnZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OnRleFBhcmFtZXRlcml2Um9idXN0QU5H
TEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9u
OjpnZXRRdWVyeWl2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0
ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRRdWVyeU9iamVjdHVpdlJvYnVzdEFOR0xFKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0QnVm
ZmVyUG9pbnRlcnZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRl
bnNpb25zR0xPcGVuR0xDb21tb246OmdldFZlcnRleEF0dHJpYklpdlJvYnVzdEFOR0xFKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0VmVy
dGV4QXR0cmliSXVpdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4
dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0VW5pZm9ybXVpdlJvYnVzdEFOR0xFKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0QnVmZmVy
UGFyYW1ldGVyaTY0dlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4
dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6c2FtcGxlclBhcmFtZXRlcml2Um9idXN0QU5HTEUpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpzYW1w
bGVyUGFyYW1ldGVyZnZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpF
eHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFNhbXBsZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xF
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6
Z2V0U2FtcGxlclBhcmFtZXRlcmZ2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRGcmFtZWJ1ZmZlclBhcmFtZXRlcml2
Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3Bl
bkdMQ29tbW9uOjpnZXRQcm9ncmFtSW50ZXJmYWNlaXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldEJvb2xlYW5pX3ZS
b2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVu
R0xDb21tb246OmdldE11bHRpc2FtcGxlZnZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFRleExldmVsUGFyYW1ldGVy
aXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xP
cGVuR0xDb21tb246OmdldFRleExldmVsUGFyYW1ldGVyZnZSb2J1c3RBTkdMRSk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFBvaW50ZXJ2
Um9idXN0QU5HTEVSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRl
bnNpb25zR0xPcGVuR0xDb21tb246OmdldG5Vbmlmb3JtZnZSb2J1c3RBTkdMRSk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldG5Vbmlmb3Jt
aXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xP
cGVuR0xDb21tb246OmdldG5Vbmlmb3JtdWl2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjp0ZXhQYXJhbWV0ZXJJaXZSb2J1
c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xD
b21tb246OnRleFBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFRleFBhcmFtZXRlcklpdlJvYnVz
dEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTENv
bW1vbjo6Z2V0VGV4UGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6c2FtcGxlclBhcmFtZXRlcklpdlJv
YnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5H
TENvbW1vbjo6c2FtcGxlclBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFNhbXBsZXJQYXJhbWV0
ZXJJaXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25z
R0xPcGVuR0xDb21tb246OmdldFNhbXBsZXJQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRRdWVy
eU9iamVjdGl2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5z
aW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRRdWVyeU9iamVjdGk2NHZSb2J1c3RBTkdMRSk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFF1ZXJ5
T2JqZWN0dWk2NHZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5oOgorICAgICAgICAoV2ViQ29y
ZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjppc05WSURJQSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmlzQU1EIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6aXNJbnRlbCBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmlzSW1hZ2luYXRpb24gY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjp2ZW5kb3Ig
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpyZXF1
aXJlc0J1aWx0SW5GdW5jdGlvbkVtdWxhdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpF
eHRlbnNpb25zR0xPcGVuR0xDb21tb246OnJlcXVpcmVzUmVzdHJpY3RlZE1heGltdW1UZXh0dXJl
U2l6ZSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lv
bnNHTE9wZW5HTEVTLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTEVT
OjpibGl0RnJhbWVidWZmZXJBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRl
bnNpb25zR0xPcGVuR0xFUzo6aW5zZXJ0RXZlbnRNYXJrZXJFWFQpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMRVM6OnB1c2hHcm91cE1hcmtlckVYVCk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xFUzo6cG9wR3JvdXBN
YXJrZXJFWFQpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9F
eHRlbnNpb25zR0xPcGVuR0xFUy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5n
bC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEJhc2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlc2hhcGVGQk9zKToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRFeHRlbnNpb25zKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb21tb24uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnZhbGlkYXRlRGVw
dGhTdGVuY2lsKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0xFUy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6Z2V0RXh0ZW5zaW9ucyk6CisKIDIwMjAtMTItMDkgIFJ5YW4gSGFkZGFkICA8cnlh
bmhhZGRhZEBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcmV2ZXJ0aW5nIHIyNzA1
NDQgYW5kIHIyNzA1NjkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCmluZGV4IGY3YzZhMmU4MmE0YmYwMzdhMWI0
NzdkNzgzZmE1NDFhYzRmNTQ2OTYuLjkxODhhNjM5YmE3OTYyZThjY2Q4OTNlNTAwOTUwMmU3Mzgx
MDFkNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCkBAIC03NDEsMTAgKzc0MSw2IEBAIHN0ZDo6dW5pcXVl
X3B0cjxXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlPiBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
OjpjcmVhdGUoQ2FuCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIGF1dG8m
IGV4dGVuc2lvbnMgPSBjb250ZXh0LT5nZXRFeHRlbnNpb25zKCk7Ci0gICAgaWYgKGV4dGVuc2lv
bnMuc3VwcG9ydHMoIkdMX0VYVF9kZWJ1Z19tYXJrZXIiX3MpKQotICAgICAgICBleHRlbnNpb25z
LnB1c2hHcm91cE1hcmtlckVYVCgiV2ViR0xSZW5kZXJpbmdDb250ZXh0Il9zKTsKLQogICAgIHN0
ZDo6dW5pcXVlX3B0cjxXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlPiByZW5kZXJpbmdDb250ZXh0
OwogI2lmIEVOQUJMRShXRUJHTDIpCiAgICAgaWYgKHR5cGUgPT0gIndlYmdsMiIpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9FeHRlbnNpb25zR0wuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0V4dGVuc2lvbnNHTC5oCmluZGV4IGQ1MDIx
ZGQzMzRlZGY5MWEzNDIzMGJlMDE2ODkyMDc0MjQ5ZWIwZTguLmFjOGM4ODkzMjM0NTY3MmU5ZDA1
M2ZjZDk3YTIyZGE4ZTk5MDVlOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0V4dGVuc2lvbnNHTC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0V4dGVuc2lvbnNHTC5oCkBAIC0yODEsMTIgKzI4MSw2IEBAIHB1YmxpYzoKICAgICAv
LyBleHRlcm5hbGx5LgogICAgIHZpcnR1YWwgR0NHTGludCBnZXRHcmFwaGljc1Jlc2V0U3RhdHVz
QVJCKCkgPSAwOwogCi0gICAgLy8gR0xfQU5HTEVfZnJhbWVidWZmZXJfYmxpdAotICAgIHZpcnR1
YWwgdm9pZCBibGl0RnJhbWVidWZmZXJBTkdMRShHQ0dMaW50IHNyY1gwLCBHQ0dMaW50IHNyY1kw
LCBHQ0dMaW50IHNyY1gxLCBHQ0dMaW50IHNyY1kxLCBHQ0dMaW50IGRzdFgwLCBHQ0dMaW50IGRz
dFkwLCBHQ0dMaW50IGRzdFgxLCBHQ0dMaW50IGRzdFkxLCBHQ0dMYml0ZmllbGQgbWFzaywgR0NH
TGVudW0gZmlsdGVyKSA9IDA7Ci0KLSAgICAvLyBHTF9BTkdMRV9mcmFtZWJ1ZmZlcl9tdWx0aXNh
bXBsZQotICAgIHZpcnR1YWwgdm9pZCByZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVBTkdM
RShHQ0dMZW51bSB0YXJnZXQsIEdDR0xzaXplaSBzYW1wbGVzLCBHQ0dMZW51bSBpbnRlcm5hbGZv
cm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KSA9IDA7Ci0KICAgICAvLyBH
TF9PRVNfdmVydGV4X2FycmF5X29iamVjdAogICAgIHZpcnR1YWwgUGxhdGZvcm1HTE9iamVjdCBj
cmVhdGVWZXJ0ZXhBcnJheU9FUygpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlVmVydGV4
QXJyYXlPRVMoUGxhdGZvcm1HTE9iamVjdCkgPSAwOwpAQCAtMjk2LDExICsyOTAsNiBAQCBwdWJs
aWM6CiAgICAgLy8gR0xfQU5HTEVfdHJhbnNsYXRlZF9zaGFkZXJfc291cmNlCiAgICAgdmlydHVh
bCBTdHJpbmcgZ2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFKFBsYXRmb3JtR0xPYmplY3Qp
ID0gMDsKIAotICAgIC8vIEdMX0VYVF9kZWJ1Z19tYXJrZXIKLSAgICB2aXJ0dWFsIHZvaWQgaW5z
ZXJ0RXZlbnRNYXJrZXJFWFQoY29uc3QgU3RyaW5nJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBw
dXNoR3JvdXBNYXJrZXJFWFQoY29uc3QgU3RyaW5nJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBw
b3BHcm91cE1hcmtlckVYVCgpID0gMDsKLQogICAgIC8vIEdMX0FSQl9kcmF3X2J1ZmZlcnMgLyBH
TF9FWFRfZHJhd19idWZmZXJzCiAgICAgdmlydHVhbCB2b2lkIGRyYXdCdWZmZXJzRVhUKEdDR0xT
cGFuPGNvbnN0IEdDR0xlbnVtPiBidWZzKSA9IDA7CiAKQEAgLTMwOSw0NyArMjk4LDYgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgdm9pZCBkcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRShHQ0dMZW51
bSBtb2RlLCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xlbnVtIHR5cGUsIEdDR0x2b2lkcHRyIG9mZnNl
dCwgR0NHTHNpemVpIHByaW1jb3VudCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB2ZXJ0ZXhBdHRy
aWJEaXZpc29yQU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0x1aW50IGRpdmlzb3IpID0gMDsKIAot
ICAgIC8vIEdMX0FOR0xFX3JvYnVzdF9jbGllbnRfbWVtb3J5Ci0gICAgdmlydHVhbCB2b2lkIHJl
YWRQaXhlbHNSb2J1c3RBTkdMRShHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRo
LCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xz
aXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHNpemVpKiBjb2x1bW5zLCBHQ0dM
c2l6ZWkqIHJvd3MsIEdDR0x2b2lkKiBwaXhlbHMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgdGV4
UGFyYW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBH
Q0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGZsb2F0KiBwYXJhbXMpID0gMDsKLSAgICB2aXJ0
dWFsIHZvaWQgdGV4UGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xl
bnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGludCogcGFyYW1zKSA9IDA7
Ci0KLSAgICB2aXJ0dWFsIHZvaWQgZ2V0UXVlcnlpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdl
dCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwg
R0NHTGludCogcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldFF1ZXJ5T2JqZWN0dWl2
Um9idXN0QU5HTEUoR0NHTHVpbnQgaWQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6
ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0x1aW50KiBwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFs
IHZvaWQgZ2V0QnVmZmVyUG9pbnRlcnZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xl
bnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0x2b2lk
KiogcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldFZlcnRleEF0dHJpYklpdlJvYnVz
dEFOR0xFKEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUs
IEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZv
aWQgZ2V0VmVydGV4QXR0cmliSXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IGluZGV4LCBHQ0dMZW51
bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMdWludCog
cGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldFVuaWZvcm11aXZSb2J1c3RBTkdMRShH
Q0dMdWludCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NH
THNpemVpKiBsZW5ndGgsIEdDR0x1aW50KiBwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQg
Z2V0QnVmZmVyUGFyYW1ldGVyaTY0dlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVu
dW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludDY0
KiBwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgc2FtcGxlclBhcmFtZXRlcml2Um9idXN0
QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXpl
LCBjb25zdCBHQ0dMaW50KiBwYXJhbSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBzYW1wbGVyUGFy
YW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NH
THNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xmbG9hdCogcGFyYW0pID0gMDsKLSAgICB2aXJ0dWFs
IHZvaWQgZ2V0U2FtcGxlclBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwg
R0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NH
TGludCogcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldFNhbXBsZXJQYXJhbWV0ZXJm
dlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkg
YnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xmbG9hdCogcGFyYW1zKSA9IDA7Ci0KLSAg
ICB2aXJ0dWFsIHZvaWQgZ2V0RnJhbWVidWZmZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xl
bnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkq
IGxlbmd0aCwgR0NHTGludCogcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldFByb2dy
YW1JbnRlcmZhY2VpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xlbnVtIHByb2dy
YW1JbnRlcmZhY2UsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVp
KiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRCb29s
ZWFuaV92Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMdWludCBpbmRleCwgR0NHTHNp
emVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMYm9vbGVhbiogZGF0YSkgPSAwOyAv
LyBOT0xJTlQKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0TXVsdGlzYW1wbGVmdlJvYnVzdEFOR0xFKEdD
R0xlbnVtIHBuYW1lLCBHQ0dMdWludCBpbmRleCwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXpl
aSogbGVuZ3RoLCBHQ0dMZmxvYXQqIHZhbCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRUZXhM
ZXZlbFBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVs
LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBH
Q0dMaW50KiBwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0VGV4TGV2ZWxQYXJhbWV0
ZXJmdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0g
cG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGZsb2F0KiBw
YXJhbXMpID0gMDsKLQotICAgIHZpcnR1YWwgdm9pZCBnZXRQb2ludGVydlJvYnVzdEFOR0xFUm9i
dXN0QU5HTEUoR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxl
bmd0aCwgR0NHTHZvaWQqKiBwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0blVuaWZv
cm1mdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xz
aXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGZsb2F0KiBwYXJhbXMpID0gMDsK
LSAgICB2aXJ0dWFsIHZvaWQgZ2V0blVuaWZvcm1pdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dy
YW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0
aCwgR0NHTGludCogcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldG5Vbmlmb3JtdWl2
Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVp
IGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMdWludCogcGFyYW1zKSA9IDA7Ci0gICAg
dmlydHVhbCB2b2lkIHRleFBhcmFtZXRlcklpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwg
R0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMaW50KiBwYXJhbXMp
ID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgdGV4UGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFKEdDR0xl
bnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dM
dWludCogcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldFRleFBhcmFtZXRlcklpdlJv
YnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZT
aXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVh
bCB2b2lkIGdldFRleFBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdD
R0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0x1
aW50KiBwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgc2FtcGxlclBhcmFtZXRlcklpdlJv
YnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVm
U2l6ZSwgY29uc3QgR0NHTGludCogcGFyYW0pID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgc2FtcGxl
clBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFt
ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0x1aW50KiBwYXJhbSkgPSAwOwotICAgIHZp
cnR1YWwgdm9pZCBnZXRTYW1wbGVyUGFyYW1ldGVySWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2Ft
cGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0
aCwgR0NHTGludCogcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldFNhbXBsZXJQYXJh
bWV0ZXJJdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdD
R0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHVpbnQqIHBhcmFtcykgPSAw
OwotCi0gICAgdmlydHVhbCB2b2lkIGdldFF1ZXJ5T2JqZWN0aXZSb2J1c3RBTkdMRShHQ0dMdWlu
dCBpZCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0
aCwgR0NHTGludCogcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldFF1ZXJ5T2JqZWN0
aTY0dlJvYnVzdEFOR0xFKEdDR0x1aW50IGlkLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1
ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50NjQqIHBhcmFtcykgPSAwOwotICAgIHZp
cnR1YWwgdm9pZCBnZXRRdWVyeU9iamVjdHVpNjR2Um9idXN0QU5HTEUoR0NHTHVpbnQgaWQsIEdD
R0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0x1
aW50NjQqIHBhcmFtcykgPSAwOwotCiAgICAgLy8gT3RoZXIgZnVuY3Rpb25zLgogI2lmICFVU0Uo
QU5HTEUpCiAgICAgLy8gRVhUIFJvYnVzdG5lc3MgLSB1c2VzIGdldEdyYXBoaWNzUmVzZXRTdGF0
dXNBUkIKQEAgLTM1NywxNiArMzA1LDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBnZXRu
VW5pZm9ybWZ2RVhUKEdDR0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXpl
aSBidWZTaXplLCBHQ0dMZmxvYXQqIHBhcmFtcykgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBnZXRu
VW5pZm9ybWl2RVhUKEdDR0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXpl
aSBidWZTaXplLCBHQ0dMaW50KiBwYXJhbXMpID0gMDsKIAotICAgIHZpcnR1YWwgYm9vbCBpc05W
SURJQSgpID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgaXNBTUQoKSA9IDA7Ci0gICAgdmlydHVhbCBi
b29sIGlzSW50ZWwoKSA9IDA7Ci0gICAgdmlydHVhbCBib29sIGlzSW1hZ2luYXRpb24oKSA9IDA7
Ci0gICAgdmlydHVhbCBTdHJpbmcgdmVuZG9yKCkgPSAwOwotCi0gICAgLy8gU29tZSBjb25maWd1
cmF0aW9ucyBoYXZlIGJ1Z3MgcmVnYXJkaW5nIGJ1aWx0LWluIGZ1bmN0aW9ucyBpbiB0aGVpciBP
cGVuR0wgZHJpdmVycwotICAgIC8vIHRoYXQgbXVzdCBiZSBhdm9pZGVkLiBQb3J0cyBzaG91bGQg
aW1wbGVtZW50IHRoZXNlIGZsYWdzIG9uIHN1Y2ggY29uZmlndXJhdGlvbnMuCi0gICAgdmlydHVh
bCBib29sIHJlcXVpcmVzQnVpbHRJbkZ1bmN0aW9uRW11bGF0aW9uKCkgPSAwOwotICAgIHZpcnR1
YWwgYm9vbCByZXF1aXJlc1Jlc3RyaWN0ZWRNYXhpbXVtVGV4dHVyZVNpemUoKSA9IDA7CiAjZW5k
aWYKIAogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1Jl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmNwcAppbmRleCA2
MGY3YTk0N2VmY2JiMzcxNTZjMDk4ZTBiNWVlMzNjM2I2MmI4NDliLi4yNmI3N2UwZmI3ZTNkOGEz
YzcwNGMxYWVjZTljNjkzYWUwZTQwNGZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eUJhc2UuY3BwCkBAIC0zOSwxMCArMzksMTcgQEAgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eUJhc2U6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlKGNvbnN0IEdyYXBoaWMK
IAogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6On5SZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5QmFzZSgpID0gZGVmYXVsdDsKIAorI2lmICFVU0UoQU5HTEUpCitFeHRlbnNpb25z
R0xPcGVuR0xDb21tb24mIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjpnZXRFeHRl
bnNpb25zKCkKK3sKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RXh0ZW5zaW9uc0dMT3BlbkdMQ29t
bW9uJj4oKnRoaXMpOworfQorI2Vsc2UKIEV4dGVuc2lvbnNHTCYgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eUJhc2U6OmdldEV4dGVuc2lvbnMoKQogewogICAgIHJldHVybiAqdGhpczsKIH0K
KyNlbmRpZgogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjpzZXRDb250
ZXh0VmlzaWJpbGl0eShib29sKQogewpAQCAtMTUwLDUzICsxNTcsNSBAQCBQbGF0Zm9ybUxheWVy
KiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6cGxhdGZvcm1MYXllcigpIGNvbnN0
CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAjZW5kaWYKLSNpZiAhVVNFKEFOR0xFKQotdm9pZCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6cmVhZG5QaXhlbHNFWFQoR0NHTGludCwg
R0NHTGludCwgR0NHTHNpemVpLCBHQ0dMc2l6ZWksIEdDR0xlbnVtLCBHQ0dMZW51bSwgR0NHTHNp
emVpLCBHQ0dMdm9pZCopCi17Ci19Ci0KLXZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eUJhc2U6OmdldG5Vbmlmb3JtZnZFWFQoR0NHTHVpbnQsIEdDR0xpbnQsIEdDR0xzaXplaSwgR0NH
TGZsb2F0KikKLXsKLX0KLQotdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6
Z2V0blVuaWZvcm1pdkVYVChHQ0dMdWludCwgR0NHTGludCwgR0NHTHNpemVpLCBHQ0dMaW50KikK
LXsKLX0KLQotYm9vbCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6aXNOVklESUEo
KQotewotICAgIHJldHVybiBmYWxzZTsKLX0KLQotYm9vbCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5QmFzZTo6aXNBTUQoKQotewotICAgIHJldHVybiBmYWxzZTsKLX0KLQotYm9vbCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6aXNJbnRlbCgpCi17Ci0gICAgcmV0dXJuIGZh
bHNlOwotfQotCi1ib29sIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjppc0ltYWdp
bmF0aW9uKCkKLXsKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLVN0cmluZyBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5QmFzZTo6dmVuZG9yKCkKLXsKLSAgICByZXR1cm4geyB9OwotfQotCi1i
b29sIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjpyZXF1aXJlc0J1aWx0SW5GdW5j
dGlvbkVtdWxhdGlvbigpCi17Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi1ib29sIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjpyZXF1aXJlc1Jlc3RyaWN0ZWRNYXhpbXVtVGV4dHVy
ZVNpemUoKQotewotICAgIHJldHVybiBmYWxzZTsKLX0KLSNlbmRpZgogfQogI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5QmFzZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuaAppbmRleCA3MjZhYWY2YzZhMGY2MmZmMjgy
ZTViOGQyMDJhMTI5NGUxZGU4NTcxLi45NjViNDM0N2JjNDdlYzAyMDUzMzBmOGUxMDhjOWI0MGY2
OTM5NzY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmgKQEAgLTMwLDYg
KzMwLDEwIEBACiAjaW5jbHVkZSAiRXh0ZW5zaW9uc0dMLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3ND
b250ZXh0R0wuaCIKIAorI2lmICFVU0UoQU5HTEUpCisjaW5jbHVkZSAiRXh0ZW5zaW9uc0dMT3Bl
bkdMQ29tbW9uLmgiCisjZW5kaWYKKwogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgogCkBAIC01OSw3ICs2MywxMiBAQCBwdWJsaWM6CiAg
ICAgLy8gT3RoZXIgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0wgb3ZlcnJpZGVzLgogICAgIHVz
aW5nIEdyYXBoaWNzQ29udGV4dEdMOjppc0VuYWJsZWQ7CiAgICAgUGxhdGZvcm1MYXllciogcGxh
dGZvcm1MYXllcigpIGNvbnN0IGZpbmFsOworI2lmICFVU0UoQU5HTEUpCisgICAgLy8gVXNlIGNv
dmFyaWFudCByZXR1cm4gdHlwZSBmb3IgT1BFTkdML09QRU5HTF9FUworICAgIEV4dGVuc2lvbnNH
TE9wZW5HTENvbW1vbiYgZ2V0RXh0ZW5zaW9ucygpIGZpbmFsOworI2Vsc2UKICAgICBFeHRlbnNp
b25zR0wmIGdldEV4dGVuc2lvbnMoKSBmaW5hbDsKKyNlbmRpZgogICAgIHZvaWQgc2V0Q29udGV4
dFZpc2liaWxpdHkoYm9vbCkgZmluYWw7CiAgICAgR3JhcGhpY3NDb250ZXh0R0xQb3dlclByZWZl
cmVuY2UgcG93ZXJQcmVmZXJlbmNlVXNlZEZvckNyZWF0aW9uKCkgY29uc3QgZmluYWw7CiAgICAg
Ym9vbCBpc0dMRVMyQ29tcGxpYW50KCkgY29uc3QgZmluYWw7CkBAIC04MCwyMCArODksNiBAQCBw
dWJsaWM6CiAgICAgdm9pZCBlbnN1cmVFbmFibGVkKGNvbnN0IFN0cmluZyYpIGZpbmFsOwogICAg
IGJvb2wgaXNFbmFibGVkKGNvbnN0IFN0cmluZyYpIGZpbmFsOwogCi0jaWYgIVVTRShBTkdMRSkK
LSAgICAvLyBGSVhNRTogVGhlc2UgYXJlIHN1cHBvc2VkIHRvIGJlIHJlbW92ZWQgaW4gaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxODg5Ni4KLSAgICB2b2lkIHJlYWRu
UGl4ZWxzRVhUKEdDR0xpbnQsIEdDR0xpbnQsIEdDR0xzaXplaSwgR0NHTHNpemVpLCBHQ0dMZW51
bSwgR0NHTGVudW0sIEdDR0xzaXplaSwgR0NHTHZvaWQqKSBmaW5hbDsKLSAgICB2b2lkIGdldG5V
bmlmb3JtZnZFWFQoR0NHTHVpbnQsIEdDR0xpbnQsIEdDR0xzaXplaSwgR0NHTGZsb2F0KikgZmlu
YWw7Ci0gICAgdm9pZCBnZXRuVW5pZm9ybWl2RVhUKEdDR0x1aW50LCBHQ0dMaW50LCBHQ0dMc2l6
ZWksIEdDR0xpbnQqKSBmaW5hbDsKLSAgICBib29sIGlzTlZJRElBKCkgZmluYWw7Ci0gICAgYm9v
bCBpc0FNRCgpIGZpbmFsOwotICAgIGJvb2wgaXNJbnRlbCgpIGZpbmFsOwotICAgIGJvb2wgaXNJ
bWFnaW5hdGlvbigpIGZpbmFsOwotICAgIFN0cmluZyB2ZW5kb3IoKSBmaW5hbDsKLSAgICBib29s
IHJlcXVpcmVzQnVpbHRJbkZ1bmN0aW9uRW11bGF0aW9uKCkgZmluYWw7Ci0gICAgYm9vbCByZXF1
aXJlc1Jlc3RyaWN0ZWRNYXhpbXVtVGV4dHVyZVNpemUoKSBmaW5hbDsKLSNlbmRpZgotCiBwcm90
ZWN0ZWQ6CiAgICAgdm9pZCBpbml0aWFsaXplKGNvbnN0IFN0cmluZyYgYXZhaWxhYmxlRXh0ZW5z
aW9ucywgY29uc3QgU3RyaW5nJiByZXF1ZXN0YWJsZUV4dGVuc2lvbnMpOwogICAgIHZpcnR1YWwg
dm9pZCB3YWl0VW50aWxJbml0aWFsaXplZCgpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmNwcApp
bmRleCA5MjBkOTJmMzVjYWRkOGJiMDg1MjNkMTc2NTc1NDEyMDk3ZjZjOTZmLi5mNTQwYWIzY2E4
NTBiMWYyN2NjNjJlZTk2NGNmMDRlMWQ4MTVlOGFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRlbnNpb25zR0xBTkdMRS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUuY3Bw
CkBAIC0zMywxMCArMzMsOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUV4dGVuc2lvbnNH
TEFOR0xFOjpFeHRlbnNpb25zR0xBTkdMRShHcmFwaGljc0NvbnRleHRHTE9wZW5HTCogY29udGV4
dCwgYm9vbCB1c2VJbmRleGVkR2V0U3RyaW5nKQorRXh0ZW5zaW9uc0dMQU5HTEU6OkV4dGVuc2lv
bnNHTEFOR0xFKEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiBjb250ZXh0KQogICAgIDogbV9pbml0
aWFsaXplZEF2YWlsYWJsZUV4dGVuc2lvbnMoZmFsc2UpCiAgICAgLCBtX2NvbnRleHQoY29udGV4
dCkKLSAgICAsIG1fdXNlSW5kZXhlZEdldFN0cmluZyh1c2VJbmRleGVkR2V0U3RyaW5nKQogewog
fQogCkBAIC05OSw0MiArOTgsMTUgQEAgU3RyaW5nIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRUcmFu
c2xhdGVkU2hhZGVyU291cmNlQU5HTEUoUGxhdGZvcm1HTE9iamVjdCBzaGFkZXIKIAogdm9pZCBF
eHRlbnNpb25zR0xBTkdMRTo6aW5pdGlhbGl6ZUF2YWlsYWJsZUV4dGVuc2lvbnMoKQogewotICAg
IGlmIChtX3VzZUluZGV4ZWRHZXRTdHJpbmcpIHsKLSAgICAgICAgR0xpbnQgbnVtRXh0ZW5zaW9u
cyA9IDA7Ci0gICAgICAgIGdsOjpHZXRJbnRlZ2VydihHTF9OVU1fRVhURU5TSU9OUywgJm51bUV4
dGVuc2lvbnMpOwotICAgICAgICBmb3IgKEdMaW50IGkgPSAwOyBpIDwgbnVtRXh0ZW5zaW9uczsg
KytpKQotICAgICAgICAgICAgbV9hdmFpbGFibGVFeHRlbnNpb25zLmFkZChnbDo6R2V0U3RyaW5n
aShHTF9FWFRFTlNJT05TLCBpKSk7Ci0gICAgICAgIGdsOjpHZXRJbnRlZ2VydihHTF9OVU1fUkVR
VUVTVEFCTEVfRVhURU5TSU9OU19BTkdMRSwgJm51bUV4dGVuc2lvbnMpOwotICAgICAgICBmb3Ig
KEdMaW50IGkgPSAwOyBpIDwgbnVtRXh0ZW5zaW9uczsgKytpKQotICAgICAgICAgICAgbV9yZXF1
ZXN0YWJsZUV4dGVuc2lvbnMuYWRkKGdsOjpHZXRTdHJpbmdpKEdMX1JFUVVFU1RBQkxFX0VYVEVO
U0lPTlNfQU5HTEUsIGkpKTsKLSAgICB9IGVsc2UgewotICAgICAgICBTdHJpbmcgZXh0ZW5zaW9u
c1N0cmluZyA9IGdldEV4dGVuc2lvbnMoKTsKLSAgICAgICAgZm9yIChhdXRvJiBleHRlbnNpb24g
OiBleHRlbnNpb25zU3RyaW5nLnNwbGl0KCcgJykpCi0gICAgICAgICAgICBtX2F2YWlsYWJsZUV4
dGVuc2lvbnMuYWRkKGV4dGVuc2lvbik7Ci0gICAgICAgIGV4dGVuc2lvbnNTdHJpbmcgPSBTdHJp
bmcocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZ2w6OkdldFN0cmluZyhHTF9SRVFVRVNU
QUJMRV9FWFRFTlNJT05TX0FOR0xFKSkpOwotICAgICAgICBmb3IgKGF1dG8mIGV4dGVuc2lvbiA6
IGV4dGVuc2lvbnNTdHJpbmcuc3BsaXQoJyAnKSkKLSAgICAgICAgICAgIG1fcmVxdWVzdGFibGVF
eHRlbnNpb25zLmFkZChleHRlbnNpb24pOwotICAgIH0KKyAgICBTdHJpbmcgZXh0ZW5zaW9uc1N0
cmluZyA9IGdldEV4dGVuc2lvbnMoKTsKKyAgICBmb3IgKGF1dG8mIGV4dGVuc2lvbiA6IGV4dGVu
c2lvbnNTdHJpbmcuc3BsaXQoJyAnKSkKKyAgICAgICAgbV9hdmFpbGFibGVFeHRlbnNpb25zLmFk
ZChleHRlbnNpb24pOworICAgIGV4dGVuc2lvbnNTdHJpbmcgPSBTdHJpbmcocmVpbnRlcnByZXRf
Y2FzdDxjb25zdCBjaGFyKj4oZ2w6OkdldFN0cmluZyhHTF9SRVFVRVNUQUJMRV9FWFRFTlNJT05T
X0FOR0xFKSkpOworICAgIGZvciAoYXV0byYgZXh0ZW5zaW9uIDogZXh0ZW5zaW9uc1N0cmluZy5z
cGxpdCgnICcpKQorICAgICAgICBtX3JlcXVlc3RhYmxlRXh0ZW5zaW9ucy5hZGQoZXh0ZW5zaW9u
KTsKICAgICBtX2luaXRpYWxpemVkQXZhaWxhYmxlRXh0ZW5zaW9ucyA9IHRydWU7CiB9CiAKLXZv
aWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmJsaXRGcmFtZWJ1ZmZlckFOR0xFKEdDR0xpbnQgc3JjWDAs
IEdDR0xpbnQgc3JjWTAsIEdDR0xpbnQgc3JjWDEsIEdDR0xpbnQgc3JjWTEsIEdDR0xpbnQgZHN0
WDAsIEdDR0xpbnQgZHN0WTAsIEdDR0xpbnQgZHN0WDEsIEdDR0xpbnQgZHN0WTEsIEdDR0xiaXRm
aWVsZCBtYXNrLCBHQ0dMZW51bSBmaWx0ZXIpCi17Ci0gICAgLy8gRklYTUU6IGNvbnNpZGVyIGFk
ZGluZyBzdXBwb3J0IGZvciBBUFBMRV9mcmFtZWJ1ZmZlcl9tdWx0aXNhbXBsZS4KLSAgICBpZiAo
IW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAg
IGdsOjpCbGl0RnJhbWVidWZmZXJBTkdMRShzcmNYMCwgc3JjWTAsIHNyY1gxLCBzcmNZMSwgZHN0
WDAsIGRzdFkwLCBkc3RYMSwgZHN0WTEsIG1hc2ssIGZpbHRlcik7Ci19Ci0KLXZvaWQgRXh0ZW5z
aW9uc0dMQU5HTEU6OnJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKEdDR0xlbnVt
IHRhcmdldCwgR0NHTHNpemVpIHNhbXBsZXMsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dM
c2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQpCi17Ci0gICAgaWYgKCFtX2NvbnRleHQtPm1h
a2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6UmVuZGVyYnVm
ZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5HTEUodGFyZ2V0LCBzYW1wbGVzLCBpbnRlcm5hbGZvcm1h
dCwgd2lkdGgsIGhlaWdodCk7Ci19Ci0KIFBsYXRmb3JtR0xPYmplY3QgRXh0ZW5zaW9uc0dMQU5H
TEU6OmNyZWF0ZVZlcnRleEFycmF5T0VTKCkKIHsKICAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNv
bnRleHRDdXJyZW50KCkpCkBAIC0xNzUsMjQgKzE0Nyw2IEBAIHZvaWQgRXh0ZW5zaW9uc0dMQU5H
TEU6OmJpbmRWZXJ0ZXhBcnJheU9FUyhQbGF0Zm9ybUdMT2JqZWN0IGFycmF5KQogICAgIGdsOjpC
aW5kVmVydGV4QXJyYXlPRVMoYXJyYXkpOwogfQogCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpp
bnNlcnRFdmVudE1hcmtlckVYVChjb25zdCBTdHJpbmcmKQotewotICAgIC8vIEZJWE1FOiBpbXBs
ZW1lbnQgdGhpcyBmdW5jdGlvbiBhbmQgYWRkIEdMX0VYVF9kZWJ1Z19tYXJrZXIgaW4gc3VwcG9y
dHMoKS4KLSAgICByZXR1cm47Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OnB1c2hHcm91
cE1hcmtlckVYVChjb25zdCBTdHJpbmcmKQotewotICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQgdGhp
cyBmdW5jdGlvbiBhbmQgYWRkIEdMX0VYVF9kZWJ1Z19tYXJrZXIgaW4gc3VwcG9ydHMoKS4KLSAg
ICByZXR1cm47Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OnBvcEdyb3VwTWFya2VyRVhU
KHZvaWQpCi17Ci0gICAgLy8gRklYTUU6IGltcGxlbWVudCB0aGlzIGZ1bmN0aW9uIGFuZCBhZGQg
R0xfRVhUX2RlYnVnX21hcmtlciBpbiBzdXBwb3J0cygpLgotICAgIHJldHVybjsKLX0KLQogYm9v
bCBFeHRlbnNpb25zR0xBTkdMRTo6c3VwcG9ydHNFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBuYW1l
KQogewogICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMobmFtZSkgfHwg
bV9yZXF1ZXN0YWJsZUV4dGVuc2lvbnMuY29udGFpbnMobmFtZSk7CkBAIC0yNDgsMjkxICsyMDIs
NiBAQCBHQ0dMZW51bSBFeHRlbnNpb25zR0xBTkdMRTo6YWRqdXN0V2ViR0wxVGV4dHVyZUludGVy
bmFsRm9ybWF0KEdDR0xlbnVtIGludGVybmFsZgogICAgIHJldHVybiBpbnRlcm5hbGZvcm1hdDsK
IH0KIAotLy8gR0xfQU5HTEVfcm9idXN0X2NsaWVudF9tZW1vcnkKLXZvaWQgRXh0ZW5zaW9uc0dM
QU5HTEU6OnJlYWRQaXhlbHNSb2J1c3RBTkdMRShpbnQgeCwgaW50IHksIEdDR0xzaXplaSB3aWR0
aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dM
c2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xzaXplaSAqY29sdW1ucywgR0NH
THNpemVpICpyb3dzLCB2b2lkICpwaXhlbHMpCi17Ci0gICAgaWYgKCFtX2NvbnRleHQtPm1ha2VD
b250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6UmVhZFBpeGVsc1Jv
YnVzdEFOR0xFKHgsIHksIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgYnVmU2l6ZSwgbGVu
Z3RoLCBjb2x1bW5zLCByb3dzLCBwaXhlbHMpOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xF
Ojp0ZXhQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5h
bWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMZmxvYXQgKnBhcmFtcykKLXsKLSAgICBp
ZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQot
ICAgIGdsOjpUZXhQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKHRhcmdldCwgcG5hbWUsIGJ1ZlNpemUs
IHBhcmFtcyk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OnRleFBhcmFtZXRlcml2Um9i
dXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNp
emUsIGNvbnN0IEdDR0xpbnQgKnBhcmFtcykKLXsKLSAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNv
bnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpUZXhQYXJhbWV0ZXJp
dlJvYnVzdEFOR0xFKHRhcmdldCwgcG5hbWUsIGJ1ZlNpemUsIHBhcmFtcyk7Ci19Ci0KLXZvaWQg
RXh0ZW5zaW9uc0dMQU5HTEU6OmdldFF1ZXJ5aXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQs
IEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdD
R0xpbnQgKnBhcmFtcykKLXsKLSAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50
KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpHZXRRdWVyeWl2Um9idXN0QU5HTEUodGFy
Z2V0LCBwbmFtZSwgYnVmU2l6ZSwgbGVuZ3RoLCBwYXJhbXMpOwotfQotCi12b2lkIEV4dGVuc2lv
bnNHTEFOR0xFOjpnZXRRdWVyeU9iamVjdHVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IGlkLCBHQ0dM
ZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMdWlu
dCAqcGFyYW1zKQotewotICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OkdldFF1ZXJ5T2JqZWN0dWl2Um9idXN0QU5HTEUo
aWQsIHBuYW1lLCBidWZTaXplLCBsZW5ndGgsIHBhcmFtcyk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9u
c0dMQU5HTEU6OmdldEJ1ZmZlclBvaW50ZXJ2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCB2b2lk
ICoqcGFyYW1zKQotewotICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OkdldEJ1ZmZlclBvaW50ZXJ2Um9idXN0QU5HTEUo
dGFyZ2V0LCBwbmFtZSwgYnVmU2l6ZSwgbGVuZ3RoLCBwYXJhbXMpOwotfQotCi12b2lkIEV4dGVu
c2lvbnNHTEFOR0xFOjpnZXRWZXJ0ZXhBdHRyaWJJaXZSb2J1c3RBTkdMRShHQ0dMdWludCBpbmRl
eCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwg
R0NHTGludCAqcGFyYW1zKQotewotICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJl
bnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OkdldFZlcnRleEF0dHJpYklpdlJvYnVz
dEFOR0xFKGluZGV4LCBwbmFtZSwgYnVmU2l6ZSwgbGVuZ3RoLCBwYXJhbXMpOwotfQotCi12b2lk
IEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRWZXJ0ZXhBdHRyaWJJdWl2Um9idXN0QU5HTEUoR0NHTHVp
bnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICps
ZW5ndGgsIEdDR0x1aW50ICpwYXJhbXMpCi17Ci0gICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250
ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6R2V0VmVydGV4QXR0cmli
SXVpdlJvYnVzdEFOR0xFKGluZGV4LCBwbmFtZSwgYnVmU2l6ZSwgbGVuZ3RoLCBwYXJhbXMpOwot
fQotCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRVbmlmb3JtdWl2Um9idXN0QU5HTEUoR0NH
THVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xz
aXplaSAqbGVuZ3RoLCBHQ0dMdWludCAqcGFyYW1zKQotewotICAgIGlmICghbV9jb250ZXh0LT5t
YWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OkdldFVuaWZv
cm11aXZSb2J1c3RBTkdMRShwcm9ncmFtLCBsb2NhdGlvbiwgYnVmU2l6ZSwgbGVuZ3RoLCBwYXJh
bXMpOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRCdWZmZXJQYXJhbWV0ZXJpNjR2
Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1
ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50NjQgKnBhcmFtcykKLXsKLSAgICBpZiAo
IW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAg
IGdsOjpHZXRCdWZmZXJQYXJhbWV0ZXJpNjR2Um9idXN0QU5HTEUodGFyZ2V0LCBwbmFtZSwgYnVm
U2l6ZSwgbGVuZ3RoLCByZWludGVycHJldF9jYXN0PEdMaW50NjQqPihwYXJhbXMpKTsKLX0KLQot
dm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6c2FtcGxlclBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NH
THVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBH
Q0dMaW50ICpwYXJhbSkKLXsKLSAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50
KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpTYW1wbGVyUGFyYW1ldGVyaXZSb2J1c3RB
TkdMRShzYW1wbGVyLCBwbmFtZSwgYnVmU2l6ZSwgcGFyYW0pOwotfQotCi12b2lkIEV4dGVuc2lv
bnNHTEFOR0xFOjpzYW1wbGVyUGFyYW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVy
LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xmbG9hdCAqcGFy
YW0pCi17Ci0gICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAg
ICByZXR1cm47Ci0KLSAgICBnbDo6U2FtcGxlclBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoc2FtcGxl
ciwgcG5hbWUsIGJ1ZlNpemUsIHBhcmFtKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6
Z2V0U2FtcGxlclBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVu
dW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAq
cGFyYW1zKQotewotICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAg
ICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OkdldFNhbXBsZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xF
KHNhbXBsZXIsIHBuYW1lLCBidWZTaXplLCBsZW5ndGgsIHBhcmFtcyk7Ci19Ci0KLXZvaWQgRXh0
ZW5zaW9uc0dMQU5HTEU6OmdldFNhbXBsZXJQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0x1aW50
IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICps
ZW5ndGgsIEdDR0xmbG9hdCAqcGFyYW1zKQotewotICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29u
dGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OkdldFNhbXBsZXJQYXJh
bWV0ZXJmdlJvYnVzdEFOR0xFKHNhbXBsZXIsIHBuYW1lLCBidWZTaXplLCBsZW5ndGgsIHBhcmFt
cyk7Ci19Ci0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0RnJhbWVidWZmZXJQYXJhbWV0
ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXpl
aSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKQotewotICAgIGlm
ICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0g
ICAgZ2w6OkdldEZyYW1lYnVmZmVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRSh0YXJnZXQsIHBuYW1l
LCBidWZTaXplLCBsZW5ndGgsIHBhcmFtcyk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6
OmdldFByb2dyYW1JbnRlcmZhY2VpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xl
bnVtIHByb2dyYW1JbnRlcmZhY2UsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwg
R0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykKLXsKLSAgICBpZiAoIW1fY29udGV4
dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpHZXRQ
cm9ncmFtSW50ZXJmYWNlaXZSb2J1c3RBTkdMRShwcm9ncmFtLCBwcm9ncmFtSW50ZXJmYWNlLCBw
bmFtZSwgYnVmU2l6ZSwgbGVuZ3RoLCBwYXJhbXMpOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTEFO
R0xFOjpnZXRCb29sZWFuaV92Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMdWludCBp
bmRleCwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMYm9vbGVhbiAq
ZGF0YSkKLXsKLSAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAg
ICAgIHJldHVybjsKLQotICAgIGdsOjpHZXRCb29sZWFuaV92Um9idXN0QU5HTEUodGFyZ2V0LCBp
bmRleCwgYnVmU2l6ZSwgbGVuZ3RoLCBkYXRhKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdM
RTo6Z2V0TXVsdGlzYW1wbGVmdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHBuYW1lLCBHQ0dMdWludCBp
bmRleCwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMZmxvYXQgKnZh
bCkKLXsKLSAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAg
IHJldHVybjsKLQotICAgIGdsOjpHZXRNdWx0aXNhbXBsZWZ2Um9idXN0QU5HTEUocG5hbWUsIGlu
ZGV4LCBidWZTaXplLCBsZW5ndGgsIHZhbCk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6
OmdldFRleExldmVsUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xp
bnQgbGV2ZWwsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICps
ZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykKLXsKLSAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRl
eHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpHZXRUZXhMZXZlbFBhcmFt
ZXRlcml2Um9idXN0QU5HTEUodGFyZ2V0LCBsZXZlbCwgcG5hbWUsIGJ1ZlNpemUsIGxlbmd0aCwg
cGFyYW1zKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0VGV4TGV2ZWxQYXJhbWV0
ZXJmdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0g
cG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGZsb2F0ICpw
YXJhbXMpCi17Ci0gICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAg
ICAgICByZXR1cm47Ci0KLSAgICBnbDo6R2V0VGV4TGV2ZWxQYXJhbWV0ZXJmdlJvYnVzdEFOR0xF
KHRhcmdldCwgbGV2ZWwsIHBuYW1lLCBidWZTaXplLCBsZW5ndGgsIHBhcmFtcyk7Ci19Ci0KLQot
dm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0UG9pbnRlcnZSb2J1c3RBTkdMRVJvYnVzdEFOR0xF
KEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIHZv
aWQgKipwYXJhbXMpCi17Ci0gICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgp
KQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6R2V0UG9pbnRlcnZSb2J1c3RBTkdMRVJvYnVz
dEFOR0xFKHBuYW1lLCBidWZTaXplLCBsZW5ndGgsIHBhcmFtcyk7Ci19Ci0KLXZvaWQgRXh0ZW5z
aW9uc0dMQU5HTEU6OmdldG5Vbmlmb3JtZnZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBH
Q0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdD
R0xmbG9hdCAqcGFyYW1zKQotewotICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJl
bnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OkdldG5Vbmlmb3JtZnZSb2J1c3RBTkdM
RShwcm9ncmFtLCBsb2NhdGlvbiwgYnVmU2l6ZSwgbGVuZ3RoLCBwYXJhbXMpOwotfQotCi12b2lk
IEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRuVW5pZm9ybWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJv
Z3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVu
Z3RoLCBHQ0dMaW50ICpwYXJhbXMpCi17Ci0gICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0
Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6R2V0blVuaWZvcm1pdlJvYnVz
dEFOR0xFKHByb2dyYW0sIGxvY2F0aW9uLCBidWZTaXplLCBsZW5ndGgsIHBhcmFtcyk7Ci19Ci0K
LXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldG5Vbmlmb3JtdWl2Um9idXN0QU5HTEUoR0NHTHVp
bnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXpl
aSAqbGVuZ3RoLCBHQ0dMdWludCAqcGFyYW1zKQotewotICAgIGlmICghbV9jb250ZXh0LT5tYWtl
Q29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OkdldG5Vbmlmb3Jt
dWl2Um9idXN0QU5HTEUocHJvZ3JhbSwgbG9jYXRpb24sIGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1z
KTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6dGV4UGFyYW1ldGVySWl2Um9idXN0QU5H
TEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNv
bnN0IEdDR0xpbnQgKnBhcmFtcykKLXsKLSAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRD
dXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpUZXhQYXJhbWV0ZXJJaXZSb2J1
c3RBTkdMRSh0YXJnZXQsIHBuYW1lLCBidWZTaXplLCBwYXJhbXMpOwotfQotCi12b2lkIEV4dGVu
c2lvbnNHTEFOR0xFOjp0ZXhQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0x1aW50ICpwYXJh
bXMpCi17Ci0gICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAg
ICByZXR1cm47Ci0KLSAgICBnbDo6VGV4UGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFKHRhcmdldCwg
cG5hbWUsIGJ1ZlNpemUsIHBhcmFtcyk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6Omdl
dFRleFBhcmFtZXRlcklpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5h
bWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1z
KQotewotICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgZ2w6OkdldFRleFBhcmFtZXRlcklpdlJvYnVzdEFOR0xFKHRhcmdldCwg
cG5hbWUsIGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1zKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xB
TkdMRTo6Z2V0VGV4UGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NH
TGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHVp
bnQgKnBhcmFtcykKLXsKLSAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkp
Ci0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpHZXRUZXhQYXJhbWV0ZXJJdWl2Um9idXN0QU5H
TEUodGFyZ2V0LCBwbmFtZSwgYnVmU2l6ZSwgbGVuZ3RoLCBwYXJhbXMpOwotfQotCi12b2lkIEV4
dGVuc2lvbnNHTEFOR0xFOjpzYW1wbGVyUGFyYW1ldGVySWl2Um9idXN0QU5HTEUoR0NHTHVpbnQg
c2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMaW50
ICpwYXJhbSkKLXsKLSAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0g
ICAgICAgIHJldHVybjsKLQotICAgIGdsOjpTYW1wbGVyUGFyYW1ldGVySWl2Um9idXN0QU5HTEUo
c2FtcGxlciwgcG5hbWUsIGJ1ZlNpemUsIHBhcmFtKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xB
TkdMRTo6c2FtcGxlclBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBH
Q0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0x1aW50ICpwYXJhbSkK
LXsKLSAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJl
dHVybjsKLQotICAgIGdsOjpTYW1wbGVyUGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFKHNhbXBsZXIs
IHBuYW1lLCBidWZTaXplLCBwYXJhbSk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6Omdl
dFNhbXBsZXJQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51
bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpw
YXJhbXMpCi17Ci0gICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAg
ICAgICByZXR1cm47Ci0KLSAgICBnbDo6R2V0U2FtcGxlclBhcmFtZXRlcklpdlJvYnVzdEFOR0xF
KHNhbXBsZXIsIHBuYW1lLCBidWZTaXplLCBsZW5ndGgsIHBhcmFtcyk7Ci19Ci0KLXZvaWQgRXh0
ZW5zaW9uc0dMQU5HTEU6OmdldFNhbXBsZXJQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUoR0NHTHVp
bnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkg
Kmxlbmd0aCwgR0NHTHVpbnQgKnBhcmFtcykKLXsKLSAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNv
bnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpHZXRTYW1wbGVyUGFy
YW1ldGVySXVpdlJvYnVzdEFOR0xFKHNhbXBsZXIsIHBuYW1lLCBidWZTaXplLCBsZW5ndGgsIHBh
cmFtcyk7Ci19Ci0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0UXVlcnlPYmplY3RpdlJv
YnVzdEFOR0xFKEdDR0x1aW50IGlkLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUs
IEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpCi17Ci0gICAgaWYgKCFtX2NvbnRl
eHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6R2V0
UXVlcnlPYmplY3RpdlJvYnVzdEFOR0xFKGlkLCBwbmFtZSwgYnVmU2l6ZSwgbGVuZ3RoLCBwYXJh
bXMpOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRRdWVyeU9iamVjdGk2NHZSb2J1
c3RBTkdMRShHQ0dMdWludCBpZCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBH
Q0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludDY0ICpwYXJhbXMpCi17Ci0gICAgaWYgKCFtX2NvbnRl
eHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6R2V0
UXVlcnlPYmplY3RpNjR2Um9idXN0QU5HTEUoaWQsIHBuYW1lLCBidWZTaXplLCBsZW5ndGgsIHJl
aW50ZXJwcmV0X2Nhc3Q8R0xpbnQ2NCo+KHBhcmFtcykpOwotfQotCi12b2lkIEV4dGVuc2lvbnNH
TEFOR0xFOjpnZXRRdWVyeU9iamVjdHVpNjR2Um9idXN0QU5HTEUoR0NHTHVpbnQgaWQsIEdDR0xl
bnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0x1aW50
NjQgKnBhcmFtcykKLXsKLSAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkp
Ci0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpHZXRRdWVyeU9iamVjdHVpNjR2Um9idXN0QU5H
TEUoaWQsIHBuYW1lLCBidWZTaXplLCBsZW5ndGgsIHJlaW50ZXJwcmV0X2Nhc3Q8R0x1aW50NjQq
PihwYXJhbXMpKTsKLX0KLQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBF
TkFCTEUoV0VCR0wpICYmIFVTRShBTkdMRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRlbnNpb25zR0xBTkdMRS5oCmluZGV4IGIyZDI3
N2I5YWM5ZDI3ODYwZjU1YWJhYmY4Y2ZlNTVlODRiNWY1N2UuLjAwNDIzMzc3MjAzNGJmYTNlYWMx
MzdkYzM2MzQ4MDkxNmRlYWFmN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUuaApAQCAtMzYsNyArMzYs
NyBAQCBjbGFzcyBFeHRlbnNpb25zR0xBTkdMRSA6IHB1YmxpYyBFeHRlbnNpb25zR0wgewogICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIC8vIFRoaXMgY2xhc3Mgb25s
eSBuZWVkcyB0byBiZSBpbnN0YW50aWF0ZWQgYnkgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wgaW1w
bGVtZW50YXRpb25zLgotICAgIEV4dGVuc2lvbnNHTEFOR0xFKEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMKiwgYm9vbCB1c2VJbmRleGVkR2V0U3RyaW5nID0gZmFsc2UpOworICAgIGV4cGxpY2l0IEV4
dGVuc2lvbnNHTEFOR0xFKEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKik7CiAgICAgdmlydHVhbCB+
RXh0ZW5zaW9uc0dMQU5HTEUoKTsKIAogICAgIC8vIEV4dGVuc2lvbnNHTCBtZXRob2RzLgpAQCAt
NDksNjAgKzQ5LDE0IEBAIHB1YmxpYzoKICAgICB2b2lkIGRlbGV0ZVZlcnRleEFycmF5T0VTKFBs
YXRmb3JtR0xPYmplY3QpIG92ZXJyaWRlOwogICAgIEdDR0xib29sZWFuIGlzVmVydGV4QXJyYXlP
RVMoUGxhdGZvcm1HTE9iamVjdCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBiaW5kVmVydGV4QXJyYXlP
RVMoUGxhdGZvcm1HTE9iamVjdCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBpbnNlcnRFdmVudE1hcmtl
ckVYVChjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKLSAgICB2b2lkIHB1c2hHcm91cE1hcmtlckVY
VChjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKLSAgICB2b2lkIHBvcEdyb3VwTWFya2VyRVhUKHZv
aWQpIG92ZXJyaWRlOwogICAgIHZvaWQgZHJhd0J1ZmZlcnNFWFQoR0NHTFNwYW48Y29uc3QgR0NH
TGVudW0+KSBvdmVycmlkZTsKIAogICAgIFN0cmluZyBnZXRUcmFuc2xhdGVkU2hhZGVyU291cmNl
QU5HTEUoUGxhdGZvcm1HTE9iamVjdCkgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIGJsaXRGcmFtZWJ1
ZmZlckFOR0xFKEdDR0xpbnQgc3JjWDAsIEdDR0xpbnQgc3JjWTAsIEdDR0xpbnQgc3JjWDEsIEdD
R0xpbnQgc3JjWTEsIEdDR0xpbnQgZHN0WDAsIEdDR0xpbnQgZHN0WTAsIEdDR0xpbnQgZHN0WDEs
IEdDR0xpbnQgZHN0WTEsIEdDR0xiaXRmaWVsZCBtYXNrLCBHQ0dMZW51bSBmaWx0ZXIpIG92ZXJy
aWRlOwotICAgIHZvaWQgcmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5HTEUoR0NHTGVu
dW0gdGFyZ2V0LCBHQ0dMc2l6ZWkgc2FtcGxlcywgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdD
R0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkgb3ZlcnJpZGU7Ci0KICAgICB2b2lkIGRy
YXdBcnJheXNJbnN0YW5jZWRBTkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMaW50IGZpcnN0LCBHQ0dM
c2l6ZWkgY291bnQsIEdDR0xzaXplaSBwcmltY291bnQpIG92ZXJyaWRlOwogICAgIHZvaWQgZHJh
d0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUoR0NHTGVudW0gbW9kZSwgR0NHTHNpemVpIGNvdW50LCBH
Q0dMZW51bSB0eXBlLCBHQ0dMdm9pZHB0ciBvZmZzZXQsIEdDR0xzaXplaSBwcmltY291bnQpIG92
ZXJyaWRlOwogICAgIHZvaWQgdmVydGV4QXR0cmliRGl2aXNvckFOR0xFKEdDR0x1aW50IGluZGV4
LCBHQ0dMdWludCBkaXZpc29yKSBvdmVycmlkZTsKIAotICAgIC8vIEdMX0FOR0xFX3JvYnVzdF9j
bGllbnRfbWVtb3J5Ci0gICAgdm9pZCByZWFkUGl4ZWxzUm9idXN0QU5HTEUoR0NHTGludCB4LCBH
Q0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9y
bWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgs
IEdDR0xzaXplaSAqY29sdW1ucywgR0NHTHNpemVpICpyb3dzLCB2b2lkICpwaXhlbHMpIG92ZXJy
aWRlOwotICAgIHZvaWQgdGV4UGFyYW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQs
IEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGZsb2F0ICpwYXJh
bXMpIG92ZXJyaWRlOwotICAgIHZvaWQgdGV4UGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51
bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGlu
dCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldFF1ZXJ5aXZSb2J1c3RBTkdMRShHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVp
ICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRRdWVyeU9i
amVjdHVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IGlkLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVp
IGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMdWludCAqcGFyYW1zKSBvdmVycmlkZTsK
LSAgICB2b2lkIGdldEJ1ZmZlclBvaW50ZXJ2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCB2b2lk
ICoqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldFZlcnRleEF0dHJpYklpdlJvYnVzdEFO
R0xFKEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdD
R0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0
VmVydGV4QXR0cmliSXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFt
ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMdWludCAqcGFyYW1z
KSBvdmVycmlkZTsKLSAgICB2b2lkIGdldFVuaWZvcm11aXZSb2J1c3RBTkdMRShHQ0dMdWludCBw
cm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICps
ZW5ndGgsIEdDR0x1aW50ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0QnVmZmVyUGFy
YW1ldGVyaTY0dlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdD
R0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludDY0ICpwYXJhbXMpIG92
ZXJyaWRlOwotICAgIHZvaWQgc2FtcGxlclBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTHVpbnQg
c2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMaW50
ICpwYXJhbSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzYW1wbGVyUGFyYW1ldGVyZnZSb2J1c3RBTkdM
RShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNv
bnN0IEdDR0xmbG9hdCAqcGFyYW0pIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0U2FtcGxlclBhcmFt
ZXRlcml2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xz
aXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVycmlk
ZTsKLSAgICB2b2lkIGdldFNhbXBsZXJQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNh
bXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5n
dGgsIEdDR0xmbG9hdCAqcGFyYW1zKSBvdmVycmlkZTsKLQotICAgIHZvaWQgZ2V0RnJhbWVidWZm
ZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUs
IEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSBv
dmVycmlkZTsKLSAgICB2b2lkIGdldFByb2dyYW1JbnRlcmZhY2VpdlJvYnVzdEFOR0xFKEdDR0x1
aW50IHByb2dyYW0sIEdDR0xlbnVtIHByb2dyYW1JbnRlcmZhY2UsIEdDR0xlbnVtIHBuYW1lLCBH
Q0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykgb3Zl
cnJpZGU7Ci0gICAgdm9pZCBnZXRCb29sZWFuaV92Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMdWludCBpbmRleCwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBH
Q0dMYm9vbGVhbiAqZGF0YSkgb3ZlcnJpZGU7IC8vIE5PTElOVAotICAgIHZvaWQgZ2V0TXVsdGlz
YW1wbGVmdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHBuYW1lLCBHQ0dMdWludCBpbmRleCwgR0NHTHNp
emVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMZmxvYXQgKnZhbCkgb3ZlcnJpZGU7
Ci0gICAgdm9pZCBnZXRUZXhMZXZlbFBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdD
R0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0
VGV4TGV2ZWxQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBs
ZXZlbCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0
aCwgR0NHTGZsb2F0ICpwYXJhbXMpIG92ZXJyaWRlOwotCi0gICAgdm9pZCBnZXRQb2ludGVydlJv
YnVzdEFOR0xFUm9idXN0QU5HTEUoR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBH
Q0dMc2l6ZWkgKmxlbmd0aCwgdm9pZCAqKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRu
VW5pZm9ybWZ2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwg
R0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMZmxvYXQgKnBhcmFtcykg
b3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRuVW5pZm9ybWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJv
Z3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVu
Z3RoLCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0blVuaWZvcm11aXZS
b2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkg
YnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0x1aW50ICpwYXJhbXMpIG92ZXJyaWRlOwot
ICAgIHZvaWQgdGV4UGFyYW1ldGVySWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dM
ZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xpbnQgKnBhcmFtcykgb3Zl
cnJpZGU7Ci0gICAgdm9pZCB0ZXhQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0x1aW50ICpw
YXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0VGV4UGFyYW1ldGVySWl2Um9idXN0QU5HTEUo
R0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xz
aXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0VGV4
UGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUs
IEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHVpbnQgKnBhcmFtcykg
b3ZlcnJpZGU7Ci0gICAgdm9pZCBzYW1wbGVyUGFyYW1ldGVySWl2Um9idXN0QU5HTEUoR0NHTHVp
bnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dM
aW50ICpwYXJhbSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzYW1wbGVyUGFyYW1ldGVySXVpdlJvYnVz
dEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6
ZSwgY29uc3QgR0NHTHVpbnQgKnBhcmFtKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldFNhbXBsZXJQ
YXJhbWV0ZXJJaXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwg
R0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpIG92
ZXJyaWRlOwotICAgIHZvaWQgZ2V0U2FtcGxlclBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRShHQ0dM
dWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXpl
aSAqbGVuZ3RoLCBHQ0dMdWludCAqcGFyYW1zKSBvdmVycmlkZTsKLQotICAgIHZvaWQgZ2V0UXVl
cnlPYmplY3RpdlJvYnVzdEFOR0xFKEdDR0x1aW50IGlkLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNp
emVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJyaWRl
OwotICAgIHZvaWQgZ2V0UXVlcnlPYmplY3RpNjR2Um9idXN0QU5HTEUoR0NHTHVpbnQgaWQsIEdD
R0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xp
bnQ2NCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldFF1ZXJ5T2JqZWN0dWk2NHZSb2J1
c3RBTkdMRShHQ0dMdWludCBpZCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBH
Q0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHVpbnQ2NCAqcGFyYW1zKSBvdmVycmlkZTsKLQogICAgIC8v
IE9ubHkgZm9yIG5vbi1XZWJHTCAyLjAgY29udGV4dHMuCiAgICAgR0NHTGVudW0gYWRqdXN0V2Vi
R0wxVGV4dHVyZUludGVybmFsRm9ybWF0KEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMZW51
bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUpOwogCkBAIC0xMTksOCArNzMsNiBAQCBwcml2YXRlOgog
ICAgIC8vIFdlYWsgcG9pbnRlciBiYWNrIHRvIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMLgogICAg
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiBtX2NvbnRleHQ7CiAKLSAgICBib29sIG1fdXNlSW5k
ZXhlZEdldFN0cmluZyB7IGZhbHNlIH07Ci0KICAgICAvLyBXaGV0aGVyIHRoZSBXZWJHTCAxLjAt
cmVsYXRlZCBmbG9hdGluZy1wb2ludCByZW5kZXJhYmlsaXR5IGV4dGVuc2lvbnMgaGF2ZSBiZWVu
IGVuYWJsZWQuCiAgICAgYm9vbCBtX3dlYmdsQ29sb3JCdWZmZXJGbG9hdFJHQiB7IGZhbHNlIH07
CiAgICAgYm9vbCBtX3dlYmdsQ29sb3JCdWZmZXJGbG9hdFJHQkEgeyBmYWxzZSB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250
ZXh0R0xBTkdMRS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9H
cmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcAppbmRleCAzMDlhNTMwOWI2NDBhM2Q2YTI4MTQxY2E3
YjFhNzVkYjQ2ZTlmOTUxLi4xZDI0ZTNkNGVjYjk1NTU5ODAxZThhODNjOTUzNGE1YWZkMjA5MjU3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFw
aGljc0NvbnRleHRHTEFOR0xFLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcApAQCAtMjI1MCw2ICsyMjUwLDkg
QEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6bWFya0NvbnRleHRDaGFuZ2VkKCkKIAog
dm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6bWFya0xheWVyQ29tcG9zaXRlZCgpCiB7Cisg
ICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKKyAgICAgICAgcmV0dXJuOworCiAgICAgbV9s
YXllckNvbXBvc2l0ZWQgPSB0cnVlOwogICAgIHJlc2V0QnVmZmVyc1RvQXV0b0NsZWFyKCk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRl
bnNpb25zR0xPcGVuR0wuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Bl
bmdsL0V4dGVuc2lvbnNHTE9wZW5HTC5jcHAKaW5kZXggODQyMjg0NmI2ZjYyYTc1NTRlOGIyZGNm
MDI0N2ZmNjA1Mzk1ZDQ1YS4uODZkMTljYWFmYjZlM2YwZTMyMWRlMTczMjEyYTU0ZmNlNjFmNzFl
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4
dGVuc2lvbnNHTE9wZW5HTC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTC5jcHAKQEAgLTQ4LDIyICs0OCw2IEBAIEV4dGVu
c2lvbnNHTE9wZW5HTDo6RXh0ZW5zaW9uc0dMT3BlbkdMKEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
KiBjb250ZXh0LCBib29sIHVzCiBFeHRlbnNpb25zR0xPcGVuR0w6On5FeHRlbnNpb25zR0xPcGVu
R0woKSA9IGRlZmF1bHQ7CiAKIAotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0w6OmJsaXRGcmFtZWJ1
ZmZlckFOR0xFKEdDR0xpbnQgc3JjWDAsIEdDR0xpbnQgc3JjWTAsIEdDR0xpbnQgc3JjWDEsIEdD
R0xpbnQgc3JjWTEsIEdDR0xpbnQgZHN0WDAsIEdDR0xpbnQgZHN0WTAsIEdDR0xpbnQgZHN0WDEs
IEdDR0xpbnQgZHN0WTEsIEdDR0xiaXRmaWVsZCBtYXNrLCBHQ0dMZW51bSBmaWx0ZXIpCi17Ci0g
ICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47
Ci0KLSAgICA6OmdsQmxpdEZyYW1lYnVmZmVyRVhUKHNyY1gwLCBzcmNZMCwgc3JjWDEsIHNyY1kx
LCBkc3RYMCwgZHN0WTAsIGRzdFgxLCBkc3RZMSwgbWFzaywgZmlsdGVyKTsKLX0KLQotdm9pZCBF
eHRlbnNpb25zR0xPcGVuR0w6OnJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKEdD
R0xlbnVtIHRhcmdldCwgR0NHTHNpemVpIHNhbXBsZXMsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0
LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQpCi17Ci0gICAgaWYgKCFtX2NvbnRl
eHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICA6OmdsUmVu
ZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlRVhUKHRhcmdldCwgc2FtcGxlcywgaW50ZXJuYWxm
b3JtYXQsIHdpZHRoLCBoZWlnaHQpOwotfQotCiBQbGF0Zm9ybUdMT2JqZWN0IEV4dGVuc2lvbnNH
TE9wZW5HTDo6Y3JlYXRlVmVydGV4QXJyYXlPRVMoKQogewogICAgIGlmICghbV9jb250ZXh0LT5t
YWtlQ29udGV4dEN1cnJlbnQoKSkKQEAgLTEyNywyNCArMTExLDYgQEAgdm9pZCBFeHRlbnNpb25z
R0xPcGVuR0w6OmJpbmRWZXJ0ZXhBcnJheU9FUyhQbGF0Zm9ybUdMT2JqZWN0IGFycmF5KQogI2Vu
ZGlmCiB9CiAKLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMOjppbnNlcnRFdmVudE1hcmtlckVYVChj
b25zdCBTdHJpbmcmKQotewotICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQgdGhpcyBmdW5jdGlvbiBh
bmQgYWRkIEdMX0VYVF9kZWJ1Z19tYXJrZXIgaW4gc3VwcG9ydHMoKS4KLSAgICByZXR1cm47Ci19
Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMOjpwdXNoR3JvdXBNYXJrZXJFWFQoY29uc3QgU3Ry
aW5nJikKLXsKLSAgICAvLyBGSVhNRTogaW1wbGVtZW50IHRoaXMgZnVuY3Rpb24gYW5kIGFkZCBH
TF9FWFRfZGVidWdfbWFya2VyIGluIHN1cHBvcnRzKCkuCi0gICAgcmV0dXJuOwotfQotCi12b2lk
IEV4dGVuc2lvbnNHTE9wZW5HTDo6cG9wR3JvdXBNYXJrZXJFWFQodm9pZCkKLXsKLSAgICAvLyBG
SVhNRTogaW1wbGVtZW50IHRoaXMgZnVuY3Rpb24gYW5kIGFkZCBHTF9FWFRfZGVidWdfbWFya2Vy
IGluIHN1cHBvcnRzKCkuCi0gICAgcmV0dXJuOwotfQotCiBib29sIEV4dGVuc2lvbnNHTE9wZW5H
TDo6c3VwcG9ydHNFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBuYW1lKQogewogICAgIC8vIEdMX0FO
R0xFX2ZyYW1lYnVmZmVyX2JsaXQgYW5kIEdMX0FOR0xFX2ZyYW1lYnVmZmVyX211bHRpc2FtcGxl
IGFyZSAiZmFrZSIuIFRoZXkgYXJlIGltcGxlbWVudGVkIHVzaW5nIG90aGVyCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3Bl
bkdMLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9u
c0dMT3BlbkdMLmgKaW5kZXggNDc1MDIyNmVjZWNlZjQ0Mzk2ZTk5Mzg2NzZjYjYzOWJlODM0Mzdi
Ni4uMGFkYmQ3MDUwYjdlM2Y3N2UwMTg4OTQzMzJmZmM4N2NmMzBkOTBjNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5H
TC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNp
b25zR0xPcGVuR0wuaApAQCAtNDAsMTYgKzQwLDEwIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5F
eHRlbnNpb25zR0xPcGVuR0woKTsKIAogICAgIC8vIEV4dGVuc2lvbnNHTCBtZXRob2RzLgotICAg
IHZvaWQgYmxpdEZyYW1lYnVmZmVyQU5HTEUoR0NHTGludCBzcmNYMCwgR0NHTGludCBzcmNZMCwg
R0NHTGludCBzcmNYMSwgR0NHTGludCBzcmNZMSwgR0NHTGludCBkc3RYMCwgR0NHTGludCBkc3RZ
MCwgR0NHTGludCBkc3RYMSwgR0NHTGludCBkc3RZMSwgR0NHTGJpdGZpZWxkIG1hc2ssIEdDR0xl
bnVtIGZpbHRlcikgb3ZlcnJpZGU7Ci0gICAgdm9pZCByZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlz
YW1wbGVBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xzaXplaSBzYW1wbGVzLCBHQ0dMZW51bSBp
bnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KSBvdmVycmlk
ZTsKLQogICAgIFBsYXRmb3JtR0xPYmplY3QgY3JlYXRlVmVydGV4QXJyYXlPRVMoKSBvdmVycmlk
ZTsKICAgICB2b2lkIGRlbGV0ZVZlcnRleEFycmF5T0VTKFBsYXRmb3JtR0xPYmplY3QpIG92ZXJy
aWRlOwogICAgIEdDR0xib29sZWFuIGlzVmVydGV4QXJyYXlPRVMoUGxhdGZvcm1HTE9iamVjdCkg
b3ZlcnJpZGU7CiAgICAgdm9pZCBiaW5kVmVydGV4QXJyYXlPRVMoUGxhdGZvcm1HTE9iamVjdCkg
b3ZlcnJpZGU7Ci0gICAgdm9pZCBpbnNlcnRFdmVudE1hcmtlckVYVChjb25zdCBTdHJpbmcmKSBv
dmVycmlkZTsKLSAgICB2b2lkIHB1c2hHcm91cE1hcmtlckVYVChjb25zdCBTdHJpbmcmKSBvdmVy
cmlkZTsKLSAgICB2b2lkIHBvcEdyb3VwTWFya2VyRVhUKHZvaWQpIG92ZXJyaWRlOwogICAgIHZv
aWQgZHJhd0J1ZmZlcnNFWFQoR0NHTFNwYW48Y29uc3QgR0NHTGVudW0+KSBvdmVycmlkZTsKIAog
ICAgIHZvaWQgZHJhd0FycmF5c0luc3RhbmNlZEFOR0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xpbnQg
Zmlyc3QsIEdDR0xzaXplaSBjb3VudCwgR0NHTHNpemVpIHByaW1jb3VudCkgb3ZlcnJpZGU7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5z
aW9uc0dMT3BlbkdMQ29tbW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uY3BwCmluZGV4IGMzNDM4ZDU5MWMwN2Ez
NmNmMWUwNDI2YzFiOWZkN2IzZTkxNzc5ZDUuLjA5ZGI4NTQwMDIyMWRmOTc1Nzg4ODU5YTRhMjg3
YWJhYTI0ZjgyNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uY3BwCkBA
IC0yNTQsMTg1ICsyNTQsNiBAQCB2b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0blVu
aWZvcm1pdkVYVChHQ0dMdWludCwgaW50LCBHQ0dMc2l6ZWksIEdDR0xpbgogICAgIG1fY29udGV4
dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwogfQogCi12b2lkIEV4
dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6cmVhZFBpeGVsc1JvYnVzdEFOR0xFKGludCwgaW50LCBH
Q0dMc2l6ZWksIEdDR0xzaXplaSwgR0NHTGVudW0sIEdDR0xlbnVtLCBHQ0dMc2l6ZWksIEdDR0xz
aXplaSAqLCBHQ0dMc2l6ZWkgKiwgR0NHTHNpemVpICosIHZvaWQgKikKLXsKLSAgICBtX2NvbnRl
eHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLX0KLQotdm9pZCBF
eHRlbnNpb25zR0xPcGVuR0xDb21tb246OnRleFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTGVu
dW0sIEdDR0xlbnVtLCBHQ0dMc2l6ZWksIGNvbnN0IEdDR0xmbG9hdCAqKQotewotICAgIG1fY29u
dGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi12b2lk
IEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6dGV4UGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dM
ZW51bSwgR0NHTGVudW0sIEdDR0xzaXplaSwgY29uc3QgR0NHTGludCAqKQotewotICAgIG1fY29u
dGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi12b2lk
IEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0UXVlcnlpdlJvYnVzdEFOR0xFKEdDR0xlbnVt
LCBHQ0dMZW51bSwgR0NHTHNpemVpLCBHQ0dMc2l6ZWkgKiwgR0NHTGludCAqKQotewotICAgIG1f
Y29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi12
b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0UXVlcnlPYmplY3R1aXZSb2J1c3RBTkdM
RShHQ0dMdWludCwgR0NHTGVudW0sIEdDR0xzaXplaSwgR0NHTHNpemVpICosIEdDR0x1aW50ICop
Ci17Ci0gICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElP
Tik7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRCdWZmZXJQb2ludGVy
dlJvYnVzdEFOR0xFKEdDR0xlbnVtLCBHQ0dMZW51bSwgR0NHTHNpemVpLCBHQ0dMc2l6ZWkgKiwg
dm9pZCAqKikKLXsKLSAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURf
T1BFUkFUSU9OKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFZlcnRl
eEF0dHJpYklpdlJvYnVzdEFOR0xFKEdDR0x1aW50LCBHQ0dMZW51bSwgR0NHTHNpemVpLCBHQ0dM
c2l6ZWkgKiwgR0NHTGludCAqKQotewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3Io
R0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1v
bjo6Z2V0VmVydGV4QXR0cmliSXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50LCBHQ0dMZW51bSwgR0NH
THNpemVpLCBHQ0dMc2l6ZWkgKiwgR0NHTHVpbnQgKikKLXsKLSAgICBtX2NvbnRleHQtPnN5bnRo
ZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLX0KLQotdm9pZCBFeHRlbnNpb25z
R0xPcGVuR0xDb21tb246OmdldFVuaWZvcm11aXZSb2J1c3RBTkdMRShHQ0dMdWludCwgaW50LCBH
Q0dMc2l6ZWksIEdDR0xzaXplaSAqLCBHQ0dMdWludCAqKQotewotICAgIG1fY29udGV4dC0+c3lu
dGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi12b2lkIEV4dGVuc2lv
bnNHTE9wZW5HTENvbW1vbjo6Z2V0QnVmZmVyUGFyYW1ldGVyaTY0dlJvYnVzdEFOR0xFKEdDR0xl
bnVtLCBHQ0dMZW51bSwgR0NHTHNpemVpLCBHQ0dMc2l6ZWkgKiwgR0NHTGludDY0ICopCi17Ci0g
ICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Ci19
Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpzYW1wbGVyUGFyYW1ldGVyaXZSb2J1
c3RBTkdMRShHQ0dMdWludCwgR0NHTGVudW0sIEdDR0xzaXplaSwgY29uc3QgR0NHTGludCAqKQot
ewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04p
OwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6c2FtcGxlclBhcmFtZXRlcmZ2
Um9idXN0QU5HTEUoR0NHTHVpbnQsIEdDR0xlbnVtLCBHQ0dMc2l6ZWksIGNvbnN0IEdDR0xmbG9h
dCAqKQotewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVS
QVRJT04pOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0U2FtcGxlclBh
cmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTHVpbnQsIEdDR0xlbnVtLCBHQ0dMc2l6ZWksIEdDR0xz
aXplaSAqLCBHQ0dMaW50ICopCi17Ci0gICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihH
TF9JTlZBTElEX09QRVJBVElPTik7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9u
OjpnZXRTYW1wbGVyUGFyYW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dMdWludCwgR0NHTGVudW0sIEdD
R0xzaXplaSwgR0NHTHNpemVpICosIEdDR0xmbG9hdCAqKQotewotICAgIG1fY29udGV4dC0+c3lu
dGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi0KLXZvaWQgRXh0ZW5z
aW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRGcmFtZWJ1ZmZlclBhcmFtZXRlcml2Um9idXN0QU5HTEUo
R0NHTGVudW0sIEdDR0xlbnVtLCBHQ0dMc2l6ZWksIEdDR0xzaXplaSAqLCBHQ0dMaW50ICopCi17
Ci0gICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7
Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRQcm9ncmFtSW50ZXJmYWNl
aXZSb2J1c3RBTkdMRShHQ0dMdWludCwgR0NHTGVudW0sIEdDR0xlbnVtLCBHQ0dMc2l6ZWksIEdD
R0xzaXplaSAqLCBHQ0dMaW50ICopCi17Ci0gICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJv
cihHTF9JTlZBTElEX09QRVJBVElPTik7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29t
bW9uOjpnZXRCb29sZWFuaV92Um9idXN0QU5HTEUoR0NHTGVudW0sIEdDR0x1aW50LCBHQ0dMc2l6
ZWksIEdDR0xzaXplaSAqLCBHQ0dMYm9vbGVhbiAqKQotewotICAgIG1fY29udGV4dC0+c3ludGhl
c2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi12b2lkIEV4dGVuc2lvbnNH
TE9wZW5HTENvbW1vbjo6Z2V0TXVsdGlzYW1wbGVmdlJvYnVzdEFOR0xFKEdDR0xlbnVtLCBHQ0dM
dWludCwgR0NHTHNpemVpLCBHQ0dMc2l6ZWkgKiwgR0NHTGZsb2F0ICopCi17Ci0gICAgbV9jb250
ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Ci19Ci0KLXZvaWQg
RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRUZXhMZXZlbFBhcmFtZXRlcml2Um9idXN0QU5H
TEUoR0NHTGVudW0sIGludCwgR0NHTGVudW0sIEdDR0xzaXplaSwgR0NHTHNpemVpICosIEdDR0xp
bnQgKikKLXsKLSAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BF
UkFUSU9OKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFRleExldmVs
UGFyYW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dMZW51bSwgaW50LCBHQ0dMZW51bSwgR0NHTHNpemVp
LCBHQ0dMc2l6ZWkgKiwgR0NHTGZsb2F0ICopCi17Ci0gICAgbV9jb250ZXh0LT5zeW50aGVzaXpl
R0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Ci19Ci0KLQotdm9pZCBFeHRlbnNpb25zR0xP
cGVuR0xDb21tb246OmdldFBvaW50ZXJ2Um9idXN0QU5HTEVSb2J1c3RBTkdMRShHQ0dMZW51bSwg
R0NHTHNpemVpLCBHQ0dMc2l6ZWkgKiwgdm9pZCAqKikKLXsKLSAgICBtX2NvbnRleHQtPnN5bnRo
ZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLX0KLQotdm9pZCBFeHRlbnNpb25z
R0xPcGVuR0xDb21tb246OmdldG5Vbmlmb3JtZnZSb2J1c3RBTkdMRShHQ0dMdWludCwgaW50LCBH
Q0dMc2l6ZWksIEdDR0xzaXplaSAqLCBHQ0dMZmxvYXQgKikKLXsKLSAgICBtX2NvbnRleHQtPnN5
bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLX0KLQotdm9pZCBFeHRlbnNp
b25zR0xPcGVuR0xDb21tb246OmdldG5Vbmlmb3JtaXZSb2J1c3RBTkdMRShHQ0dMdWludCwgaW50
LCBHQ0dMc2l6ZWksIEdDR0xzaXplaSAqLCBHQ0dMaW50ICopCi17Ci0gICAgbV9jb250ZXh0LT5z
eW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Ci19Ci0KLXZvaWQgRXh0ZW5z
aW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRuVW5pZm9ybXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50LCBp
bnQsIEdDR0xzaXplaSwgR0NHTHNpemVpICosIEdDR0x1aW50ICopCi17Ci0gICAgbV9jb250ZXh0
LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Ci19Ci0KLXZvaWQgRXh0
ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjp0ZXhQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRShHQ0dMZW51
bSwgR0NHTGVudW0sIEdDR0xzaXplaSwgY29uc3QgR0NHTGludCAqKQotewotICAgIG1fY29udGV4
dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi12b2lkIEV4
dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6dGV4UGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFKEdDR0xl
bnVtLCBHQ0dMZW51bSwgR0NHTHNpemVpLCBjb25zdCBHQ0dMdWludCAqKQotewotICAgIG1fY29u
dGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi12b2lk
IEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0VGV4UGFyYW1ldGVySWl2Um9idXN0QU5HTEUo
R0NHTGVudW0sIEdDR0xlbnVtLCBHQ0dMc2l6ZWksIEdDR0xzaXplaSAqLCBHQ0dMaW50ICopCi17
Ci0gICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7
Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRUZXhQYXJhbWV0ZXJJdWl2
Um9idXN0QU5HTEUoR0NHTGVudW0sIEdDR0xlbnVtLCBHQ0dMc2l6ZWksIEdDR0xzaXplaSAqLCBH
Q0dMdWludCAqKQotewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJ
RF9PUEVSQVRJT04pOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6c2FtcGxl
clBhcmFtZXRlcklpdlJvYnVzdEFOR0xFKEdDR0x1aW50LCBHQ0dMZW51bSwgR0NHTHNpemVpLCBj
b25zdCBHQ0dMaW50ICopCi17Ci0gICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9J
TlZBTElEX09QRVJBVElPTik7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpz
YW1wbGVyUGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50LCBHQ0dMZW51bSwgR0NHTHNp
emVpLCBjb25zdCBHQ0dMdWludCAqKQotewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJy
b3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENv
bW1vbjo6Z2V0U2FtcGxlclBhcmFtZXRlcklpdlJvYnVzdEFOR0xFKEdDR0x1aW50LCBHQ0dMZW51
bSwgR0NHTHNpemVpLCBHQ0dMc2l6ZWkgKiwgR0NHTGludCAqKQotewotICAgIG1fY29udGV4dC0+
c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi12b2lkIEV4dGVu
c2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0U2FtcGxlclBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRShH
Q0dMdWludCwgR0NHTGVudW0sIEdDR0xzaXplaSwgR0NHTHNpemVpICosIEdDR0x1aW50ICopCi17
Ci0gICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7
Ci19Ci0KLQotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFF1ZXJ5T2JqZWN0aXZS
b2J1c3RBTkdMRShHQ0dMdWludCwgR0NHTGVudW0sIEdDR0xzaXplaSwgR0NHTHNpemVpICosIEdD
R0xpbnQgKikKLXsKLSAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURf
T1BFUkFUSU9OKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFF1ZXJ5
T2JqZWN0aTY0dlJvYnVzdEFOR0xFKEdDR0x1aW50LCBHQ0dMZW51bSwgR0NHTHNpemVpLCBHQ0dM
c2l6ZWkgKiwgR0NHTGludDY0ICopCi17Ci0gICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJv
cihHTF9JTlZBTElEX09QRVJBVElPTik7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29t
bW9uOjpnZXRRdWVyeU9iamVjdHVpNjR2Um9idXN0QU5HTEUoR0NHTHVpbnQsIEdDR0xlbnVtLCBH
Q0dMc2l6ZWksIEdDR0xzaXplaSAqLCBHQ0dMdWludDY0ICopCi17Ci0gICAgbV9jb250ZXh0LT5z
eW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Ci19Ci0KLQogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFdFQkdMKSAmJiAhVVNFKEFOR0xFKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVu
c2lvbnNHTE9wZW5HTENvbW1vbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
b3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5oCmluZGV4IDNmMTA0MDE2MmZmYTA3YTJk
YzEzMGFiYjIyZmIxYjFmZmMzZmRmMjAuLmRjYzBlM2FmMjE3MzJlNzQ3ZWExYmQ1NjRiYjk2Nzg0
MzJjYTNmNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29w
ZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmgKQEAgLTI4LDEx
ICsyOCwxMSBAQAogCiAjaW5jbHVkZSAiRXh0ZW5zaW9uc0dMLmgiCiAKLSNpbmNsdWRlICJHcmFw
aGljc0NvbnRleHRHTE9wZW5HTC5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDsKIAogY2xhc3MgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9u
IDogcHVibGljIEV4dGVuc2lvbnNHTCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CkBA
IC01NSw1OCArNTUsMTggQEAgcHVibGljOgogICAgIFN0cmluZyBnZXRUcmFuc2xhdGVkU2hhZGVy
U291cmNlQU5HTEUoUGxhdGZvcm1HTE9iamVjdCkgb3ZlcnJpZGU7CiAKICAgICAvLyBFWFQgUm9i
dXN0bmVzcyAtIHVzZXMgZ2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQigpCi0gICAgdm9pZCByZWFk
blBpeGVsc0VYVChpbnQgeCwgaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdo
dCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgdm9p
ZCAqZGF0YSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRuVW5pZm9ybWZ2RVhUKEdDR0x1aW50IHBy
b2dyYW0sIGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIGZsb2F0ICpwYXJhbXMpIG92
ZXJyaWRlOwotICAgIHZvaWQgZ2V0blVuaWZvcm1pdkVYVChHQ0dMdWludCBwcm9ncmFtLCBpbnQg
bG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBpbnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0KLSAg
ICBib29sIGlzTlZJRElBKCkgb3ZlcnJpZGUgeyByZXR1cm4gbV9pc05WSURJQTsgfQotICAgIGJv
b2wgaXNBTUQoKSBvdmVycmlkZSB7IHJldHVybiBtX2lzQU1EOyB9Ci0gICAgYm9vbCBpc0ludGVs
KCkgb3ZlcnJpZGUgeyByZXR1cm4gbV9pc0ludGVsOyB9Ci0gICAgYm9vbCBpc0ltYWdpbmF0aW9u
KCkgb3ZlcnJpZGUgeyByZXR1cm4gbV9pc0ltYWdpbmF0aW9uOyB9Ci0gICAgU3RyaW5nIHZlbmRv
cigpIG92ZXJyaWRlIHsgcmV0dXJuIG1fdmVuZG9yOyB9Ci0KLSAgICBib29sIHJlcXVpcmVzQnVp
bHRJbkZ1bmN0aW9uRW11bGF0aW9uKCkgb3ZlcnJpZGUgeyByZXR1cm4gbV9yZXF1aXJlc0J1aWx0
SW5GdW5jdGlvbkVtdWxhdGlvbjsgfQotICAgIGJvb2wgcmVxdWlyZXNSZXN0cmljdGVkTWF4aW11
bVRleHR1cmVTaXplKCkgb3ZlcnJpZGUgeyByZXR1cm4gbV9yZXF1aXJlc1Jlc3RyaWN0ZWRNYXhp
bXVtVGV4dHVyZVNpemU7IH0KLQotICAgIC8vIEdMX0FOR0xFX3JvYnVzdF9jbGllbnRfbWVtb3J5
Ci0gICAgdm9pZCByZWFkUGl4ZWxzUm9idXN0QU5HTEUoaW50IHgsIGludCB5LCBHQ0dMc2l6ZWkg
d2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwg
R0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMc2l6ZWkgKmNvbHVtbnMs
IEdDR0xzaXplaSAqcm93cywgdm9pZCAqcGl4ZWxzKSBvdmVycmlkZTsKLSAgICB2b2lkIHRleFBh
cmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NH
THNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xmbG9hdCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2
b2lkIHRleFBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBw
bmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xpbnQgKnBhcmFtcykgb3ZlcnJpZGU7
Ci0gICAgdm9pZCBnZXRRdWVyeWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51
bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpw
YXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0UXVlcnlPYmplY3R1aXZSb2J1c3RBTkdMRShH
Q0dMdWludCBpZCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkg
Kmxlbmd0aCwgR0NHTHVpbnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRCdWZmZXJQ
b2ludGVydlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xz
aXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgdm9pZCAqKnBhcmFtcykgb3ZlcnJpZGU7
Ci0gICAgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJJaXZSb2J1c3RBTkdMRShHQ0dMdWludCBpbmRleCwg
R0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NH
TGludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldFZlcnRleEF0dHJpYkl1aXZSb2J1
c3RBTkdMRShHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXpl
LCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHVpbnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9p
ZCBnZXRVbmlmb3JtdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgaW50IGxvY2F0aW9u
LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0x1aW50ICpwYXJhbXMp
IG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0QnVmZmVyUGFyYW1ldGVyaTY0dlJvYnVzdEFOR0xFKEdD
R0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6
ZWkgKmxlbmd0aCwgR0NHTGludDY0ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgc2FtcGxl
clBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUs
IEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMaW50ICpwYXJhbSkgb3ZlcnJpZGU7Ci0gICAg
dm9pZCBzYW1wbGVyUGFyYW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dM
ZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xmbG9hdCAqcGFyYW0pIG92
ZXJyaWRlOwotICAgIHZvaWQgZ2V0U2FtcGxlclBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTHVp
bnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkg
Kmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldFNhbXBsZXJQ
YXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBH
Q0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xmbG9hdCAqcGFyYW1zKSBv
dmVycmlkZTsKLQotICAgIHZvaWQgZ2V0RnJhbWVidWZmZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xF
KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dM
c2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldFBy
b2dyYW1JbnRlcmZhY2VpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xlbnVtIHBy
b2dyYW1JbnRlcmZhY2UsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNp
emVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRCb29s
ZWFuaV92Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMdWludCBpbmRleCwgR0NHTHNp
emVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMYm9vbGVhbiAqZGF0YSkgb3ZlcnJp
ZGU7Ci0gICAgdm9pZCBnZXRNdWx0aXNhbXBsZWZ2Um9idXN0QU5HTEUoR0NHTGVudW0gcG5hbWUs
IEdDR0x1aW50IGluZGV4LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdD
R0xmbG9hdCAqdmFsKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldFRleExldmVsUGFyYW1ldGVyaXZS
b2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIGludCBsZXZlbCwgR0NHTGVudW0gcG5hbWUsIEdD
R0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVy
cmlkZTsKLSAgICB2b2lkIGdldFRleExldmVsUGFyYW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dMZW51
bSB0YXJnZXQsIGludCBsZXZlbCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBH
Q0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGZsb2F0ICpwYXJhbXMpIG92ZXJyaWRlOwotCi0gICAgdm9p
ZCBnZXRQb2ludGVydlJvYnVzdEFOR0xFUm9idXN0QU5HTEUoR0NHTGVudW0gcG5hbWUsIEdDR0xz
aXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgdm9pZCAqKnBhcmFtcykgb3ZlcnJpZGU7
Ci0gICAgdm9pZCBnZXRuVW5pZm9ybWZ2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgaW50
IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xmbG9h
dCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldG5Vbmlmb3JtaXZSb2J1c3RBTkdMRShH
Q0dMdWludCBwcm9ncmFtLCBpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6
ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldG5Vbmlm
b3JtdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgaW50IGxvY2F0aW9uLCBHQ0dMc2l6
ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0x1aW50ICpwYXJhbXMpIG92ZXJyaWRl
OwotICAgIHZvaWQgdGV4UGFyYW1ldGVySWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xpbnQgKnBhcmFtcykg
b3ZlcnJpZGU7Ci0gICAgdm9pZCB0ZXhQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUoR0NHTGVudW0g
dGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0x1aW50
ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0VGV4UGFyYW1ldGVySWl2Um9idXN0QU5H
TEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdD
R0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0
VGV4UGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5h
bWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHVpbnQgKnBhcmFt
cykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzYW1wbGVyUGFyYW1ldGVySWl2Um9idXN0QU5HTEUoR0NH
THVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBH
Q0dMaW50ICpwYXJhbSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzYW1wbGVyUGFyYW1ldGVySXVpdlJv
YnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVm
U2l6ZSwgY29uc3QgR0NHTHVpbnQgKnBhcmFtKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldFNhbXBs
ZXJQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFt
ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMp
IG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0U2FtcGxlclBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRShH
Q0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xz
aXplaSAqbGVuZ3RoLCBHQ0dMdWludCAqcGFyYW1zKSBvdmVycmlkZTsKLQotICAgIHZvaWQgZ2V0
UXVlcnlPYmplY3RpdlJvYnVzdEFOR0xFKEdDR0x1aW50IGlkLCBHQ0dMZW51bSBwbmFtZSwgR0NH
THNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJy
aWRlOwotICAgIHZvaWQgZ2V0UXVlcnlPYmplY3RpNjR2Um9idXN0QU5HTEUoR0NHTHVpbnQgaWQs
IEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdD
R0xpbnQ2NCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldFF1ZXJ5T2JqZWN0dWk2NHZS
b2J1c3RBTkdMRShHQ0dMdWludCBpZCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXpl
LCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHVpbnQ2NCAqcGFyYW1zKSBvdmVycmlkZTsKKyAgICB2
b2lkIHJlYWRuUGl4ZWxzRVhUKGludCB4LCBpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6
ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZT
aXplLCB2b2lkICpkYXRhKTsKKyAgICB2b2lkIGdldG5Vbmlmb3JtZnZFWFQoR0NHTHVpbnQgcHJv
Z3JhbSwgaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgZmxvYXQgKnBhcmFtcyk7Cisg
ICAgdm9pZCBnZXRuVW5pZm9ybWl2RVhUKEdDR0x1aW50IHByb2dyYW0sIGludCBsb2NhdGlvbiwg
R0NHTHNpemVpIGJ1ZlNpemUsIGludCAqcGFyYW1zKTsKKworICAgIGJvb2wgaXNOVklESUEoKSBj
b25zdCB7IHJldHVybiBtX2lzTlZJRElBOyB9CisgICAgYm9vbCBpc0FNRCgpIGNvbnN0IHsgcmV0
dXJuIG1faXNBTUQ7IH0KKyAgICBib29sIGlzSW50ZWwoKSBjb25zdCB7IHJldHVybiBtX2lzSW50
ZWw7IH0KKyAgICBib29sIGlzSW1hZ2luYXRpb24oKSBjb25zdCB7IHJldHVybiBtX2lzSW1hZ2lu
YXRpb247IH0KKyAgICBTdHJpbmcgdmVuZG9yKCkgY29uc3QgeyByZXR1cm4gbV92ZW5kb3I7IH0K
KworICAgIGJvb2wgcmVxdWlyZXNCdWlsdEluRnVuY3Rpb25FbXVsYXRpb24oKSBjb25zdCB7IHJl
dHVybiBtX3JlcXVpcmVzQnVpbHRJbkZ1bmN0aW9uRW11bGF0aW9uOyB9CisgICAgYm9vbCByZXF1
aXJlc1Jlc3RyaWN0ZWRNYXhpbXVtVGV4dHVyZVNpemUoKSBjb25zdCB7IHJldHVybiBtX3JlcXVp
cmVzUmVzdHJpY3RlZE1heGltdW1UZXh0dXJlU2l6ZTsgfQogCiBwcm90ZWN0ZWQ6CiAgICAgZnJp
ZW5kIGNsYXNzIEV4dGVuc2lvbnNHTE9wZW5HTEVTOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVTLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xF
Uy5jcHAKaW5kZXggOGNhODc3ODg0ZWVhYjhhMmNhMWRkZTJkYjJlYzhkNmIyMTIyZmRlMS4uYjJl
M2M4Yjk4NDkzNDVkNTczOGY3YTVjMTBlMTJkYjU5NGQyYTAwMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVTLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9u
c0dMT3BlbkdMRVMuY3BwCkBAIC0xMDAsMTEgKzEwMCw2IEBAIHZvaWQgRXh0ZW5zaW9uc0dMT3Bl
bkdMRVM6OnJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUlNRyh1bnNpZ25lZCBsb25nIHRh
cmdlCiAgICAgICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVS
QVRJT04pOwogfQogCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTEVTOjpibGl0RnJhbWVidWZmZXJB
TkdMRShHQ0dMaW50LCBHQ0dMaW50LCBHQ0dMaW50LCBHQ0dMaW50LCBHQ0dMaW50LCBHQ0dMaW50
LCBHQ0dMaW50LCBHQ0dMaW50LCBHQ0dMYml0ZmllbGQsIEdDR0xlbnVtKQotewotICAgIG5vdElt
cGxlbWVudGVkKCk7Ci19Ci0KIHZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMRVM6OnJlbmRlcmJ1ZmZl
clN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVpIHNhbXBs
ZXMsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBo
ZWlnaHQpCiB7CiAgICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQpAQCAt
MTE1LDIxICsxMTAsNiBAQCB2b2lkIEV4dGVuc2lvbnNHTE9wZW5HTEVTOjpyZW5kZXJidWZmZXJT
dG9yYWdlTXVsdGlzYW1wbGVBTkdMRShHQ0dMZW51bSB0YXJnZXQsCiAgICAgICAgIG5vdEltcGxl
bWVudGVkKCk7CiB9CiAKLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMRVM6Omluc2VydEV2ZW50TWFy
a2VyRVhUKGNvbnN0IFN0cmluZyYpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9p
ZCBFeHRlbnNpb25zR0xPcGVuR0xFUzo6cHVzaEdyb3VwTWFya2VyRVhUKGNvbnN0IFN0cmluZyYp
Ci17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xF
Uzo6cG9wR3JvdXBNYXJrZXJFWFQodm9pZCkKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQot
CiBQbGF0Zm9ybUdMT2JqZWN0IEV4dGVuc2lvbnNHTE9wZW5HTEVTOjpjcmVhdGVWZXJ0ZXhBcnJh
eU9FUygpCiB7CiAgICAgaWYgKG1fZ2xHZW5WZXJ0ZXhBcnJheXNPRVMpIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVu
R0xFUy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lv
bnNHTE9wZW5HTEVTLmgKaW5kZXggNWM3NjAzN2ZhN2JjNmU4ZWVlM2U2NzNmOTlhN2RmYzJmNzhm
YjRkMi4uYWRkMGJiNzYzZjRiZGE1YjY5ZTYxYmFiNjAyMmE0MDgyNDhhZjNlZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9w
ZW5HTEVTLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4
dGVuc2lvbnNHTE9wZW5HTEVTLmgKQEAgLTI3LDYgKzI3LDcgQEAKICNwcmFnbWEgb25jZQogCiAj
aW5jbHVkZSAiRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmgiCisjaW5jbHVkZSAiR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0wuaCIKIAogI2lmIFVTRShPUEVOR0xfRVMpCiAKQEAgLTc1LDExICs3Niw3
IEBAIHB1YmxpYzoKIAogICAgIC8vIEV4dGVuc2lvbjNEIG1ldGhvZHMKICAgICBib29sIGlzRW5h
YmxlZChjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKLSAgICB2b2lkIGJsaXRGcmFtZWJ1ZmZlckFO
R0xFKEdDR0xpbnQgc3JjWDAsIEdDR0xpbnQgc3JjWTAsIEdDR0xpbnQgc3JjWDEsIEdDR0xpbnQg
c3JjWTEsIEdDR0xpbnQgZHN0WDAsIEdDR0xpbnQgZHN0WTAsIEdDR0xpbnQgZHN0WDEsIEdDR0xp
bnQgZHN0WTEsIEdDR0xiaXRmaWVsZCBtYXNrLCBHQ0dMZW51bSBmaWx0ZXIpIG92ZXJyaWRlOwot
ICAgIHZvaWQgcmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5HTEUoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMc2l6ZWkgc2FtcGxlcywgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXpl
aSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBpbnNlcnRFdmVu
dE1hcmtlckVYVChjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKLSAgICB2b2lkIHB1c2hHcm91cE1h
cmtlckVYVChjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKLSAgICB2b2lkIHBvcEdyb3VwTWFya2Vy
RVhUKHZvaWQpIG92ZXJyaWRlOworICAgIHZvaWQgcmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2Ft
cGxlQU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWkgc2FtcGxlcywgR0NHTGVudW0gaW50
ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCk7CiAKICAgICBQ
bGF0Zm9ybUdMT2JqZWN0IGNyZWF0ZVZlcnRleEFycmF5T0VTKCkgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBkZWxldGVWZXJ0ZXhBcnJheU9FUyhQbGF0Zm9ybUdMT2JqZWN0KSBvdmVycmlkZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0Nv
bnRleHRHTE9wZW5HTC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Blbmds
L0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgKaW5kZXggZjUyNGRlOTJkY2Q5YTU5OGIwZmJlZjhk
MzNiOWM0NDA5YjhjZDFiMC4uMzk1Yjk1NzNiNzY1ZDkzYzA0Mjc0NmExZjU0OTEyMGFkZjIzZjgx
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dy
YXBoaWNzQ29udGV4dEdMT3BlbkdMLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgKQEAgLTQ1LDYgKzQ1LDcgQEAK
IAogI2lmICFVU0UoQU5HTEUpCiAjaW5jbHVkZSAiQU5HTEVXZWJLaXRCcmlkZ2UuaCIKKyNpbmNs
dWRlICJFeHRlbnNpb25zR0xPcGVuR0xDb21tb24uaCIKICNlbmRpZgogCiAvLyBGSVhNRTogRmlu
ZCBhIGJldHRlciB3YXkgdG8gYXZvaWQgdGhlIG5hbWUgY29uZmxpY3Rpb24gZm9yIE5PX0VSUk9S
LgpAQCAtNDg2LDcgKzQ4NywxMiBAQCBwdWJsaWM6CiAgICAgLy8gYWxsIG1ldGhvZHMgaXQgY29u
dGFpbnMgbWF5IG5lY2Vzc2FyaWx5IGJlIHN1cHBvcnRlZCBvbiB0aGUKICAgICAvLyBjdXJyZW50
IGhhcmR3YXJlLiBNdXN0IGNhbGwgRXh0ZW5zaW9uc0dMOjpzdXBwb3J0cygpIHRvCiAgICAgLy8g
ZGV0ZXJtaW5lIHRoaXMuCisjaWYgIVVTRShBTkdMRSkKKyAgICAvLyBVc2UgY292YXJpYW50IHJl
dHVybiB0eXBlIGZvciBPUEVOR0wvT1BFTkdMX0VTCisgICAgRXh0ZW5zaW9uc0dMT3BlbkdMQ29t
bW9uJiBnZXRFeHRlbnNpb25zKCkgZmluYWw7CisjZWxzZQogICAgIEV4dGVuc2lvbnNHTCYgZ2V0
RXh0ZW5zaW9ucygpIGZpbmFsOworI2VuZGlmCiAKICAgICB2b2lkIHNldEZhaWxOZXh0R1BVU3Rh
dHVzQ2hlY2soKSBmaW5hbCB7IG1fZmFpbE5leHRTdGF0dXNDaGVjayA9IHRydWU7IH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNz
Q29udGV4dEdMT3BlbkdMQmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xCYXNlLmNwcAppbmRleCBmNDE0ZjljOTYz
NGQ2MWI4ZDkwMTVkNWE2YWZhNTI3Y2MzNDJiZThmLi4wZmY1MzNiZTcxMjg0ZWQwOGQ1MzQzYjk5
OTZhOTZmYTE2ZTJiNWFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xCYXNlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xC
YXNlLmNwcApAQCAtMTE2LDcgKzExNiw3IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OnJlc2hhcGVGQk9zKGNvbnN0IEludFNpemUmIHNpemUpCiAgICAgICAgIC8vIFdlIGRvbid0IGFs
bG93IHRoZSBsb2dpYyB3aGVyZSBzdGVuY2lsIGlzIHJlcXVpcmVkIGFuZCBkZXB0aCBpcyBub3Qu
CiAgICAgICAgIC8vIFNlZSBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmFsaWRhdGVBdHRyaWJ1
dGVzLgogCi0gICAgICAgIEV4dGVuc2lvbnNHTCYgZXh0ZW5zaW9ucyA9IGdldEV4dGVuc2lvbnMo
KTsKKyAgICAgICAgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uJiBleHRlbnNpb25zID0gZ2V0RXh0
ZW5zaW9ucygpOwogICAgICAgICAvLyBVc2UgYSAyNCBiaXQgZGVwdGggYnVmZmVyIHdoZXJlIHdl
IGtub3cgd2UgaGF2ZSBpdC4KICAgICAgICAgaWYgKGV4dGVuc2lvbnMuc3VwcG9ydHMoIkdMX0VY
VF9wYWNrZWRfZGVwdGhfc3RlbmNpbCIpKQogICAgICAgICAgICAgaW50ZXJuYWxEZXB0aFN0ZW5j
aWxGb3JtYXQgPSBHTF9ERVBUSDI0X1NURU5DSUw4X0VYVDsKQEAgLTQxNyw3ICs0MTcsNyBAQCB2
b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjbGVhckRlcHRoKEdDR0xjbGFtcGYgZGVwdGgp
CiB9CiAKICNpZiAhUExBVEZPUk0oR1RLKQotRXh0ZW5zaW9uc0dMJiBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6Z2V0RXh0ZW5zaW9ucygpCitFeHRlbnNpb25zR0xPcGVuR0xDb21tb24mIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjpnZXRFeHRlbnNpb25zKCkKIHsKICAgICBpZiAoIW1fZXh0ZW5z
aW9ucykKICAgICAgICAgbV9leHRlbnNpb25zID0gbWFrZVVuaXF1ZTxFeHRlbnNpb25zR0xPcGVu
R0w+KHRoaXMsIGlzR0xFUzJDb21wbGlhbnQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb21tb24u
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMQ29tbW9uLmNwcAppbmRleCAyZGUxODVhNjY4MTMwYTM2MmMxMjc2N2YzODNm
NTdmMTM0OWRkNDgxLi5kZjk4M2ZkYTg4MTEyODliNjAyMmRhZmVlOThkY2Y5MjlkYzI0NTEyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0xDb21tb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvbW1vbi5jcHAKQEAgLTEx
OCw3ICsxMTgsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2YWxpZGF0ZURlcHRo
U3RlbmNpbChjb25zdCBjaGFyKiBwYWNrZWREZXB0aFN0ZW5jaQogewogICAgIGF1dG8gYXR0cnMg
PSBjb250ZXh0QXR0cmlidXRlcygpOwogCi0gICAgRXh0ZW5zaW9uc0dMJiBleHRlbnNpb25zID0g
Z2V0RXh0ZW5zaW9ucygpOworICAgIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbiYgZXh0ZW5zaW9u
cyA9IGdldEV4dGVuc2lvbnMoKTsKICAgICBpZiAoYXR0cnMuc3RlbmNpbCkgewogICAgICAgICBp
ZiAoZXh0ZW5zaW9ucy5zdXBwb3J0cyhwYWNrZWREZXB0aFN0ZW5jaWxFeHRlbnNpb24pKSB7CiAg
ICAgICAgICAgICBleHRlbnNpb25zLmVuc3VyZUVuYWJsZWQocGFja2VkRGVwdGhTdGVuY2lsRXh0
ZW5zaW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29w
ZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEVTLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEVTLmNwcAppbmRleCAw
ZDQ3NmMyMjlkNmY2ZWU5NmNjZjk5M2Q4MWQ1YzNkZDY1MjE1ZTQ4Li5hYjljMzVmODQ5NjQzNmM5
NjBlMjEyYTQxYmMzZTBjZmU5YWJiZjA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xFUy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdM
T3BlbkdMRVMuY3BwCkBAIC0yNTQsNyArMjU0LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6Y2xlYXJEZXB0aChHQ0dMY2xhbXBmIGRlcHRoKQogfQogCiAjaWYgIVBMQVRGT1JNKEdU
SykKLUV4dGVuc2lvbnNHTCYgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEV4dGVuc2lvbnMo
KQorRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uJiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0
RXh0ZW5zaW9ucygpCiB7CiAgICAgaWYgKCFtX2V4dGVuc2lvbnMpCiAgICAgICAgIG1fZXh0ZW5z
aW9ucyA9IG1ha2VVbmlxdWU8RXh0ZW5zaW9uc0dMT3BlbkdMRVM+KHRoaXMsIGlzR0xFUzJDb21w
bGlhbnQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXIu
Y3BwCmluZGV4IDg3MzE0MGIwZDk1MjQ3NDc4YTIxZjE0Y2E5OThmNjcxNmVlN2FkN2EuLmVhNWRh
OWY4ODE4ODc3MjFlN2FkNDJlODQwYmRiMWE3ZGRmMjE1ZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0NvbnRleHRHTFRleHR1cmVN
YXBwZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9H
cmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXIuY3BwCkBAIC00MjksNyArNDI5LDcgQEAgUGxh
dGZvcm1MYXllciogR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnBsYXRmb3JtTGF5ZXIoKSBjb25z
dAogfQogCiAjaWYgUExBVEZPUk0oR1RLKSAmJiAhVVNFKEFOR0xFKQotRXh0ZW5zaW9uc0dMJiBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0RXh0ZW5zaW9ucygpCitFeHRlbnNpb25zR0xPcGVu
R0xDb21tb24mIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRFeHRlbnNpb25zKCkKIHsKICAg
ICBpZiAoIW1fZXh0ZW5zaW9ucykgewogI2lmIFVTRShPUEVOR0xfRVMpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wu
bWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0wubWVzc2FnZXMuaW4KaW5kZXggYWEwMzQ3MjVmOWFhNDJmNDJiZDNjOGEw
MGIwYWExODA5MGE1OWI5YS4uYzc4OGQ2NWRiNGQ5NzFjMmQ0ZDU0MGM0Njg4OGM0NTExMTRiMzQ2
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdy
YXBoaWNzQ29udGV4dEdMLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5tZXNzYWdlcy5pbgpAQCAtMjc0LDE2
ICsyNzQsMTEgQEAgbWVzc2FnZXMgLT4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wgTm90UmVmQ291
bnRlZCB7CiAgICAgdm9pZCBVbmlmb3JtQmxvY2tCaW5kaW5nKHVpbnQzMl90IHByb2dyYW0sIHVp
bnQzMl90IHVuaWZvcm1CbG9ja0luZGV4LCB1aW50MzJfdCB1bmlmb3JtQmxvY2tCaW5kaW5nKQog
ICAgIHZvaWQgR2V0QWN0aXZlVW5pZm9ybUJsb2NraXYodWludDMyX3QgcHJvZ3JhbSwgdWludDMy
X3QgdW5pZm9ybUJsb2NrSW5kZXgsIHVpbnQzMl90IHBuYW1lLCB1aW50NjRfdCBwYXJhbXNTaXpl
KSAtPiAoSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PiBwYXJhbXMpIFN5bmNocm9ub3VzCiAg
ICAgdm9pZCBHZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJCKCkgLT4gKGludDMyX3QgcmV0dXJuVmFs
dWUpIFN5bmNocm9ub3VzCi0gICAgdm9pZCBCbGl0RnJhbWVidWZmZXJBTkdMRShpbnQzMl90IHNy
Y1gwLCBpbnQzMl90IHNyY1kwLCBpbnQzMl90IHNyY1gxLCBpbnQzMl90IHNyY1kxLCBpbnQzMl90
IGRzdFgwLCBpbnQzMl90IGRzdFkwLCBpbnQzMl90IGRzdFgxLCBpbnQzMl90IGRzdFkxLCB1aW50
MzJfdCBtYXNrLCB1aW50MzJfdCBmaWx0ZXIpCi0gICAgdm9pZCBSZW5kZXJidWZmZXJTdG9yYWdl
TXVsdGlzYW1wbGVBTkdMRSh1aW50MzJfdCB0YXJnZXQsIGludDMyX3Qgc2FtcGxlcywgdWludDMy
X3QgaW50ZXJuYWxmb3JtYXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0KQogICAgIHZv
aWQgQ3JlYXRlVmVydGV4QXJyYXlPRVMoKSAtPiAodWludDMyX3QgcmV0dXJuVmFsdWUpIFN5bmNo
cm9ub3VzCiAgICAgdm9pZCBEZWxldGVWZXJ0ZXhBcnJheU9FUyh1aW50MzJfdCBhcmcwKQogICAg
IHZvaWQgSXNWZXJ0ZXhBcnJheU9FUyh1aW50MzJfdCBhcmcwKSAtPiAoYm9vbCByZXR1cm5WYWx1
ZSkgU3luY2hyb25vdXMKICAgICB2b2lkIEJpbmRWZXJ0ZXhBcnJheU9FUyh1aW50MzJfdCBhcmcw
KQogICAgIHZvaWQgR2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFKHVpbnQzMl90IGFyZzAp
IC0+IChTdHJpbmcgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCi0gICAgdm9pZCBJbnNlcnRFdmVu
dE1hcmtlckVYVChTdHJpbmcgYXJnMCkKLSAgICB2b2lkIFB1c2hHcm91cE1hcmtlckVYVChTdHJp
bmcgYXJnMCkKLSAgICB2b2lkIFBvcEdyb3VwTWFya2VyRVhUKCkKICAgICB2b2lkIERyYXdCdWZm
ZXJzRVhUKElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+IGJ1ZnMpCiAgICAgdm9pZCBEcmF3
QXJyYXlzSW5zdGFuY2VkQU5HTEUodWludDMyX3QgbW9kZSwgaW50MzJfdCBmaXJzdCwgaW50MzJf
dCBjb3VudCwgaW50MzJfdCBwcmltY291bnQpCiAgICAgdm9pZCBEcmF3RWxlbWVudHNJbnN0YW5j
ZWRBTkdMRSh1aW50MzJfdCBtb2RlLCBpbnQzMl90IGNvdW50LCB1aW50MzJfdCB0eXBlLCB1aW50
NjRfdCBvZmZzZXQsIGludDMyX3QgcHJpbWNvdW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMRnVuY3Rpb25zR2Vu
ZXJhdGVkLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xGdW5jdGlvbnNHZW5lcmF0ZWQuaAppbmRleCBhZjAxNjAyYWY0OTNlYjY3ZGUz
ZTYyY2YwZTUwYWMwYTJiOTkyNWYxLi4xYmM1N2RmOWFmZGEyOGQ4YmU0ZWJjNmQ0NDkzMmVhOTU1
MzJhY2E4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xGdW5jdGlvbnNHZW5lcmF0ZWQuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xGdW5jdGlvbnNH
ZW5lcmF0ZWQuaApAQCAtMTExOCwxNCArMTExOCw2IEBACiAgICAgICAgIHJldHVyblZhbHVlID0g
bV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuZ2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQigpOwog
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7CiAgICAgfQotICAgIHZvaWQg
YmxpdEZyYW1lYnVmZmVyQU5HTEUoaW50MzJfdCBzcmNYMCwgaW50MzJfdCBzcmNZMCwgaW50MzJf
dCBzcmNYMSwgaW50MzJfdCBzcmNZMSwgaW50MzJfdCBkc3RYMCwgaW50MzJfdCBkc3RZMCwgaW50
MzJfdCBkc3RYMSwgaW50MzJfdCBkc3RZMSwgdWludDMyX3QgbWFzaywgdWludDMyX3QgZmlsdGVy
KQotICAgIHsKLSAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuYmxpdEZyYW1lYnVm
ZmVyQU5HTEUoc3JjWDAsIHNyY1kwLCBzcmNYMSwgc3JjWTEsIGRzdFgwLCBkc3RZMCwgZHN0WDEs
IGRzdFkxLCBtYXNrLCBmaWx0ZXIpOwotICAgIH0KLSAgICB2b2lkIHJlbmRlcmJ1ZmZlclN0b3Jh
Z2VNdWx0aXNhbXBsZUFOR0xFKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBzYW1wbGVzLCB1aW50
MzJfdCBpbnRlcm5hbGZvcm1hdCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQpCi0gICAg
ewotICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5yZW5kZXJidWZmZXJTdG9yYWdl
TXVsdGlzYW1wbGVBTkdMRSh0YXJnZXQsIHNhbXBsZXMsIGludGVybmFsZm9ybWF0LCB3aWR0aCwg
aGVpZ2h0KTsKLSAgICB9CiAgICAgdm9pZCBjcmVhdGVWZXJ0ZXhBcnJheU9FUyhDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKHVpbnQzMl90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKICAgICB7CiAgICAg
ICAgIFBsYXRmb3JtR0xPYmplY3QgcmV0dXJuVmFsdWUgPSB7IH07CkBAIC0xMTUyLDE4ICsxMTQ0
LDYgQEAKICAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5n
ZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUoYXJnMCk7CiAgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKFdURk1vdmUocmV0dXJuVmFsdWUpKTsKICAgICB9Ci0gICAgdm9pZCBpbnNlcnRFdmVu
dE1hcmtlckVYVChTdHJpbmcmJiBhcmcwKQotICAgIHsKLSAgICAgICAgbV9jb250ZXh0LT5nZXRF
eHRlbnNpb25zKCkuaW5zZXJ0RXZlbnRNYXJrZXJFWFQoYXJnMCk7Ci0gICAgfQotICAgIHZvaWQg
cHVzaEdyb3VwTWFya2VyRVhUKFN0cmluZyYmIGFyZzApCi0gICAgewotICAgICAgICBtX2NvbnRl
eHQtPmdldEV4dGVuc2lvbnMoKS5wdXNoR3JvdXBNYXJrZXJFWFQoYXJnMCk7Ci0gICAgfQotICAg
IHZvaWQgcG9wR3JvdXBNYXJrZXJFWFQoKQotICAgIHsKLSAgICAgICAgbV9jb250ZXh0LT5nZXRF
eHRlbnNpb25zKCkucG9wR3JvdXBNYXJrZXJFWFQoKTsKLSAgICB9CiAgICAgdm9pZCBkcmF3QnVm
ZmVyc0VYVChJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90PiYmIGJ1ZnMpCiAgICAgewogICAg
ICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5kcmF3QnVmZmVyc0VYVChtYWtlR0NHTFNw
YW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMZW51bSo+KGJ1ZnMuZGF0YSgpKSwgYnVmcy5z
aXplKCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhp
Y3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmgKaW5kZXggZDk5
ZWRhMjlmNmRiNWUxODE5NzEzMTc4ZjJhYTUzMWI0ZjVkZDZlMC4uOTBiZGQzNWMzMDQzMDk1MjQ0
YzBkMTAzYWZkNGExNmI3Y2QyZjlhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmgKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5LmgKQEAgLTMxMiw1NiArMzEyLDE2IEBAIHB1YmxpYzoKICAgICB2b2lkIHVuaWZvcm1C
bG9ja0JpbmRpbmcoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMdWludCB1bmlmb3JtQmxv
Y2tJbmRleCwgR0NHTHVpbnQgdW5pZm9ybUJsb2NrQmluZGluZykgZmluYWw7CiAgICAgdm9pZCBn
ZXRBY3RpdmVVbmlmb3JtQmxvY2tpdihHQ0dMdWludCBwcm9ncmFtLCBHQ0dMdWludCB1bmlmb3Jt
QmxvY2tJbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xpbnQ+IHBhcmFtcykgZmlu
YWw7CiAgICAgR0NHTGludCBnZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJCKCkgZmluYWw7Ci0gICAg
dm9pZCBibGl0RnJhbWVidWZmZXJBTkdMRShHQ0dMaW50IHNyY1gwLCBHQ0dMaW50IHNyY1kwLCBH
Q0dMaW50IHNyY1gxLCBHQ0dMaW50IHNyY1kxLCBHQ0dMaW50IGRzdFgwLCBHQ0dMaW50IGRzdFkw
LCBHQ0dMaW50IGRzdFgxLCBHQ0dMaW50IGRzdFkxLCBHQ0dMYml0ZmllbGQgbWFzaywgR0NHTGVu
dW0gZmlsdGVyKSBmaW5hbDsKLSAgICB2b2lkIHJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBs
ZUFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVpIHNhbXBsZXMsIEdDR0xlbnVtIGludGVy
bmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQpIGZpbmFsOwogICAg
IFBsYXRmb3JtR0xPYmplY3QgY3JlYXRlVmVydGV4QXJyYXlPRVMoKSBmaW5hbDsKICAgICB2b2lk
IGRlbGV0ZVZlcnRleEFycmF5T0VTKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkgZmluYWw7CiAgICAg
R0NHTGJvb2xlYW4gaXNWZXJ0ZXhBcnJheU9FUyhQbGF0Zm9ybUdMT2JqZWN0IGFyZzApIGZpbmFs
OwogICAgIHZvaWQgYmluZFZlcnRleEFycmF5T0VTKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkgZmlu
YWw7CiAgICAgU3RyaW5nIGdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRShQbGF0Zm9ybUdM
T2JqZWN0IGFyZzApIGZpbmFsOwotICAgIHZvaWQgaW5zZXJ0RXZlbnRNYXJrZXJFWFQoY29uc3Qg
U3RyaW5nJiBhcmcwKSBmaW5hbDsKLSAgICB2b2lkIHB1c2hHcm91cE1hcmtlckVYVChjb25zdCBT
dHJpbmcmIGFyZzApIGZpbmFsOwotICAgIHZvaWQgcG9wR3JvdXBNYXJrZXJFWFQoKSBmaW5hbDsK
ICAgICB2b2lkIGRyYXdCdWZmZXJzRVhUKEdDR0xTcGFuPGNvbnN0IEdDR0xlbnVtPiBidWZzKSBm
aW5hbDsKICAgICB2b2lkIGRyYXdBcnJheXNJbnN0YW5jZWRBTkdMRShHQ0dMZW51bSBtb2RlLCBH
Q0dMaW50IGZpcnN0LCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xzaXplaSBwcmltY291bnQpIGZpbmFs
OwogICAgIHZvaWQgZHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUoR0NHTGVudW0gbW9kZSwgR0NH
THNpemVpIGNvdW50LCBHQ0dMZW51bSB0eXBlLCBHQ0dMdm9pZHB0ciBvZmZzZXQsIEdDR0xzaXpl
aSBwcmltY291bnQpIGZpbmFsOwogICAgIHZvaWQgdmVydGV4QXR0cmliRGl2aXNvckFOR0xFKEdD
R0x1aW50IGluZGV4LCBHQ0dMdWludCBkaXZpc29yKSBmaW5hbDsKICAgICB2b2lkIGdldEludGVy
bmFsZm9ybWF0aXYoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NH
TGVudW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xpbnQ+IHBhcmFtcykgZmluYWw7Ci0gICAgdm9pZCBy
ZWFkUGl4ZWxzUm9idXN0QU5HTEUoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0
aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dM
c2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xzaXplaSogY29sdW1ucywgR0NH
THNpemVpKiByb3dzLCBHQ0dMdm9pZCogcGl4ZWxzKSBmaW5hbDsKLSAgICB2b2lkIHRleFBhcmFt
ZXRlcmZ2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNp
emVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xmbG9hdCogcGFyYW1zKSBmaW5hbDsKLSAgICB2b2lkIHRl
eFBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwg
R0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xpbnQqIHBhcmFtcykgZmluYWw7Ci0gICAgdm9p
ZCBnZXRRdWVyeWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwg
R0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpIGZp
bmFsOwotICAgIHZvaWQgZ2V0UXVlcnlPYmplY3R1aXZSb2J1c3RBTkdMRShHQ0dMdWludCBpZCwg
R0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NH
THVpbnQqIHBhcmFtcykgZmluYWw7Ci0gICAgdm9pZCBnZXRCdWZmZXJQb2ludGVydlJvYnVzdEFO
R0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBH
Q0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHZvaWQqKiBwYXJhbXMpIGZpbmFsOwotICAgIHZvaWQgZ2V0
VmVydGV4QXR0cmliSWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1l
LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykg
ZmluYWw7Ci0gICAgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJJdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQg
aW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5n
dGgsIEdDR0x1aW50KiBwYXJhbXMpIGZpbmFsOwotICAgIHZvaWQgZ2V0VW5pZm9ybXVpdlJvYnVz
dEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZT
aXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHVpbnQqIHBhcmFtcykgZmluYWw7Ci0gICAgdm9p
ZCBnZXRCdWZmZXJQYXJhbWV0ZXJpNjR2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dM
ZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50
NjQqIHBhcmFtcykgZmluYWw7Ci0gICAgdm9pZCBzYW1wbGVyUGFyYW1ldGVyaXZSb2J1c3RBTkdM
RShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNv
bnN0IEdDR0xpbnQqIHBhcmFtKSBmaW5hbDsKLSAgICB2b2lkIHNhbXBsZXJQYXJhbWV0ZXJmdlJv
YnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVm
U2l6ZSwgY29uc3QgR0NHTGZsb2F0KiBwYXJhbSkgZmluYWw7Ci0gICAgdm9pZCBnZXRTYW1wbGVy
UGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwg
R0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpIGZp
bmFsOwotICAgIHZvaWQgZ2V0U2FtcGxlclBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTHVpbnQg
c2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxl
bmd0aCwgR0NHTGZsb2F0KiBwYXJhbXMpIGZpbmFsOwotICAgIHZvaWQgZ2V0RnJhbWVidWZmZXJQ
YXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdD
R0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1zKSBmaW5h
bDsKLSAgICB2b2lkIGdldFByb2dyYW1JbnRlcmZhY2VpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHBy
b2dyYW0sIEdDR0xlbnVtIHByb2dyYW1JbnRlcmZhY2UsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6
ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykgZmluYWw7Ci0g
ICAgdm9pZCBnZXRCb29sZWFuaV92Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMdWlu
dCBpbmRleCwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMYm9vbGVh
biogZGF0YSkgZmluYWw7IC8vIE5PTElOVAotICAgIHZvaWQgZ2V0TXVsdGlzYW1wbGVmdlJvYnVz
dEFOR0xFKEdDR0xlbnVtIHBuYW1lLCBHQ0dMdWludCBpbmRleCwgR0NHTHNpemVpIGJ1ZlNpemUs
IEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMZmxvYXQqIHZhbCkgZmluYWw7Ci0gICAgdm9pZCBnZXRU
ZXhMZXZlbFBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxl
dmVsLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3Ro
LCBHQ0dMaW50KiBwYXJhbXMpIGZpbmFsOwotICAgIHZvaWQgZ2V0VGV4TGV2ZWxQYXJhbWV0ZXJm
dlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gcG5h
bWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGZsb2F0KiBwYXJh
bXMpIGZpbmFsOwotICAgIHZvaWQgZ2V0UG9pbnRlcnZSb2J1c3RBTkdMRVJvYnVzdEFOR0xFKEdD
R0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0x2
b2lkKiogcGFyYW1zKSBmaW5hbDsKLSAgICB2b2lkIGdldG5Vbmlmb3JtZnZSb2J1c3RBTkdMRShH
Q0dMdWludCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NH
THNpemVpKiBsZW5ndGgsIEdDR0xmbG9hdCogcGFyYW1zKSBmaW5hbDsKLSAgICB2b2lkIGdldG5V
bmlmb3JtaXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBH
Q0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykgZmlu
YWw7Ci0gICAgdm9pZCBnZXRuVW5pZm9ybXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0s
IEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwg
R0NHTHVpbnQqIHBhcmFtcykgZmluYWw7Ci0gICAgdm9pZCB0ZXhQYXJhbWV0ZXJJaXZSb2J1c3RB
TkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwg
Y29uc3QgR0NHTGludCogcGFyYW1zKSBmaW5hbDsKLSAgICB2b2lkIHRleFBhcmFtZXRlckl1aXZS
b2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVm
U2l6ZSwgY29uc3QgR0NHTHVpbnQqIHBhcmFtcykgZmluYWw7Ci0gICAgdm9pZCBnZXRUZXhQYXJh
bWV0ZXJJaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dM
c2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykgZmluYWw7
Ci0gICAgdm9pZCBnZXRUZXhQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBH
Q0dMdWludCogcGFyYW1zKSBmaW5hbDsKLSAgICB2b2lkIHNhbXBsZXJQYXJhbWV0ZXJJaXZSb2J1
c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNp
emUsIGNvbnN0IEdDR0xpbnQqIHBhcmFtKSBmaW5hbDsKLSAgICB2b2lkIHNhbXBsZXJQYXJhbWV0
ZXJJdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xz
aXplaSBidWZTaXplLCBjb25zdCBHQ0dMdWludCogcGFyYW0pIGZpbmFsOwotICAgIHZvaWQgZ2V0
U2FtcGxlclBhcmFtZXRlcklpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVt
IHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBh
cmFtcykgZmluYWw7Ci0gICAgdm9pZCBnZXRTYW1wbGVyUGFyYW1ldGVySXVpdlJvYnVzdEFOR0xF
KEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NH
THNpemVpKiBsZW5ndGgsIEdDR0x1aW50KiBwYXJhbXMpIGZpbmFsOwotICAgIHZvaWQgZ2V0UXVl
cnlPYmplY3RpdlJvYnVzdEFOR0xFKEdDR0x1aW50IGlkLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNp
emVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpIGZpbmFsOwot
ICAgIHZvaWQgZ2V0UXVlcnlPYmplY3RpNjR2Um9idXN0QU5HTEUoR0NHTHVpbnQgaWQsIEdDR0xl
bnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQ2
NCogcGFyYW1zKSBmaW5hbDsKLSAgICB2b2lkIGdldFF1ZXJ5T2JqZWN0dWk2NHZSb2J1c3RBTkdM
RShHQ0dMdWludCBpZCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6
ZWkqIGxlbmd0aCwgR0NHTHVpbnQ2NCogcGFyYW1zKSBmaW5hbDsKICAgICAvLyBFbmQgb2YgbGlz
dCB1c2VkIGJ5IGdlbmVyYXRlLWdwdXAtd2ViZ2wgc2NyaXB0LgogCiBwcm90ZWN0ZWQ6CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHlGdW5jdGlvbnNHZW5lcmF0ZWQuY3BwIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5RnVuY3Rp
b25zR2VuZXJhdGVkLmNwcAppbmRleCBmN2VjZjg2NTU2YTAwNzNhZjhmNTU0Y2ZjZmMwZWYzMzlm
NjFlODlhLi5lMWE2ZGQzNGU1NWI1MjVmZWYyNmI1N2NiMTMyNTJjZjMyYmQwNjlkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHlGdW5jdGlvbnNHZW5lcmF0ZWQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUZ1bmN0
aW9uc0dlbmVyYXRlZC5jcHAKQEAgLTEzODAsMTYgKzEzODAsNiBAQCBHQ0dMaW50IFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIoKQogICAgIHJl
dHVybiByZXR1cm5WYWx1ZTsKIH0KIAotdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpibGl0RnJhbWVidWZmZXJBTkdMRShHQ0dMaW50IHNyY1gwLCBHQ0dMaW50IHNyY1kwLCBHQ0dM
aW50IHNyY1gxLCBHQ0dMaW50IHNyY1kxLCBHQ0dMaW50IGRzdFgwLCBHQ0dMaW50IGRzdFkwLCBH
Q0dMaW50IGRzdFgxLCBHQ0dMaW50IGRzdFkxLCBHQ0dMYml0ZmllbGQgbWFzaywgR0NHTGVudW0g
ZmlsdGVyKQotewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpC
bGl0RnJhbWVidWZmZXJBTkdMRShzcmNYMCwgc3JjWTAsIHNyY1gxLCBzcmNZMSwgZHN0WDAsIGRz
dFkwLCBkc3RYMSwgZHN0WTEsIG1hc2ssIGZpbHRlciksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyKTsKLX0KLQotdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpyZW5kZXJi
dWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xzaXplaSBz
YW1wbGVzLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6
ZWkgaGVpZ2h0KQotewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpSZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVBTkdMRSh0YXJnZXQsIHNhbXBsZXMsIGlu
dGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIpOwotfQotCiBQbGF0Zm9ybUdMT2JqZWN0IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmNyZWF0ZVZlcnRleEFycmF5T0VTKCkKIHsKICAgICB1aW50MzJfdCByZXR1cm5WYWx1ZSA9IHsg
fTsKQEAgLTE0MjEsMjEgKzE0MTEsNiBAQCBTdHJpbmcgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6Z2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFKFBsYXRmb3JtR0xPYgogICAgIHJl
dHVybiByZXR1cm5WYWx1ZTsKIH0KIAotdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjppbnNlcnRFdmVudE1hcmtlckVYVChjb25zdCBTdHJpbmcmIGFyZzApCi17Ci0gICAgc2VuZChN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Okluc2VydEV2ZW50TWFya2VyRVhUKGFy
ZzApLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Ci19Ci0KLXZvaWQgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6cHVzaEdyb3VwTWFya2VyRVhUKGNvbnN0IFN0cmluZyYgYXJn
MCkKLXsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6UHVzaEdy
b3VwTWFya2VyRVhUKGFyZzApLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Ci19Ci0K
LXZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cG9wR3JvdXBNYXJrZXJFWFQoKQot
ewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpQb3BHcm91cE1h
cmtlckVYVCgpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Ci19Ci0KIHZvaWQgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZHJhd0J1ZmZlcnNFWFQoR0NHTFNwYW48Y29uc3Qg
R0NHTGVudW0+IGJ1ZnMpCiB7CiAgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OkRyYXdCdWZmZXJzRVhUKElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+KHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDMyX3QqPihidWZzLmRhdGEpLCBidWZzLmJ1ZlNpemUpKSwg
bV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOwpAQCAtMTQ2NSwxODEgKzE0NDAsNiBAQCB2
b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEludGVybmFsZm9ybWF0aXYoR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMZW51bQogICAgIAogfQogCi12b2lkIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OnJlYWRQaXhlbHNSb2J1c3RBTkdMRShHQ0dMaW50IHgsIEdDR0xpbnQgeSwg
R0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xl
bnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHNpemVp
KiBjb2x1bW5zLCBHQ0dMc2l6ZWkqIHJvd3MsIEdDR0x2b2lkKiBwaXhlbHMpCi17Ci0gICAgbm90
SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0
ZXhQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUs
IEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMZmxvYXQqIHBhcmFtcykKLXsKLSAgICBub3RJ
bXBsZW1lbnRlZCgpOwotfQotCi12b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnRl
eFBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwg
R0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xpbnQqIHBhcmFtcykKLXsKLSAgICBub3RJbXBs
ZW1lbnRlZCgpOwotfQotCi12b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFF1
ZXJ5aXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6
ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykKLXsKLSAgICBu
b3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmdldFF1ZXJ5T2JqZWN0dWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgaWQsIEdDR0xlbnVtIHBuYW1l
LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0x1aW50KiBwYXJhbXMp
Ci17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpnZXRCdWZmZXJQb2ludGVydlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwg
R0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NH
THZvaWQqKiBwYXJhbXMpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRWZXJ0ZXhBdHRyaWJJaXZSb2J1c3RBTkdMRShH
Q0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6
ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1zKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19
Ci0KLXZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VmVydGV4QXR0cmliSXVp
dlJvYnVzdEFOR0xFKEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1
ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMdWludCogcGFyYW1zKQotewotICAgIG5vdElt
cGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0
VW5pZm9ybXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24s
IEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHVpbnQqIHBhcmFtcykK
LXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmdldEJ1ZmZlclBhcmFtZXRlcmk2NHZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJn
ZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgs
IEdDR0xpbnQ2NCogcGFyYW1zKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c2FtcGxlclBhcmFtZXRlcml2Um9idXN0QU5H
TEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBj
b25zdCBHQ0dMaW50KiBwYXJhbSkKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lk
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnNhbXBsZXJQYXJhbWV0ZXJmdlJvYnVzdEFO
R0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwg
Y29uc3QgR0NHTGZsb2F0KiBwYXJhbSkKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12
b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFNhbXBsZXJQYXJhbWV0ZXJpdlJv
YnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVm
U2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykKLXsKLSAgICBub3RJbXBs
ZW1lbnRlZCgpOwotfQotCi12b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFNh
bXBsZXJQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBu
YW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xmbG9hdCogcGFy
YW1zKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6Z2V0RnJhbWVidWZmZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xl
bnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkq
IGxlbmd0aCwgR0NHTGludCogcGFyYW1zKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0K
LXZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0UHJvZ3JhbUludGVyZmFjZWl2
Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGVudW0gcHJvZ3JhbUludGVyZmFjZSwg
R0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NH
TGludCogcGFyYW1zKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0Qm9vbGVhbmlfdlJvYnVzdEFOR0xFKEdDR0xlbnVt
IHRhcmdldCwgR0NHTHVpbnQgaW5kZXgsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxl
bmd0aCwgR0NHTGJvb2xlYW4qIGRhdGEpIC8vIE5PTElOVAotewotICAgIG5vdEltcGxlbWVudGVk
KCk7Ci19Ci0KLXZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0TXVsdGlzYW1w
bGVmdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHBuYW1lLCBHQ0dMdWludCBpbmRleCwgR0NHTHNpemVp
IGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMZmxvYXQqIHZhbCkKLXsKLSAgICBub3RJ
bXBsZW1lbnRlZCgpOwotfQotCi12b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Omdl
dFRleExldmVsUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQg
bGV2ZWwsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5n
dGgsIEdDR0xpbnQqIHBhcmFtcykKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lk
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFRleExldmVsUGFyYW1ldGVyZnZSb2J1
c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIHBuYW1lLCBH
Q0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xmbG9hdCogcGFyYW1zKQot
ewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6Z2V0UG9pbnRlcnZSb2J1c3RBTkdMRVJvYnVzdEFOR0xFKEdDR0xlbnVtIHBuYW1l
LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0x2b2lkKiogcGFyYW1z
KQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6Z2V0blVuaWZvcm1mdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdD
R0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NH
TGZsb2F0KiBwYXJhbXMpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRuVW5pZm9ybWl2Um9idXN0QU5HTEUoR0NHTHVp
bnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXpl
aSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0K
LQotdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRuVW5pZm9ybXVpdlJvYnVz
dEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZT
aXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHVpbnQqIHBhcmFtcykKLXsKLSAgICBub3RJbXBs
ZW1lbnRlZCgpOwotfQotCi12b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnRleFBh
cmFtZXRlcklpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdD
R0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMaW50KiBwYXJhbXMpCi17Ci0gICAgbm90SW1wbGVt
ZW50ZWQoKTsKLX0KLQotdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhQYXJh
bWV0ZXJJdWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NH
THNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0x1aW50KiBwYXJhbXMpCi17Ci0gICAgbm90SW1wbGVt
ZW50ZWQoKTsKLX0KLQotdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRUZXhQ
YXJhbWV0ZXJJaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBH
Q0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykKLXsK
LSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmdldFRleFBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdD
R0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0x1
aW50KiBwYXJhbXMpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpzYW1wbGVyUGFyYW1ldGVySWl2Um9idXN0QU5HTEUoR0NH
THVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBH
Q0dMaW50KiBwYXJhbSkKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnNhbXBsZXJQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUo
R0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25z
dCBHQ0dMdWludCogcGFyYW0pCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRTYW1wbGVyUGFyYW1ldGVySWl2Um9idXN0
QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXpl
LCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1zKQotewotICAgIG5vdEltcGxlbWVu
dGVkKCk7Ci19Ci0KLXZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0U2FtcGxl
clBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFt
ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMdWludCogcGFyYW1z
KQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6Z2V0UXVlcnlPYmplY3RpdlJvYnVzdEFOR0xFKEdDR0x1aW50IGlkLCBHQ0dM
ZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50
KiBwYXJhbXMpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpnZXRRdWVyeU9iamVjdGk2NHZSb2J1c3RBTkdMRShHQ0dMdWlu
dCBpZCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0
aCwgR0NHTGludDY0KiBwYXJhbXMpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9p
ZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRRdWVyeU9iamVjdHVpNjR2Um9idXN0
QU5HTEUoR0NHTHVpbnQgaWQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NH
THNpemVpKiBsZW5ndGgsIEdDR0x1aW50NjQqIHBhcmFtcykKLXsKLSAgICBub3RJbXBsZW1lbnRl
ZCgpOwotfQotCiB9CiAKICNlbmRpZgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>415834</attachid>
            <date>2020-12-09 22:20:35 -0800</date>
            <delta_ts>2020-12-10 18:19:29 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-218896-20201209222034.patch</filename>
            <type>text/plain</type>
            <size>88203</size>
            <attacher name="Rini Patel">rini_patel</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwNTk0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTg5YmE0ODhlN2IwMmI3
YzFjMmUzOTNmOWI4MjgwMjM4YWIwMTI0Yy4uZTc5NmNiMjQzODFiNDE3YTkzMWMxY2JmNjQ5OWVh
OWEwMzA1MmM5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyOSBAQAorMjAyMC0xMi0wNyAgUmlu
aSBQYXRlbCAgPHJpbmlfcGF0ZWxAYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZSB1bnVzZWQg
ZnVuY3Rpb25zIGZyb20gR3JhcGhpY3NDb250ZXh0R0wgYW5kIEV4dGVuc2lvbnNHTAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE4ODk2CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVtb3ZlIHVudXNlZCBm
dW5jdGlvbnMgZnJvbSBHcmFwaGljc0NvbnRleHRHTCBhbmQgRXh0ZW5zaW9uc0dMCisgICAgICAg
IFRoZXkncmUgZGVhZCBjb2RlIGFuZCBtYWtlIGl0IGhhcmRlciB0byBpbXBsZW1lbnQgdGhlIEdQ
VSBQcm9jZXNzIHZlcnNpb24uCisKKyAgICAgICAgLSBJZiB0aGUgZnVuY3Rpb24gaXMgdW51c2Vk
LCByZW1vdmUgaXQgZnVsbHkKKyAgICAgICAgLSBJZiB0aGUgZnVuY3Rpb24gaXMgdW51c2VkIGlu
IFVTRShBTkdMRSkgV2ViR0wgcGFydCwgcmVtb3ZlIHRoZSBmdW5jdGlvbiBmcm9tIEdyYXBoaWNz
Q29udGV4dEdMIGFuZCBBTkdMRSBHcmFwaGljc0NvbnRleHRHTE9wZW5HTAorCisgICAgICAgICog
aHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL0V4dGVuc2lvbnNHTC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lv
bnNHTEFOR0xFOjpFeHRlbnNpb25zR0xBTkdMRSk6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNp
b25zR0xBTkdMRTo6aW5pdGlhbGl6ZUF2YWlsYWJsZUV4dGVuc2lvbnMpOgorICAgICAgICAoV2Vi
Q29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmJsaXRGcmFtZWJ1ZmZlckFOR0xFKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpyZW5kZXJidWZmZXJTdG9yYWdl
TXVsdGlzYW1wbGVBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25z
R0xBTkdMRTo6aW5zZXJ0RXZlbnRNYXJrZXJFWFQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OnB1c2hHcm91cE1hcmtlckVYVCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6cG9wR3JvdXBNYXJrZXJFWFQpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OnJlYWRQaXhlbHNSb2J1
c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6
dGV4UGFyYW1ldGVyZnZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpF
eHRlbnNpb25zR0xBTkdMRTo6dGV4UGFyYW1ldGVyaXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6Z2V0UXVlcnlpdlJvYnVzdEFOR0xF
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpnZXRRdWVy
eU9iamVjdHVpdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVu
c2lvbnNHTEFOR0xFOjpnZXRCdWZmZXJQb2ludGVydlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpnZXRWZXJ0ZXhBdHRyaWJJaXZSb2J1
c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6
Z2V0VmVydGV4QXR0cmliSXVpdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpnZXRVbmlmb3JtdWl2Um9idXN0QU5HTEUpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldEJ1ZmZlclBhcmFtZXRl
cmk2NHZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25z
R0xBTkdMRTo6c2FtcGxlclBhcmFtZXRlcml2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OnNhbXBsZXJQYXJhbWV0ZXJmdlJvYnVzdEFO
R0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpnZXRT
YW1wbGVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpFeHRlbnNpb25zR0xBTkdMRTo6Z2V0U2FtcGxlclBhcmFtZXRlcmZ2Um9idXN0QU5HTEUpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldEZyYW1lYnVm
ZmVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpF
eHRlbnNpb25zR0xBTkdMRTo6Z2V0UHJvZ3JhbUludGVyZmFjZWl2Um9idXN0QU5HTEUpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldEJvb2xlYW5pX3ZS
b2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdM
RTo6Z2V0TXVsdGlzYW1wbGVmdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpnZXRUZXhMZXZlbFBhcmFtZXRlcml2Um9idXN0QU5HTEUp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldFRleExl
dmVsUGFyYW1ldGVyZnZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpF
eHRlbnNpb25zR0xBTkdMRTo6Z2V0UG9pbnRlcnZSb2J1c3RBTkdMRVJvYnVzdEFOR0xFKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpnZXRuVW5pZm9ybWZ2
Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5H
TEU6OmdldG5Vbmlmb3JtaXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpFeHRlbnNpb25zR0xBTkdMRTo6Z2V0blVuaWZvcm11aXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6dGV4UGFyYW1ldGVySWl2Um9i
dXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6
OnRleFBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpFeHRlbnNpb25zR0xBTkdMRTo6Z2V0VGV4UGFyYW1ldGVySWl2Um9idXN0QU5HTEUpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldFRleFBhcmFtZXRl
ckl1aXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25z
R0xBTkdMRTo6c2FtcGxlclBhcmFtZXRlcklpdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpzYW1wbGVyUGFyYW1ldGVySXVpdlJvYnVz
dEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpn
ZXRTYW1wbGVyUGFyYW1ldGVySWl2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldFNhbXBsZXJQYXJhbWV0ZXJJdWl2Um9idXN0QU5H
TEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldFF1
ZXJ5T2JqZWN0aXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRl
bnNpb25zR0xBTkdMRTo6Z2V0UXVlcnlPYmplY3RpNjR2Um9idXN0QU5HTEUpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldFF1ZXJ5T2JqZWN0dWk2NHZS
b2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUv
RXh0ZW5zaW9uc0dMQU5HTEUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wv
RXh0ZW5zaW9uc0dMT3BlbkdMLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9w
ZW5HTDo6YmxpdEZyYW1lYnVmZmVyQU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
RXh0ZW5zaW9uc0dMT3BlbkdMOjpyZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVBTkdMRSk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0w6Omluc2VydEV2
ZW50TWFya2VyRVhUKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9w
ZW5HTDo6cHVzaEdyb3VwTWFya2VyRVhUKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4
dGVuc2lvbnNHTE9wZW5HTDo6cG9wR3JvdXBNYXJrZXJFWFQpOiBEZWxldGVkLgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6cmVhZFBpeGVsc1Jv
YnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5H
TENvbW1vbjo6dGV4UGFyYW1ldGVyZnZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OnRleFBhcmFtZXRlcml2Um9idXN0QU5H
TEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9u
OjpnZXRRdWVyeWl2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0
ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRRdWVyeU9iamVjdHVpdlJvYnVzdEFOR0xFKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0QnVm
ZmVyUG9pbnRlcnZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRl
bnNpb25zR0xPcGVuR0xDb21tb246OmdldFZlcnRleEF0dHJpYklpdlJvYnVzdEFOR0xFKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0VmVy
dGV4QXR0cmliSXVpdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4
dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0VW5pZm9ybXVpdlJvYnVzdEFOR0xFKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0QnVmZmVy
UGFyYW1ldGVyaTY0dlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4
dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6c2FtcGxlclBhcmFtZXRlcml2Um9idXN0QU5HTEUpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpzYW1w
bGVyUGFyYW1ldGVyZnZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpF
eHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFNhbXBsZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xF
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6
Z2V0U2FtcGxlclBhcmFtZXRlcmZ2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRGcmFtZWJ1ZmZlclBhcmFtZXRlcml2
Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3Bl
bkdMQ29tbW9uOjpnZXRQcm9ncmFtSW50ZXJmYWNlaXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldEJvb2xlYW5pX3ZS
b2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVu
R0xDb21tb246OmdldE11bHRpc2FtcGxlZnZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFRleExldmVsUGFyYW1ldGVy
aXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xP
cGVuR0xDb21tb246OmdldFRleExldmVsUGFyYW1ldGVyZnZSb2J1c3RBTkdMRSk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFBvaW50ZXJ2
Um9idXN0QU5HTEVSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRl
bnNpb25zR0xPcGVuR0xDb21tb246OmdldG5Vbmlmb3JtZnZSb2J1c3RBTkdMRSk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldG5Vbmlmb3Jt
aXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xP
cGVuR0xDb21tb246OmdldG5Vbmlmb3JtdWl2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjp0ZXhQYXJhbWV0ZXJJaXZSb2J1
c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xD
b21tb246OnRleFBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFRleFBhcmFtZXRlcklpdlJvYnVz
dEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTENv
bW1vbjo6Z2V0VGV4UGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6c2FtcGxlclBhcmFtZXRlcklpdlJv
YnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5H
TENvbW1vbjo6c2FtcGxlclBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFNhbXBsZXJQYXJhbWV0
ZXJJaXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25z
R0xPcGVuR0xDb21tb246OmdldFNhbXBsZXJQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRRdWVy
eU9iamVjdGl2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5z
aW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRRdWVyeU9iamVjdGk2NHZSb2J1c3RBTkdMRSk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFF1ZXJ5
T2JqZWN0dWk2NHZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5oOgorICAgICAgICAoV2ViQ29y
ZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjppc05WSURJQSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmlzQU1EIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6aXNJbnRlbCBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmlzSW1hZ2luYXRpb24gY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjp2ZW5kb3Ig
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpyZXF1
aXJlc0J1aWx0SW5GdW5jdGlvbkVtdWxhdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpF
eHRlbnNpb25zR0xPcGVuR0xDb21tb246OnJlcXVpcmVzUmVzdHJpY3RlZE1heGltdW1UZXh0dXJl
U2l6ZSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lv
bnNHTE9wZW5HTEVTLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTEVT
OjpibGl0RnJhbWVidWZmZXJBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRl
bnNpb25zR0xPcGVuR0xFUzo6aW5zZXJ0RXZlbnRNYXJrZXJFWFQpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMRVM6OnB1c2hHcm91cE1hcmtlckVYVCk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xFUzo6cG9wR3JvdXBN
YXJrZXJFWFQpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9F
eHRlbnNpb25zR0xPcGVuR0xFUy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5n
bC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEJhc2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlc2hhcGVGQk9zKToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRFeHRlbnNpb25zKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb21tb24uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnZhbGlkYXRlRGVw
dGhTdGVuY2lsKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0xFUy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6Z2V0RXh0ZW5zaW9ucyk6CisKIDIwMjAtMTItMDkgIFJ5YW4gSGFkZGFkICA8cnlh
bmhhZGRhZEBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcmV2ZXJ0aW5nIHIyNzA1
NDQgYW5kIHIyNzA1NjkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCmluZGV4IGY3YzZhMmU4MmE0YmYwMzdhMWI0
NzdkNzgzZmE1NDFhYzRmNTQ2OTYuLjkxODhhNjM5YmE3OTYyZThjY2Q4OTNlNTAwOTUwMmU3Mzgx
MDFkNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCkBAIC03NDEsMTAgKzc0MSw2IEBAIHN0ZDo6dW5pcXVl
X3B0cjxXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlPiBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
OjpjcmVhdGUoQ2FuCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIGF1dG8m
IGV4dGVuc2lvbnMgPSBjb250ZXh0LT5nZXRFeHRlbnNpb25zKCk7Ci0gICAgaWYgKGV4dGVuc2lv
bnMuc3VwcG9ydHMoIkdMX0VYVF9kZWJ1Z19tYXJrZXIiX3MpKQotICAgICAgICBleHRlbnNpb25z
LnB1c2hHcm91cE1hcmtlckVYVCgiV2ViR0xSZW5kZXJpbmdDb250ZXh0Il9zKTsKLQogICAgIHN0
ZDo6dW5pcXVlX3B0cjxXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlPiByZW5kZXJpbmdDb250ZXh0
OwogI2lmIEVOQUJMRShXRUJHTDIpCiAgICAgaWYgKHR5cGUgPT0gIndlYmdsMiIpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9FeHRlbnNpb25zR0wuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0V4dGVuc2lvbnNHTC5oCmluZGV4IGQ1MDIx
ZGQzMzRlZGY5MWEzNDIzMGJlMDE2ODkyMDc0MjQ5ZWIwZTguLmFjOGM4ODkzMjM0NTY3MmU5ZDA1
M2ZjZDk3YTIyZGE4ZTk5MDVlOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0V4dGVuc2lvbnNHTC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0V4dGVuc2lvbnNHTC5oCkBAIC0yODEsMTIgKzI4MSw2IEBAIHB1YmxpYzoKICAgICAv
LyBleHRlcm5hbGx5LgogICAgIHZpcnR1YWwgR0NHTGludCBnZXRHcmFwaGljc1Jlc2V0U3RhdHVz
QVJCKCkgPSAwOwogCi0gICAgLy8gR0xfQU5HTEVfZnJhbWVidWZmZXJfYmxpdAotICAgIHZpcnR1
YWwgdm9pZCBibGl0RnJhbWVidWZmZXJBTkdMRShHQ0dMaW50IHNyY1gwLCBHQ0dMaW50IHNyY1kw
LCBHQ0dMaW50IHNyY1gxLCBHQ0dMaW50IHNyY1kxLCBHQ0dMaW50IGRzdFgwLCBHQ0dMaW50IGRz
dFkwLCBHQ0dMaW50IGRzdFgxLCBHQ0dMaW50IGRzdFkxLCBHQ0dMYml0ZmllbGQgbWFzaywgR0NH
TGVudW0gZmlsdGVyKSA9IDA7Ci0KLSAgICAvLyBHTF9BTkdMRV9mcmFtZWJ1ZmZlcl9tdWx0aXNh
bXBsZQotICAgIHZpcnR1YWwgdm9pZCByZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVBTkdM
RShHQ0dMZW51bSB0YXJnZXQsIEdDR0xzaXplaSBzYW1wbGVzLCBHQ0dMZW51bSBpbnRlcm5hbGZv
cm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KSA9IDA7Ci0KICAgICAvLyBH
TF9PRVNfdmVydGV4X2FycmF5X29iamVjdAogICAgIHZpcnR1YWwgUGxhdGZvcm1HTE9iamVjdCBj
cmVhdGVWZXJ0ZXhBcnJheU9FUygpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlVmVydGV4
QXJyYXlPRVMoUGxhdGZvcm1HTE9iamVjdCkgPSAwOwpAQCAtMjk2LDExICsyOTAsNiBAQCBwdWJs
aWM6CiAgICAgLy8gR0xfQU5HTEVfdHJhbnNsYXRlZF9zaGFkZXJfc291cmNlCiAgICAgdmlydHVh
bCBTdHJpbmcgZ2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFKFBsYXRmb3JtR0xPYmplY3Qp
ID0gMDsKIAotICAgIC8vIEdMX0VYVF9kZWJ1Z19tYXJrZXIKLSAgICB2aXJ0dWFsIHZvaWQgaW5z
ZXJ0RXZlbnRNYXJrZXJFWFQoY29uc3QgU3RyaW5nJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBw
dXNoR3JvdXBNYXJrZXJFWFQoY29uc3QgU3RyaW5nJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBw
b3BHcm91cE1hcmtlckVYVCgpID0gMDsKLQogICAgIC8vIEdMX0FSQl9kcmF3X2J1ZmZlcnMgLyBH
TF9FWFRfZHJhd19idWZmZXJzCiAgICAgdmlydHVhbCB2b2lkIGRyYXdCdWZmZXJzRVhUKEdDR0xT
cGFuPGNvbnN0IEdDR0xlbnVtPiBidWZzKSA9IDA7CiAKQEAgLTMwOSw0NyArMjk4LDYgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgdm9pZCBkcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRShHQ0dMZW51
bSBtb2RlLCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xlbnVtIHR5cGUsIEdDR0x2b2lkcHRyIG9mZnNl
dCwgR0NHTHNpemVpIHByaW1jb3VudCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB2ZXJ0ZXhBdHRy
aWJEaXZpc29yQU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0x1aW50IGRpdmlzb3IpID0gMDsKIAot
ICAgIC8vIEdMX0FOR0xFX3JvYnVzdF9jbGllbnRfbWVtb3J5Ci0gICAgdmlydHVhbCB2b2lkIHJl
YWRQaXhlbHNSb2J1c3RBTkdMRShHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRo
LCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xz
aXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHNpemVpKiBjb2x1bW5zLCBHQ0dM
c2l6ZWkqIHJvd3MsIEdDR0x2b2lkKiBwaXhlbHMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgdGV4
UGFyYW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBH
Q0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGZsb2F0KiBwYXJhbXMpID0gMDsKLSAgICB2aXJ0
dWFsIHZvaWQgdGV4UGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xl
bnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGludCogcGFyYW1zKSA9IDA7
Ci0KLSAgICB2aXJ0dWFsIHZvaWQgZ2V0UXVlcnlpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdl
dCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwg
R0NHTGludCogcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldFF1ZXJ5T2JqZWN0dWl2
Um9idXN0QU5HTEUoR0NHTHVpbnQgaWQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6
ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0x1aW50KiBwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFs
IHZvaWQgZ2V0QnVmZmVyUG9pbnRlcnZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xl
bnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0x2b2lk
KiogcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldFZlcnRleEF0dHJpYklpdlJvYnVz
dEFOR0xFKEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUs
IEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZv
aWQgZ2V0VmVydGV4QXR0cmliSXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IGluZGV4LCBHQ0dMZW51
bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMdWludCog
cGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldFVuaWZvcm11aXZSb2J1c3RBTkdMRShH
Q0dMdWludCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NH
THNpemVpKiBsZW5ndGgsIEdDR0x1aW50KiBwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQg
Z2V0QnVmZmVyUGFyYW1ldGVyaTY0dlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVu
dW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludDY0
KiBwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgc2FtcGxlclBhcmFtZXRlcml2Um9idXN0
QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXpl
LCBjb25zdCBHQ0dMaW50KiBwYXJhbSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBzYW1wbGVyUGFy
YW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NH
THNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xmbG9hdCogcGFyYW0pID0gMDsKLSAgICB2aXJ0dWFs
IHZvaWQgZ2V0U2FtcGxlclBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwg
R0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NH
TGludCogcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldFNhbXBsZXJQYXJhbWV0ZXJm
dlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkg
YnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xmbG9hdCogcGFyYW1zKSA9IDA7Ci0KLSAg
ICB2aXJ0dWFsIHZvaWQgZ2V0RnJhbWVidWZmZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xl
bnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkq
IGxlbmd0aCwgR0NHTGludCogcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldFByb2dy
YW1JbnRlcmZhY2VpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xlbnVtIHByb2dy
YW1JbnRlcmZhY2UsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVp
KiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRCb29s
ZWFuaV92Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMdWludCBpbmRleCwgR0NHTHNp
emVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMYm9vbGVhbiogZGF0YSkgPSAwOyAv
LyBOT0xJTlQKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0TXVsdGlzYW1wbGVmdlJvYnVzdEFOR0xFKEdD
R0xlbnVtIHBuYW1lLCBHQ0dMdWludCBpbmRleCwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXpl
aSogbGVuZ3RoLCBHQ0dMZmxvYXQqIHZhbCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRUZXhM
ZXZlbFBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVs
LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBH
Q0dMaW50KiBwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0VGV4TGV2ZWxQYXJhbWV0
ZXJmdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0g
cG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGZsb2F0KiBw
YXJhbXMpID0gMDsKLQotICAgIHZpcnR1YWwgdm9pZCBnZXRQb2ludGVydlJvYnVzdEFOR0xFUm9i
dXN0QU5HTEUoR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxl
bmd0aCwgR0NHTHZvaWQqKiBwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0blVuaWZv
cm1mdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xz
aXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGZsb2F0KiBwYXJhbXMpID0gMDsK
LSAgICB2aXJ0dWFsIHZvaWQgZ2V0blVuaWZvcm1pdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dy
YW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0
aCwgR0NHTGludCogcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldG5Vbmlmb3JtdWl2
Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVp
IGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMdWludCogcGFyYW1zKSA9IDA7Ci0gICAg
dmlydHVhbCB2b2lkIHRleFBhcmFtZXRlcklpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwg
R0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMaW50KiBwYXJhbXMp
ID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgdGV4UGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFKEdDR0xl
bnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dM
dWludCogcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldFRleFBhcmFtZXRlcklpdlJv
YnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZT
aXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVh
bCB2b2lkIGdldFRleFBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdD
R0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0x1
aW50KiBwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgc2FtcGxlclBhcmFtZXRlcklpdlJv
YnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVm
U2l6ZSwgY29uc3QgR0NHTGludCogcGFyYW0pID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgc2FtcGxl
clBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFt
ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0x1aW50KiBwYXJhbSkgPSAwOwotICAgIHZp
cnR1YWwgdm9pZCBnZXRTYW1wbGVyUGFyYW1ldGVySWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2Ft
cGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0
aCwgR0NHTGludCogcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldFNhbXBsZXJQYXJh
bWV0ZXJJdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdD
R0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHVpbnQqIHBhcmFtcykgPSAw
OwotCi0gICAgdmlydHVhbCB2b2lkIGdldFF1ZXJ5T2JqZWN0aXZSb2J1c3RBTkdMRShHQ0dMdWlu
dCBpZCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0
aCwgR0NHTGludCogcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldFF1ZXJ5T2JqZWN0
aTY0dlJvYnVzdEFOR0xFKEdDR0x1aW50IGlkLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1
ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50NjQqIHBhcmFtcykgPSAwOwotICAgIHZp
cnR1YWwgdm9pZCBnZXRRdWVyeU9iamVjdHVpNjR2Um9idXN0QU5HTEUoR0NHTHVpbnQgaWQsIEdD
R0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0x1
aW50NjQqIHBhcmFtcykgPSAwOwotCiAgICAgLy8gT3RoZXIgZnVuY3Rpb25zLgogI2lmICFVU0Uo
QU5HTEUpCiAgICAgLy8gRVhUIFJvYnVzdG5lc3MgLSB1c2VzIGdldEdyYXBoaWNzUmVzZXRTdGF0
dXNBUkIKQEAgLTM1NywxNiArMzA1LDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBnZXRu
VW5pZm9ybWZ2RVhUKEdDR0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXpl
aSBidWZTaXplLCBHQ0dMZmxvYXQqIHBhcmFtcykgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBnZXRu
VW5pZm9ybWl2RVhUKEdDR0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXpl
aSBidWZTaXplLCBHQ0dMaW50KiBwYXJhbXMpID0gMDsKIAotICAgIHZpcnR1YWwgYm9vbCBpc05W
SURJQSgpID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgaXNBTUQoKSA9IDA7Ci0gICAgdmlydHVhbCBi
b29sIGlzSW50ZWwoKSA9IDA7Ci0gICAgdmlydHVhbCBib29sIGlzSW1hZ2luYXRpb24oKSA9IDA7
Ci0gICAgdmlydHVhbCBTdHJpbmcgdmVuZG9yKCkgPSAwOwotCi0gICAgLy8gU29tZSBjb25maWd1
cmF0aW9ucyBoYXZlIGJ1Z3MgcmVnYXJkaW5nIGJ1aWx0LWluIGZ1bmN0aW9ucyBpbiB0aGVpciBP
cGVuR0wgZHJpdmVycwotICAgIC8vIHRoYXQgbXVzdCBiZSBhdm9pZGVkLiBQb3J0cyBzaG91bGQg
aW1wbGVtZW50IHRoZXNlIGZsYWdzIG9uIHN1Y2ggY29uZmlndXJhdGlvbnMuCi0gICAgdmlydHVh
bCBib29sIHJlcXVpcmVzQnVpbHRJbkZ1bmN0aW9uRW11bGF0aW9uKCkgPSAwOwotICAgIHZpcnR1
YWwgYm9vbCByZXF1aXJlc1Jlc3RyaWN0ZWRNYXhpbXVtVGV4dHVyZVNpemUoKSA9IDA7CiAjZW5k
aWYKIAogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1Jl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmNwcAppbmRleCA2
MGY3YTk0N2VmY2JiMzcxNTZjMDk4ZTBiNWVlMzNjM2I2MmI4NDliLi5kZjNlYzY3Zjc4MzIwMTI3
NjEwNmY5ZTQyM2QyNzE0MmZhYzI0YzkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eUJhc2UuY3BwCkBAIC0xNTAsNTMgKzE1MCw1IEBAIFBsYXRmb3JtTGF5ZXIqIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjpwbGF0Zm9ybUxheWVyKCkgY29uc3QKICAgICByZXR1
cm4gbnVsbHB0cjsKIH0KICNlbmRpZgotI2lmICFVU0UoQU5HTEUpCi12b2lkIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHlCYXNlOjpyZWFkblBpeGVsc0VYVChHQ0dMaW50LCBHQ0dMaW50LCBH
Q0dMc2l6ZWksIEdDR0xzaXplaSwgR0NHTGVudW0sIEdDR0xlbnVtLCBHQ0dMc2l6ZWksIEdDR0x2
b2lkKikKLXsKLX0KLQotdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6Z2V0
blVuaWZvcm1mdkVYVChHQ0dMdWludCwgR0NHTGludCwgR0NHTHNpemVpLCBHQ0dMZmxvYXQqKQot
ewotfQotCi12b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjpnZXRuVW5pZm9y
bWl2RVhUKEdDR0x1aW50LCBHQ0dMaW50LCBHQ0dMc2l6ZWksIEdDR0xpbnQqKQotewotfQotCi1i
b29sIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjppc05WSURJQSgpCi17Ci0gICAg
cmV0dXJuIGZhbHNlOwotfQotCi1ib29sIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNl
Ojppc0FNRCgpCi17Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi1ib29sIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHlCYXNlOjppc0ludGVsKCkKLXsKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0K
LWJvb2wgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OmlzSW1hZ2luYXRpb24oKQot
ewotICAgIHJldHVybiBmYWxzZTsKLX0KLQotU3RyaW5nIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHlCYXNlOjp2ZW5kb3IoKQotewotICAgIHJldHVybiB7IH07Ci19Ci0KLWJvb2wgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OnJlcXVpcmVzQnVpbHRJbkZ1bmN0aW9uRW11bGF0
aW9uKCkKLXsKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLWJvb2wgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eUJhc2U6OnJlcXVpcmVzUmVzdHJpY3RlZE1heGltdW1UZXh0dXJlU2l6ZSgpCi17
Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotI2VuZGlmCiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHlCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5QmFzZS5oCmluZGV4IDcyNmFhZjZjNmEwZjYyZmYyODJlNWI4ZDIwMmEx
Mjk0ZTFkZTg1NzEuLjU2NWJiNWJkMjhjOGNmNTdhYTUzYjI3MGVhZTUxM2Y0YTk1MmZmNGMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHlCYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuaApAQCAtODAsMjAgKzgwLDYgQEAg
cHVibGljOgogICAgIHZvaWQgZW5zdXJlRW5hYmxlZChjb25zdCBTdHJpbmcmKSBmaW5hbDsKICAg
ICBib29sIGlzRW5hYmxlZChjb25zdCBTdHJpbmcmKSBmaW5hbDsKIAotI2lmICFVU0UoQU5HTEUp
Ci0gICAgLy8gRklYTUU6IFRoZXNlIGFyZSBzdXBwb3NlZCB0byBiZSByZW1vdmVkIGluIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTg4OTYuCi0gICAgdm9pZCByZWFk
blBpeGVsc0VYVChHQ0dMaW50LCBHQ0dMaW50LCBHQ0dMc2l6ZWksIEdDR0xzaXplaSwgR0NHTGVu
dW0sIEdDR0xlbnVtLCBHQ0dMc2l6ZWksIEdDR0x2b2lkKikgZmluYWw7Ci0gICAgdm9pZCBnZXRu
VW5pZm9ybWZ2RVhUKEdDR0x1aW50LCBHQ0dMaW50LCBHQ0dMc2l6ZWksIEdDR0xmbG9hdCopIGZp
bmFsOwotICAgIHZvaWQgZ2V0blVuaWZvcm1pdkVYVChHQ0dMdWludCwgR0NHTGludCwgR0NHTHNp
emVpLCBHQ0dMaW50KikgZmluYWw7Ci0gICAgYm9vbCBpc05WSURJQSgpIGZpbmFsOwotICAgIGJv
b2wgaXNBTUQoKSBmaW5hbDsKLSAgICBib29sIGlzSW50ZWwoKSBmaW5hbDsKLSAgICBib29sIGlz
SW1hZ2luYXRpb24oKSBmaW5hbDsKLSAgICBTdHJpbmcgdmVuZG9yKCkgZmluYWw7Ci0gICAgYm9v
bCByZXF1aXJlc0J1aWx0SW5GdW5jdGlvbkVtdWxhdGlvbigpIGZpbmFsOwotICAgIGJvb2wgcmVx
dWlyZXNSZXN0cmljdGVkTWF4aW11bVRleHR1cmVTaXplKCkgZmluYWw7Ci0jZW5kaWYKLQogcHJv
dGVjdGVkOgogICAgIHZvaWQgaW5pdGlhbGl6ZShjb25zdCBTdHJpbmcmIGF2YWlsYWJsZUV4dGVu
c2lvbnMsIGNvbnN0IFN0cmluZyYgcmVxdWVzdGFibGVFeHRlbnNpb25zKTsKICAgICB2aXJ0dWFs
IHZvaWQgd2FpdFVudGlsSW5pdGlhbGl6ZWQoKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRlbnNpb25zR0xBTkdMRS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRlbnNpb25zR0xBTkdMRS5jcHAK
aW5kZXggOTIwZDkyZjM1Y2FkZDhiYjA4NTIzZDE3NjU3NTQxMjA5N2Y2Yzk2Zi4uZjU0MGFiM2Nh
ODUwYjFmMjdjYzYyZWU5NjRjZjA0ZTFkODE1ZThhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmNw
cApAQCAtMzMsMTAgKzMzLDkgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1FeHRlbnNpb25z
R0xBTkdMRTo6RXh0ZW5zaW9uc0dMQU5HTEUoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqIGNvbnRl
eHQsIGJvb2wgdXNlSW5kZXhlZEdldFN0cmluZykKK0V4dGVuc2lvbnNHTEFOR0xFOjpFeHRlbnNp
b25zR0xBTkdMRShHcmFwaGljc0NvbnRleHRHTE9wZW5HTCogY29udGV4dCkKICAgICA6IG1faW5p
dGlhbGl6ZWRBdmFpbGFibGVFeHRlbnNpb25zKGZhbHNlKQogICAgICwgbV9jb250ZXh0KGNvbnRl
eHQpCi0gICAgLCBtX3VzZUluZGV4ZWRHZXRTdHJpbmcodXNlSW5kZXhlZEdldFN0cmluZykKIHsK
IH0KIApAQCAtOTksNDIgKzk4LDE1IEBAIFN0cmluZyBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0VHJh
bnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFKFBsYXRmb3JtR0xPYmplY3Qgc2hhZGVyCiAKIHZvaWQg
RXh0ZW5zaW9uc0dMQU5HTEU6OmluaXRpYWxpemVBdmFpbGFibGVFeHRlbnNpb25zKCkKIHsKLSAg
ICBpZiAobV91c2VJbmRleGVkR2V0U3RyaW5nKSB7Ci0gICAgICAgIEdMaW50IG51bUV4dGVuc2lv
bnMgPSAwOwotICAgICAgICBnbDo6R2V0SW50ZWdlcnYoR0xfTlVNX0VYVEVOU0lPTlMsICZudW1F
eHRlbnNpb25zKTsKLSAgICAgICAgZm9yIChHTGludCBpID0gMDsgaSA8IG51bUV4dGVuc2lvbnM7
ICsraSkKLSAgICAgICAgICAgIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5hZGQoZ2w6OkdldFN0cmlu
Z2koR0xfRVhURU5TSU9OUywgaSkpOwotICAgICAgICBnbDo6R2V0SW50ZWdlcnYoR0xfTlVNX1JF
UVVFU1RBQkxFX0VYVEVOU0lPTlNfQU5HTEUsICZudW1FeHRlbnNpb25zKTsKLSAgICAgICAgZm9y
IChHTGludCBpID0gMDsgaSA8IG51bUV4dGVuc2lvbnM7ICsraSkKLSAgICAgICAgICAgIG1fcmVx
dWVzdGFibGVFeHRlbnNpb25zLmFkZChnbDo6R2V0U3RyaW5naShHTF9SRVFVRVNUQUJMRV9FWFRF
TlNJT05TX0FOR0xFLCBpKSk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgU3RyaW5nIGV4dGVuc2lv
bnNTdHJpbmcgPSBnZXRFeHRlbnNpb25zKCk7Ci0gICAgICAgIGZvciAoYXV0byYgZXh0ZW5zaW9u
IDogZXh0ZW5zaW9uc1N0cmluZy5zcGxpdCgnICcpKQotICAgICAgICAgICAgbV9hdmFpbGFibGVF
eHRlbnNpb25zLmFkZChleHRlbnNpb24pOwotICAgICAgICBleHRlbnNpb25zU3RyaW5nID0gU3Ry
aW5nKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGdsOjpHZXRTdHJpbmcoR0xfUkVRVUVT
VEFCTEVfRVhURU5TSU9OU19BTkdMRSkpKTsKLSAgICAgICAgZm9yIChhdXRvJiBleHRlbnNpb24g
OiBleHRlbnNpb25zU3RyaW5nLnNwbGl0KCcgJykpCi0gICAgICAgICAgICBtX3JlcXVlc3RhYmxl
RXh0ZW5zaW9ucy5hZGQoZXh0ZW5zaW9uKTsKLSAgICB9CisgICAgU3RyaW5nIGV4dGVuc2lvbnNT
dHJpbmcgPSBnZXRFeHRlbnNpb25zKCk7CisgICAgZm9yIChhdXRvJiBleHRlbnNpb24gOiBleHRl
bnNpb25zU3RyaW5nLnNwbGl0KCcgJykpCisgICAgICAgIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5h
ZGQoZXh0ZW5zaW9uKTsKKyAgICBleHRlbnNpb25zU3RyaW5nID0gU3RyaW5nKHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgY2hhcio+KGdsOjpHZXRTdHJpbmcoR0xfUkVRVUVTVEFCTEVfRVhURU5TSU9O
U19BTkdMRSkpKTsKKyAgICBmb3IgKGF1dG8mIGV4dGVuc2lvbiA6IGV4dGVuc2lvbnNTdHJpbmcu
c3BsaXQoJyAnKSkKKyAgICAgICAgbV9yZXF1ZXN0YWJsZUV4dGVuc2lvbnMuYWRkKGV4dGVuc2lv
bik7CiAgICAgbV9pbml0aWFsaXplZEF2YWlsYWJsZUV4dGVuc2lvbnMgPSB0cnVlOwogfQogCi12
b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpibGl0RnJhbWVidWZmZXJBTkdMRShHQ0dMaW50IHNyY1gw
LCBHQ0dMaW50IHNyY1kwLCBHQ0dMaW50IHNyY1gxLCBHQ0dMaW50IHNyY1kxLCBHQ0dMaW50IGRz
dFgwLCBHQ0dMaW50IGRzdFkwLCBHQ0dMaW50IGRzdFgxLCBHQ0dMaW50IGRzdFkxLCBHQ0dMYml0
ZmllbGQgbWFzaywgR0NHTGVudW0gZmlsdGVyKQotewotICAgIC8vIEZJWE1FOiBjb25zaWRlciBh
ZGRpbmcgc3VwcG9ydCBmb3IgQVBQTEVfZnJhbWVidWZmZXJfbXVsdGlzYW1wbGUuCi0gICAgaWYg
KCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAg
ICBnbDo6QmxpdEZyYW1lYnVmZmVyQU5HTEUoc3JjWDAsIHNyY1kwLCBzcmNYMSwgc3JjWTEsIGRz
dFgwLCBkc3RZMCwgZHN0WDEsIGRzdFkxLCBtYXNrLCBmaWx0ZXIpOwotfQotCi12b2lkIEV4dGVu
c2lvbnNHTEFOR0xFOjpyZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVBTkdMRShHQ0dMZW51
bSB0YXJnZXQsIEdDR0xzaXplaSBzYW1wbGVzLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NH
THNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KQotewotICAgIGlmICghbV9jb250ZXh0LT5t
YWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OlJlbmRlcmJ1
ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKHRhcmdldCwgc2FtcGxlcywgaW50ZXJuYWxmb3Jt
YXQsIHdpZHRoLCBoZWlnaHQpOwotfQotCiBQbGF0Zm9ybUdMT2JqZWN0IEV4dGVuc2lvbnNHTEFO
R0xFOjpjcmVhdGVWZXJ0ZXhBcnJheU9FUygpCiB7CiAgICAgaWYgKCFtX2NvbnRleHQtPm1ha2VD
b250ZXh0Q3VycmVudCgpKQpAQCAtMTc1LDI0ICsxNDcsNiBAQCB2b2lkIEV4dGVuc2lvbnNHTEFO
R0xFOjpiaW5kVmVydGV4QXJyYXlPRVMoUGxhdGZvcm1HTE9iamVjdCBhcnJheSkKICAgICBnbDo6
QmluZFZlcnRleEFycmF5T0VTKGFycmF5KTsKIH0KIAotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6
aW5zZXJ0RXZlbnRNYXJrZXJFWFQoY29uc3QgU3RyaW5nJikKLXsKLSAgICAvLyBGSVhNRTogaW1w
bGVtZW50IHRoaXMgZnVuY3Rpb24gYW5kIGFkZCBHTF9FWFRfZGVidWdfbWFya2VyIGluIHN1cHBv
cnRzKCkuCi0gICAgcmV0dXJuOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpwdXNoR3Jv
dXBNYXJrZXJFWFQoY29uc3QgU3RyaW5nJikKLXsKLSAgICAvLyBGSVhNRTogaW1wbGVtZW50IHRo
aXMgZnVuY3Rpb24gYW5kIGFkZCBHTF9FWFRfZGVidWdfbWFya2VyIGluIHN1cHBvcnRzKCkuCi0g
ICAgcmV0dXJuOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpwb3BHcm91cE1hcmtlckVY
VCh2b2lkKQotewotICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQgdGhpcyBmdW5jdGlvbiBhbmQgYWRk
IEdMX0VYVF9kZWJ1Z19tYXJrZXIgaW4gc3VwcG9ydHMoKS4KLSAgICByZXR1cm47Ci19Ci0KIGJv
b2wgRXh0ZW5zaW9uc0dMQU5HTEU6OnN1cHBvcnRzRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgbmFt
ZSkKIHsKICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKG5hbWUpIHx8
IG1fcmVxdWVzdGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKG5hbWUpOwpAQCAtMjQ4LDI5MSArMjAy
LDYgQEAgR0NHTGVudW0gRXh0ZW5zaW9uc0dMQU5HTEU6OmFkanVzdFdlYkdMMVRleHR1cmVJbnRl
cm5hbEZvcm1hdChHQ0dMZW51bSBpbnRlcm5hbGYKICAgICByZXR1cm4gaW50ZXJuYWxmb3JtYXQ7
CiB9CiAKLS8vIEdMX0FOR0xFX3JvYnVzdF9jbGllbnRfbWVtb3J5Ci12b2lkIEV4dGVuc2lvbnNH
TEFOR0xFOjpyZWFkUGl4ZWxzUm9idXN0QU5HTEUoaW50IHgsIGludCB5LCBHQ0dMc2l6ZWkgd2lk
dGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NH
THNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMc2l6ZWkgKmNvbHVtbnMsIEdD
R0xzaXplaSAqcm93cywgdm9pZCAqcGl4ZWxzKQotewotICAgIGlmICghbV9jb250ZXh0LT5tYWtl
Q29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OlJlYWRQaXhlbHNS
b2J1c3RBTkdMRSh4LCB5LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIGJ1ZlNpemUsIGxl
bmd0aCwgY29sdW1ucywgcm93cywgcGl4ZWxzKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdM
RTo6dGV4UGFyYW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBu
YW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGZsb2F0ICpwYXJhbXMpCi17Ci0gICAg
aWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0K
LSAgICBnbDo6VGV4UGFyYW1ldGVyZnZSb2J1c3RBTkdMRSh0YXJnZXQsIHBuYW1lLCBidWZTaXpl
LCBwYXJhbXMpOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjp0ZXhQYXJhbWV0ZXJpdlJv
YnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZT
aXplLCBjb25zdCBHQ0dMaW50ICpwYXJhbXMpCi17Ci0gICAgaWYgKCFtX2NvbnRleHQtPm1ha2VD
b250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6VGV4UGFyYW1ldGVy
aXZSb2J1c3RBTkdMRSh0YXJnZXQsIHBuYW1lLCBidWZTaXplLCBwYXJhbXMpOwotfQotCi12b2lk
IEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRRdWVyeWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBH
Q0dMaW50ICpwYXJhbXMpCi17Ci0gICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVu
dCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6R2V0UXVlcnlpdlJvYnVzdEFOR0xFKHRh
cmdldCwgcG5hbWUsIGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1zKTsKLX0KLQotdm9pZCBFeHRlbnNp
b25zR0xBTkdMRTo6Z2V0UXVlcnlPYmplY3R1aXZSb2J1c3RBTkdMRShHQ0dMdWludCBpZCwgR0NH
TGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHVp
bnQgKnBhcmFtcykKLXsKLSAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkp
Ci0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpHZXRRdWVyeU9iamVjdHVpdlJvYnVzdEFOR0xF
KGlkLCBwbmFtZSwgYnVmU2l6ZSwgbGVuZ3RoLCBwYXJhbXMpOwotfQotCi12b2lkIEV4dGVuc2lv
bnNHTEFOR0xFOjpnZXRCdWZmZXJQb2ludGVydlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwg
R0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgdm9p
ZCAqKnBhcmFtcykKLXsKLSAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkp
Ci0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpHZXRCdWZmZXJQb2ludGVydlJvYnVzdEFOR0xF
KHRhcmdldCwgcG5hbWUsIGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1zKTsKLX0KLQotdm9pZCBFeHRl
bnNpb25zR0xBTkdMRTo6Z2V0VmVydGV4QXR0cmliSWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgaW5k
ZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgs
IEdDR0xpbnQgKnBhcmFtcykKLXsKLSAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJy
ZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpHZXRWZXJ0ZXhBdHRyaWJJaXZSb2J1
c3RBTkdMRShpbmRleCwgcG5hbWUsIGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1zKTsKLX0KLQotdm9p
ZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0VmVydGV4QXR0cmliSXVpdlJvYnVzdEFOR0xFKEdDR0x1
aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAq
bGVuZ3RoLCBHQ0dMdWludCAqcGFyYW1zKQotewotICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29u
dGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OkdldFZlcnRleEF0dHJp
Ykl1aXZSb2J1c3RBTkdMRShpbmRleCwgcG5hbWUsIGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1zKTsK
LX0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0VW5pZm9ybXVpdlJvYnVzdEFOR0xFKEdD
R0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dM
c2l6ZWkgKmxlbmd0aCwgR0NHTHVpbnQgKnBhcmFtcykKLXsKLSAgICBpZiAoIW1fY29udGV4dC0+
bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpHZXRVbmlm
b3JtdWl2Um9idXN0QU5HTEUocHJvZ3JhbSwgbG9jYXRpb24sIGJ1ZlNpemUsIGxlbmd0aCwgcGFy
YW1zKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0QnVmZmVyUGFyYW1ldGVyaTY0
dlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBi
dWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludDY0ICpwYXJhbXMpCi17Ci0gICAgaWYg
KCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAg
ICBnbDo6R2V0QnVmZmVyUGFyYW1ldGVyaTY0dlJvYnVzdEFOR0xFKHRhcmdldCwgcG5hbWUsIGJ1
ZlNpemUsIGxlbmd0aCwgcmVpbnRlcnByZXRfY2FzdDxHTGludDY0Kj4ocGFyYW1zKSk7Ci19Ci0K
LXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OnNhbXBsZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdD
R0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3Qg
R0NHTGludCAqcGFyYW0pCi17Ci0gICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVu
dCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6U2FtcGxlclBhcmFtZXRlcml2Um9idXN0
QU5HTEUoc2FtcGxlciwgcG5hbWUsIGJ1ZlNpemUsIHBhcmFtKTsKLX0KLQotdm9pZCBFeHRlbnNp
b25zR0xBTkdMRTo6c2FtcGxlclBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxl
ciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMZmxvYXQgKnBh
cmFtKQotewotICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAg
ICAgcmV0dXJuOwotCi0gICAgZ2w6OlNhbXBsZXJQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKHNhbXBs
ZXIsIHBuYW1lLCBidWZTaXplLCBwYXJhbSk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6
OmdldFNhbXBsZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xl
bnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQg
KnBhcmFtcykKLXsKLSAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0g
ICAgICAgIHJldHVybjsKLQotICAgIGdsOjpHZXRTYW1wbGVyUGFyYW1ldGVyaXZSb2J1c3RBTkdM
RShzYW1wbGVyLCBwbmFtZSwgYnVmU2l6ZSwgbGVuZ3RoLCBwYXJhbXMpOwotfQotCi12b2lkIEV4
dGVuc2lvbnNHTEFOR0xFOjpnZXRTYW1wbGVyUGFyYW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dMdWlu
dCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAq
bGVuZ3RoLCBHQ0dMZmxvYXQgKnBhcmFtcykKLXsKLSAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNv
bnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpHZXRTYW1wbGVyUGFy
YW1ldGVyZnZSb2J1c3RBTkdMRShzYW1wbGVyLCBwbmFtZSwgYnVmU2l6ZSwgbGVuZ3RoLCBwYXJh
bXMpOwotfQotCi0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldEZyYW1lYnVmZmVyUGFyYW1l
dGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6
ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykKLXsKLSAgICBp
ZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQot
ICAgIGdsOjpHZXRGcmFtZWJ1ZmZlclBhcmFtZXRlcml2Um9idXN0QU5HTEUodGFyZ2V0LCBwbmFt
ZSwgYnVmU2l6ZSwgbGVuZ3RoLCBwYXJhbXMpOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xF
OjpnZXRQcm9ncmFtSW50ZXJmYWNlaXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dM
ZW51bSBwcm9ncmFtSW50ZXJmYWNlLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUs
IEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpCi17Ci0gICAgaWYgKCFtX2NvbnRl
eHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6R2V0
UHJvZ3JhbUludGVyZmFjZWl2Um9idXN0QU5HTEUocHJvZ3JhbSwgcHJvZ3JhbUludGVyZmFjZSwg
cG5hbWUsIGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1zKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xB
TkdMRTo6Z2V0Qm9vbGVhbmlfdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTHVpbnQg
aW5kZXgsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGJvb2xlYW4g
KmRhdGEpCi17Ci0gICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAg
ICAgICByZXR1cm47Ci0KLSAgICBnbDo6R2V0Qm9vbGVhbmlfdlJvYnVzdEFOR0xFKHRhcmdldCwg
aW5kZXgsIGJ1ZlNpemUsIGxlbmd0aCwgZGF0YSk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5H
TEU6OmdldE11bHRpc2FtcGxlZnZSb2J1c3RBTkdMRShHQ0dMZW51bSBwbmFtZSwgR0NHTHVpbnQg
aW5kZXgsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGZsb2F0ICp2
YWwpCi17Ci0gICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAg
ICByZXR1cm47Ci0KLSAgICBnbDo6R2V0TXVsdGlzYW1wbGVmdlJvYnVzdEFOR0xFKHBuYW1lLCBp
bmRleCwgYnVmU2l6ZSwgbGVuZ3RoLCB2YWwpOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xF
OjpnZXRUZXhMZXZlbFBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dM
aW50IGxldmVsLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAq
bGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpCi17Ci0gICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250
ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6R2V0VGV4TGV2ZWxQYXJh
bWV0ZXJpdlJvYnVzdEFOR0xFKHRhcmdldCwgbGV2ZWwsIHBuYW1lLCBidWZTaXplLCBsZW5ndGgs
IHBhcmFtcyk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldFRleExldmVsUGFyYW1l
dGVyZnZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVt
IHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xmbG9hdCAq
cGFyYW1zKQotewotICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAg
ICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OkdldFRleExldmVsUGFyYW1ldGVyZnZSb2J1c3RBTkdM
RSh0YXJnZXQsIGxldmVsLCBwbmFtZSwgYnVmU2l6ZSwgbGVuZ3RoLCBwYXJhbXMpOwotfQotCi0K
LXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldFBvaW50ZXJ2Um9idXN0QU5HTEVSb2J1c3RBTkdM
RShHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCB2
b2lkICoqcGFyYW1zKQotewotICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQo
KSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OkdldFBvaW50ZXJ2Um9idXN0QU5HTEVSb2J1
c3RBTkdMRShwbmFtZSwgYnVmU2l6ZSwgbGVuZ3RoLCBwYXJhbXMpOwotfQotCi12b2lkIEV4dGVu
c2lvbnNHTEFOR0xFOjpnZXRuVW5pZm9ybWZ2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwg
R0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBH
Q0dMZmxvYXQgKnBhcmFtcykKLXsKLSAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJy
ZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpHZXRuVW5pZm9ybWZ2Um9idXN0QU5H
TEUocHJvZ3JhbSwgbG9jYXRpb24sIGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1zKTsKLX0KLQotdm9p
ZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0blVuaWZvcm1pdlJvYnVzdEFOR0xFKEdDR0x1aW50IHBy
b2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxl
bmd0aCwgR0NHTGludCAqcGFyYW1zKQotewotICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4
dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OkdldG5Vbmlmb3JtaXZSb2J1
c3RBTkdMRShwcm9ncmFtLCBsb2NhdGlvbiwgYnVmU2l6ZSwgbGVuZ3RoLCBwYXJhbXMpOwotfQot
Ci12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRuVW5pZm9ybXVpdlJvYnVzdEFOR0xFKEdDR0x1
aW50IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6
ZWkgKmxlbmd0aCwgR0NHTHVpbnQgKnBhcmFtcykKLXsKLSAgICBpZiAoIW1fY29udGV4dC0+bWFr
ZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpHZXRuVW5pZm9y
bXVpdlJvYnVzdEFOR0xFKHByb2dyYW0sIGxvY2F0aW9uLCBidWZTaXplLCBsZW5ndGgsIHBhcmFt
cyk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OnRleFBhcmFtZXRlcklpdlJvYnVzdEFO
R0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBj
b25zdCBHQ0dMaW50ICpwYXJhbXMpCi17Ci0gICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0
Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6VGV4UGFyYW1ldGVySWl2Um9i
dXN0QU5HTEUodGFyZ2V0LCBwbmFtZSwgYnVmU2l6ZSwgcGFyYW1zKTsKLX0KLQotdm9pZCBFeHRl
bnNpb25zR0xBTkdMRTo6dGV4UGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdl
dCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMdWludCAqcGFy
YW1zKQotewotICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAg
ICAgcmV0dXJuOwotCi0gICAgZ2w6OlRleFBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRSh0YXJnZXQs
IHBuYW1lLCBidWZTaXplLCBwYXJhbXMpOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpn
ZXRUZXhQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBu
YW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFt
cykKLXsKLSAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAg
IHJldHVybjsKLQotICAgIGdsOjpHZXRUZXhQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRSh0YXJnZXQs
IHBuYW1lLCBidWZTaXplLCBsZW5ndGgsIHBhcmFtcyk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dM
QU5HTEU6OmdldFRleFBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdD
R0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0x1
aW50ICpwYXJhbXMpCi17Ci0gICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgp
KQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6R2V0VGV4UGFyYW1ldGVySXVpdlJvYnVzdEFO
R0xFKHRhcmdldCwgcG5hbWUsIGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1zKTsKLX0KLQotdm9pZCBF
eHRlbnNpb25zR0xBTkdMRTo6c2FtcGxlclBhcmFtZXRlcklpdlJvYnVzdEFOR0xFKEdDR0x1aW50
IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGlu
dCAqcGFyYW0pCi17Ci0gICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQot
ICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6U2FtcGxlclBhcmFtZXRlcklpdlJvYnVzdEFOR0xF
KHNhbXBsZXIsIHBuYW1lLCBidWZTaXplLCBwYXJhbSk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dM
QU5HTEU6OnNhbXBsZXJQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwg
R0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMdWludCAqcGFyYW0p
Ci17Ci0gICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICBy
ZXR1cm47Ci0KLSAgICBnbDo6U2FtcGxlclBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRShzYW1wbGVy
LCBwbmFtZSwgYnVmU2l6ZSwgcGFyYW0pOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpn
ZXRTYW1wbGVyUGFyYW1ldGVySWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVu
dW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAq
cGFyYW1zKQotewotICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAg
ICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OkdldFNhbXBsZXJQYXJhbWV0ZXJJaXZSb2J1c3RBTkdM
RShzYW1wbGVyLCBwbmFtZSwgYnVmU2l6ZSwgbGVuZ3RoLCBwYXJhbXMpOwotfQotCi12b2lkIEV4
dGVuc2lvbnNHTEFOR0xFOjpnZXRTYW1wbGVyUGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFKEdDR0x1
aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVp
ICpsZW5ndGgsIEdDR0x1aW50ICpwYXJhbXMpCi17Ci0gICAgaWYgKCFtX2NvbnRleHQtPm1ha2VD
b250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6R2V0U2FtcGxlclBh
cmFtZXRlckl1aXZSb2J1c3RBTkdMRShzYW1wbGVyLCBwbmFtZSwgYnVmU2l6ZSwgbGVuZ3RoLCBw
YXJhbXMpOwotfQotCi0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldFF1ZXJ5T2JqZWN0aXZS
b2J1c3RBTkdMRShHQ0dMdWludCBpZCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXpl
LCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKQotewotICAgIGlmICghbV9jb250
ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6Okdl
dFF1ZXJ5T2JqZWN0aXZSb2J1c3RBTkdMRShpZCwgcG5hbWUsIGJ1ZlNpemUsIGxlbmd0aCwgcGFy
YW1zKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0UXVlcnlPYmplY3RpNjR2Um9i
dXN0QU5HTEUoR0NHTHVpbnQgaWQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwg
R0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQ2NCAqcGFyYW1zKQotewotICAgIGlmICghbV9jb250
ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6Okdl
dFF1ZXJ5T2JqZWN0aTY0dlJvYnVzdEFOR0xFKGlkLCBwbmFtZSwgYnVmU2l6ZSwgbGVuZ3RoLCBy
ZWludGVycHJldF9jYXN0PEdMaW50NjQqPihwYXJhbXMpKTsKLX0KLQotdm9pZCBFeHRlbnNpb25z
R0xBTkdMRTo6Z2V0UXVlcnlPYmplY3R1aTY0dlJvYnVzdEFOR0xFKEdDR0x1aW50IGlkLCBHQ0dM
ZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMdWlu
dDY0ICpwYXJhbXMpCi17Ci0gICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgp
KQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6R2V0UXVlcnlPYmplY3R1aTY0dlJvYnVzdEFO
R0xFKGlkLCBwbmFtZSwgYnVmU2l6ZSwgbGVuZ3RoLCByZWludGVycHJldF9jYXN0PEdMdWludDY0
Kj4ocGFyYW1zKSk7Ci19Ci0KLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8g
RU5BQkxFKFdFQkdMKSAmJiBVU0UoQU5HTEUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRlbnNpb25zR0xBTkdMRS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUuaAppbmRleCBiMmQy
NzdiOWFjOWQyNzg2MGY1NWFiYWJmOGNmZTU1ZTg0YjVmNTdlLi4wMDQyMzM3NzIwMzRiZmEzZWFj
MTM3ZGMzNjM0ODA5MTZkZWFhZjdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hbmdsZS9FeHRlbnNpb25zR0xBTkdMRS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmgKQEAgLTM2LDcgKzM2
LDcgQEAgY2xhc3MgRXh0ZW5zaW9uc0dMQU5HTEUgOiBwdWJsaWMgRXh0ZW5zaW9uc0dMIHsKICAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICAvLyBUaGlzIGNsYXNzIG9u
bHkgbmVlZHMgdG8gYmUgaW5zdGFudGlhdGVkIGJ5IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMIGlt
cGxlbWVudGF0aW9ucy4KLSAgICBFeHRlbnNpb25zR0xBTkdMRShHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTCosIGJvb2wgdXNlSW5kZXhlZEdldFN0cmluZyA9IGZhbHNlKTsKKyAgICBleHBsaWNpdCBF
eHRlbnNpb25zR0xBTkdMRShHcmFwaGljc0NvbnRleHRHTE9wZW5HTCopOwogICAgIHZpcnR1YWwg
fkV4dGVuc2lvbnNHTEFOR0xFKCk7CiAKICAgICAvLyBFeHRlbnNpb25zR0wgbWV0aG9kcy4KQEAg
LTQ5LDYwICs0OSwxNCBAQCBwdWJsaWM6CiAgICAgdm9pZCBkZWxldGVWZXJ0ZXhBcnJheU9FUyhQ
bGF0Zm9ybUdMT2JqZWN0KSBvdmVycmlkZTsKICAgICBHQ0dMYm9vbGVhbiBpc1ZlcnRleEFycmF5
T0VTKFBsYXRmb3JtR0xPYmplY3QpIG92ZXJyaWRlOwogICAgIHZvaWQgYmluZFZlcnRleEFycmF5
T0VTKFBsYXRmb3JtR0xPYmplY3QpIG92ZXJyaWRlOwotICAgIHZvaWQgaW5zZXJ0RXZlbnRNYXJr
ZXJFWFQoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBwdXNoR3JvdXBNYXJrZXJF
WFQoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBwb3BHcm91cE1hcmtlckVYVCh2
b2lkKSBvdmVycmlkZTsKICAgICB2b2lkIGRyYXdCdWZmZXJzRVhUKEdDR0xTcGFuPGNvbnN0IEdD
R0xlbnVtPikgb3ZlcnJpZGU7CiAKICAgICBTdHJpbmcgZ2V0VHJhbnNsYXRlZFNoYWRlclNvdXJj
ZUFOR0xFKFBsYXRmb3JtR0xPYmplY3QpIG92ZXJyaWRlOwogCi0gICAgdm9pZCBibGl0RnJhbWVi
dWZmZXJBTkdMRShHQ0dMaW50IHNyY1gwLCBHQ0dMaW50IHNyY1kwLCBHQ0dMaW50IHNyY1gxLCBH
Q0dMaW50IHNyY1kxLCBHQ0dMaW50IGRzdFgwLCBHQ0dMaW50IGRzdFkwLCBHQ0dMaW50IGRzdFgx
LCBHQ0dMaW50IGRzdFkxLCBHQ0dMYml0ZmllbGQgbWFzaywgR0NHTGVudW0gZmlsdGVyKSBvdmVy
cmlkZTsKLSAgICB2b2lkIHJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKEdDR0xl
bnVtIHRhcmdldCwgR0NHTHNpemVpIHNhbXBsZXMsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBH
Q0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQpIG92ZXJyaWRlOwotCiAgICAgdm9pZCBk
cmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUoR0NHTGVudW0gbW9kZSwgR0NHTGludCBmaXJzdCwgR0NH
THNpemVpIGNvdW50LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KSBvdmVycmlkZTsKICAgICB2b2lkIGRy
YXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xzaXplaSBjb3VudCwg
R0NHTGVudW0gdHlwZSwgR0NHTHZvaWRwdHIgb2Zmc2V0LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KSBv
dmVycmlkZTsKICAgICB2b2lkIHZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRShHQ0dMdWludCBpbmRl
eCwgR0NHTHVpbnQgZGl2aXNvcikgb3ZlcnJpZGU7CiAKLSAgICAvLyBHTF9BTkdMRV9yb2J1c3Rf
Y2xpZW50X21lbW9yeQotICAgIHZvaWQgcmVhZFBpeGVsc1JvYnVzdEFOR0xFKEdDR0xpbnQgeCwg
R0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZv
cm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3Ro
LCBHQ0dMc2l6ZWkgKmNvbHVtbnMsIEdDR0xzaXplaSAqcm93cywgdm9pZCAqcGl4ZWxzKSBvdmVy
cmlkZTsKLSAgICB2b2lkIHRleFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xmbG9hdCAqcGFy
YW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIHRleFBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVu
dW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xp
bnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRRdWVyeWl2Um9idXN0QU5HTEUoR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXpl
aSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0UXVlcnlP
YmplY3R1aXZSb2J1c3RBTkdMRShHQ0dMdWludCBpZCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXpl
aSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHVpbnQgKnBhcmFtcykgb3ZlcnJpZGU7
Ci0gICAgdm9pZCBnZXRCdWZmZXJQb2ludGVydlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwg
R0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgdm9p
ZCAqKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJJaXZSb2J1c3RB
TkdMRShHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBH
Q0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdl
dFZlcnRleEF0dHJpYkl1aXZSb2J1c3RBTkdMRShHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5h
bWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHVpbnQgKnBhcmFt
cykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRVbmlmb3JtdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQg
cHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAq
bGVuZ3RoLCBHQ0dMdWludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldEJ1ZmZlclBh
cmFtZXRlcmk2NHZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBH
Q0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQ2NCAqcGFyYW1zKSBv
dmVycmlkZTsKLSAgICB2b2lkIHNhbXBsZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0x1aW50
IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGlu
dCAqcGFyYW0pIG92ZXJyaWRlOwotICAgIHZvaWQgc2FtcGxlclBhcmFtZXRlcmZ2Um9idXN0QU5H
TEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBj
b25zdCBHQ0dMZmxvYXQgKnBhcmFtKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldFNhbXBsZXJQYXJh
bWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dM
c2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykgb3ZlcnJp
ZGU7Ci0gICAgdm9pZCBnZXRTYW1wbGVyUGFyYW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dMdWludCBz
YW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVu
Z3RoLCBHQ0dMZmxvYXQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0KLSAgICB2b2lkIGdldEZyYW1lYnVm
ZmVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1l
LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykg
b3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRQcm9ncmFtSW50ZXJmYWNlaXZSb2J1c3RBTkdMRShHQ0dM
dWludCBwcm9ncmFtLCBHQ0dMZW51bSBwcm9ncmFtSW50ZXJmYWNlLCBHQ0dMZW51bSBwbmFtZSwg
R0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpIG92
ZXJyaWRlOwotICAgIHZvaWQgZ2V0Qm9vbGVhbmlfdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdl
dCwgR0NHTHVpbnQgaW5kZXgsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwg
R0NHTGJvb2xlYW4gKmRhdGEpIG92ZXJyaWRlOyAvLyBOT0xJTlQKLSAgICB2b2lkIGdldE11bHRp
c2FtcGxlZnZSb2J1c3RBTkdMRShHQ0dMZW51bSBwbmFtZSwgR0NHTHVpbnQgaW5kZXgsIEdDR0xz
aXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGZsb2F0ICp2YWwpIG92ZXJyaWRl
OwotICAgIHZvaWQgZ2V0VGV4TGV2ZWxQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRh
cmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBH
Q0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdl
dFRleExldmVsUGFyYW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQg
bGV2ZWwsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5n
dGgsIEdDR0xmbG9hdCAqcGFyYW1zKSBvdmVycmlkZTsKLQotICAgIHZvaWQgZ2V0UG9pbnRlcnZS
b2J1c3RBTkdMRVJvYnVzdEFOR0xFKEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwg
R0NHTHNpemVpICpsZW5ndGgsIHZvaWQgKipwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0
blVuaWZvcm1mdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24s
IEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGZsb2F0ICpwYXJhbXMp
IG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0blVuaWZvcm1pdlJvYnVzdEFOR0xFKEdDR0x1aW50IHBy
b2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxl
bmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldG5Vbmlmb3JtdWl2
Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVp
IGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMdWludCAqcGFyYW1zKSBvdmVycmlkZTsK
LSAgICB2b2lkIHRleFBhcmFtZXRlcklpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NH
TGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMaW50ICpwYXJhbXMpIG92
ZXJyaWRlOwotICAgIHZvaWQgdGV4UGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRh
cmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMdWludCAq
cGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldFRleFBhcmFtZXRlcklpdlJvYnVzdEFOR0xF
KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dM
c2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldFRl
eFBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1l
LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0x1aW50ICpwYXJhbXMp
IG92ZXJyaWRlOwotICAgIHZvaWQgc2FtcGxlclBhcmFtZXRlcklpdlJvYnVzdEFOR0xFKEdDR0x1
aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NH
TGludCAqcGFyYW0pIG92ZXJyaWRlOwotICAgIHZvaWQgc2FtcGxlclBhcmFtZXRlckl1aXZSb2J1
c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNp
emUsIGNvbnN0IEdDR0x1aW50ICpwYXJhbSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRTYW1wbGVy
UGFyYW1ldGVySWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUs
IEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSBv
dmVycmlkZTsKLSAgICB2b2lkIGdldFNhbXBsZXJQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUoR0NH
THVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6
ZWkgKmxlbmd0aCwgR0NHTHVpbnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0KLSAgICB2b2lkIGdldFF1
ZXJ5T2JqZWN0aXZSb2J1c3RBTkdMRShHQ0dMdWludCBpZCwgR0NHTGVudW0gcG5hbWUsIEdDR0xz
aXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVycmlk
ZTsKLSAgICB2b2lkIGdldFF1ZXJ5T2JqZWN0aTY0dlJvYnVzdEFOR0xFKEdDR0x1aW50IGlkLCBH
Q0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dM
aW50NjQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRRdWVyeU9iamVjdHVpNjR2Um9i
dXN0QU5HTEUoR0NHTHVpbnQgaWQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwg
R0NHTHNpemVpICpsZW5ndGgsIEdDR0x1aW50NjQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0KICAgICAv
LyBPbmx5IGZvciBub24tV2ViR0wgMi4wIGNvbnRleHRzLgogICAgIEdDR0xlbnVtIGFkanVzdFdl
YkdMMVRleHR1cmVJbnRlcm5hbEZvcm1hdChHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTGVu
dW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlKTsKIApAQCAtMTE5LDggKzczLDYgQEAgcHJpdmF0ZToK
ICAgICAvLyBXZWFrIHBvaW50ZXIgYmFjayB0byBHcmFwaGljc0NvbnRleHRHTE9wZW5HTC4KICAg
ICBHcmFwaGljc0NvbnRleHRHTE9wZW5HTCogbV9jb250ZXh0OwogCi0gICAgYm9vbCBtX3VzZUlu
ZGV4ZWRHZXRTdHJpbmcgeyBmYWxzZSB9OwotCiAgICAgLy8gV2hldGhlciB0aGUgV2ViR0wgMS4w
LXJlbGF0ZWQgZmxvYXRpbmctcG9pbnQgcmVuZGVyYWJpbGl0eSBleHRlbnNpb25zIGhhdmUgYmVl
biBlbmFibGVkLgogICAgIGJvb2wgbV93ZWJnbENvbG9yQnVmZmVyRmxvYXRSR0IgeyBmYWxzZSB9
OwogICAgIGJvb2wgbV93ZWJnbENvbG9yQnVmZmVyRmxvYXRSR0JBIHsgZmFsc2UgfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29u
dGV4dEdMQU5HTEUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUv
R3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHAKaW5kZXggMzA5YTUzMDliNjQwYTNkNmEyODE0MWNh
N2IxYTc1ZGI0NmU5Zjk1MS4uMWQyNGUzZDRlY2I5NTU1OTgwMWU4YTgzYzk1MzRhNWFmZDIwOTI1
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3Jh
cGhpY3NDb250ZXh0R0xBTkdMRS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHAKQEAgLTIyNTAsNiArMjI1MCw5
IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Om1hcmtDb250ZXh0Q2hhbmdlZCgpCiAK
IHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Om1hcmtMYXllckNvbXBvc2l0ZWQoKQogewor
ICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCisgICAgICAgIHJldHVybjsKKwogICAgIG1f
bGF5ZXJDb21wb3NpdGVkID0gdHJ1ZTsKICAgICByZXNldEJ1ZmZlcnNUb0F1dG9DbGVhcigpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0
ZW5zaW9uc0dMT3BlbkdMLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29w
ZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuY3BwCmluZGV4IDg0MjI4NDZiNmY2MmE3NTU0ZThiMmRj
ZjAyNDdmZjYwNTM5NWQ0NWEuLjg2ZDE5Y2FhZmI2ZTNmMGUzMjFkZTE3MzIxMmE1NGZjZTYxZjcx
ZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9F
eHRlbnNpb25zR0xPcGVuR0wuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuY3BwCkBAIC00OCwyMiArNDgsNiBAQCBFeHRl
bnNpb25zR0xPcGVuR0w6OkV4dGVuc2lvbnNHTE9wZW5HTChHcmFwaGljc0NvbnRleHRHTE9wZW5H
TCogY29udGV4dCwgYm9vbCB1cwogRXh0ZW5zaW9uc0dMT3BlbkdMOjp+RXh0ZW5zaW9uc0dMT3Bl
bkdMKCkgPSBkZWZhdWx0OwogCiAKLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMOjpibGl0RnJhbWVi
dWZmZXJBTkdMRShHQ0dMaW50IHNyY1gwLCBHQ0dMaW50IHNyY1kwLCBHQ0dMaW50IHNyY1gxLCBH
Q0dMaW50IHNyY1kxLCBHQ0dMaW50IGRzdFgwLCBHQ0dMaW50IGRzdFkwLCBHQ0dMaW50IGRzdFgx
LCBHQ0dMaW50IGRzdFkxLCBHQ0dMYml0ZmllbGQgbWFzaywgR0NHTGVudW0gZmlsdGVyKQotewot
ICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJu
OwotCi0gICAgOjpnbEJsaXRGcmFtZWJ1ZmZlckVYVChzcmNYMCwgc3JjWTAsIHNyY1gxLCBzcmNZ
MSwgZHN0WDAsIGRzdFkwLCBkc3RYMSwgZHN0WTEsIG1hc2ssIGZpbHRlcik7Ci19Ci0KLXZvaWQg
RXh0ZW5zaW9uc0dMT3BlbkdMOjpyZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVBTkdMRShH
Q0dMZW51bSB0YXJnZXQsIEdDR0xzaXplaSBzYW1wbGVzLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1h
dCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KQotewotICAgIGlmICghbV9jb250
ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgOjpnbFJl
bmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUVYVCh0YXJnZXQsIHNhbXBsZXMsIGludGVybmFs
Zm9ybWF0LCB3aWR0aCwgaGVpZ2h0KTsKLX0KLQogUGxhdGZvcm1HTE9iamVjdCBFeHRlbnNpb25z
R0xPcGVuR0w6OmNyZWF0ZVZlcnRleEFycmF5T0VTKCkKIHsKICAgICBpZiAoIW1fY29udGV4dC0+
bWFrZUNvbnRleHRDdXJyZW50KCkpCkBAIC0xMjcsMjQgKzExMSw2IEBAIHZvaWQgRXh0ZW5zaW9u
c0dMT3BlbkdMOjpiaW5kVmVydGV4QXJyYXlPRVMoUGxhdGZvcm1HTE9iamVjdCBhcnJheSkKICNl
bmRpZgogfQogCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTDo6aW5zZXJ0RXZlbnRNYXJrZXJFWFQo
Y29uc3QgU3RyaW5nJikKLXsKLSAgICAvLyBGSVhNRTogaW1wbGVtZW50IHRoaXMgZnVuY3Rpb24g
YW5kIGFkZCBHTF9FWFRfZGVidWdfbWFya2VyIGluIHN1cHBvcnRzKCkuCi0gICAgcmV0dXJuOwot
fQotCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTDo6cHVzaEdyb3VwTWFya2VyRVhUKGNvbnN0IFN0
cmluZyYpCi17Ci0gICAgLy8gRklYTUU6IGltcGxlbWVudCB0aGlzIGZ1bmN0aW9uIGFuZCBhZGQg
R0xfRVhUX2RlYnVnX21hcmtlciBpbiBzdXBwb3J0cygpLgotICAgIHJldHVybjsKLX0KLQotdm9p
ZCBFeHRlbnNpb25zR0xPcGVuR0w6OnBvcEdyb3VwTWFya2VyRVhUKHZvaWQpCi17Ci0gICAgLy8g
RklYTUU6IGltcGxlbWVudCB0aGlzIGZ1bmN0aW9uIGFuZCBhZGQgR0xfRVhUX2RlYnVnX21hcmtl
ciBpbiBzdXBwb3J0cygpLgotICAgIHJldHVybjsKLX0KLQogYm9vbCBFeHRlbnNpb25zR0xPcGVu
R0w6OnN1cHBvcnRzRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgbmFtZSkKIHsKICAgICAvLyBHTF9B
TkdMRV9mcmFtZWJ1ZmZlcl9ibGl0IGFuZCBHTF9BTkdMRV9mcmFtZWJ1ZmZlcl9tdWx0aXNhbXBs
ZSBhcmUgImZha2UiLiBUaGV5IGFyZSBpbXBsZW1lbnRlZCB1c2luZyBvdGhlcgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9w
ZW5HTC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lv
bnNHTE9wZW5HTC5oCmluZGV4IDQ3NTAyMjZlY2VjZWY0NDM5NmU5OTM4Njc2Y2I2MzliZTgzNDM3
YjYuLjBhZGJkNzA1MGI3ZTNmNzdlMDE4ODk0MzMyZmZjODdjZjMwZDkwYzUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVu
R0wuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5z
aW9uc0dMT3BlbkdMLmgKQEAgLTQwLDE2ICs0MCwxMCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+
RXh0ZW5zaW9uc0dMT3BlbkdMKCk7CiAKICAgICAvLyBFeHRlbnNpb25zR0wgbWV0aG9kcy4KLSAg
ICB2b2lkIGJsaXRGcmFtZWJ1ZmZlckFOR0xFKEdDR0xpbnQgc3JjWDAsIEdDR0xpbnQgc3JjWTAs
IEdDR0xpbnQgc3JjWDEsIEdDR0xpbnQgc3JjWTEsIEdDR0xpbnQgZHN0WDAsIEdDR0xpbnQgZHN0
WTAsIEdDR0xpbnQgZHN0WDEsIEdDR0xpbnQgZHN0WTEsIEdDR0xiaXRmaWVsZCBtYXNrLCBHQ0dM
ZW51bSBmaWx0ZXIpIG92ZXJyaWRlOwotICAgIHZvaWQgcmVuZGVyYnVmZmVyU3RvcmFnZU11bHRp
c2FtcGxlQU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWkgc2FtcGxlcywgR0NHTGVudW0g
aW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkgb3ZlcnJp
ZGU7Ci0KICAgICBQbGF0Zm9ybUdMT2JqZWN0IGNyZWF0ZVZlcnRleEFycmF5T0VTKCkgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBkZWxldGVWZXJ0ZXhBcnJheU9FUyhQbGF0Zm9ybUdMT2JqZWN0KSBvdmVy
cmlkZTsKICAgICBHQ0dMYm9vbGVhbiBpc1ZlcnRleEFycmF5T0VTKFBsYXRmb3JtR0xPYmplY3Qp
IG92ZXJyaWRlOwogICAgIHZvaWQgYmluZFZlcnRleEFycmF5T0VTKFBsYXRmb3JtR0xPYmplY3Qp
IG92ZXJyaWRlOwotICAgIHZvaWQgaW5zZXJ0RXZlbnRNYXJrZXJFWFQoY29uc3QgU3RyaW5nJikg
b3ZlcnJpZGU7Ci0gICAgdm9pZCBwdXNoR3JvdXBNYXJrZXJFWFQoY29uc3QgU3RyaW5nJikgb3Zl
cnJpZGU7Ci0gICAgdm9pZCBwb3BHcm91cE1hcmtlckVYVCh2b2lkKSBvdmVycmlkZTsKICAgICB2
b2lkIGRyYXdCdWZmZXJzRVhUKEdDR0xTcGFuPGNvbnN0IEdDR0xlbnVtPikgb3ZlcnJpZGU7CiAK
ICAgICB2b2lkIGRyYXdBcnJheXNJbnN0YW5jZWRBTkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMaW50
IGZpcnN0LCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xzaXplaSBwcmltY291bnQpIG92ZXJyaWRlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVu
c2lvbnNHTE9wZW5HTENvbW1vbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmNwcAppbmRleCBjMzQzOGQ1OTFjMDdh
MzZjZjFlMDQyNmMxYjlmZDdiM2U5MTc3OWQ1Li4wOWRiODU0MDAyMjFkZjk3NTc4ODg1OWE0YTI4
N2FiYWEyNGY4MjcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmNwcApA
QCAtMjU0LDE4NSArMjU0LDYgQEAgdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldG5V
bmlmb3JtaXZFWFQoR0NHTHVpbnQsIGludCwgR0NHTHNpemVpLCBHQ0dMaW4KICAgICBtX2NvbnRl
eHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKIH0KIAotdm9pZCBF
eHRlbnNpb25zR0xPcGVuR0xDb21tb246OnJlYWRQaXhlbHNSb2J1c3RBTkdMRShpbnQsIGludCwg
R0NHTHNpemVpLCBHQ0dMc2l6ZWksIEdDR0xlbnVtLCBHQ0dMZW51bSwgR0NHTHNpemVpLCBHQ0dM
c2l6ZWkgKiwgR0NHTHNpemVpICosIEdDR0xzaXplaSAqLCB2b2lkICopCi17Ci0gICAgbV9jb250
ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Ci19Ci0KLXZvaWQg
RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjp0ZXhQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0xl
bnVtLCBHQ0dMZW51bSwgR0NHTHNpemVpLCBjb25zdCBHQ0dMZmxvYXQgKikKLXsKLSAgICBtX2Nv
bnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLX0KLQotdm9p
ZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OnRleFBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NH
TGVudW0sIEdDR0xlbnVtLCBHQ0dMc2l6ZWksIGNvbnN0IEdDR0xpbnQgKikKLXsKLSAgICBtX2Nv
bnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLX0KLQotdm9p
ZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFF1ZXJ5aXZSb2J1c3RBTkdMRShHQ0dMZW51
bSwgR0NHTGVudW0sIEdDR0xzaXplaSwgR0NHTHNpemVpICosIEdDR0xpbnQgKikKLXsKLSAgICBt
X2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLX0KLQot
dm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFF1ZXJ5T2JqZWN0dWl2Um9idXN0QU5H
TEUoR0NHTHVpbnQsIEdDR0xlbnVtLCBHQ0dMc2l6ZWksIEdDR0xzaXplaSAqLCBHQ0dMdWludCAq
KQotewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJ
T04pOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0QnVmZmVyUG9pbnRl
cnZSb2J1c3RBTkdMRShHQ0dMZW51bSwgR0NHTGVudW0sIEdDR0xzaXplaSwgR0NHTHNpemVpICos
IHZvaWQgKiopCi17Ci0gICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElE
X09QRVJBVElPTik7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRWZXJ0
ZXhBdHRyaWJJaXZSb2J1c3RBTkdMRShHQ0dMdWludCwgR0NHTGVudW0sIEdDR0xzaXplaSwgR0NH
THNpemVpICosIEdDR0xpbnQgKikKLXsKLSAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9y
KEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21t
b246OmdldFZlcnRleEF0dHJpYkl1aXZSb2J1c3RBTkdMRShHQ0dMdWludCwgR0NHTGVudW0sIEdD
R0xzaXplaSwgR0NHTHNpemVpICosIEdDR0x1aW50ICopCi17Ci0gICAgbV9jb250ZXh0LT5zeW50
aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9u
c0dMT3BlbkdMQ29tbW9uOjpnZXRVbmlmb3JtdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQsIGludCwg
R0NHTHNpemVpLCBHQ0dMc2l6ZWkgKiwgR0NHTHVpbnQgKikKLXsKLSAgICBtX2NvbnRleHQtPnN5
bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLX0KLQotdm9pZCBFeHRlbnNp
b25zR0xPcGVuR0xDb21tb246OmdldEJ1ZmZlclBhcmFtZXRlcmk2NHZSb2J1c3RBTkdMRShHQ0dM
ZW51bSwgR0NHTGVudW0sIEdDR0xzaXplaSwgR0NHTHNpemVpICosIEdDR0xpbnQ2NCAqKQotewot
ICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwot
fQotCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6c2FtcGxlclBhcmFtZXRlcml2Um9i
dXN0QU5HTEUoR0NHTHVpbnQsIEdDR0xlbnVtLCBHQ0dMc2l6ZWksIGNvbnN0IEdDR0xpbnQgKikK
LXsKLSAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9O
KTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OnNhbXBsZXJQYXJhbWV0ZXJm
dlJvYnVzdEFOR0xFKEdDR0x1aW50LCBHQ0dMZW51bSwgR0NHTHNpemVpLCBjb25zdCBHQ0dMZmxv
YXQgKikKLXsKLSAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BF
UkFUSU9OKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFNhbXBsZXJQ
YXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0x1aW50LCBHQ0dMZW51bSwgR0NHTHNpemVpLCBHQ0dM
c2l6ZWkgKiwgR0NHTGludCAqKQotewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3Io
R0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1v
bjo6Z2V0U2FtcGxlclBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTHVpbnQsIEdDR0xlbnVtLCBH
Q0dMc2l6ZWksIEdDR0xzaXplaSAqLCBHQ0dMZmxvYXQgKikKLXsKLSAgICBtX2NvbnRleHQtPnN5
bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLX0KLQotCi12b2lkIEV4dGVu
c2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0RnJhbWVidWZmZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xF
KEdDR0xlbnVtLCBHQ0dMZW51bSwgR0NHTHNpemVpLCBHQ0dMc2l6ZWkgKiwgR0NHTGludCAqKQot
ewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04p
OwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0UHJvZ3JhbUludGVyZmFj
ZWl2Um9idXN0QU5HTEUoR0NHTHVpbnQsIEdDR0xlbnVtLCBHQ0dMZW51bSwgR0NHTHNpemVpLCBH
Q0dMc2l6ZWkgKiwgR0NHTGludCAqKQotewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJy
b3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENv
bW1vbjo6Z2V0Qm9vbGVhbmlfdlJvYnVzdEFOR0xFKEdDR0xlbnVtLCBHQ0dMdWludCwgR0NHTHNp
emVpLCBHQ0dMc2l6ZWkgKiwgR0NHTGJvb2xlYW4gKikKLXsKLSAgICBtX2NvbnRleHQtPnN5bnRo
ZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLX0KLQotdm9pZCBFeHRlbnNpb25z
R0xPcGVuR0xDb21tb246OmdldE11bHRpc2FtcGxlZnZSb2J1c3RBTkdMRShHQ0dMZW51bSwgR0NH
THVpbnQsIEdDR0xzaXplaSwgR0NHTHNpemVpICosIEdDR0xmbG9hdCAqKQotewotICAgIG1fY29u
dGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi12b2lk
IEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0VGV4TGV2ZWxQYXJhbWV0ZXJpdlJvYnVzdEFO
R0xFKEdDR0xlbnVtLCBpbnQsIEdDR0xlbnVtLCBHQ0dMc2l6ZWksIEdDR0xzaXplaSAqLCBHQ0dM
aW50ICopCi17Ci0gICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09Q
RVJBVElPTik7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRUZXhMZXZl
bFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTGVudW0sIGludCwgR0NHTGVudW0sIEdDR0xzaXpl
aSwgR0NHTHNpemVpICosIEdDR0xmbG9hdCAqKQotewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6
ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi0KLXZvaWQgRXh0ZW5zaW9uc0dM
T3BlbkdMQ29tbW9uOjpnZXRQb2ludGVydlJvYnVzdEFOR0xFUm9idXN0QU5HTEUoR0NHTGVudW0s
IEdDR0xzaXplaSwgR0NHTHNpemVpICosIHZvaWQgKiopCi17Ci0gICAgbV9jb250ZXh0LT5zeW50
aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9u
c0dMT3BlbkdMQ29tbW9uOjpnZXRuVW5pZm9ybWZ2Um9idXN0QU5HTEUoR0NHTHVpbnQsIGludCwg
R0NHTHNpemVpLCBHQ0dMc2l6ZWkgKiwgR0NHTGZsb2F0ICopCi17Ci0gICAgbV9jb250ZXh0LT5z
eW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Ci19Ci0KLXZvaWQgRXh0ZW5z
aW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRuVW5pZm9ybWl2Um9idXN0QU5HTEUoR0NHTHVpbnQsIGlu
dCwgR0NHTHNpemVpLCBHQ0dMc2l6ZWkgKiwgR0NHTGludCAqKQotewotICAgIG1fY29udGV4dC0+
c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi12b2lkIEV4dGVu
c2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0blVuaWZvcm11aXZSb2J1c3RBTkdMRShHQ0dMdWludCwg
aW50LCBHQ0dMc2l6ZWksIEdDR0xzaXplaSAqLCBHQ0dMdWludCAqKQotewotICAgIG1fY29udGV4
dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi12b2lkIEV4
dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6dGV4UGFyYW1ldGVySWl2Um9idXN0QU5HTEUoR0NHTGVu
dW0sIEdDR0xlbnVtLCBHQ0dMc2l6ZWksIGNvbnN0IEdDR0xpbnQgKikKLXsKLSAgICBtX2NvbnRl
eHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLX0KLQotdm9pZCBF
eHRlbnNpb25zR0xPcGVuR0xDb21tb246OnRleFBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRShHQ0dM
ZW51bSwgR0NHTGVudW0sIEdDR0xzaXplaSwgY29uc3QgR0NHTHVpbnQgKikKLXsKLSAgICBtX2Nv
bnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLX0KLQotdm9p
ZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFRleFBhcmFtZXRlcklpdlJvYnVzdEFOR0xF
KEdDR0xlbnVtLCBHQ0dMZW51bSwgR0NHTHNpemVpLCBHQ0dMc2l6ZWkgKiwgR0NHTGludCAqKQot
ewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04p
OwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0VGV4UGFyYW1ldGVySXVp
dlJvYnVzdEFOR0xFKEdDR0xlbnVtLCBHQ0dMZW51bSwgR0NHTHNpemVpLCBHQ0dMc2l6ZWkgKiwg
R0NHTHVpbnQgKikKLXsKLSAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFM
SURfT1BFUkFUSU9OKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OnNhbXBs
ZXJQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRShHQ0dMdWludCwgR0NHTGVudW0sIEdDR0xzaXplaSwg
Y29uc3QgR0NHTGludCAqKQotewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xf
SU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6
c2FtcGxlclBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRShHQ0dMdWludCwgR0NHTGVudW0sIEdDR0xz
aXplaSwgY29uc3QgR0NHTHVpbnQgKikKLXsKLSAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVy
cm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xD
b21tb246OmdldFNhbXBsZXJQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRShHQ0dMdWludCwgR0NHTGVu
dW0sIEdDR0xzaXplaSwgR0NHTHNpemVpICosIEdDR0xpbnQgKikKLXsKLSAgICBtX2NvbnRleHQt
PnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLX0KLQotdm9pZCBFeHRl
bnNpb25zR0xPcGVuR0xDb21tb246OmdldFNhbXBsZXJQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUo
R0NHTHVpbnQsIEdDR0xlbnVtLCBHQ0dMc2l6ZWksIEdDR0xzaXplaSAqLCBHQ0dMdWludCAqKQot
ewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04p
OwotfQotCi0KLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRRdWVyeU9iamVjdGl2
Um9idXN0QU5HTEUoR0NHTHVpbnQsIEdDR0xlbnVtLCBHQ0dMc2l6ZWksIEdDR0xzaXplaSAqLCBH
Q0dMaW50ICopCi17Ci0gICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElE
X09QRVJBVElPTik7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRRdWVy
eU9iamVjdGk2NHZSb2J1c3RBTkdMRShHQ0dMdWludCwgR0NHTGVudW0sIEdDR0xzaXplaSwgR0NH
THNpemVpICosIEdDR0xpbnQ2NCAqKQotewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJy
b3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENv
bW1vbjo6Z2V0UXVlcnlPYmplY3R1aTY0dlJvYnVzdEFOR0xFKEdDR0x1aW50LCBHQ0dMZW51bSwg
R0NHTHNpemVpLCBHQ0dMc2l6ZWkgKiwgR0NHTHVpbnQ2NCAqKQotewotICAgIG1fY29udGV4dC0+
c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi0KIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShXRUJHTCkgJiYgIVVTRShBTkdMRSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRl
bnNpb25zR0xPcGVuR0xDb21tb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uaAppbmRleCAzZjEwNDAxNjJmZmEwN2Ey
ZGMxMzBhYmIyMmZiMWIxZmZjM2ZkZjIwLi5kY2MwZTNhZjIxNzMyZTc0N2VhMWJkNTY0YmI5Njc4
NDMyY2EzZjcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9v
cGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5oCkBAIC0yOCwx
MSArMjgsMTEgQEAKIAogI2luY2x1ZGUgIkV4dGVuc2lvbnNHTC5oIgogCi0jaW5jbHVkZSAiR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0wuaCIKICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1
ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3Mg
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w7CiAKIGNsYXNzIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1v
biA6IHB1YmxpYyBFeHRlbnNpb25zR0wgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpA
QCAtNTUsNTggKzU1LDE4IEBAIHB1YmxpYzoKICAgICBTdHJpbmcgZ2V0VHJhbnNsYXRlZFNoYWRl
clNvdXJjZUFOR0xFKFBsYXRmb3JtR0xPYmplY3QpIG92ZXJyaWRlOwogCiAgICAgLy8gRVhUIFJv
YnVzdG5lc3MgLSB1c2VzIGdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIoKQotICAgIHZvaWQgcmVh
ZG5QaXhlbHNFWFQoaW50IHgsIGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWln
aHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIHZv
aWQgKmRhdGEpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0blVuaWZvcm1mdkVYVChHQ0dMdWludCBw
cm9ncmFtLCBpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBmbG9hdCAqcGFyYW1zKSBv
dmVycmlkZTsKLSAgICB2b2lkIGdldG5Vbmlmb3JtaXZFWFQoR0NHTHVpbnQgcHJvZ3JhbSwgaW50
IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgaW50ICpwYXJhbXMpIG92ZXJyaWRlOwotCi0g
ICAgYm9vbCBpc05WSURJQSgpIG92ZXJyaWRlIHsgcmV0dXJuIG1faXNOVklESUE7IH0KLSAgICBi
b29sIGlzQU1EKCkgb3ZlcnJpZGUgeyByZXR1cm4gbV9pc0FNRDsgfQotICAgIGJvb2wgaXNJbnRl
bCgpIG92ZXJyaWRlIHsgcmV0dXJuIG1faXNJbnRlbDsgfQotICAgIGJvb2wgaXNJbWFnaW5hdGlv
bigpIG92ZXJyaWRlIHsgcmV0dXJuIG1faXNJbWFnaW5hdGlvbjsgfQotICAgIFN0cmluZyB2ZW5k
b3IoKSBvdmVycmlkZSB7IHJldHVybiBtX3ZlbmRvcjsgfQotCi0gICAgYm9vbCByZXF1aXJlc0J1
aWx0SW5GdW5jdGlvbkVtdWxhdGlvbigpIG92ZXJyaWRlIHsgcmV0dXJuIG1fcmVxdWlyZXNCdWls
dEluRnVuY3Rpb25FbXVsYXRpb247IH0KLSAgICBib29sIHJlcXVpcmVzUmVzdHJpY3RlZE1heGlt
dW1UZXh0dXJlU2l6ZSgpIG92ZXJyaWRlIHsgcmV0dXJuIG1fcmVxdWlyZXNSZXN0cmljdGVkTWF4
aW11bVRleHR1cmVTaXplOyB9Ci0KLSAgICAvLyBHTF9BTkdMRV9yb2J1c3RfY2xpZW50X21lbW9y
eQotICAgIHZvaWQgcmVhZFBpeGVsc1JvYnVzdEFOR0xFKGludCB4LCBpbnQgeSwgR0NHTHNpemVp
IHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUs
IEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHNpemVpICpjb2x1bW5z
LCBHQ0dMc2l6ZWkgKnJvd3MsIHZvaWQgKnBpeGVscykgb3ZlcnJpZGU7Ci0gICAgdm9pZCB0ZXhQ
YXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdD
R0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMZmxvYXQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAg
dm9pZCB0ZXhQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0g
cG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJyaWRl
OwotICAgIHZvaWQgZ2V0UXVlcnlpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVu
dW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAq
cGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldFF1ZXJ5T2JqZWN0dWl2Um9idXN0QU5HTEUo
R0NHTHVpbnQgaWQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVp
ICpsZW5ndGgsIEdDR0x1aW50ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0QnVmZmVy
UG9pbnRlcnZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dM
c2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIHZvaWQgKipwYXJhbXMpIG92ZXJyaWRl
OwotICAgIHZvaWQgZ2V0VmVydGV4QXR0cmliSWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgaW5kZXgs
IEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdD
R0xpbnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJJdWl2Um9i
dXN0QU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6
ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0x1aW50ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZv
aWQgZ2V0VW5pZm9ybXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIGludCBsb2NhdGlv
biwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMdWludCAqcGFyYW1z
KSBvdmVycmlkZTsKLSAgICB2b2lkIGdldEJ1ZmZlclBhcmFtZXRlcmk2NHZSb2J1c3RBTkdMRShH
Q0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNp
emVpICpsZW5ndGgsIEdDR0xpbnQ2NCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIHNhbXBs
ZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1l
LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGludCAqcGFyYW0pIG92ZXJyaWRlOwotICAg
IHZvaWQgc2FtcGxlclBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NH
TGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMZmxvYXQgKnBhcmFtKSBv
dmVycmlkZTsKLSAgICB2b2lkIGdldFNhbXBsZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0x1
aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVp
ICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRTYW1wbGVy
UGFyYW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwg
R0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMZmxvYXQgKnBhcmFtcykg
b3ZlcnJpZGU7Ci0KLSAgICB2b2lkIGdldEZyYW1lYnVmZmVyUGFyYW1ldGVyaXZSb2J1c3RBTkdM
RShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NH
THNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRQ
cm9ncmFtSW50ZXJmYWNlaXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMZW51bSBw
cm9ncmFtSW50ZXJmYWNlLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xz
aXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0Qm9v
bGVhbmlfdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTHVpbnQgaW5kZXgsIEdDR0xz
aXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGJvb2xlYW4gKmRhdGEpIG92ZXJy
aWRlOwotICAgIHZvaWQgZ2V0TXVsdGlzYW1wbGVmdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHBuYW1l
LCBHQ0dMdWludCBpbmRleCwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBH
Q0dMZmxvYXQgKnZhbCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRUZXhMZXZlbFBhcmFtZXRlcml2
Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBpbnQgbGV2ZWwsIEdDR0xlbnVtIHBuYW1lLCBH
Q0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykgb3Zl
cnJpZGU7Ci0gICAgdm9pZCBnZXRUZXhMZXZlbFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTGVu
dW0gdGFyZ2V0LCBpbnQgbGV2ZWwsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwg
R0NHTHNpemVpICpsZW5ndGgsIEdDR0xmbG9hdCAqcGFyYW1zKSBvdmVycmlkZTsKLQotICAgIHZv
aWQgZ2V0UG9pbnRlcnZSb2J1c3RBTkdMRVJvYnVzdEFOR0xFKEdDR0xlbnVtIHBuYW1lLCBHQ0dM
c2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIHZvaWQgKipwYXJhbXMpIG92ZXJyaWRl
OwotICAgIHZvaWQgZ2V0blVuaWZvcm1mdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIGlu
dCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMZmxv
YXQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRuVW5pZm9ybWl2Um9idXN0QU5HTEUo
R0NHTHVpbnQgcHJvZ3JhbSwgaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNp
emVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRuVW5p
Zm9ybXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIGludCBsb2NhdGlvbiwgR0NHTHNp
emVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMdWludCAqcGFyYW1zKSBvdmVycmlk
ZTsKLSAgICB2b2lkIHRleFBhcmFtZXRlcklpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwg
R0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMaW50ICpwYXJhbXMp
IG92ZXJyaWRlOwotICAgIHZvaWQgdGV4UGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFKEdDR0xlbnVt
IHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMdWlu
dCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldFRleFBhcmFtZXRlcklpdlJvYnVzdEFO
R0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBH
Q0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdl
dFRleFBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBu
YW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0x1aW50ICpwYXJh
bXMpIG92ZXJyaWRlOwotICAgIHZvaWQgc2FtcGxlclBhcmFtZXRlcklpdlJvYnVzdEFOR0xFKEdD
R0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3Qg
R0NHTGludCAqcGFyYW0pIG92ZXJyaWRlOwotICAgIHZvaWQgc2FtcGxlclBhcmFtZXRlckl1aXZS
b2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1
ZlNpemUsIGNvbnN0IEdDR0x1aW50ICpwYXJhbSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRTYW1w
bGVyUGFyYW1ldGVySWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5h
bWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1z
KSBvdmVycmlkZTsKLSAgICB2b2lkIGdldFNhbXBsZXJQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUo
R0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dM
c2l6ZWkgKmxlbmd0aCwgR0NHTHVpbnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0KLSAgICB2b2lkIGdl
dFF1ZXJ5T2JqZWN0aXZSb2J1c3RBTkdMRShHQ0dMdWludCBpZCwgR0NHTGVudW0gcG5hbWUsIEdD
R0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVy
cmlkZTsKLSAgICB2b2lkIGdldFF1ZXJ5T2JqZWN0aTY0dlJvYnVzdEFOR0xFKEdDR0x1aW50IGlk
LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBH
Q0dMaW50NjQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRRdWVyeU9iamVjdHVpNjR2
Um9idXN0QU5HTEUoR0NHTHVpbnQgaWQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6
ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0x1aW50NjQgKnBhcmFtcykgb3ZlcnJpZGU7CisgICAg
dm9pZCByZWFkblBpeGVsc0VYVChpbnQgeCwgaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNp
emVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVm
U2l6ZSwgdm9pZCAqZGF0YSk7CisgICAgdm9pZCBnZXRuVW5pZm9ybWZ2RVhUKEdDR0x1aW50IHBy
b2dyYW0sIGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIGZsb2F0ICpwYXJhbXMpOwor
ICAgIHZvaWQgZ2V0blVuaWZvcm1pdkVYVChHQ0dMdWludCBwcm9ncmFtLCBpbnQgbG9jYXRpb24s
IEdDR0xzaXplaSBidWZTaXplLCBpbnQgKnBhcmFtcyk7CisKKyAgICBib29sIGlzTlZJRElBKCkg
Y29uc3QgeyByZXR1cm4gbV9pc05WSURJQTsgfQorICAgIGJvb2wgaXNBTUQoKSBjb25zdCB7IHJl
dHVybiBtX2lzQU1EOyB9CisgICAgYm9vbCBpc0ludGVsKCkgY29uc3QgeyByZXR1cm4gbV9pc0lu
dGVsOyB9CisgICAgYm9vbCBpc0ltYWdpbmF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9pc0ltYWdp
bmF0aW9uOyB9CisgICAgU3RyaW5nIHZlbmRvcigpIGNvbnN0IHsgcmV0dXJuIG1fdmVuZG9yOyB9
CisKKyAgICBib29sIHJlcXVpcmVzQnVpbHRJbkZ1bmN0aW9uRW11bGF0aW9uKCkgY29uc3QgeyBy
ZXR1cm4gbV9yZXF1aXJlc0J1aWx0SW5GdW5jdGlvbkVtdWxhdGlvbjsgfQorICAgIGJvb2wgcmVx
dWlyZXNSZXN0cmljdGVkTWF4aW11bVRleHR1cmVTaXplKCkgY29uc3QgeyByZXR1cm4gbV9yZXF1
aXJlc1Jlc3RyaWN0ZWRNYXhpbXVtVGV4dHVyZVNpemU7IH0KIAogcHJvdGVjdGVkOgogICAgIGZy
aWVuZCBjbGFzcyBFeHRlbnNpb25zR0xPcGVuR0xFUzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xFUy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdM
RVMuY3BwCmluZGV4IDhjYTg3Nzg4NGVlYWI4YTJjYTFkZGUyZGIyZWM4ZDZiMjEyMmZkZTEuLmIy
ZTNjOGI5ODQ5MzQ1ZDU3MzhmN2E1YzEwZTEyZGI1OTRkMmEwMDMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xFUy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lv
bnNHTE9wZW5HTEVTLmNwcApAQCAtMTAwLDExICsxMDAsNiBAQCB2b2lkIEV4dGVuc2lvbnNHTE9w
ZW5HTEVTOjpyZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVJTUcodW5zaWduZWQgbG9uZyB0
YXJnZQogICAgICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BF
UkFUSU9OKTsKIH0KIAotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xFUzo6YmxpdEZyYW1lYnVmZmVy
QU5HTEUoR0NHTGludCwgR0NHTGludCwgR0NHTGludCwgR0NHTGludCwgR0NHTGludCwgR0NHTGlu
dCwgR0NHTGludCwgR0NHTGludCwgR0NHTGJpdGZpZWxkLCBHQ0dMZW51bSkKLXsKLSAgICBub3RJ
bXBsZW1lbnRlZCgpOwotfQotCiB2b2lkIEV4dGVuc2lvbnNHTE9wZW5HTEVTOjpyZW5kZXJidWZm
ZXJTdG9yYWdlTXVsdGlzYW1wbGVBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xzaXplaSBzYW1w
bGVzLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkg
aGVpZ2h0KQogewogICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKQEAg
LTExNSwyMSArMTEwLDYgQEAgdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xFUzo6cmVuZGVyYnVmZmVy
U3RvcmFnZU11bHRpc2FtcGxlQU5HTEUoR0NHTGVudW0gdGFyZ2V0LAogICAgICAgICBub3RJbXBs
ZW1lbnRlZCgpOwogfQogCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTEVTOjppbnNlcnRFdmVudE1h
cmtlckVYVChjb25zdCBTdHJpbmcmKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZv
aWQgRXh0ZW5zaW9uc0dMT3BlbkdMRVM6OnB1c2hHcm91cE1hcmtlckVYVChjb25zdCBTdHJpbmcm
KQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdM
RVM6OnBvcEdyb3VwTWFya2VyRVhUKHZvaWQpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0K
LQogUGxhdGZvcm1HTE9iamVjdCBFeHRlbnNpb25zR0xPcGVuR0xFUzo6Y3JlYXRlVmVydGV4QXJy
YXlPRVMoKQogewogICAgIGlmIChtX2dsR2VuVmVydGV4QXJyYXlzT0VTKSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3Bl
bkdMRVMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNp
b25zR0xPcGVuR0xFUy5oCmluZGV4IDVjNzYwMzdmYTdiYzZlOGVlZTNlNjczZjk5YTdkZmMyZjc4
ZmI0ZDIuLmFkZDBiYjc2M2Y0YmRhNWI2OWU2MWJhYjYwMjJhNDA4MjQ4YWYzZWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xP
cGVuR0xFUy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9F
eHRlbnNpb25zR0xPcGVuR0xFUy5oCkBAIC0yNyw2ICsyNyw3IEBACiAjcHJhZ21hIG9uY2UKIAog
I2luY2x1ZGUgIkV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5oIgorI2luY2x1ZGUgIkdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMLmgiCiAKICNpZiBVU0UoT1BFTkdMX0VTKQogCkBAIC03NSwxMSArNzYs
NyBAQCBwdWJsaWM6CiAKICAgICAvLyBFeHRlbnNpb24zRCBtZXRob2RzCiAgICAgYm9vbCBpc0Vu
YWJsZWQoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBibGl0RnJhbWVidWZmZXJB
TkdMRShHQ0dMaW50IHNyY1gwLCBHQ0dMaW50IHNyY1kwLCBHQ0dMaW50IHNyY1gxLCBHQ0dMaW50
IHNyY1kxLCBHQ0dMaW50IGRzdFgwLCBHQ0dMaW50IGRzdFkwLCBHQ0dMaW50IGRzdFgxLCBHQ0dM
aW50IGRzdFkxLCBHQ0dMYml0ZmllbGQgbWFzaywgR0NHTGVudW0gZmlsdGVyKSBvdmVycmlkZTsK
LSAgICB2b2lkIHJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKEdDR0xlbnVtIHRh
cmdldCwgR0NHTHNpemVpIHNhbXBsZXMsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6
ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQpIG92ZXJyaWRlOwotICAgIHZvaWQgaW5zZXJ0RXZl
bnRNYXJrZXJFWFQoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBwdXNoR3JvdXBN
YXJrZXJFWFQoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBwb3BHcm91cE1hcmtl
ckVYVCh2b2lkKSBvdmVycmlkZTsKKyAgICB2b2lkIHJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNh
bXBsZUFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVpIHNhbXBsZXMsIEdDR0xlbnVtIGlu
dGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQpOwogCiAgICAg
UGxhdGZvcm1HTE9iamVjdCBjcmVhdGVWZXJ0ZXhBcnJheU9FUygpIG92ZXJyaWRlOwogICAgIHZv
aWQgZGVsZXRlVmVydGV4QXJyYXlPRVMoUGxhdGZvcm1HTE9iamVjdCkgb3ZlcnJpZGU7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0wuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5n
bC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oCmluZGV4IGY1MjRkZTkyZGNkOWE1OThiMGZiZWY4
ZDMzYjljNDQwOWI4Y2QxYjAuLjM5NWI5NTczYjc2NWQ5M2MwNDI3NDZhMWY1NDkxMjBhZGYyM2Y4
MTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9H
cmFwaGljc0NvbnRleHRHTE9wZW5HTC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oCkBAIC00NSw2ICs0NSw3IEBA
CiAKICNpZiAhVVNFKEFOR0xFKQogI2luY2x1ZGUgIkFOR0xFV2ViS2l0QnJpZGdlLmgiCisjaW5j
bHVkZSAiRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmgiCiAjZW5kaWYKIAogLy8gRklYTUU6IEZp
bmQgYSBiZXR0ZXIgd2F5IHRvIGF2b2lkIHRoZSBuYW1lIGNvbmZsaWN0aW9uIGZvciBOT19FUlJP
Ui4KQEAgLTQ4Niw3ICs0ODcsMTIgQEAgcHVibGljOgogICAgIC8vIGFsbCBtZXRob2RzIGl0IGNv
bnRhaW5zIG1heSBuZWNlc3NhcmlseSBiZSBzdXBwb3J0ZWQgb24gdGhlCiAgICAgLy8gY3VycmVu
dCBoYXJkd2FyZS4gTXVzdCBjYWxsIEV4dGVuc2lvbnNHTDo6c3VwcG9ydHMoKSB0bwogICAgIC8v
IGRldGVybWluZSB0aGlzLgorI2lmICFVU0UoQU5HTEUpCisgICAgLy8gVXNlIGNvdmFyaWFudCBy
ZXR1cm4gdHlwZSBmb3IgT1BFTkdML09QRU5HTF9FUworICAgIEV4dGVuc2lvbnNHTE9wZW5HTENv
bW1vbiYgZ2V0RXh0ZW5zaW9ucygpIGZpbmFsOworI2Vsc2UKICAgICBFeHRlbnNpb25zR0wmIGdl
dEV4dGVuc2lvbnMoKSBmaW5hbDsKKyNlbmRpZgogCiAgICAgdm9pZCBzZXRGYWlsTmV4dEdQVVN0
YXR1c0NoZWNrKCkgZmluYWwgeyBtX2ZhaWxOZXh0U3RhdHVzQ2hlY2sgPSB0cnVlOyB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGlj
c0NvbnRleHRHTE9wZW5HTEJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQmFzZS5jcHAKaW5kZXggZjQxNGY5Yzk2
MzRkNjFiOGQ5MDE1ZDVhNmFmYTUyN2NjMzQyYmU4Zi4uMGZmNTMzYmU3MTI4NGVkMDhkNTM0M2I5
OTk2YTk2ZmExNmUyYjVhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQmFzZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdM
QmFzZS5jcHAKQEAgLTExNiw3ICsxMTYsNyBAQCBib29sIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjpyZXNoYXBlRkJPcyhjb25zdCBJbnRTaXplJiBzaXplKQogICAgICAgICAvLyBXZSBkb24ndCBh
bGxvdyB0aGUgbG9naWMgd2hlcmUgc3RlbmNpbCBpcyByZXF1aXJlZCBhbmQgZGVwdGggaXMgbm90
LgogICAgICAgICAvLyBTZWUgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnZhbGlkYXRlQXR0cmli
dXRlcy4KIAotICAgICAgICBFeHRlbnNpb25zR0wmIGV4dGVuc2lvbnMgPSBnZXRFeHRlbnNpb25z
KCk7CisgICAgICAgIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbiYgZXh0ZW5zaW9ucyA9IGdldEV4
dGVuc2lvbnMoKTsKICAgICAgICAgLy8gVXNlIGEgMjQgYml0IGRlcHRoIGJ1ZmZlciB3aGVyZSB3
ZSBrbm93IHdlIGhhdmUgaXQuCiAgICAgICAgIGlmIChleHRlbnNpb25zLnN1cHBvcnRzKCJHTF9F
WFRfcGFja2VkX2RlcHRoX3N0ZW5jaWwiKSkKICAgICAgICAgICAgIGludGVybmFsRGVwdGhTdGVu
Y2lsRm9ybWF0ID0gR0xfREVQVEgyNF9TVEVOQ0lMOF9FWFQ7CkBAIC00MTcsNyArNDE3LDcgQEAg
dm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y2xlYXJEZXB0aChHQ0dMY2xhbXBmIGRlcHRo
KQogfQogCiAjaWYgIVBMQVRGT1JNKEdUSykKLUV4dGVuc2lvbnNHTCYgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OmdldEV4dGVuc2lvbnMoKQorRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uJiBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0RXh0ZW5zaW9ucygpCiB7CiAgICAgaWYgKCFtX2V4dGVu
c2lvbnMpCiAgICAgICAgIG1fZXh0ZW5zaW9ucyA9IG1ha2VVbmlxdWU8RXh0ZW5zaW9uc0dMT3Bl
bkdMPih0aGlzLCBpc0dMRVMyQ29tcGxpYW50KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29tbW9u
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0Nv
bnRleHRHTE9wZW5HTENvbW1vbi5jcHAKaW5kZXggMmRlMTg1YTY2ODEzMGEzNjJjMTI3NjdmMzgz
ZjU3ZjEzNDlkZDQ4MS4uZGY5ODNmZGE4ODExMjg5YjYwMjJkYWZlZTk4ZGNmOTI5ZGMyNDUxMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBo
aWNzQ29udGV4dEdMT3BlbkdMQ29tbW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb21tb24uY3BwCkBAIC0x
MTgsNyArMTE4LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmFsaWRhdGVEZXB0
aFN0ZW5jaWwoY29uc3QgY2hhciogcGFja2VkRGVwdGhTdGVuY2kKIHsKICAgICBhdXRvIGF0dHJz
ID0gY29udGV4dEF0dHJpYnV0ZXMoKTsKIAotICAgIEV4dGVuc2lvbnNHTCYgZXh0ZW5zaW9ucyA9
IGdldEV4dGVuc2lvbnMoKTsKKyAgICBFeHRlbnNpb25zR0xPcGVuR0xDb21tb24mIGV4dGVuc2lv
bnMgPSBnZXRFeHRlbnNpb25zKCk7CiAgICAgaWYgKGF0dHJzLnN0ZW5jaWwpIHsKICAgICAgICAg
aWYgKGV4dGVuc2lvbnMuc3VwcG9ydHMocGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uKSkgewog
ICAgICAgICAgICAgZXh0ZW5zaW9ucy5lbnN1cmVFbmFibGVkKHBhY2tlZERlcHRoU3RlbmNpbEV4
dGVuc2lvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9v
cGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xFUy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xFUy5jcHAKaW5kZXgg
MGQ0NzZjMjI5ZDZmNmVlOTZjY2Y5OTNkODFkNWMzZGQ2NTIxNWU0OC4uYWI5YzM1Zjg0OTY0MzZj
OTYwZTIxMmE0MWJjM2UwY2ZlOWFiYmYwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMRVMuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRH
TE9wZW5HTEVTLmNwcApAQCAtMjU0LDcgKzI1NCw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OmNsZWFyRGVwdGgoR0NHTGNsYW1wZiBkZXB0aCkKIH0KIAogI2lmICFQTEFURk9STShH
VEspCi1FeHRlbnNpb25zR0wmIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRFeHRlbnNpb25z
KCkKK0V4dGVuc2lvbnNHTE9wZW5HTENvbW1vbiYgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Omdl
dEV4dGVuc2lvbnMoKQogewogICAgIGlmICghbV9leHRlbnNpb25zKQogICAgICAgICBtX2V4dGVu
c2lvbnMgPSBtYWtlVW5pcXVlPEV4dGVuc2lvbnNHTE9wZW5HTEVTPih0aGlzLCBpc0dMRVMyQ29t
cGxpYW50KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL0dyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVy
LmNwcAppbmRleCA4NzMxNDBiMGQ5NTI0NzQ3OGEyMWYxNGNhOTk4ZjY3MTZlZTdhZDdhLi5lYTVk
YTlmODgxODg3NzIxZTdhZDQyZTg0MGJkYjFhN2RkZjIxNWRlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJl
TWFwcGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
R3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyLmNwcApAQCAtNDI5LDcgKzQyOSw3IEBAIFBs
YXRmb3JtTGF5ZXIqIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpwbGF0Zm9ybUxheWVyKCkgY29u
c3QKIH0KIAogI2lmIFBMQVRGT1JNKEdUSykgJiYgIVVTRShBTkdMRSkKLUV4dGVuc2lvbnNHTCYg
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEV4dGVuc2lvbnMoKQorRXh0ZW5zaW9uc0dMT3Bl
bkdMQ29tbW9uJiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0RXh0ZW5zaW9ucygpCiB7CiAg
ICAgaWYgKCFtX2V4dGVuc2lvbnMpIHsKICNpZiBVU0UoT1BFTkdMX0VTKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdM
Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdy
YXBoaWNzQ29udGV4dEdMLm1lc3NhZ2VzLmluCmluZGV4IGFhMDM0NzI1ZjlhYTQyZjQyYmQzYzhh
MDBiMGFhMTgwOTBhNTliOWEuLmM3ODhkNjVkYjRkOTcxYzJkNGQ1NDBjNDY4ODhjNDUxMTE0YjM0
NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVH
cmFwaGljc0NvbnRleHRHTC5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wubWVzc2FnZXMuaW4KQEAgLTI3NCwx
NiArMjc0LDExIEBAIG1lc3NhZ2VzIC0+IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMIE5vdFJlZkNv
dW50ZWQgewogICAgIHZvaWQgVW5pZm9ybUJsb2NrQmluZGluZyh1aW50MzJfdCBwcm9ncmFtLCB1
aW50MzJfdCB1bmlmb3JtQmxvY2tJbmRleCwgdWludDMyX3QgdW5pZm9ybUJsb2NrQmluZGluZykK
ICAgICB2b2lkIEdldEFjdGl2ZVVuaWZvcm1CbG9ja2l2KHVpbnQzMl90IHByb2dyYW0sIHVpbnQz
Ml90IHVuaWZvcm1CbG9ja0luZGV4LCB1aW50MzJfdCBwbmFtZSwgdWludDY0X3QgcGFyYW1zU2l6
ZSkgLT4gKElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4gcGFyYW1zKSBTeW5jaHJvbm91cwog
ICAgIHZvaWQgR2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQigpIC0+IChpbnQzMl90IHJldHVyblZh
bHVlKSBTeW5jaHJvbm91cwotICAgIHZvaWQgQmxpdEZyYW1lYnVmZmVyQU5HTEUoaW50MzJfdCBz
cmNYMCwgaW50MzJfdCBzcmNZMCwgaW50MzJfdCBzcmNYMSwgaW50MzJfdCBzcmNZMSwgaW50MzJf
dCBkc3RYMCwgaW50MzJfdCBkc3RZMCwgaW50MzJfdCBkc3RYMSwgaW50MzJfdCBkc3RZMSwgdWlu
dDMyX3QgbWFzaywgdWludDMyX3QgZmlsdGVyKQotICAgIHZvaWQgUmVuZGVyYnVmZmVyU3RvcmFn
ZU11bHRpc2FtcGxlQU5HTEUodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IHNhbXBsZXMsIHVpbnQz
Ml90IGludGVybmFsZm9ybWF0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCkKICAgICB2
b2lkIENyZWF0ZVZlcnRleEFycmF5T0VTKCkgLT4gKHVpbnQzMl90IHJldHVyblZhbHVlKSBTeW5j
aHJvbm91cwogICAgIHZvaWQgRGVsZXRlVmVydGV4QXJyYXlPRVModWludDMyX3QgYXJnMCkKICAg
ICB2b2lkIElzVmVydGV4QXJyYXlPRVModWludDMyX3QgYXJnMCkgLT4gKGJvb2wgcmV0dXJuVmFs
dWUpIFN5bmNocm9ub3VzCiAgICAgdm9pZCBCaW5kVmVydGV4QXJyYXlPRVModWludDMyX3QgYXJn
MCkKICAgICB2b2lkIEdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRSh1aW50MzJfdCBhcmcw
KSAtPiAoU3RyaW5nIHJldHVyblZhbHVlKSBTeW5jaHJvbm91cwotICAgIHZvaWQgSW5zZXJ0RXZl
bnRNYXJrZXJFWFQoU3RyaW5nIGFyZzApCi0gICAgdm9pZCBQdXNoR3JvdXBNYXJrZXJFWFQoU3Ry
aW5nIGFyZzApCi0gICAgdm9pZCBQb3BHcm91cE1hcmtlckVYVCgpCiAgICAgdm9pZCBEcmF3QnVm
ZmVyc0VYVChJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90PiBidWZzKQogICAgIHZvaWQgRHJh
d0FycmF5c0luc3RhbmNlZEFOR0xFKHVpbnQzMl90IG1vZGUsIGludDMyX3QgZmlyc3QsIGludDMy
X3QgY291bnQsIGludDMyX3QgcHJpbWNvdW50KQogICAgIHZvaWQgRHJhd0VsZW1lbnRzSW5zdGFu
Y2VkQU5HTEUodWludDMyX3QgbW9kZSwgaW50MzJfdCBjb3VudCwgdWludDMyX3QgdHlwZSwgdWlu
dDY0X3Qgb2Zmc2V0LCBpbnQzMl90IHByaW1jb3VudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTEZ1bmN0aW9uc0dl
bmVyYXRlZC5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBo
aWNzQ29udGV4dEdMRnVuY3Rpb25zR2VuZXJhdGVkLmgKaW5kZXggYWYwMTYwMmFmNDkzZWI2N2Rl
M2U2MmNmMGU1MGFjMGEyYjk5MjVmMS4uMWJjNTdkZjlhZmRhMjhkOGJlNGViYzZkNDQ5MzJlYTk1
NTMyYWNhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1Jl
bW90ZUdyYXBoaWNzQ29udGV4dEdMRnVuY3Rpb25zR2VuZXJhdGVkLmgKKysrIGIvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMRnVuY3Rpb25z
R2VuZXJhdGVkLmgKQEAgLTExMTgsMTQgKzExMTgsNiBAQAogICAgICAgICByZXR1cm5WYWx1ZSA9
IG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIoKTsK
ICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmV0dXJuVmFsdWUpOwogICAgIH0KLSAgICB2b2lk
IGJsaXRGcmFtZWJ1ZmZlckFOR0xFKGludDMyX3Qgc3JjWDAsIGludDMyX3Qgc3JjWTAsIGludDMy
X3Qgc3JjWDEsIGludDMyX3Qgc3JjWTEsIGludDMyX3QgZHN0WDAsIGludDMyX3QgZHN0WTAsIGlu
dDMyX3QgZHN0WDEsIGludDMyX3QgZHN0WTEsIHVpbnQzMl90IG1hc2ssIHVpbnQzMl90IGZpbHRl
cikKLSAgICB7Ci0gICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmJsaXRGcmFtZWJ1
ZmZlckFOR0xFKHNyY1gwLCBzcmNZMCwgc3JjWDEsIHNyY1kxLCBkc3RYMCwgZHN0WTAsIGRzdFgx
LCBkc3RZMSwgbWFzaywgZmlsdGVyKTsKLSAgICB9Ci0gICAgdm9pZCByZW5kZXJidWZmZXJTdG9y
YWdlTXVsdGlzYW1wbGVBTkdMRSh1aW50MzJfdCB0YXJnZXQsIGludDMyX3Qgc2FtcGxlcywgdWlu
dDMyX3QgaW50ZXJuYWxmb3JtYXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0KQotICAg
IHsKLSAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkucmVuZGVyYnVmZmVyU3RvcmFn
ZU11bHRpc2FtcGxlQU5HTEUodGFyZ2V0LCBzYW1wbGVzLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgs
IGhlaWdodCk7Ci0gICAgfQogICAgIHZvaWQgY3JlYXRlVmVydGV4QXJyYXlPRVMoQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCh1aW50MzJfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiAgICAgewogICAg
ICAgICBQbGF0Zm9ybUdMT2JqZWN0IHJldHVyblZhbHVlID0geyB9OwpAQCAtMTE1MiwxOCArMTE0
NCw2IEBACiAgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCku
Z2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFKGFyZzApOwogICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcihXVEZNb3ZlKHJldHVyblZhbHVlKSk7CiAgICAgfQotICAgIHZvaWQgaW5zZXJ0RXZl
bnRNYXJrZXJFWFQoU3RyaW5nJiYgYXJnMCkKLSAgICB7Ci0gICAgICAgIG1fY29udGV4dC0+Z2V0
RXh0ZW5zaW9ucygpLmluc2VydEV2ZW50TWFya2VyRVhUKGFyZzApOwotICAgIH0KLSAgICB2b2lk
IHB1c2hHcm91cE1hcmtlckVYVChTdHJpbmcmJiBhcmcwKQotICAgIHsKLSAgICAgICAgbV9jb250
ZXh0LT5nZXRFeHRlbnNpb25zKCkucHVzaEdyb3VwTWFya2VyRVhUKGFyZzApOwotICAgIH0KLSAg
ICB2b2lkIHBvcEdyb3VwTWFya2VyRVhUKCkKLSAgICB7Ci0gICAgICAgIG1fY29udGV4dC0+Z2V0
RXh0ZW5zaW9ucygpLnBvcEdyb3VwTWFya2VyRVhUKCk7Ci0gICAgfQogICAgIHZvaWQgZHJhd0J1
ZmZlcnNFWFQoSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdD4mJiBidWZzKQogICAgIHsKICAg
ICAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuZHJhd0J1ZmZlcnNFWFQobWFrZUdDR0xT
cGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTGVudW0qPihidWZzLmRhdGEoKSksIGJ1ZnMu
c2l6ZSgpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBo
aWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5oCmluZGV4IGQ5
OWVkYTI5ZjZkYjVlMTgxOTcxMzE3OGYyYWE1MzFiNGY1ZGQ2ZTAuLjkwYmRkMzVjMzA0MzA5NTI0
NGMwZDEwM2FmZDRhMTZiN2NkMmY5YWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eS5oCkBAIC0zMTIsNTYgKzMxMiwxNiBAQCBwdWJsaWM6CiAgICAgdm9pZCB1bmlmb3Jt
QmxvY2tCaW5kaW5nKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTHVpbnQgdW5pZm9ybUJs
b2NrSW5kZXgsIEdDR0x1aW50IHVuaWZvcm1CbG9ja0JpbmRpbmcpIGZpbmFsOwogICAgIHZvaWQg
Z2V0QWN0aXZlVW5pZm9ybUJsb2NraXYoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTHVpbnQgdW5pZm9y
bUJsb2NrSW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3BhbjxHQ0dMaW50PiBwYXJhbXMpIGZp
bmFsOwogICAgIEdDR0xpbnQgZ2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQigpIGZpbmFsOwotICAg
IHZvaWQgYmxpdEZyYW1lYnVmZmVyQU5HTEUoR0NHTGludCBzcmNYMCwgR0NHTGludCBzcmNZMCwg
R0NHTGludCBzcmNYMSwgR0NHTGludCBzcmNZMSwgR0NHTGludCBkc3RYMCwgR0NHTGludCBkc3RZ
MCwgR0NHTGludCBkc3RYMSwgR0NHTGludCBkc3RZMSwgR0NHTGJpdGZpZWxkIG1hc2ssIEdDR0xl
bnVtIGZpbHRlcikgZmluYWw7Ci0gICAgdm9pZCByZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1w
bGVBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xzaXplaSBzYW1wbGVzLCBHQ0dMZW51bSBpbnRl
cm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KSBmaW5hbDsKICAg
ICBQbGF0Zm9ybUdMT2JqZWN0IGNyZWF0ZVZlcnRleEFycmF5T0VTKCkgZmluYWw7CiAgICAgdm9p
ZCBkZWxldGVWZXJ0ZXhBcnJheU9FUyhQbGF0Zm9ybUdMT2JqZWN0IGFyZzApIGZpbmFsOwogICAg
IEdDR0xib29sZWFuIGlzVmVydGV4QXJyYXlPRVMoUGxhdGZvcm1HTE9iamVjdCBhcmcwKSBmaW5h
bDsKICAgICB2b2lkIGJpbmRWZXJ0ZXhBcnJheU9FUyhQbGF0Zm9ybUdMT2JqZWN0IGFyZzApIGZp
bmFsOwogICAgIFN0cmluZyBnZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUoUGxhdGZvcm1H
TE9iamVjdCBhcmcwKSBmaW5hbDsKLSAgICB2b2lkIGluc2VydEV2ZW50TWFya2VyRVhUKGNvbnN0
IFN0cmluZyYgYXJnMCkgZmluYWw7Ci0gICAgdm9pZCBwdXNoR3JvdXBNYXJrZXJFWFQoY29uc3Qg
U3RyaW5nJiBhcmcwKSBmaW5hbDsKLSAgICB2b2lkIHBvcEdyb3VwTWFya2VyRVhUKCkgZmluYWw7
CiAgICAgdm9pZCBkcmF3QnVmZmVyc0VYVChHQ0dMU3Bhbjxjb25zdCBHQ0dMZW51bT4gYnVmcykg
ZmluYWw7CiAgICAgdm9pZCBkcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUoR0NHTGVudW0gbW9kZSwg
R0NHTGludCBmaXJzdCwgR0NHTHNpemVpIGNvdW50LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KSBmaW5h
bDsKICAgICB2b2lkIGRyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKEdDR0xlbnVtIG1vZGUsIEdD
R0xzaXplaSBjb3VudCwgR0NHTGVudW0gdHlwZSwgR0NHTHZvaWRwdHIgb2Zmc2V0LCBHQ0dMc2l6
ZWkgcHJpbWNvdW50KSBmaW5hbDsKICAgICB2b2lkIHZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRShH
Q0dMdWludCBpbmRleCwgR0NHTHVpbnQgZGl2aXNvcikgZmluYWw7CiAgICAgdm9pZCBnZXRJbnRl
cm5hbGZvcm1hdGl2KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdD
R0xlbnVtIHBuYW1lLCBHQ0dMU3BhbjxHQ0dMaW50PiBwYXJhbXMpIGZpbmFsOwotICAgIHZvaWQg
cmVhZFBpeGVsc1JvYnVzdEFOR0xFKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lk
dGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NH
THNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMc2l6ZWkqIGNvbHVtbnMsIEdD
R0xzaXplaSogcm93cywgR0NHTHZvaWQqIHBpeGVscykgZmluYWw7Ci0gICAgdm9pZCB0ZXhQYXJh
bWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xz
aXplaSBidWZTaXplLCBjb25zdCBHQ0dMZmxvYXQqIHBhcmFtcykgZmluYWw7Ci0gICAgdm9pZCB0
ZXhQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUs
IEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMaW50KiBwYXJhbXMpIGZpbmFsOwotICAgIHZv
aWQgZ2V0UXVlcnlpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUs
IEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1zKSBm
aW5hbDsKLSAgICB2b2lkIGdldFF1ZXJ5T2JqZWN0dWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgaWQs
IEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdD
R0x1aW50KiBwYXJhbXMpIGZpbmFsOwotICAgIHZvaWQgZ2V0QnVmZmVyUG9pbnRlcnZSb2J1c3RB
TkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwg
R0NHTHNpemVpKiBsZW5ndGgsIEdDR0x2b2lkKiogcGFyYW1zKSBmaW5hbDsKLSAgICB2b2lkIGdl
dFZlcnRleEF0dHJpYklpdlJvYnVzdEFOR0xFKEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFt
ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMp
IGZpbmFsOwotICAgIHZvaWQgZ2V0VmVydGV4QXR0cmliSXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50
IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVu
Z3RoLCBHQ0dMdWludCogcGFyYW1zKSBmaW5hbDsKLSAgICB2b2lkIGdldFVuaWZvcm11aXZSb2J1
c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVm
U2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0x1aW50KiBwYXJhbXMpIGZpbmFsOwotICAgIHZv
aWQgZ2V0QnVmZmVyUGFyYW1ldGVyaTY0dlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NH
TGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGlu
dDY0KiBwYXJhbXMpIGZpbmFsOwotICAgIHZvaWQgc2FtcGxlclBhcmFtZXRlcml2Um9idXN0QU5H
TEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBj
b25zdCBHQ0dMaW50KiBwYXJhbSkgZmluYWw7Ci0gICAgdm9pZCBzYW1wbGVyUGFyYW1ldGVyZnZS
b2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1
ZlNpemUsIGNvbnN0IEdDR0xmbG9hdCogcGFyYW0pIGZpbmFsOwotICAgIHZvaWQgZ2V0U2FtcGxl
clBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUs
IEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1zKSBm
aW5hbDsKLSAgICB2b2lkIGdldFNhbXBsZXJQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0x1aW50
IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBs
ZW5ndGgsIEdDR0xmbG9hdCogcGFyYW1zKSBmaW5hbDsKLSAgICB2b2lkIGdldEZyYW1lYnVmZmVy
UGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBH
Q0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykgZmlu
YWw7Ci0gICAgdm9pZCBnZXRQcm9ncmFtSW50ZXJmYWNlaXZSb2J1c3RBTkdMRShHQ0dMdWludCBw
cm9ncmFtLCBHQ0dMZW51bSBwcm9ncmFtSW50ZXJmYWNlLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNp
emVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpIGZpbmFsOwot
ICAgIHZvaWQgZ2V0Qm9vbGVhbmlfdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTHVp
bnQgaW5kZXgsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGJvb2xl
YW4qIGRhdGEpIGZpbmFsOyAvLyBOT0xJTlQKLSAgICB2b2lkIGdldE11bHRpc2FtcGxlZnZSb2J1
c3RBTkdMRShHQ0dMZW51bSBwbmFtZSwgR0NHTHVpbnQgaW5kZXgsIEdDR0xzaXplaSBidWZTaXpl
LCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGZsb2F0KiB2YWwpIGZpbmFsOwotICAgIHZvaWQgZ2V0
VGV4TGV2ZWxQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBs
ZXZlbCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0
aCwgR0NHTGludCogcGFyYW1zKSBmaW5hbDsKLSAgICB2b2lkIGdldFRleExldmVsUGFyYW1ldGVy
ZnZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIHBu
YW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xmbG9hdCogcGFy
YW1zKSBmaW5hbDsKLSAgICB2b2lkIGdldFBvaW50ZXJ2Um9idXN0QU5HTEVSb2J1c3RBTkdMRShH
Q0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dM
dm9pZCoqIHBhcmFtcykgZmluYWw7Ci0gICAgdm9pZCBnZXRuVW5pZm9ybWZ2Um9idXN0QU5HTEUo
R0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdD
R0xzaXplaSogbGVuZ3RoLCBHQ0dMZmxvYXQqIHBhcmFtcykgZmluYWw7Ci0gICAgdm9pZCBnZXRu
VW5pZm9ybWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwg
R0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpIGZp
bmFsOwotICAgIHZvaWQgZ2V0blVuaWZvcm11aXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFt
LCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgs
IEdDR0x1aW50KiBwYXJhbXMpIGZpbmFsOwotICAgIHZvaWQgdGV4UGFyYW1ldGVySWl2Um9idXN0
QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUs
IGNvbnN0IEdDR0xpbnQqIHBhcmFtcykgZmluYWw7Ci0gICAgdm9pZCB0ZXhQYXJhbWV0ZXJJdWl2
Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1
ZlNpemUsIGNvbnN0IEdDR0x1aW50KiBwYXJhbXMpIGZpbmFsOwotICAgIHZvaWQgZ2V0VGV4UGFy
YW1ldGVySWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NH
THNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpIGZpbmFs
OwotICAgIHZvaWQgZ2V0VGV4UGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdl
dCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwg
R0NHTHVpbnQqIHBhcmFtcykgZmluYWw7Ci0gICAgdm9pZCBzYW1wbGVyUGFyYW1ldGVySWl2Um9i
dXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZT
aXplLCBjb25zdCBHQ0dMaW50KiBwYXJhbSkgZmluYWw7Ci0gICAgdm9pZCBzYW1wbGVyUGFyYW1l
dGVySXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dM
c2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTHVpbnQqIHBhcmFtKSBmaW5hbDsKLSAgICB2b2lkIGdl
dFNhbXBsZXJQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51
bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBw
YXJhbXMpIGZpbmFsOwotICAgIHZvaWQgZ2V0U2FtcGxlclBhcmFtZXRlckl1aXZSb2J1c3RBTkdM
RShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdD
R0xzaXplaSogbGVuZ3RoLCBHQ0dMdWludCogcGFyYW1zKSBmaW5hbDsKLSAgICB2b2lkIGdldFF1
ZXJ5T2JqZWN0aXZSb2J1c3RBTkdMRShHQ0dMdWludCBpZCwgR0NHTGVudW0gcG5hbWUsIEdDR0xz
aXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1zKSBmaW5hbDsK
LSAgICB2b2lkIGdldFF1ZXJ5T2JqZWN0aTY0dlJvYnVzdEFOR0xFKEdDR0x1aW50IGlkLCBHQ0dM
ZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50
NjQqIHBhcmFtcykgZmluYWw7Ci0gICAgdm9pZCBnZXRRdWVyeU9iamVjdHVpNjR2Um9idXN0QU5H
TEUoR0NHTHVpbnQgaWQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNp
emVpKiBsZW5ndGgsIEdDR0x1aW50NjQqIHBhcmFtcykgZmluYWw7CiAgICAgLy8gRW5kIG9mIGxp
c3QgdXNlZCBieSBnZW5lcmF0ZS1ncHVwLXdlYmdsIHNjcmlwdC4KIAogcHJvdGVjdGVkOgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5RnVuY3Rpb25zR2VuZXJhdGVkLmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUZ1bmN0
aW9uc0dlbmVyYXRlZC5jcHAKaW5kZXggZjdlY2Y4NjU1NmEwMDczYWY4ZjU1NGNmY2ZjMGVmMzM5
ZjYxZTg5YS4uZTFhNmRkMzRlNTViNTI1ZmVmMjZiNTdjYjEzMjUyY2YzMmJkMDY5ZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5RnVuY3Rpb25zR2VuZXJhdGVkLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlGdW5j
dGlvbnNHZW5lcmF0ZWQuY3BwCkBAIC0xMzgwLDE2ICsxMzgwLDYgQEAgR0NHTGludCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJCKCkKICAgICBy
ZXR1cm4gcmV0dXJuVmFsdWU7CiB9CiAKLXZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6YmxpdEZyYW1lYnVmZmVyQU5HTEUoR0NHTGludCBzcmNYMCwgR0NHTGludCBzcmNZMCwgR0NH
TGludCBzcmNYMSwgR0NHTGludCBzcmNZMSwgR0NHTGludCBkc3RYMCwgR0NHTGludCBkc3RZMCwg
R0NHTGludCBkc3RYMSwgR0NHTGludCBkc3RZMSwgR0NHTGJpdGZpZWxkIG1hc2ssIEdDR0xlbnVt
IGZpbHRlcikKLXsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
QmxpdEZyYW1lYnVmZmVyQU5HTEUoc3JjWDAsIHNyY1kwLCBzcmNYMSwgc3JjWTEsIGRzdFgwLCBk
c3RZMCwgZHN0WDEsIGRzdFkxLCBtYXNrLCBmaWx0ZXIpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllcik7Ci19Ci0KLXZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cmVuZGVy
YnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWkg
c2FtcGxlcywgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNp
emVpIGhlaWdodCkKLXsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6UmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5HTEUodGFyZ2V0LCBzYW1wbGVzLCBp
bnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyKTsKLX0KLQogUGxhdGZvcm1HTE9iamVjdCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpjcmVhdGVWZXJ0ZXhBcnJheU9FUygpCiB7CiAgICAgdWludDMyX3QgcmV0dXJuVmFsdWUgPSB7
IH07CkBAIC0xNDIxLDIxICsxNDExLDYgQEAgU3RyaW5nIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRShQbGF0Zm9ybUdMT2IKICAgICBy
ZXR1cm4gcmV0dXJuVmFsdWU7CiB9CiAKLXZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6aW5zZXJ0RXZlbnRNYXJrZXJFWFQoY29uc3QgU3RyaW5nJiBhcmcwKQotewotICAgIHNlbmQo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJbnNlcnRFdmVudE1hcmtlckVYVChh
cmcwKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOwotfQotCi12b2lkIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OnB1c2hHcm91cE1hcmtlckVYVChjb25zdCBTdHJpbmcmIGFy
ZzApCi17Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlB1c2hH
cm91cE1hcmtlckVYVChhcmcwKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOwotfQot
Ci12b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnBvcEdyb3VwTWFya2VyRVhUKCkK
LXsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6UG9wR3JvdXBN
YXJrZXJFWFQoKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOwotfQotCiB2b2lkIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRyYXdCdWZmZXJzRVhUKEdDR0xTcGFuPGNvbnN0
IEdDR0xlbnVtPiBidWZzKQogewogICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpEcmF3QnVmZmVyc0VYVChJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90PihyZWlu
dGVycHJldF9jYXN0PGNvbnN0IHVpbnQzMl90Kj4oYnVmcy5kYXRhKSwgYnVmcy5idWZTaXplKSks
IG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKQEAgLTE0NjUsMTgxICsxNDQwLDYgQEAg
dm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRJbnRlcm5hbGZvcm1hdGl2KEdD
R0xlbnVtIHRhcmdldCwgR0NHTGVudW0KICAgICAKIH0KIAotdm9pZCBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpyZWFkUGl4ZWxzUm9idXN0QU5HTEUoR0NHTGludCB4LCBHQ0dMaW50IHks
IEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dM
ZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xzaXpl
aSogY29sdW1ucywgR0NHTHNpemVpKiByb3dzLCBHQ0dMdm9pZCogcGl4ZWxzKQotewotICAgIG5v
dEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
dGV4UGFyYW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1l
LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGZsb2F0KiBwYXJhbXMpCi17Ci0gICAgbm90
SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0
ZXhQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUs
IEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMaW50KiBwYXJhbXMpCi17Ci0gICAgbm90SW1w
bGVtZW50ZWQoKTsKLX0KLQotdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRR
dWVyeWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNp
emVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpCi17Ci0gICAg
bm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpnZXRRdWVyeU9iamVjdHVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IGlkLCBHQ0dMZW51bSBwbmFt
ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMdWludCogcGFyYW1z
KQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6Z2V0QnVmZmVyUG9pbnRlcnZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQs
IEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdD
R0x2b2lkKiogcGFyYW1zKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VmVydGV4QXR0cmliSWl2Um9idXN0QU5HTEUo
R0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNp
emVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwot
fQotCi12b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFZlcnRleEF0dHJpYkl1
aXZSb2J1c3RBTkdMRShHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBi
dWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHVpbnQqIHBhcmFtcykKLXsKLSAgICBub3RJ
bXBsZW1lbnRlZCgpOwotfQotCi12b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Omdl
dFVuaWZvcm11aXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9u
LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0x1aW50KiBwYXJhbXMp
Ci17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpnZXRCdWZmZXJQYXJhbWV0ZXJpNjR2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3Ro
LCBHQ0dMaW50NjQqIHBhcmFtcykKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lk
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnNhbXBsZXJQYXJhbWV0ZXJpdlJvYnVzdEFO
R0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwg
Y29uc3QgR0NHTGludCogcGFyYW0pCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9p
ZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpzYW1wbGVyUGFyYW1ldGVyZnZSb2J1c3RB
TkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUs
IGNvbnN0IEdDR0xmbG9hdCogcGFyYW0pCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQot
dm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRTYW1wbGVyUGFyYW1ldGVyaXZS
b2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1
ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpCi17Ci0gICAgbm90SW1w
bGVtZW50ZWQoKTsKLX0KLQotdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRT
YW1wbGVyUGFyYW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBw
bmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMZmxvYXQqIHBh
cmFtcykKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmdldEZyYW1lYnVmZmVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVp
KiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQot
Ci12b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFByb2dyYW1JbnRlcmZhY2Vp
dlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xlbnVtIHByb2dyYW1JbnRlcmZhY2Us
IEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdD
R0xpbnQqIHBhcmFtcykKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEJvb2xlYW5pX3ZSb2J1c3RBTkdMRShHQ0dMZW51
bSB0YXJnZXQsIEdDR0x1aW50IGluZGV4LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBs
ZW5ndGgsIEdDR0xib29sZWFuKiBkYXRhKSAvLyBOT0xJTlQKLXsKLSAgICBub3RJbXBsZW1lbnRl
ZCgpOwotfQotCi12b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldE11bHRpc2Ft
cGxlZnZSb2J1c3RBTkdMRShHQ0dMZW51bSBwbmFtZSwgR0NHTHVpbnQgaW5kZXgsIEdDR0xzaXpl
aSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGZsb2F0KiB2YWwpCi17Ci0gICAgbm90
SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpn
ZXRUZXhMZXZlbFBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50
IGxldmVsLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVu
Z3RoLCBHQ0dMaW50KiBwYXJhbXMpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9p
ZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRUZXhMZXZlbFBhcmFtZXRlcmZ2Um9i
dXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBwbmFtZSwg
R0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMZmxvYXQqIHBhcmFtcykK
LXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmdldFBvaW50ZXJ2Um9idXN0QU5HTEVSb2J1c3RBTkdMRShHQ0dMZW51bSBwbmFt
ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMdm9pZCoqIHBhcmFt
cykKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmdldG5Vbmlmb3JtZnZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBH
Q0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdD
R0xmbG9hdCogcGFyYW1zKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0blVuaWZvcm1pdlJvYnVzdEFOR0xFKEdDR0x1
aW50IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6
ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1zKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19
Ci0KLXZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0blVuaWZvcm11aXZSb2J1
c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVm
U2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0x1aW50KiBwYXJhbXMpCi17Ci0gICAgbm90SW1w
bGVtZW50ZWQoKTsKLX0KLQotdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhQ
YXJhbWV0ZXJJaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBH
Q0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGludCogcGFyYW1zKQotewotICAgIG5vdEltcGxl
bWVudGVkKCk7Ci19Ci0KLXZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4UGFy
YW1ldGVySXVpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdD
R0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMdWludCogcGFyYW1zKQotewotICAgIG5vdEltcGxl
bWVudGVkKCk7Ci19Ci0KLXZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VGV4
UGFyYW1ldGVySWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwg
R0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpCi17
Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjpnZXRUZXhQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dM
dWludCogcGFyYW1zKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c2FtcGxlclBhcmFtZXRlcklpdlJvYnVzdEFOR0xFKEdD
R0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3Qg
R0NHTGludCogcGFyYW0pCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpzYW1wbGVyUGFyYW1ldGVySXVpdlJvYnVzdEFOR0xF
KEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29u
c3QgR0NHTHVpbnQqIHBhcmFtKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0U2FtcGxlclBhcmFtZXRlcklpdlJvYnVz
dEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6
ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykKLXsKLSAgICBub3RJbXBsZW1l
bnRlZCgpOwotfQotCi12b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFNhbXBs
ZXJQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5h
bWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHVpbnQqIHBhcmFt
cykKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmdldFF1ZXJ5T2JqZWN0aXZSb2J1c3RBTkdMRShHQ0dMdWludCBpZCwgR0NH
TGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGlu
dCogcGFyYW1zKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0UXVlcnlPYmplY3RpNjR2Um9idXN0QU5HTEUoR0NHTHVp
bnQgaWQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5n
dGgsIEdDR0xpbnQ2NCogcGFyYW1zKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZv
aWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0UXVlcnlPYmplY3R1aTY0dlJvYnVz
dEFOR0xFKEdDR0x1aW50IGlkLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdD
R0xzaXplaSogbGVuZ3RoLCBHQ0dMdWludDY0KiBwYXJhbXMpCi17Ci0gICAgbm90SW1wbGVtZW50
ZWQoKTsKLX0KLQogfQogCiAjZW5kaWYK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>415955</attachid>
            <date>2020-12-10 18:19:31 -0800</date>
            <delta_ts>2020-12-15 14:43:57 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-218896-20201210181930.patch</filename>
            <type>text/plain</type>
            <size>87726</size>
            <attacher name="Rini Patel">rini_patel</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwNTk0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTg5YmE0ODhlN2IwMmI3
YzFjMmUzOTNmOWI4MjgwMjM4YWIwMTI0Yy4uZTc5NmNiMjQzODFiNDE3YTkzMWMxY2JmNjQ5OWVh
OWEwMzA1MmM5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyOSBAQAorMjAyMC0xMi0wNyAgUmlu
aSBQYXRlbCAgPHJpbmlfcGF0ZWxAYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZSB1bnVzZWQg
ZnVuY3Rpb25zIGZyb20gR3JhcGhpY3NDb250ZXh0R0wgYW5kIEV4dGVuc2lvbnNHTAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE4ODk2CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVtb3ZlIHVudXNlZCBm
dW5jdGlvbnMgZnJvbSBHcmFwaGljc0NvbnRleHRHTCBhbmQgRXh0ZW5zaW9uc0dMCisgICAgICAg
IFRoZXkncmUgZGVhZCBjb2RlIGFuZCBtYWtlIGl0IGhhcmRlciB0byBpbXBsZW1lbnQgdGhlIEdQ
VSBQcm9jZXNzIHZlcnNpb24uCisKKyAgICAgICAgLSBJZiB0aGUgZnVuY3Rpb24gaXMgdW51c2Vk
LCByZW1vdmUgaXQgZnVsbHkKKyAgICAgICAgLSBJZiB0aGUgZnVuY3Rpb24gaXMgdW51c2VkIGlu
IFVTRShBTkdMRSkgV2ViR0wgcGFydCwgcmVtb3ZlIHRoZSBmdW5jdGlvbiBmcm9tIEdyYXBoaWNz
Q29udGV4dEdMIGFuZCBBTkdMRSBHcmFwaGljc0NvbnRleHRHTE9wZW5HTAorCisgICAgICAgICog
aHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL0V4dGVuc2lvbnNHTC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lv
bnNHTEFOR0xFOjpFeHRlbnNpb25zR0xBTkdMRSk6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNp
b25zR0xBTkdMRTo6aW5pdGlhbGl6ZUF2YWlsYWJsZUV4dGVuc2lvbnMpOgorICAgICAgICAoV2Vi
Q29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmJsaXRGcmFtZWJ1ZmZlckFOR0xFKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpyZW5kZXJidWZmZXJTdG9yYWdl
TXVsdGlzYW1wbGVBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25z
R0xBTkdMRTo6aW5zZXJ0RXZlbnRNYXJrZXJFWFQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OnB1c2hHcm91cE1hcmtlckVYVCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6cG9wR3JvdXBNYXJrZXJFWFQpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OnJlYWRQaXhlbHNSb2J1
c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6
dGV4UGFyYW1ldGVyZnZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpF
eHRlbnNpb25zR0xBTkdMRTo6dGV4UGFyYW1ldGVyaXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6Z2V0UXVlcnlpdlJvYnVzdEFOR0xF
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpnZXRRdWVy
eU9iamVjdHVpdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVu
c2lvbnNHTEFOR0xFOjpnZXRCdWZmZXJQb2ludGVydlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpnZXRWZXJ0ZXhBdHRyaWJJaXZSb2J1
c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6
Z2V0VmVydGV4QXR0cmliSXVpdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpnZXRVbmlmb3JtdWl2Um9idXN0QU5HTEUpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldEJ1ZmZlclBhcmFtZXRl
cmk2NHZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25z
R0xBTkdMRTo6c2FtcGxlclBhcmFtZXRlcml2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OnNhbXBsZXJQYXJhbWV0ZXJmdlJvYnVzdEFO
R0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpnZXRT
YW1wbGVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpFeHRlbnNpb25zR0xBTkdMRTo6Z2V0U2FtcGxlclBhcmFtZXRlcmZ2Um9idXN0QU5HTEUpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldEZyYW1lYnVm
ZmVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpF
eHRlbnNpb25zR0xBTkdMRTo6Z2V0UHJvZ3JhbUludGVyZmFjZWl2Um9idXN0QU5HTEUpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldEJvb2xlYW5pX3ZS
b2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdM
RTo6Z2V0TXVsdGlzYW1wbGVmdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpnZXRUZXhMZXZlbFBhcmFtZXRlcml2Um9idXN0QU5HTEUp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldFRleExl
dmVsUGFyYW1ldGVyZnZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpF
eHRlbnNpb25zR0xBTkdMRTo6Z2V0UG9pbnRlcnZSb2J1c3RBTkdMRVJvYnVzdEFOR0xFKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpnZXRuVW5pZm9ybWZ2
Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5H
TEU6OmdldG5Vbmlmb3JtaXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpFeHRlbnNpb25zR0xBTkdMRTo6Z2V0blVuaWZvcm11aXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6dGV4UGFyYW1ldGVySWl2Um9i
dXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6
OnRleFBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpFeHRlbnNpb25zR0xBTkdMRTo6Z2V0VGV4UGFyYW1ldGVySWl2Um9idXN0QU5HTEUpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldFRleFBhcmFtZXRl
ckl1aXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25z
R0xBTkdMRTo6c2FtcGxlclBhcmFtZXRlcklpdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpzYW1wbGVyUGFyYW1ldGVySXVpdlJvYnVz
dEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpn
ZXRTYW1wbGVyUGFyYW1ldGVySWl2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldFNhbXBsZXJQYXJhbWV0ZXJJdWl2Um9idXN0QU5H
TEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldFF1
ZXJ5T2JqZWN0aXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRl
bnNpb25zR0xBTkdMRTo6Z2V0UXVlcnlPYmplY3RpNjR2Um9idXN0QU5HTEUpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldFF1ZXJ5T2JqZWN0dWk2NHZS
b2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUv
RXh0ZW5zaW9uc0dMQU5HTEUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wv
RXh0ZW5zaW9uc0dMT3BlbkdMLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9w
ZW5HTDo6YmxpdEZyYW1lYnVmZmVyQU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
RXh0ZW5zaW9uc0dMT3BlbkdMOjpyZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVBTkdMRSk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0w6Omluc2VydEV2
ZW50TWFya2VyRVhUKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9w
ZW5HTDo6cHVzaEdyb3VwTWFya2VyRVhUKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4
dGVuc2lvbnNHTE9wZW5HTDo6cG9wR3JvdXBNYXJrZXJFWFQpOiBEZWxldGVkLgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6cmVhZFBpeGVsc1Jv
YnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5H
TENvbW1vbjo6dGV4UGFyYW1ldGVyZnZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OnRleFBhcmFtZXRlcml2Um9idXN0QU5H
TEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9u
OjpnZXRRdWVyeWl2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0
ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRRdWVyeU9iamVjdHVpdlJvYnVzdEFOR0xFKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0QnVm
ZmVyUG9pbnRlcnZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRl
bnNpb25zR0xPcGVuR0xDb21tb246OmdldFZlcnRleEF0dHJpYklpdlJvYnVzdEFOR0xFKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0VmVy
dGV4QXR0cmliSXVpdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4
dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0VW5pZm9ybXVpdlJvYnVzdEFOR0xFKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0QnVmZmVy
UGFyYW1ldGVyaTY0dlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4
dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6c2FtcGxlclBhcmFtZXRlcml2Um9idXN0QU5HTEUpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpzYW1w
bGVyUGFyYW1ldGVyZnZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpF
eHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFNhbXBsZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xF
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6
Z2V0U2FtcGxlclBhcmFtZXRlcmZ2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRGcmFtZWJ1ZmZlclBhcmFtZXRlcml2
Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3Bl
bkdMQ29tbW9uOjpnZXRQcm9ncmFtSW50ZXJmYWNlaXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldEJvb2xlYW5pX3ZS
b2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVu
R0xDb21tb246OmdldE11bHRpc2FtcGxlZnZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFRleExldmVsUGFyYW1ldGVy
aXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xP
cGVuR0xDb21tb246OmdldFRleExldmVsUGFyYW1ldGVyZnZSb2J1c3RBTkdMRSk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFBvaW50ZXJ2
Um9idXN0QU5HTEVSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRl
bnNpb25zR0xPcGVuR0xDb21tb246OmdldG5Vbmlmb3JtZnZSb2J1c3RBTkdMRSk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldG5Vbmlmb3Jt
aXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xP
cGVuR0xDb21tb246OmdldG5Vbmlmb3JtdWl2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjp0ZXhQYXJhbWV0ZXJJaXZSb2J1
c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xD
b21tb246OnRleFBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFRleFBhcmFtZXRlcklpdlJvYnVz
dEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTENv
bW1vbjo6Z2V0VGV4UGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6c2FtcGxlclBhcmFtZXRlcklpdlJv
YnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5H
TENvbW1vbjo6c2FtcGxlclBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFNhbXBsZXJQYXJhbWV0
ZXJJaXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25z
R0xPcGVuR0xDb21tb246OmdldFNhbXBsZXJQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRRdWVy
eU9iamVjdGl2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5z
aW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRRdWVyeU9iamVjdGk2NHZSb2J1c3RBTkdMRSk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFF1ZXJ5
T2JqZWN0dWk2NHZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5oOgorICAgICAgICAoV2ViQ29y
ZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjppc05WSURJQSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmlzQU1EIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6aXNJbnRlbCBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmlzSW1hZ2luYXRpb24gY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjp2ZW5kb3Ig
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpyZXF1
aXJlc0J1aWx0SW5GdW5jdGlvbkVtdWxhdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpF
eHRlbnNpb25zR0xPcGVuR0xDb21tb246OnJlcXVpcmVzUmVzdHJpY3RlZE1heGltdW1UZXh0dXJl
U2l6ZSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lv
bnNHTE9wZW5HTEVTLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTEVT
OjpibGl0RnJhbWVidWZmZXJBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRl
bnNpb25zR0xPcGVuR0xFUzo6aW5zZXJ0RXZlbnRNYXJrZXJFWFQpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMRVM6OnB1c2hHcm91cE1hcmtlckVYVCk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xFUzo6cG9wR3JvdXBN
YXJrZXJFWFQpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9F
eHRlbnNpb25zR0xPcGVuR0xFUy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5n
bC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEJhc2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlc2hhcGVGQk9zKToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRFeHRlbnNpb25zKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb21tb24uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnZhbGlkYXRlRGVw
dGhTdGVuY2lsKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0xFUy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6Z2V0RXh0ZW5zaW9ucyk6CisKIDIwMjAtMTItMDkgIFJ5YW4gSGFkZGFkICA8cnlh
bmhhZGRhZEBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcmV2ZXJ0aW5nIHIyNzA1
NDQgYW5kIHIyNzA1NjkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCmluZGV4IGY3YzZhMmU4MmE0YmYwMzdhMWI0
NzdkNzgzZmE1NDFhYzRmNTQ2OTYuLjkxODhhNjM5YmE3OTYyZThjY2Q4OTNlNTAwOTUwMmU3Mzgx
MDFkNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCkBAIC03NDEsMTAgKzc0MSw2IEBAIHN0ZDo6dW5pcXVl
X3B0cjxXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlPiBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
OjpjcmVhdGUoQ2FuCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIGF1dG8m
IGV4dGVuc2lvbnMgPSBjb250ZXh0LT5nZXRFeHRlbnNpb25zKCk7Ci0gICAgaWYgKGV4dGVuc2lv
bnMuc3VwcG9ydHMoIkdMX0VYVF9kZWJ1Z19tYXJrZXIiX3MpKQotICAgICAgICBleHRlbnNpb25z
LnB1c2hHcm91cE1hcmtlckVYVCgiV2ViR0xSZW5kZXJpbmdDb250ZXh0Il9zKTsKLQogICAgIHN0
ZDo6dW5pcXVlX3B0cjxXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlPiByZW5kZXJpbmdDb250ZXh0
OwogI2lmIEVOQUJMRShXRUJHTDIpCiAgICAgaWYgKHR5cGUgPT0gIndlYmdsMiIpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9FeHRlbnNpb25zR0wuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0V4dGVuc2lvbnNHTC5oCmluZGV4IGQ1MDIx
ZGQzMzRlZGY5MWEzNDIzMGJlMDE2ODkyMDc0MjQ5ZWIwZTguLmFjOGM4ODkzMjM0NTY3MmU5ZDA1
M2ZjZDk3YTIyZGE4ZTk5MDVlOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0V4dGVuc2lvbnNHTC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0V4dGVuc2lvbnNHTC5oCkBAIC0yODEsMTIgKzI4MSw2IEBAIHB1YmxpYzoKICAgICAv
LyBleHRlcm5hbGx5LgogICAgIHZpcnR1YWwgR0NHTGludCBnZXRHcmFwaGljc1Jlc2V0U3RhdHVz
QVJCKCkgPSAwOwogCi0gICAgLy8gR0xfQU5HTEVfZnJhbWVidWZmZXJfYmxpdAotICAgIHZpcnR1
YWwgdm9pZCBibGl0RnJhbWVidWZmZXJBTkdMRShHQ0dMaW50IHNyY1gwLCBHQ0dMaW50IHNyY1kw
LCBHQ0dMaW50IHNyY1gxLCBHQ0dMaW50IHNyY1kxLCBHQ0dMaW50IGRzdFgwLCBHQ0dMaW50IGRz
dFkwLCBHQ0dMaW50IGRzdFgxLCBHQ0dMaW50IGRzdFkxLCBHQ0dMYml0ZmllbGQgbWFzaywgR0NH
TGVudW0gZmlsdGVyKSA9IDA7Ci0KLSAgICAvLyBHTF9BTkdMRV9mcmFtZWJ1ZmZlcl9tdWx0aXNh
bXBsZQotICAgIHZpcnR1YWwgdm9pZCByZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVBTkdM
RShHQ0dMZW51bSB0YXJnZXQsIEdDR0xzaXplaSBzYW1wbGVzLCBHQ0dMZW51bSBpbnRlcm5hbGZv
cm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KSA9IDA7Ci0KICAgICAvLyBH
TF9PRVNfdmVydGV4X2FycmF5X29iamVjdAogICAgIHZpcnR1YWwgUGxhdGZvcm1HTE9iamVjdCBj
cmVhdGVWZXJ0ZXhBcnJheU9FUygpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlVmVydGV4
QXJyYXlPRVMoUGxhdGZvcm1HTE9iamVjdCkgPSAwOwpAQCAtMjk2LDExICsyOTAsNiBAQCBwdWJs
aWM6CiAgICAgLy8gR0xfQU5HTEVfdHJhbnNsYXRlZF9zaGFkZXJfc291cmNlCiAgICAgdmlydHVh
bCBTdHJpbmcgZ2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFKFBsYXRmb3JtR0xPYmplY3Qp
ID0gMDsKIAotICAgIC8vIEdMX0VYVF9kZWJ1Z19tYXJrZXIKLSAgICB2aXJ0dWFsIHZvaWQgaW5z
ZXJ0RXZlbnRNYXJrZXJFWFQoY29uc3QgU3RyaW5nJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBw
dXNoR3JvdXBNYXJrZXJFWFQoY29uc3QgU3RyaW5nJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBw
b3BHcm91cE1hcmtlckVYVCgpID0gMDsKLQogICAgIC8vIEdMX0FSQl9kcmF3X2J1ZmZlcnMgLyBH
TF9FWFRfZHJhd19idWZmZXJzCiAgICAgdmlydHVhbCB2b2lkIGRyYXdCdWZmZXJzRVhUKEdDR0xT
cGFuPGNvbnN0IEdDR0xlbnVtPiBidWZzKSA9IDA7CiAKQEAgLTMwOSw0NyArMjk4LDYgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgdm9pZCBkcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRShHQ0dMZW51
bSBtb2RlLCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xlbnVtIHR5cGUsIEdDR0x2b2lkcHRyIG9mZnNl
dCwgR0NHTHNpemVpIHByaW1jb3VudCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB2ZXJ0ZXhBdHRy
aWJEaXZpc29yQU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0x1aW50IGRpdmlzb3IpID0gMDsKIAot
ICAgIC8vIEdMX0FOR0xFX3JvYnVzdF9jbGllbnRfbWVtb3J5Ci0gICAgdmlydHVhbCB2b2lkIHJl
YWRQaXhlbHNSb2J1c3RBTkdMRShHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRo
LCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xz
aXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHNpemVpKiBjb2x1bW5zLCBHQ0dM
c2l6ZWkqIHJvd3MsIEdDR0x2b2lkKiBwaXhlbHMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgdGV4
UGFyYW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBH
Q0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGZsb2F0KiBwYXJhbXMpID0gMDsKLSAgICB2aXJ0
dWFsIHZvaWQgdGV4UGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xl
bnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGludCogcGFyYW1zKSA9IDA7
Ci0KLSAgICB2aXJ0dWFsIHZvaWQgZ2V0UXVlcnlpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdl
dCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwg
R0NHTGludCogcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldFF1ZXJ5T2JqZWN0dWl2
Um9idXN0QU5HTEUoR0NHTHVpbnQgaWQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6
ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0x1aW50KiBwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFs
IHZvaWQgZ2V0QnVmZmVyUG9pbnRlcnZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xl
bnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0x2b2lk
KiogcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldFZlcnRleEF0dHJpYklpdlJvYnVz
dEFOR0xFKEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUs
IEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZv
aWQgZ2V0VmVydGV4QXR0cmliSXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IGluZGV4LCBHQ0dMZW51
bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMdWludCog
cGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldFVuaWZvcm11aXZSb2J1c3RBTkdMRShH
Q0dMdWludCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NH
THNpemVpKiBsZW5ndGgsIEdDR0x1aW50KiBwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQg
Z2V0QnVmZmVyUGFyYW1ldGVyaTY0dlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVu
dW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludDY0
KiBwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgc2FtcGxlclBhcmFtZXRlcml2Um9idXN0
QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXpl
LCBjb25zdCBHQ0dMaW50KiBwYXJhbSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBzYW1wbGVyUGFy
YW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NH
THNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xmbG9hdCogcGFyYW0pID0gMDsKLSAgICB2aXJ0dWFs
IHZvaWQgZ2V0U2FtcGxlclBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwg
R0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NH
TGludCogcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldFNhbXBsZXJQYXJhbWV0ZXJm
dlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkg
YnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xmbG9hdCogcGFyYW1zKSA9IDA7Ci0KLSAg
ICB2aXJ0dWFsIHZvaWQgZ2V0RnJhbWVidWZmZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xl
bnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkq
IGxlbmd0aCwgR0NHTGludCogcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldFByb2dy
YW1JbnRlcmZhY2VpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xlbnVtIHByb2dy
YW1JbnRlcmZhY2UsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVp
KiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRCb29s
ZWFuaV92Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMdWludCBpbmRleCwgR0NHTHNp
emVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMYm9vbGVhbiogZGF0YSkgPSAwOyAv
LyBOT0xJTlQKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0TXVsdGlzYW1wbGVmdlJvYnVzdEFOR0xFKEdD
R0xlbnVtIHBuYW1lLCBHQ0dMdWludCBpbmRleCwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXpl
aSogbGVuZ3RoLCBHQ0dMZmxvYXQqIHZhbCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRUZXhM
ZXZlbFBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVs
LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBH
Q0dMaW50KiBwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0VGV4TGV2ZWxQYXJhbWV0
ZXJmdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0g
cG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGZsb2F0KiBw
YXJhbXMpID0gMDsKLQotICAgIHZpcnR1YWwgdm9pZCBnZXRQb2ludGVydlJvYnVzdEFOR0xFUm9i
dXN0QU5HTEUoR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxl
bmd0aCwgR0NHTHZvaWQqKiBwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0blVuaWZv
cm1mdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xz
aXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGZsb2F0KiBwYXJhbXMpID0gMDsK
LSAgICB2aXJ0dWFsIHZvaWQgZ2V0blVuaWZvcm1pdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dy
YW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0
aCwgR0NHTGludCogcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldG5Vbmlmb3JtdWl2
Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVp
IGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMdWludCogcGFyYW1zKSA9IDA7Ci0gICAg
dmlydHVhbCB2b2lkIHRleFBhcmFtZXRlcklpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwg
R0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMaW50KiBwYXJhbXMp
ID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgdGV4UGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFKEdDR0xl
bnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dM
dWludCogcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldFRleFBhcmFtZXRlcklpdlJv
YnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZT
aXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVh
bCB2b2lkIGdldFRleFBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdD
R0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0x1
aW50KiBwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgc2FtcGxlclBhcmFtZXRlcklpdlJv
YnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVm
U2l6ZSwgY29uc3QgR0NHTGludCogcGFyYW0pID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgc2FtcGxl
clBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFt
ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0x1aW50KiBwYXJhbSkgPSAwOwotICAgIHZp
cnR1YWwgdm9pZCBnZXRTYW1wbGVyUGFyYW1ldGVySWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2Ft
cGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0
aCwgR0NHTGludCogcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldFNhbXBsZXJQYXJh
bWV0ZXJJdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdD
R0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHVpbnQqIHBhcmFtcykgPSAw
OwotCi0gICAgdmlydHVhbCB2b2lkIGdldFF1ZXJ5T2JqZWN0aXZSb2J1c3RBTkdMRShHQ0dMdWlu
dCBpZCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0
aCwgR0NHTGludCogcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldFF1ZXJ5T2JqZWN0
aTY0dlJvYnVzdEFOR0xFKEdDR0x1aW50IGlkLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1
ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50NjQqIHBhcmFtcykgPSAwOwotICAgIHZp
cnR1YWwgdm9pZCBnZXRRdWVyeU9iamVjdHVpNjR2Um9idXN0QU5HTEUoR0NHTHVpbnQgaWQsIEdD
R0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0x1
aW50NjQqIHBhcmFtcykgPSAwOwotCiAgICAgLy8gT3RoZXIgZnVuY3Rpb25zLgogI2lmICFVU0Uo
QU5HTEUpCiAgICAgLy8gRVhUIFJvYnVzdG5lc3MgLSB1c2VzIGdldEdyYXBoaWNzUmVzZXRTdGF0
dXNBUkIKQEAgLTM1NywxNiArMzA1LDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBnZXRu
VW5pZm9ybWZ2RVhUKEdDR0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXpl
aSBidWZTaXplLCBHQ0dMZmxvYXQqIHBhcmFtcykgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBnZXRu
VW5pZm9ybWl2RVhUKEdDR0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXpl
aSBidWZTaXplLCBHQ0dMaW50KiBwYXJhbXMpID0gMDsKIAotICAgIHZpcnR1YWwgYm9vbCBpc05W
SURJQSgpID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgaXNBTUQoKSA9IDA7Ci0gICAgdmlydHVhbCBi
b29sIGlzSW50ZWwoKSA9IDA7Ci0gICAgdmlydHVhbCBib29sIGlzSW1hZ2luYXRpb24oKSA9IDA7
Ci0gICAgdmlydHVhbCBTdHJpbmcgdmVuZG9yKCkgPSAwOwotCi0gICAgLy8gU29tZSBjb25maWd1
cmF0aW9ucyBoYXZlIGJ1Z3MgcmVnYXJkaW5nIGJ1aWx0LWluIGZ1bmN0aW9ucyBpbiB0aGVpciBP
cGVuR0wgZHJpdmVycwotICAgIC8vIHRoYXQgbXVzdCBiZSBhdm9pZGVkLiBQb3J0cyBzaG91bGQg
aW1wbGVtZW50IHRoZXNlIGZsYWdzIG9uIHN1Y2ggY29uZmlndXJhdGlvbnMuCi0gICAgdmlydHVh
bCBib29sIHJlcXVpcmVzQnVpbHRJbkZ1bmN0aW9uRW11bGF0aW9uKCkgPSAwOwotICAgIHZpcnR1
YWwgYm9vbCByZXF1aXJlc1Jlc3RyaWN0ZWRNYXhpbXVtVGV4dHVyZVNpemUoKSA9IDA7CiAjZW5k
aWYKIAogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1Jl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmNwcAppbmRleCA2
MGY3YTk0N2VmY2JiMzcxNTZjMDk4ZTBiNWVlMzNjM2I2MmI4NDliLi40NWJjYzFlYmM0ZWZlMWUz
NGE0ODRkNmM1ZTBjMmRmZmJkYjM1ZjUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eUJhc2UuY3BwCkBAIC0xNjIsNDEgKzE2Miw2IEBAIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eUJhc2U6OmdldG5Vbmlmb3JtZnZFWFQoR0NHTHVpbnQsIEdDR0xpbnQsIEdDR0xz
CiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjpnZXRuVW5pZm9ybWl2RVhU
KEdDR0x1aW50LCBHQ0dMaW50LCBHQ0dMc2l6ZWksIEdDR0xpbnQqKQogewogfQotCi1ib29sIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjppc05WSURJQSgpCi17Ci0gICAgcmV0dXJu
IGZhbHNlOwotfQotCi1ib29sIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjppc0FN
RCgpCi17Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi1ib29sIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHlCYXNlOjppc0ludGVsKCkKLXsKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLWJvb2wg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OmlzSW1hZ2luYXRpb24oKQotewotICAg
IHJldHVybiBmYWxzZTsKLX0KLQotU3RyaW5nIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlC
YXNlOjp2ZW5kb3IoKQotewotICAgIHJldHVybiB7IH07Ci19Ci0KLWJvb2wgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eUJhc2U6OnJlcXVpcmVzQnVpbHRJbkZ1bmN0aW9uRW11bGF0aW9uKCkK
LXsKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLWJvb2wgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eUJhc2U6OnJlcXVpcmVzUmVzdHJpY3RlZE1heGltdW1UZXh0dXJlU2l6ZSgpCi17Ci0gICAg
cmV0dXJuIGZhbHNlOwotfQogI2VuZGlmCiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNl
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5QmFzZS5oCmluZGV4IDcyNmFhZjZjNmEwZjYyZmYyODJlNWI4ZDIwMmExMjk0ZTFk
ZTg1NzEuLmEzNzNlZjJiNDc1NmI4OWE5MTZhOTg0NzM0ZWY1ZjVmMDc0YmQ2NWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHlCYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuaApAQCAtODEsMTcgKzgxLDkgQEAgcHVibGlj
OgogICAgIGJvb2wgaXNFbmFibGVkKGNvbnN0IFN0cmluZyYpIGZpbmFsOwogCiAjaWYgIVVTRShB
TkdMRSkKLSAgICAvLyBGSVhNRTogVGhlc2UgYXJlIHN1cHBvc2VkIHRvIGJlIHJlbW92ZWQgaW4g
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxODg5Ni4KICAgICB2b2lk
IHJlYWRuUGl4ZWxzRVhUKEdDR0xpbnQsIEdDR0xpbnQsIEdDR0xzaXplaSwgR0NHTHNpemVpLCBH
Q0dMZW51bSwgR0NHTGVudW0sIEdDR0xzaXplaSwgR0NHTHZvaWQqKSBmaW5hbDsKICAgICB2b2lk
IGdldG5Vbmlmb3JtZnZFWFQoR0NHTHVpbnQsIEdDR0xpbnQsIEdDR0xzaXplaSwgR0NHTGZsb2F0
KikgZmluYWw7CiAgICAgdm9pZCBnZXRuVW5pZm9ybWl2RVhUKEdDR0x1aW50LCBHQ0dMaW50LCBH
Q0dMc2l6ZWksIEdDR0xpbnQqKSBmaW5hbDsKLSAgICBib29sIGlzTlZJRElBKCkgZmluYWw7Ci0g
ICAgYm9vbCBpc0FNRCgpIGZpbmFsOwotICAgIGJvb2wgaXNJbnRlbCgpIGZpbmFsOwotICAgIGJv
b2wgaXNJbWFnaW5hdGlvbigpIGZpbmFsOwotICAgIFN0cmluZyB2ZW5kb3IoKSBmaW5hbDsKLSAg
ICBib29sIHJlcXVpcmVzQnVpbHRJbkZ1bmN0aW9uRW11bGF0aW9uKCkgZmluYWw7Ci0gICAgYm9v
bCByZXF1aXJlc1Jlc3RyaWN0ZWRNYXhpbXVtVGV4dHVyZVNpemUoKSBmaW5hbDsKICNlbmRpZgog
CiBwcm90ZWN0ZWQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hbmdsZS9FeHRlbnNpb25zR0xBTkdMRS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hbmdsZS9FeHRlbnNpb25zR0xBTkdMRS5jcHAKaW5kZXggOTIwZDkyZjM1Y2FkZDhi
YjA4NTIzZDE3NjU3NTQxMjA5N2Y2Yzk2Zi4uZjU0MGFiM2NhODUwYjFmMjdjYzYyZWU5NjRjZjA0
ZTFkODE1ZThhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmNwcApAQCAtMzMsMTAgKzMzLDkgQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1FeHRlbnNpb25zR0xBTkdMRTo6RXh0ZW5zaW9uc0dM
QU5HTEUoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqIGNvbnRleHQsIGJvb2wgdXNlSW5kZXhlZEdl
dFN0cmluZykKK0V4dGVuc2lvbnNHTEFOR0xFOjpFeHRlbnNpb25zR0xBTkdMRShHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTCogY29udGV4dCkKICAgICA6IG1faW5pdGlhbGl6ZWRBdmFpbGFibGVFeHRl
bnNpb25zKGZhbHNlKQogICAgICwgbV9jb250ZXh0KGNvbnRleHQpCi0gICAgLCBtX3VzZUluZGV4
ZWRHZXRTdHJpbmcodXNlSW5kZXhlZEdldFN0cmluZykKIHsKIH0KIApAQCAtOTksNDIgKzk4LDE1
IEBAIFN0cmluZyBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFO
R0xFKFBsYXRmb3JtR0xPYmplY3Qgc2hhZGVyCiAKIHZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6Omlu
aXRpYWxpemVBdmFpbGFibGVFeHRlbnNpb25zKCkKIHsKLSAgICBpZiAobV91c2VJbmRleGVkR2V0
U3RyaW5nKSB7Ci0gICAgICAgIEdMaW50IG51bUV4dGVuc2lvbnMgPSAwOwotICAgICAgICBnbDo6
R2V0SW50ZWdlcnYoR0xfTlVNX0VYVEVOU0lPTlMsICZudW1FeHRlbnNpb25zKTsKLSAgICAgICAg
Zm9yIChHTGludCBpID0gMDsgaSA8IG51bUV4dGVuc2lvbnM7ICsraSkKLSAgICAgICAgICAgIG1f
YXZhaWxhYmxlRXh0ZW5zaW9ucy5hZGQoZ2w6OkdldFN0cmluZ2koR0xfRVhURU5TSU9OUywgaSkp
OwotICAgICAgICBnbDo6R2V0SW50ZWdlcnYoR0xfTlVNX1JFUVVFU1RBQkxFX0VYVEVOU0lPTlNf
QU5HTEUsICZudW1FeHRlbnNpb25zKTsKLSAgICAgICAgZm9yIChHTGludCBpID0gMDsgaSA8IG51
bUV4dGVuc2lvbnM7ICsraSkKLSAgICAgICAgICAgIG1fcmVxdWVzdGFibGVFeHRlbnNpb25zLmFk
ZChnbDo6R2V0U3RyaW5naShHTF9SRVFVRVNUQUJMRV9FWFRFTlNJT05TX0FOR0xFLCBpKSk7Ci0g
ICAgfSBlbHNlIHsKLSAgICAgICAgU3RyaW5nIGV4dGVuc2lvbnNTdHJpbmcgPSBnZXRFeHRlbnNp
b25zKCk7Ci0gICAgICAgIGZvciAoYXV0byYgZXh0ZW5zaW9uIDogZXh0ZW5zaW9uc1N0cmluZy5z
cGxpdCgnICcpKQotICAgICAgICAgICAgbV9hdmFpbGFibGVFeHRlbnNpb25zLmFkZChleHRlbnNp
b24pOwotICAgICAgICBleHRlbnNpb25zU3RyaW5nID0gU3RyaW5nKHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgY2hhcio+KGdsOjpHZXRTdHJpbmcoR0xfUkVRVUVTVEFCTEVfRVhURU5TSU9OU19BTkdM
RSkpKTsKLSAgICAgICAgZm9yIChhdXRvJiBleHRlbnNpb24gOiBleHRlbnNpb25zU3RyaW5nLnNw
bGl0KCcgJykpCi0gICAgICAgICAgICBtX3JlcXVlc3RhYmxlRXh0ZW5zaW9ucy5hZGQoZXh0ZW5z
aW9uKTsKLSAgICB9CisgICAgU3RyaW5nIGV4dGVuc2lvbnNTdHJpbmcgPSBnZXRFeHRlbnNpb25z
KCk7CisgICAgZm9yIChhdXRvJiBleHRlbnNpb24gOiBleHRlbnNpb25zU3RyaW5nLnNwbGl0KCcg
JykpCisgICAgICAgIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5hZGQoZXh0ZW5zaW9uKTsKKyAgICBl
eHRlbnNpb25zU3RyaW5nID0gU3RyaW5nKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGds
OjpHZXRTdHJpbmcoR0xfUkVRVUVTVEFCTEVfRVhURU5TSU9OU19BTkdMRSkpKTsKKyAgICBmb3Ig
KGF1dG8mIGV4dGVuc2lvbiA6IGV4dGVuc2lvbnNTdHJpbmcuc3BsaXQoJyAnKSkKKyAgICAgICAg
bV9yZXF1ZXN0YWJsZUV4dGVuc2lvbnMuYWRkKGV4dGVuc2lvbik7CiAgICAgbV9pbml0aWFsaXpl
ZEF2YWlsYWJsZUV4dGVuc2lvbnMgPSB0cnVlOwogfQogCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xF
OjpibGl0RnJhbWVidWZmZXJBTkdMRShHQ0dMaW50IHNyY1gwLCBHQ0dMaW50IHNyY1kwLCBHQ0dM
aW50IHNyY1gxLCBHQ0dMaW50IHNyY1kxLCBHQ0dMaW50IGRzdFgwLCBHQ0dMaW50IGRzdFkwLCBH
Q0dMaW50IGRzdFgxLCBHQ0dMaW50IGRzdFkxLCBHQ0dMYml0ZmllbGQgbWFzaywgR0NHTGVudW0g
ZmlsdGVyKQotewotICAgIC8vIEZJWE1FOiBjb25zaWRlciBhZGRpbmcgc3VwcG9ydCBmb3IgQVBQ
TEVfZnJhbWVidWZmZXJfbXVsdGlzYW1wbGUuCi0gICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250
ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6QmxpdEZyYW1lYnVmZmVy
QU5HTEUoc3JjWDAsIHNyY1kwLCBzcmNYMSwgc3JjWTEsIGRzdFgwLCBkc3RZMCwgZHN0WDEsIGRz
dFkxLCBtYXNrLCBmaWx0ZXIpOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpyZW5kZXJi
dWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xzaXplaSBz
YW1wbGVzLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6
ZWkgaGVpZ2h0KQotewotICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OlJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBs
ZUFOR0xFKHRhcmdldCwgc2FtcGxlcywgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQpOwot
fQotCiBQbGF0Zm9ybUdMT2JqZWN0IEV4dGVuc2lvbnNHTEFOR0xFOjpjcmVhdGVWZXJ0ZXhBcnJh
eU9FUygpCiB7CiAgICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQpAQCAt
MTc1LDI0ICsxNDcsNiBAQCB2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpiaW5kVmVydGV4QXJyYXlP
RVMoUGxhdGZvcm1HTE9iamVjdCBhcnJheSkKICAgICBnbDo6QmluZFZlcnRleEFycmF5T0VTKGFy
cmF5KTsKIH0KIAotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6aW5zZXJ0RXZlbnRNYXJrZXJFWFQo
Y29uc3QgU3RyaW5nJikKLXsKLSAgICAvLyBGSVhNRTogaW1wbGVtZW50IHRoaXMgZnVuY3Rpb24g
YW5kIGFkZCBHTF9FWFRfZGVidWdfbWFya2VyIGluIHN1cHBvcnRzKCkuCi0gICAgcmV0dXJuOwot
fQotCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpwdXNoR3JvdXBNYXJrZXJFWFQoY29uc3QgU3Ry
aW5nJikKLXsKLSAgICAvLyBGSVhNRTogaW1wbGVtZW50IHRoaXMgZnVuY3Rpb24gYW5kIGFkZCBH
TF9FWFRfZGVidWdfbWFya2VyIGluIHN1cHBvcnRzKCkuCi0gICAgcmV0dXJuOwotfQotCi12b2lk
IEV4dGVuc2lvbnNHTEFOR0xFOjpwb3BHcm91cE1hcmtlckVYVCh2b2lkKQotewotICAgIC8vIEZJ
WE1FOiBpbXBsZW1lbnQgdGhpcyBmdW5jdGlvbiBhbmQgYWRkIEdMX0VYVF9kZWJ1Z19tYXJrZXIg
aW4gc3VwcG9ydHMoKS4KLSAgICByZXR1cm47Ci19Ci0KIGJvb2wgRXh0ZW5zaW9uc0dMQU5HTEU6
OnN1cHBvcnRzRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgbmFtZSkKIHsKICAgICByZXR1cm4gbV9h
dmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKG5hbWUpIHx8IG1fcmVxdWVzdGFibGVFeHRlbnNp
b25zLmNvbnRhaW5zKG5hbWUpOwpAQCAtMjQ4LDI5MSArMjAyLDYgQEAgR0NHTGVudW0gRXh0ZW5z
aW9uc0dMQU5HTEU6OmFkanVzdFdlYkdMMVRleHR1cmVJbnRlcm5hbEZvcm1hdChHQ0dMZW51bSBp
bnRlcm5hbGYKICAgICByZXR1cm4gaW50ZXJuYWxmb3JtYXQ7CiB9CiAKLS8vIEdMX0FOR0xFX3Jv
YnVzdF9jbGllbnRfbWVtb3J5Ci12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpyZWFkUGl4ZWxzUm9i
dXN0QU5HTEUoaW50IHgsIGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQs
IEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xz
aXplaSAqbGVuZ3RoLCBHQ0dMc2l6ZWkgKmNvbHVtbnMsIEdDR0xzaXplaSAqcm93cywgdm9pZCAq
cGl4ZWxzKQotewotICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAg
ICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OlJlYWRQaXhlbHNSb2J1c3RBTkdMRSh4LCB5LCB3aWR0
aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIGJ1ZlNpemUsIGxlbmd0aCwgY29sdW1ucywgcm93cywg
cGl4ZWxzKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6dGV4UGFyYW1ldGVyZnZSb2J1
c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6
ZSwgY29uc3QgR0NHTGZsb2F0ICpwYXJhbXMpCi17Ci0gICAgaWYgKCFtX2NvbnRleHQtPm1ha2VD
b250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6VGV4UGFyYW1ldGVy
ZnZSb2J1c3RBTkdMRSh0YXJnZXQsIHBuYW1lLCBidWZTaXplLCBwYXJhbXMpOwotfQotCi12b2lk
IEV4dGVuc2lvbnNHTEFOR0xFOjp0ZXhQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRh
cmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMaW50ICpw
YXJhbXMpCi17Ci0gICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAg
ICAgICByZXR1cm47Ci0KLSAgICBnbDo6VGV4UGFyYW1ldGVyaXZSb2J1c3RBTkdMRSh0YXJnZXQs
IHBuYW1lLCBidWZTaXplLCBwYXJhbXMpOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpn
ZXRRdWVyeWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NH
THNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpCi17Ci0g
ICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47
Ci0KLSAgICBnbDo6R2V0UXVlcnlpdlJvYnVzdEFOR0xFKHRhcmdldCwgcG5hbWUsIGJ1ZlNpemUs
IGxlbmd0aCwgcGFyYW1zKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0UXVlcnlP
YmplY3R1aXZSb2J1c3RBTkdMRShHQ0dMdWludCBpZCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXpl
aSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHVpbnQgKnBhcmFtcykKLXsKLSAgICBp
ZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQot
ICAgIGdsOjpHZXRRdWVyeU9iamVjdHVpdlJvYnVzdEFOR0xFKGlkLCBwbmFtZSwgYnVmU2l6ZSwg
bGVuZ3RoLCBwYXJhbXMpOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRCdWZmZXJQ
b2ludGVydlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xz
aXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgdm9pZCAqKnBhcmFtcykKLXsKLSAgICBp
ZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQot
ICAgIGdsOjpHZXRCdWZmZXJQb2ludGVydlJvYnVzdEFOR0xFKHRhcmdldCwgcG5hbWUsIGJ1ZlNp
emUsIGxlbmd0aCwgcGFyYW1zKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0VmVy
dGV4QXR0cmliSWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBH
Q0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykKLXsK
LSAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVy
bjsKLQotICAgIGdsOjpHZXRWZXJ0ZXhBdHRyaWJJaXZSb2J1c3RBTkdMRShpbmRleCwgcG5hbWUs
IGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1zKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6
Z2V0VmVydGV4QXR0cmliSXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBw
bmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMdWludCAqcGFy
YW1zKQotewotICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAg
ICAgcmV0dXJuOwotCi0gICAgZ2w6OkdldFZlcnRleEF0dHJpYkl1aXZSb2J1c3RBTkdMRShpbmRl
eCwgcG5hbWUsIGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1zKTsKLX0KLQotdm9pZCBFeHRlbnNpb25z
R0xBTkdMRTo6Z2V0VW5pZm9ybXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xp
bnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHVp
bnQgKnBhcmFtcykKLXsKLSAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkp
Ci0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpHZXRVbmlmb3JtdWl2Um9idXN0QU5HTEUocHJv
Z3JhbSwgbG9jYXRpb24sIGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1zKTsKLX0KLQotdm9pZCBFeHRl
bnNpb25zR0xBTkdMRTo6Z2V0QnVmZmVyUGFyYW1ldGVyaTY0dlJvYnVzdEFOR0xFKEdDR0xlbnVt
IHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxl
bmd0aCwgR0NHTGludDY0ICpwYXJhbXMpCi17Ci0gICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250
ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6R2V0QnVmZmVyUGFyYW1l
dGVyaTY0dlJvYnVzdEFOR0xFKHRhcmdldCwgcG5hbWUsIGJ1ZlNpemUsIGxlbmd0aCwgcmVpbnRl
cnByZXRfY2FzdDxHTGludDY0Kj4ocGFyYW1zKSk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5H
TEU6OnNhbXBsZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xl
bnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGludCAqcGFyYW0pCi17Ci0g
ICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47
Ci0KLSAgICBnbDo6U2FtcGxlclBhcmFtZXRlcml2Um9idXN0QU5HTEUoc2FtcGxlciwgcG5hbWUs
IGJ1ZlNpemUsIHBhcmFtKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6c2FtcGxlclBh
cmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdD
R0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMZmxvYXQgKnBhcmFtKQotewotICAgIGlmICghbV9j
b250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6
OlNhbXBsZXJQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKHNhbXBsZXIsIHBuYW1lLCBidWZTaXplLCBw
YXJhbSk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldFNhbXBsZXJQYXJhbWV0ZXJp
dlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkg
YnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykKLXsKLSAgICBpZiAo
IW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAg
IGdsOjpHZXRTYW1wbGVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShzYW1wbGVyLCBwbmFtZSwgYnVm
U2l6ZSwgbGVuZ3RoLCBwYXJhbXMpOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRT
YW1wbGVyUGFyYW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBw
bmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMZmxvYXQgKnBh
cmFtcykKLXsKLSAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAg
ICAgIHJldHVybjsKLQotICAgIGdsOjpHZXRTYW1wbGVyUGFyYW1ldGVyZnZSb2J1c3RBTkdMRShz
YW1wbGVyLCBwbmFtZSwgYnVmU2l6ZSwgbGVuZ3RoLCBwYXJhbXMpOwotfQotCi0KLXZvaWQgRXh0
ZW5zaW9uc0dMQU5HTEU6OmdldEZyYW1lYnVmZmVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVp
ICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykKLXsKLSAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNv
bnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpHZXRGcmFtZWJ1ZmZl
clBhcmFtZXRlcml2Um9idXN0QU5HTEUodGFyZ2V0LCBwbmFtZSwgYnVmU2l6ZSwgbGVuZ3RoLCBw
YXJhbXMpOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRQcm9ncmFtSW50ZXJmYWNl
aXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMZW51bSBwcm9ncmFtSW50ZXJmYWNl
LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBH
Q0dMaW50ICpwYXJhbXMpCi17Ci0gICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVu
dCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6R2V0UHJvZ3JhbUludGVyZmFjZWl2Um9i
dXN0QU5HTEUocHJvZ3JhbSwgcHJvZ3JhbUludGVyZmFjZSwgcG5hbWUsIGJ1ZlNpemUsIGxlbmd0
aCwgcGFyYW1zKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0Qm9vbGVhbmlfdlJv
YnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTHVpbnQgaW5kZXgsIEdDR0xzaXplaSBidWZT
aXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGJvb2xlYW4gKmRhdGEpCi17Ci0gICAgaWYgKCFt
X2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBn
bDo6R2V0Qm9vbGVhbmlfdlJvYnVzdEFOR0xFKHRhcmdldCwgaW5kZXgsIGJ1ZlNpemUsIGxlbmd0
aCwgZGF0YSk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldE11bHRpc2FtcGxlZnZS
b2J1c3RBTkdMRShHQ0dMZW51bSBwbmFtZSwgR0NHTHVpbnQgaW5kZXgsIEdDR0xzaXplaSBidWZT
aXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGZsb2F0ICp2YWwpCi17Ci0gICAgaWYgKCFtX2Nv
bnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6
R2V0TXVsdGlzYW1wbGVmdlJvYnVzdEFOR0xFKHBuYW1lLCBpbmRleCwgYnVmU2l6ZSwgbGVuZ3Ro
LCB2YWwpOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRUZXhMZXZlbFBhcmFtZXRl
cml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBw
bmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJh
bXMpCi17Ci0gICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAg
ICByZXR1cm47Ci0KLSAgICBnbDo6R2V0VGV4TGV2ZWxQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKHRh
cmdldCwgbGV2ZWwsIHBuYW1lLCBidWZTaXplLCBsZW5ndGgsIHBhcmFtcyk7Ci19Ci0KLXZvaWQg
RXh0ZW5zaW9uc0dMQU5HTEU6OmdldFRleExldmVsUGFyYW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVm
U2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xmbG9hdCAqcGFyYW1zKQotewotICAgIGlmICgh
bV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAg
Z2w6OkdldFRleExldmVsUGFyYW1ldGVyZnZSb2J1c3RBTkdMRSh0YXJnZXQsIGxldmVsLCBwbmFt
ZSwgYnVmU2l6ZSwgbGVuZ3RoLCBwYXJhbXMpOwotfQotCi0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5H
TEU6OmdldFBvaW50ZXJ2Um9idXN0QU5HTEVSb2J1c3RBTkdMRShHQ0dMZW51bSBwbmFtZSwgR0NH
THNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCB2b2lkICoqcGFyYW1zKQotewotICAg
IGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwot
Ci0gICAgZ2w6OkdldFBvaW50ZXJ2Um9idXN0QU5HTEVSb2J1c3RBTkdMRShwbmFtZSwgYnVmU2l6
ZSwgbGVuZ3RoLCBwYXJhbXMpOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRuVW5p
Zm9ybWZ2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NH
THNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMZmxvYXQgKnBhcmFtcykKLXsK
LSAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVy
bjsKLQotICAgIGdsOjpHZXRuVW5pZm9ybWZ2Um9idXN0QU5HTEUocHJvZ3JhbSwgbG9jYXRpb24s
IGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1zKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6
Z2V0blVuaWZvcm1pdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRp
b24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1z
KQotewotICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgZ2w6OkdldG5Vbmlmb3JtaXZSb2J1c3RBTkdMRShwcm9ncmFtLCBsb2Nh
dGlvbiwgYnVmU2l6ZSwgbGVuZ3RoLCBwYXJhbXMpOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTEFO
R0xFOjpnZXRuVW5pZm9ybXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xpbnQg
bG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHVpbnQg
KnBhcmFtcykKLXsKLSAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0g
ICAgICAgIHJldHVybjsKLQotICAgIGdsOjpHZXRuVW5pZm9ybXVpdlJvYnVzdEFOR0xFKHByb2dy
YW0sIGxvY2F0aW9uLCBidWZTaXplLCBsZW5ndGgsIHBhcmFtcyk7Ci19Ci0KLXZvaWQgRXh0ZW5z
aW9uc0dMQU5HTEU6OnRleFBhcmFtZXRlcklpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwg
R0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMaW50ICpwYXJhbXMp
Ci17Ci0gICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICBy
ZXR1cm47Ci0KLSAgICBnbDo6VGV4UGFyYW1ldGVySWl2Um9idXN0QU5HTEUodGFyZ2V0LCBwbmFt
ZSwgYnVmU2l6ZSwgcGFyYW1zKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6dGV4UGFy
YW1ldGVySXVpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdD
R0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMdWludCAqcGFyYW1zKQotewotICAgIGlmICghbV9j
b250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6
OlRleFBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRSh0YXJnZXQsIHBuYW1lLCBidWZTaXplLCBwYXJh
bXMpOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRUZXhQYXJhbWV0ZXJJaXZSb2J1
c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6
ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykKLXsKLSAgICBpZiAoIW1fY29u
dGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpH
ZXRUZXhQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRSh0YXJnZXQsIHBuYW1lLCBidWZTaXplLCBsZW5n
dGgsIHBhcmFtcyk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldFRleFBhcmFtZXRl
ckl1aXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6
ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0x1aW50ICpwYXJhbXMpCi17Ci0gICAg
aWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0K
LSAgICBnbDo6R2V0VGV4UGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFKHRhcmdldCwgcG5hbWUsIGJ1
ZlNpemUsIGxlbmd0aCwgcGFyYW1zKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6c2Ft
cGxlclBhcmFtZXRlcklpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBu
YW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGludCAqcGFyYW0pCi17Ci0gICAgaWYg
KCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAg
ICBnbDo6U2FtcGxlclBhcmFtZXRlcklpdlJvYnVzdEFOR0xFKHNhbXBsZXIsIHBuYW1lLCBidWZT
aXplLCBwYXJhbSk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OnNhbXBsZXJQYXJhbWV0
ZXJJdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xz
aXplaSBidWZTaXplLCBjb25zdCBHQ0dMdWludCAqcGFyYW0pCi17Ci0gICAgaWYgKCFtX2NvbnRl
eHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6U2Ft
cGxlclBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRShzYW1wbGVyLCBwbmFtZSwgYnVmU2l6ZSwgcGFy
YW0pOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRTYW1wbGVyUGFyYW1ldGVySWl2
Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBi
dWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKQotewotICAgIGlmICgh
bV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAg
Z2w6OkdldFNhbXBsZXJQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRShzYW1wbGVyLCBwbmFtZSwgYnVm
U2l6ZSwgbGVuZ3RoLCBwYXJhbXMpOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRT
YW1wbGVyUGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVt
IHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0x1aW50ICpw
YXJhbXMpCi17Ci0gICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAg
ICAgICByZXR1cm47Ci0KLSAgICBnbDo6R2V0U2FtcGxlclBhcmFtZXRlckl1aXZSb2J1c3RBTkdM
RShzYW1wbGVyLCBwbmFtZSwgYnVmU2l6ZSwgbGVuZ3RoLCBwYXJhbXMpOwotfQotCi0KLXZvaWQg
RXh0ZW5zaW9uc0dMQU5HTEU6OmdldFF1ZXJ5T2JqZWN0aXZSb2J1c3RBTkdMRShHQ0dMdWludCBp
ZCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwg
R0NHTGludCAqcGFyYW1zKQotewotICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJl
bnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OkdldFF1ZXJ5T2JqZWN0aXZSb2J1c3RB
TkdMRShpZCwgcG5hbWUsIGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1zKTsKLX0KLQotdm9pZCBFeHRl
bnNpb25zR0xBTkdMRTo6Z2V0UXVlcnlPYmplY3RpNjR2Um9idXN0QU5HTEUoR0NHTHVpbnQgaWQs
IEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdD
R0xpbnQ2NCAqcGFyYW1zKQotewotICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJl
bnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OkdldFF1ZXJ5T2JqZWN0aTY0dlJvYnVz
dEFOR0xFKGlkLCBwbmFtZSwgYnVmU2l6ZSwgbGVuZ3RoLCByZWludGVycHJldF9jYXN0PEdMaW50
NjQqPihwYXJhbXMpKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0UXVlcnlPYmpl
Y3R1aTY0dlJvYnVzdEFOR0xFKEdDR0x1aW50IGlkLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVp
IGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMdWludDY0ICpwYXJhbXMpCi17Ci0gICAg
aWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0K
LSAgICBnbDo6R2V0UXVlcnlPYmplY3R1aTY0dlJvYnVzdEFOR0xFKGlkLCBwbmFtZSwgYnVmU2l6
ZSwgbGVuZ3RoLCByZWludGVycHJldF9jYXN0PEdMdWludDY0Kj4ocGFyYW1zKSk7Ci19Ci0KLQog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFdFQkdMKSAmJiBVU0Uo
QU5HTEUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmds
ZS9FeHRlbnNpb25zR0xBTkdMRS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUuaAppbmRleCBiMmQyNzdiOWFjOWQyNzg2MGY1NWFiYWJm
OGNmZTU1ZTg0YjVmNTdlLi4wMDQyMzM3NzIwMzRiZmEzZWFjMTM3ZGMzNjM0ODA5MTZkZWFhZjdh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRl
bnNpb25zR0xBTkdMRS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Fu
Z2xlL0V4dGVuc2lvbnNHTEFOR0xFLmgKQEAgLTM2LDcgKzM2LDcgQEAgY2xhc3MgRXh0ZW5zaW9u
c0dMQU5HTEUgOiBwdWJsaWMgRXh0ZW5zaW9uc0dMIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKIHB1YmxpYzoKICAgICAvLyBUaGlzIGNsYXNzIG9ubHkgbmVlZHMgdG8gYmUgaW5zdGFu
dGlhdGVkIGJ5IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMIGltcGxlbWVudGF0aW9ucy4KLSAgICBF
eHRlbnNpb25zR0xBTkdMRShHcmFwaGljc0NvbnRleHRHTE9wZW5HTCosIGJvb2wgdXNlSW5kZXhl
ZEdldFN0cmluZyA9IGZhbHNlKTsKKyAgICBleHBsaWNpdCBFeHRlbnNpb25zR0xBTkdMRShHcmFw
aGljc0NvbnRleHRHTE9wZW5HTCopOwogICAgIHZpcnR1YWwgfkV4dGVuc2lvbnNHTEFOR0xFKCk7
CiAKICAgICAvLyBFeHRlbnNpb25zR0wgbWV0aG9kcy4KQEAgLTQ5LDYwICs0OSwxNCBAQCBwdWJs
aWM6CiAgICAgdm9pZCBkZWxldGVWZXJ0ZXhBcnJheU9FUyhQbGF0Zm9ybUdMT2JqZWN0KSBvdmVy
cmlkZTsKICAgICBHQ0dMYm9vbGVhbiBpc1ZlcnRleEFycmF5T0VTKFBsYXRmb3JtR0xPYmplY3Qp
IG92ZXJyaWRlOwogICAgIHZvaWQgYmluZFZlcnRleEFycmF5T0VTKFBsYXRmb3JtR0xPYmplY3Qp
IG92ZXJyaWRlOwotICAgIHZvaWQgaW5zZXJ0RXZlbnRNYXJrZXJFWFQoY29uc3QgU3RyaW5nJikg
b3ZlcnJpZGU7Ci0gICAgdm9pZCBwdXNoR3JvdXBNYXJrZXJFWFQoY29uc3QgU3RyaW5nJikgb3Zl
cnJpZGU7Ci0gICAgdm9pZCBwb3BHcm91cE1hcmtlckVYVCh2b2lkKSBvdmVycmlkZTsKICAgICB2
b2lkIGRyYXdCdWZmZXJzRVhUKEdDR0xTcGFuPGNvbnN0IEdDR0xlbnVtPikgb3ZlcnJpZGU7CiAK
ICAgICBTdHJpbmcgZ2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFKFBsYXRmb3JtR0xPYmpl
Y3QpIG92ZXJyaWRlOwogCi0gICAgdm9pZCBibGl0RnJhbWVidWZmZXJBTkdMRShHQ0dMaW50IHNy
Y1gwLCBHQ0dMaW50IHNyY1kwLCBHQ0dMaW50IHNyY1gxLCBHQ0dMaW50IHNyY1kxLCBHQ0dMaW50
IGRzdFgwLCBHQ0dMaW50IGRzdFkwLCBHQ0dMaW50IGRzdFgxLCBHQ0dMaW50IGRzdFkxLCBHQ0dM
Yml0ZmllbGQgbWFzaywgR0NHTGVudW0gZmlsdGVyKSBvdmVycmlkZTsKLSAgICB2b2lkIHJlbmRl
cmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVp
IHNhbXBsZXMsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xz
aXplaSBoZWlnaHQpIG92ZXJyaWRlOwotCiAgICAgdm9pZCBkcmF3QXJyYXlzSW5zdGFuY2VkQU5H
TEUoR0NHTGVudW0gbW9kZSwgR0NHTGludCBmaXJzdCwgR0NHTHNpemVpIGNvdW50LCBHQ0dMc2l6
ZWkgcHJpbWNvdW50KSBvdmVycmlkZTsKICAgICB2b2lkIGRyYXdFbGVtZW50c0luc3RhbmNlZEFO
R0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xzaXplaSBjb3VudCwgR0NHTGVudW0gdHlwZSwgR0NHTHZv
aWRwdHIgb2Zmc2V0LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KSBvdmVycmlkZTsKICAgICB2b2lkIHZl
cnRleEF0dHJpYkRpdmlzb3JBTkdMRShHQ0dMdWludCBpbmRleCwgR0NHTHVpbnQgZGl2aXNvcikg
b3ZlcnJpZGU7CiAKLSAgICAvLyBHTF9BTkdMRV9yb2J1c3RfY2xpZW50X21lbW9yeQotICAgIHZv
aWQgcmVhZFBpeGVsc1JvYnVzdEFOR0xFKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkg
d2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwg
R0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMc2l6ZWkgKmNvbHVtbnMs
IEdDR0xzaXplaSAqcm93cywgdm9pZCAqcGl4ZWxzKSBvdmVycmlkZTsKLSAgICB2b2lkIHRleFBh
cmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NH
THNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xmbG9hdCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2
b2lkIHRleFBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBw
bmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xpbnQgKnBhcmFtcykgb3ZlcnJpZGU7
Ci0gICAgdm9pZCBnZXRRdWVyeWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51
bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpw
YXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0UXVlcnlPYmplY3R1aXZSb2J1c3RBTkdMRShH
Q0dMdWludCBpZCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkg
Kmxlbmd0aCwgR0NHTHVpbnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRCdWZmZXJQ
b2ludGVydlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xz
aXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgdm9pZCAqKnBhcmFtcykgb3ZlcnJpZGU7
Ci0gICAgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJJaXZSb2J1c3RBTkdMRShHQ0dMdWludCBpbmRleCwg
R0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NH
TGludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldFZlcnRleEF0dHJpYkl1aXZSb2J1
c3RBTkdMRShHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXpl
LCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHVpbnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9p
ZCBnZXRVbmlmb3JtdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2Nh
dGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMdWludCAqcGFy
YW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldEJ1ZmZlclBhcmFtZXRlcmk2NHZSb2J1c3RBTkdM
RShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NH
THNpemVpICpsZW5ndGgsIEdDR0xpbnQ2NCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIHNh
bXBsZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBu
YW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGludCAqcGFyYW0pIG92ZXJyaWRlOwot
ICAgIHZvaWQgc2FtcGxlclBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwg
R0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMZmxvYXQgKnBhcmFt
KSBvdmVycmlkZTsKLSAgICB2b2lkIGdldFNhbXBsZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdD
R0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNp
emVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRTYW1w
bGVyUGFyYW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFt
ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMZmxvYXQgKnBhcmFt
cykgb3ZlcnJpZGU7Ci0KLSAgICB2b2lkIGdldEZyYW1lYnVmZmVyUGFyYW1ldGVyaXZSb2J1c3RB
TkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwg
R0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBn
ZXRQcm9ncmFtSW50ZXJmYWNlaXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMZW51
bSBwcm9ncmFtSW50ZXJmYWNlLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdD
R0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0
Qm9vbGVhbmlfdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTHVpbnQgaW5kZXgsIEdD
R0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGJvb2xlYW4gKmRhdGEpIG92
ZXJyaWRlOyAvLyBOT0xJTlQKLSAgICB2b2lkIGdldE11bHRpc2FtcGxlZnZSb2J1c3RBTkdMRShH
Q0dMZW51bSBwbmFtZSwgR0NHTHVpbnQgaW5kZXgsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6
ZWkgKmxlbmd0aCwgR0NHTGZsb2F0ICp2YWwpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0VGV4TGV2
ZWxQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwg
R0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NH
TGludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldFRleExldmVsUGFyYW1ldGVyZnZS
b2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIHBuYW1l
LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xmbG9hdCAqcGFyYW1z
KSBvdmVycmlkZTsKLQotICAgIHZvaWQgZ2V0UG9pbnRlcnZSb2J1c3RBTkdMRVJvYnVzdEFOR0xF
KEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIHZv
aWQgKipwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0blVuaWZvcm1mdlJvYnVzdEFOR0xF
KEdDR0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBH
Q0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGZsb2F0ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQg
Z2V0blVuaWZvcm1pdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRp
b24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1z
KSBvdmVycmlkZTsKLSAgICB2b2lkIGdldG5Vbmlmb3JtdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQg
cHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAq
bGVuZ3RoLCBHQ0dMdWludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIHRleFBhcmFtZXRl
cklpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXpl
aSBidWZTaXplLCBjb25zdCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgdGV4
UGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUs
IEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMdWludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAg
ICB2b2lkIGdldFRleFBhcmFtZXRlcklpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NH
TGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGlu
dCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldFRleFBhcmFtZXRlckl1aXZSb2J1c3RB
TkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwg
R0NHTHNpemVpICpsZW5ndGgsIEdDR0x1aW50ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQg
c2FtcGxlclBhcmFtZXRlcklpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVt
IHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGludCAqcGFyYW0pIG92ZXJyaWRl
OwotICAgIHZvaWQgc2FtcGxlclBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1w
bGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0x1aW50ICpw
YXJhbSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRTYW1wbGVyUGFyYW1ldGVySWl2Um9idXN0QU5H
TEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBH
Q0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdl
dFNhbXBsZXJQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVu
dW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHVpbnQg
KnBhcmFtcykgb3ZlcnJpZGU7Ci0KLSAgICB2b2lkIGdldFF1ZXJ5T2JqZWN0aXZSb2J1c3RBTkdM
RShHQ0dMdWludCBpZCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6
ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldFF1ZXJ5
T2JqZWN0aTY0dlJvYnVzdEFOR0xFKEdDR0x1aW50IGlkLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNp
emVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50NjQgKnBhcmFtcykgb3ZlcnJp
ZGU7Ci0gICAgdm9pZCBnZXRRdWVyeU9iamVjdHVpNjR2Um9idXN0QU5HTEUoR0NHTHVpbnQgaWQs
IEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdD
R0x1aW50NjQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0KICAgICAvLyBPbmx5IGZvciBub24tV2ViR0wg
Mi4wIGNvbnRleHRzLgogICAgIEdDR0xlbnVtIGFkanVzdFdlYkdMMVRleHR1cmVJbnRlcm5hbEZv
cm1hdChHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0
eXBlKTsKIApAQCAtMTE5LDggKzczLDYgQEAgcHJpdmF0ZToKICAgICAvLyBXZWFrIHBvaW50ZXIg
YmFjayB0byBHcmFwaGljc0NvbnRleHRHTE9wZW5HTC4KICAgICBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTCogbV9jb250ZXh0OwogCi0gICAgYm9vbCBtX3VzZUluZGV4ZWRHZXRTdHJpbmcgeyBmYWxz
ZSB9OwotCiAgICAgLy8gV2hldGhlciB0aGUgV2ViR0wgMS4wLXJlbGF0ZWQgZmxvYXRpbmctcG9p
bnQgcmVuZGVyYWJpbGl0eSBleHRlbnNpb25zIGhhdmUgYmVlbiBlbmFibGVkLgogICAgIGJvb2wg
bV93ZWJnbENvbG9yQnVmZmVyRmxvYXRSR0IgeyBmYWxzZSB9OwogICAgIGJvb2wgbV93ZWJnbENv
bG9yQnVmZmVyRmxvYXRSR0JBIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdM
RS5jcHAKaW5kZXggMzA5YTUzMDliNjQwYTNkNmEyODE0MWNhN2IxYTc1ZGI0NmU5Zjk1MS4uMWQy
NGUzZDRlY2I5NTU1OTgwMWU4YTgzYzk1MzRhNWFmZDIwOTI1NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3ND
b250ZXh0R0xBTkdMRS5jcHAKQEAgLTIyNTAsNiArMjI1MCw5IEBAIHZvaWQgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6Om1hcmtDb250ZXh0Q2hhbmdlZCgpCiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6Om1hcmtMYXllckNvbXBvc2l0ZWQoKQogeworICAgIGlmICghbWFrZUNvbnRleHRD
dXJyZW50KCkpCisgICAgICAgIHJldHVybjsKKwogICAgIG1fbGF5ZXJDb21wb3NpdGVkID0gdHJ1
ZTsKICAgICByZXNldEJ1ZmZlcnNUb0F1dG9DbGVhcigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVu
R0wuY3BwCmluZGV4IDg0MjI4NDZiNmY2MmE3NTU0ZThiMmRjZjAyNDdmZjYwNTM5NWQ0NWEuLjg2
ZDE5Y2FhZmI2ZTNmMGUzMjFkZTE3MzIxMmE1NGZjZTYxZjcxZWMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25z
R0xPcGVuR0wuY3BwCkBAIC00OCwyMiArNDgsNiBAQCBFeHRlbnNpb25zR0xPcGVuR0w6OkV4dGVu
c2lvbnNHTE9wZW5HTChHcmFwaGljc0NvbnRleHRHTE9wZW5HTCogY29udGV4dCwgYm9vbCB1cwog
RXh0ZW5zaW9uc0dMT3BlbkdMOjp+RXh0ZW5zaW9uc0dMT3BlbkdMKCkgPSBkZWZhdWx0OwogCiAK
LXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMOjpibGl0RnJhbWVidWZmZXJBTkdMRShHQ0dMaW50IHNy
Y1gwLCBHQ0dMaW50IHNyY1kwLCBHQ0dMaW50IHNyY1gxLCBHQ0dMaW50IHNyY1kxLCBHQ0dMaW50
IGRzdFgwLCBHQ0dMaW50IGRzdFkwLCBHQ0dMaW50IGRzdFgxLCBHQ0dMaW50IGRzdFkxLCBHQ0dM
Yml0ZmllbGQgbWFzaywgR0NHTGVudW0gZmlsdGVyKQotewotICAgIGlmICghbV9jb250ZXh0LT5t
YWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgOjpnbEJsaXRGcmFt
ZWJ1ZmZlckVYVChzcmNYMCwgc3JjWTAsIHNyY1gxLCBzcmNZMSwgZHN0WDAsIGRzdFkwLCBkc3RY
MSwgZHN0WTEsIG1hc2ssIGZpbHRlcik7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMOjpy
ZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xz
aXplaSBzYW1wbGVzLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBH
Q0dMc2l6ZWkgaGVpZ2h0KQotewotICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJl
bnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgOjpnbFJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0
aXNhbXBsZUVYVCh0YXJnZXQsIHNhbXBsZXMsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0
KTsKLX0KLQogUGxhdGZvcm1HTE9iamVjdCBFeHRlbnNpb25zR0xPcGVuR0w6OmNyZWF0ZVZlcnRl
eEFycmF5T0VTKCkKIHsKICAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkp
CkBAIC0xMjcsMjQgKzExMSw2IEBAIHZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMOjpiaW5kVmVydGV4
QXJyYXlPRVMoUGxhdGZvcm1HTE9iamVjdCBhcnJheSkKICNlbmRpZgogfQogCi12b2lkIEV4dGVu
c2lvbnNHTE9wZW5HTDo6aW5zZXJ0RXZlbnRNYXJrZXJFWFQoY29uc3QgU3RyaW5nJikKLXsKLSAg
ICAvLyBGSVhNRTogaW1wbGVtZW50IHRoaXMgZnVuY3Rpb24gYW5kIGFkZCBHTF9FWFRfZGVidWdf
bWFya2VyIGluIHN1cHBvcnRzKCkuCi0gICAgcmV0dXJuOwotfQotCi12b2lkIEV4dGVuc2lvbnNH
TE9wZW5HTDo6cHVzaEdyb3VwTWFya2VyRVhUKGNvbnN0IFN0cmluZyYpCi17Ci0gICAgLy8gRklY
TUU6IGltcGxlbWVudCB0aGlzIGZ1bmN0aW9uIGFuZCBhZGQgR0xfRVhUX2RlYnVnX21hcmtlciBp
biBzdXBwb3J0cygpLgotICAgIHJldHVybjsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0w6
OnBvcEdyb3VwTWFya2VyRVhUKHZvaWQpCi17Ci0gICAgLy8gRklYTUU6IGltcGxlbWVudCB0aGlz
IGZ1bmN0aW9uIGFuZCBhZGQgR0xfRVhUX2RlYnVnX21hcmtlciBpbiBzdXBwb3J0cygpLgotICAg
IHJldHVybjsKLX0KLQogYm9vbCBFeHRlbnNpb25zR0xPcGVuR0w6OnN1cHBvcnRzRXh0ZW5zaW9u
KGNvbnN0IFN0cmluZyYgbmFtZSkKIHsKICAgICAvLyBHTF9BTkdMRV9mcmFtZWJ1ZmZlcl9ibGl0
IGFuZCBHTF9BTkdMRV9mcmFtZWJ1ZmZlcl9tdWx0aXNhbXBsZSBhcmUgImZha2UiLiBUaGV5IGFy
ZSBpbXBsZW1lbnRlZCB1c2luZyBvdGhlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTC5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTC5oCmluZGV4IDQ3
NTAyMjZlY2VjZWY0NDM5NmU5OTM4Njc2Y2I2MzliZTgzNDM3YjYuLjBhZGJkNzA1MGI3ZTNmNzdl
MDE4ODk0MzMyZmZjODdjZjMwZDkwYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMLmgKQEAgLTQw
LDE2ICs0MCwxMCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+RXh0ZW5zaW9uc0dMT3BlbkdMKCk7
CiAKICAgICAvLyBFeHRlbnNpb25zR0wgbWV0aG9kcy4KLSAgICB2b2lkIGJsaXRGcmFtZWJ1ZmZl
ckFOR0xFKEdDR0xpbnQgc3JjWDAsIEdDR0xpbnQgc3JjWTAsIEdDR0xpbnQgc3JjWDEsIEdDR0xp
bnQgc3JjWTEsIEdDR0xpbnQgZHN0WDAsIEdDR0xpbnQgZHN0WTAsIEdDR0xpbnQgZHN0WDEsIEdD
R0xpbnQgZHN0WTEsIEdDR0xiaXRmaWVsZCBtYXNrLCBHQ0dMZW51bSBmaWx0ZXIpIG92ZXJyaWRl
OwotICAgIHZvaWQgcmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5HTEUoR0NHTGVudW0g
dGFyZ2V0LCBHQ0dMc2l6ZWkgc2FtcGxlcywgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xz
aXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkgb3ZlcnJpZGU7Ci0KICAgICBQbGF0Zm9ybUdM
T2JqZWN0IGNyZWF0ZVZlcnRleEFycmF5T0VTKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkZWxldGVW
ZXJ0ZXhBcnJheU9FUyhQbGF0Zm9ybUdMT2JqZWN0KSBvdmVycmlkZTsKICAgICBHQ0dMYm9vbGVh
biBpc1ZlcnRleEFycmF5T0VTKFBsYXRmb3JtR0xPYmplY3QpIG92ZXJyaWRlOwogICAgIHZvaWQg
YmluZFZlcnRleEFycmF5T0VTKFBsYXRmb3JtR0xPYmplY3QpIG92ZXJyaWRlOwotICAgIHZvaWQg
aW5zZXJ0RXZlbnRNYXJrZXJFWFQoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBw
dXNoR3JvdXBNYXJrZXJFWFQoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBwb3BH
cm91cE1hcmtlckVYVCh2b2lkKSBvdmVycmlkZTsKICAgICB2b2lkIGRyYXdCdWZmZXJzRVhUKEdD
R0xTcGFuPGNvbnN0IEdDR0xlbnVtPikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGRyYXdBcnJheXNJ
bnN0YW5jZWRBTkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMaW50IGZpcnN0LCBHQ0dMc2l6ZWkgY291
bnQsIEdDR0xzaXplaSBwcmltY291bnQpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dM
T3BlbkdMQ29tbW9uLmNwcAppbmRleCBjMzQzOGQ1OTFjMDdhMzZjZjFlMDQyNmMxYjlmZDdiM2U5
MTc3OWQ1Li4wOWRiODU0MDAyMjFkZjk3NTc4ODg1OWE0YTI4N2FiYWEyNGY4MjcxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dM
T3BlbkdMQ29tbW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9v
cGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmNwcApAQCAtMjU0LDE4NSArMjU0LDYgQEAg
dm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldG5Vbmlmb3JtaXZFWFQoR0NHTHVpbnQs
IGludCwgR0NHTHNpemVpLCBHQ0dMaW4KICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9y
KEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKIH0KIAotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21t
b246OnJlYWRQaXhlbHNSb2J1c3RBTkdMRShpbnQsIGludCwgR0NHTHNpemVpLCBHQ0dMc2l6ZWks
IEdDR0xlbnVtLCBHQ0dMZW51bSwgR0NHTHNpemVpLCBHQ0dMc2l6ZWkgKiwgR0NHTHNpemVpICos
IEdDR0xzaXplaSAqLCB2b2lkICopCi17Ci0gICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJv
cihHTF9JTlZBTElEX09QRVJBVElPTik7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29t
bW9uOjp0ZXhQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0xlbnVtLCBHQ0dMZW51bSwgR0NHTHNp
emVpLCBjb25zdCBHQ0dMZmxvYXQgKikKLXsKLSAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVy
cm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xD
b21tb246OnRleFBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0sIEdDR0xlbnVtLCBHQ0dM
c2l6ZWksIGNvbnN0IEdDR0xpbnQgKikKLXsKLSAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVy
cm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xD
b21tb246OmdldFF1ZXJ5aXZSb2J1c3RBTkdMRShHQ0dMZW51bSwgR0NHTGVudW0sIEdDR0xzaXpl
aSwgR0NHTHNpemVpICosIEdDR0xpbnQgKikKLXsKLSAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVH
TEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xPcGVu
R0xDb21tb246OmdldFF1ZXJ5T2JqZWN0dWl2Um9idXN0QU5HTEUoR0NHTHVpbnQsIEdDR0xlbnVt
LCBHQ0dMc2l6ZWksIEdDR0xzaXplaSAqLCBHQ0dMdWludCAqKQotewotICAgIG1fY29udGV4dC0+
c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi12b2lkIEV4dGVu
c2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0QnVmZmVyUG9pbnRlcnZSb2J1c3RBTkdMRShHQ0dMZW51
bSwgR0NHTGVudW0sIEdDR0xzaXplaSwgR0NHTHNpemVpICosIHZvaWQgKiopCi17Ci0gICAgbV9j
b250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Ci19Ci0KLXZv
aWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRWZXJ0ZXhBdHRyaWJJaXZSb2J1c3RBTkdM
RShHQ0dMdWludCwgR0NHTGVudW0sIEdDR0xzaXplaSwgR0NHTHNpemVpICosIEdDR0xpbnQgKikK
LXsKLSAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9O
KTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFZlcnRleEF0dHJpYkl1
aXZSb2J1c3RBTkdMRShHQ0dMdWludCwgR0NHTGVudW0sIEdDR0xzaXplaSwgR0NHTHNpemVpICos
IEdDR0x1aW50ICopCi17Ci0gICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZB
TElEX09QRVJBVElPTik7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRV
bmlmb3JtdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQsIGludCwgR0NHTHNpemVpLCBHQ0dMc2l6ZWkg
KiwgR0NHTHVpbnQgKikKLXsKLSAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lO
VkFMSURfT1BFUkFUSU9OKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246Omdl
dEJ1ZmZlclBhcmFtZXRlcmk2NHZSb2J1c3RBTkdMRShHQ0dMZW51bSwgR0NHTGVudW0sIEdDR0xz
aXplaSwgR0NHTHNpemVpICosIEdDR0xpbnQ2NCAqKQotewotICAgIG1fY29udGV4dC0+c3ludGhl
c2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi12b2lkIEV4dGVuc2lvbnNH
TE9wZW5HTENvbW1vbjo6c2FtcGxlclBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTHVpbnQsIEdD
R0xlbnVtLCBHQ0dMc2l6ZWksIGNvbnN0IEdDR0xpbnQgKikKLXsKLSAgICBtX2NvbnRleHQtPnN5
bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLX0KLQotdm9pZCBFeHRlbnNp
b25zR0xPcGVuR0xDb21tb246OnNhbXBsZXJQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0x1aW50
LCBHQ0dMZW51bSwgR0NHTHNpemVpLCBjb25zdCBHQ0dMZmxvYXQgKikKLXsKLSAgICBtX2NvbnRl
eHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLX0KLQotdm9pZCBF
eHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFNhbXBsZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xF
KEdDR0x1aW50LCBHQ0dMZW51bSwgR0NHTHNpemVpLCBHQ0dMc2l6ZWkgKiwgR0NHTGludCAqKQot
ewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04p
OwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0U2FtcGxlclBhcmFtZXRl
cmZ2Um9idXN0QU5HTEUoR0NHTHVpbnQsIEdDR0xlbnVtLCBHQ0dMc2l6ZWksIEdDR0xzaXplaSAq
LCBHQ0dMZmxvYXQgKikKLXsKLSAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lO
VkFMSURfT1BFUkFUSU9OKTsKLX0KLQotCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6
Z2V0RnJhbWVidWZmZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtLCBHQ0dMZW51bSwg
R0NHTHNpemVpLCBHQ0dMc2l6ZWkgKiwgR0NHTGludCAqKQotewotICAgIG1fY29udGV4dC0+c3lu
dGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi12b2lkIEV4dGVuc2lv
bnNHTE9wZW5HTENvbW1vbjo6Z2V0UHJvZ3JhbUludGVyZmFjZWl2Um9idXN0QU5HTEUoR0NHTHVp
bnQsIEdDR0xlbnVtLCBHQ0dMZW51bSwgR0NHTHNpemVpLCBHQ0dMc2l6ZWkgKiwgR0NHTGludCAq
KQotewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJ
T04pOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0Qm9vbGVhbmlfdlJv
YnVzdEFOR0xFKEdDR0xlbnVtLCBHQ0dMdWludCwgR0NHTHNpemVpLCBHQ0dMc2l6ZWkgKiwgR0NH
TGJvb2xlYW4gKikKLXsKLSAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFM
SURfT1BFUkFUSU9OKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldE11
bHRpc2FtcGxlZnZSb2J1c3RBTkdMRShHQ0dMZW51bSwgR0NHTHVpbnQsIEdDR0xzaXplaSwgR0NH
THNpemVpICosIEdDR0xmbG9hdCAqKQotewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJy
b3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENv
bW1vbjo6Z2V0VGV4TGV2ZWxQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtLCBpbnQsIEdD
R0xlbnVtLCBHQ0dMc2l6ZWksIEdDR0xzaXplaSAqLCBHQ0dMaW50ICopCi17Ci0gICAgbV9jb250
ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Ci19Ci0KLXZvaWQg
RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRUZXhMZXZlbFBhcmFtZXRlcmZ2Um9idXN0QU5H
TEUoR0NHTGVudW0sIGludCwgR0NHTGVudW0sIEdDR0xzaXplaSwgR0NHTHNpemVpICosIEdDR0xm
bG9hdCAqKQotewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9P
UEVSQVRJT04pOwotfQotCi0KLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRQb2lu
dGVydlJvYnVzdEFOR0xFUm9idXN0QU5HTEUoR0NHTGVudW0sIEdDR0xzaXplaSwgR0NHTHNpemVp
ICosIHZvaWQgKiopCi17Ci0gICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZB
TElEX09QRVJBVElPTik7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRu
VW5pZm9ybWZ2Um9idXN0QU5HTEUoR0NHTHVpbnQsIGludCwgR0NHTHNpemVpLCBHQ0dMc2l6ZWkg
KiwgR0NHTGZsb2F0ICopCi17Ci0gICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9J
TlZBTElEX09QRVJBVElPTik7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpn
ZXRuVW5pZm9ybWl2Um9idXN0QU5HTEUoR0NHTHVpbnQsIGludCwgR0NHTHNpemVpLCBHQ0dMc2l6
ZWkgKiwgR0NHTGludCAqKQotewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xf
SU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6
Z2V0blVuaWZvcm11aXZSb2J1c3RBTkdMRShHQ0dMdWludCwgaW50LCBHQ0dMc2l6ZWksIEdDR0xz
aXplaSAqLCBHQ0dMdWludCAqKQotewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3Io
R0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1v
bjo6dGV4UGFyYW1ldGVySWl2Um9idXN0QU5HTEUoR0NHTGVudW0sIEdDR0xlbnVtLCBHQ0dMc2l6
ZWksIGNvbnN0IEdDR0xpbnQgKikKLXsKLSAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9y
KEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21t
b246OnRleFBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRShHQ0dMZW51bSwgR0NHTGVudW0sIEdDR0xz
aXplaSwgY29uc3QgR0NHTHVpbnQgKikKLXsKLSAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVy
cm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xD
b21tb246OmdldFRleFBhcmFtZXRlcklpdlJvYnVzdEFOR0xFKEdDR0xlbnVtLCBHQ0dMZW51bSwg
R0NHTHNpemVpLCBHQ0dMc2l6ZWkgKiwgR0NHTGludCAqKQotewotICAgIG1fY29udGV4dC0+c3lu
dGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi12b2lkIEV4dGVuc2lv
bnNHTE9wZW5HTENvbW1vbjo6Z2V0VGV4UGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFKEdDR0xlbnVt
LCBHQ0dMZW51bSwgR0NHTHNpemVpLCBHQ0dMc2l6ZWkgKiwgR0NHTHVpbnQgKikKLXsKLSAgICBt
X2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLX0KLQot
dm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OnNhbXBsZXJQYXJhbWV0ZXJJaXZSb2J1c3RB
TkdMRShHQ0dMdWludCwgR0NHTGVudW0sIEdDR0xzaXplaSwgY29uc3QgR0NHTGludCAqKQotewot
ICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwot
fQotCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6c2FtcGxlclBhcmFtZXRlckl1aXZS
b2J1c3RBTkdMRShHQ0dMdWludCwgR0NHTGVudW0sIEdDR0xzaXplaSwgY29uc3QgR0NHTHVpbnQg
KikKLXsKLSAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFU
SU9OKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFNhbXBsZXJQYXJh
bWV0ZXJJaXZSb2J1c3RBTkdMRShHQ0dMdWludCwgR0NHTGVudW0sIEdDR0xzaXplaSwgR0NHTHNp
emVpICosIEdDR0xpbnQgKikKLXsKLSAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdM
X0lOVkFMSURfT1BFUkFUSU9OKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246
OmdldFNhbXBsZXJQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQsIEdDR0xlbnVtLCBH
Q0dMc2l6ZWksIEdDR0xzaXplaSAqLCBHQ0dMdWludCAqKQotewotICAgIG1fY29udGV4dC0+c3lu
dGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi0KLXZvaWQgRXh0ZW5z
aW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRRdWVyeU9iamVjdGl2Um9idXN0QU5HTEUoR0NHTHVpbnQs
IEdDR0xlbnVtLCBHQ0dMc2l6ZWksIEdDR0xzaXplaSAqLCBHQ0dMaW50ICopCi17Ci0gICAgbV9j
b250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Ci19Ci0KLXZv
aWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRRdWVyeU9iamVjdGk2NHZSb2J1c3RBTkdM
RShHQ0dMdWludCwgR0NHTGVudW0sIEdDR0xzaXplaSwgR0NHTHNpemVpICosIEdDR0xpbnQ2NCAq
KQotewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJ
T04pOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0UXVlcnlPYmplY3R1
aTY0dlJvYnVzdEFOR0xFKEdDR0x1aW50LCBHQ0dMZW51bSwgR0NHTHNpemVpLCBHQ0dMc2l6ZWkg
KiwgR0NHTHVpbnQ2NCAqKQotewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xf
SU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2Vu
ZGlmIC8vIEVOQUJMRShXRUJHTCkgJiYgIVVTRShBTkdMRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24u
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xP
cGVuR0xDb21tb24uaAppbmRleCAzZjEwNDAxNjJmZmEwN2EyZGMxMzBhYmIyMmZiMWIxZmZjM2Zk
ZjIwLi5kY2MwZTNhZjIxNzMyZTc0N2VhMWJkNTY0YmI5Njc4NDMyY2EzZjcwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3Bl
bkdMQ29tbW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Blbmds
L0V4dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5oCkBAIC0yOCwxMSArMjgsMTEgQEAKIAogI2luY2x1
ZGUgIkV4dGVuc2lvbnNHTC5oIgogCi0jaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wu
aCIKICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hh
c2guaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w7CiAKIGNsYXNzIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbiA6IHB1YmxpYyBFeHRlbnNpb25z
R0wgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpAQCAtNTUsNTggKzU1LDE4IEBAIHB1
YmxpYzoKICAgICBTdHJpbmcgZ2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFKFBsYXRmb3Jt
R0xPYmplY3QpIG92ZXJyaWRlOwogCiAgICAgLy8gRVhUIFJvYnVzdG5lc3MgLSB1c2VzIGdldEdy
YXBoaWNzUmVzZXRTdGF0dXNBUkIoKQotICAgIHZvaWQgcmVhZG5QaXhlbHNFWFQoaW50IHgsIGlu
dCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwg
R0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIHZvaWQgKmRhdGEpIG92ZXJyaWRlOwot
ICAgIHZvaWQgZ2V0blVuaWZvcm1mdkVYVChHQ0dMdWludCBwcm9ncmFtLCBpbnQgbG9jYXRpb24s
IEdDR0xzaXplaSBidWZTaXplLCBmbG9hdCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdl
dG5Vbmlmb3JtaXZFWFQoR0NHTHVpbnQgcHJvZ3JhbSwgaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkg
YnVmU2l6ZSwgaW50ICpwYXJhbXMpIG92ZXJyaWRlOwotCi0gICAgYm9vbCBpc05WSURJQSgpIG92
ZXJyaWRlIHsgcmV0dXJuIG1faXNOVklESUE7IH0KLSAgICBib29sIGlzQU1EKCkgb3ZlcnJpZGUg
eyByZXR1cm4gbV9pc0FNRDsgfQotICAgIGJvb2wgaXNJbnRlbCgpIG92ZXJyaWRlIHsgcmV0dXJu
IG1faXNJbnRlbDsgfQotICAgIGJvb2wgaXNJbWFnaW5hdGlvbigpIG92ZXJyaWRlIHsgcmV0dXJu
IG1faXNJbWFnaW5hdGlvbjsgfQotICAgIFN0cmluZyB2ZW5kb3IoKSBvdmVycmlkZSB7IHJldHVy
biBtX3ZlbmRvcjsgfQotCi0gICAgYm9vbCByZXF1aXJlc0J1aWx0SW5GdW5jdGlvbkVtdWxhdGlv
bigpIG92ZXJyaWRlIHsgcmV0dXJuIG1fcmVxdWlyZXNCdWlsdEluRnVuY3Rpb25FbXVsYXRpb247
IH0KLSAgICBib29sIHJlcXVpcmVzUmVzdHJpY3RlZE1heGltdW1UZXh0dXJlU2l6ZSgpIG92ZXJy
aWRlIHsgcmV0dXJuIG1fcmVxdWlyZXNSZXN0cmljdGVkTWF4aW11bVRleHR1cmVTaXplOyB9Ci0K
LSAgICAvLyBHTF9BTkdMRV9yb2J1c3RfY2xpZW50X21lbW9yeQotICAgIHZvaWQgcmVhZFBpeGVs
c1JvYnVzdEFOR0xFKGludCB4LCBpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVp
Z2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXplLCBH
Q0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHNpemVpICpjb2x1bW5zLCBHQ0dMc2l6ZWkgKnJvd3MsIHZv
aWQgKnBpeGVscykgb3ZlcnJpZGU7Ci0gICAgdm9pZCB0ZXhQYXJhbWV0ZXJmdlJvYnVzdEFOR0xF
KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25z
dCBHQ0dMZmxvYXQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCB0ZXhQYXJhbWV0ZXJpdlJv
YnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZT
aXplLCBjb25zdCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0UXVlcnlp
dlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBi
dWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAg
ICB2b2lkIGdldFF1ZXJ5T2JqZWN0dWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgaWQsIEdDR0xlbnVt
IHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0x1aW50ICpw
YXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0QnVmZmVyUG9pbnRlcnZSb2J1c3RBTkdMRShH
Q0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNp
emVpICpsZW5ndGgsIHZvaWQgKipwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0VmVydGV4
QXR0cmliSWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dM
c2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykgb3ZlcnJp
ZGU7Ci0gICAgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJJdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgaW5k
ZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgs
IEdDR0x1aW50ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0VW5pZm9ybXVpdlJvYnVz
dEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUs
IEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMdWludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lk
IGdldEJ1ZmZlclBhcmFtZXRlcmk2NHZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xl
bnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQ2
NCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIHNhbXBsZXJQYXJhbWV0ZXJpdlJvYnVzdEFO
R0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwg
Y29uc3QgR0NHTGludCAqcGFyYW0pIG92ZXJyaWRlOwotICAgIHZvaWQgc2FtcGxlclBhcmFtZXRl
cmZ2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXpl
aSBidWZTaXplLCBjb25zdCBHQ0dMZmxvYXQgKnBhcmFtKSBvdmVycmlkZTsKLSAgICB2b2lkIGdl
dFNhbXBsZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVt
IHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBh
cmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRTYW1wbGVyUGFyYW1ldGVyZnZSb2J1c3RBTkdM
RShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdD
R0xzaXplaSAqbGVuZ3RoLCBHQ0dMZmxvYXQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0KLSAgICB2b2lk
IGdldEZyYW1lYnVmZmVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdD
R0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xp
bnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRQcm9ncmFtSW50ZXJmYWNlaXZSb2J1
c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMZW51bSBwcm9ncmFtSW50ZXJmYWNlLCBHQ0dM
ZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50
ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0Qm9vbGVhbmlfdlJvYnVzdEFOR0xFKEdD
R0xlbnVtIHRhcmdldCwgR0NHTHVpbnQgaW5kZXgsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6
ZWkgKmxlbmd0aCwgR0NHTGJvb2xlYW4gKmRhdGEpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0TXVs
dGlzYW1wbGVmdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHBuYW1lLCBHQ0dMdWludCBpbmRleCwgR0NH
THNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMZmxvYXQgKnZhbCkgb3ZlcnJp
ZGU7Ci0gICAgdm9pZCBnZXRUZXhMZXZlbFBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0g
dGFyZ2V0LCBpbnQgbGV2ZWwsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NH
THNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRU
ZXhMZXZlbFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBpbnQgbGV2ZWws
IEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdD
R0xmbG9hdCAqcGFyYW1zKSBvdmVycmlkZTsKLQotICAgIHZvaWQgZ2V0UG9pbnRlcnZSb2J1c3RB
TkdMRVJvYnVzdEFOR0xFKEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNp
emVpICpsZW5ndGgsIHZvaWQgKipwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0blVuaWZv
cm1mdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIGludCBsb2NhdGlvbiwgR0NHTHNpemVp
IGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMZmxvYXQgKnBhcmFtcykgb3ZlcnJpZGU7
Ci0gICAgdm9pZCBnZXRuVW5pZm9ybWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgaW50
IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQg
KnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRuVW5pZm9ybXVpdlJvYnVzdEFOR0xFKEdD
R0x1aW50IHByb2dyYW0sIGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXpl
aSAqbGVuZ3RoLCBHQ0dMdWludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIHRleFBhcmFt
ZXRlcklpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xz
aXplaSBidWZTaXplLCBjb25zdCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQg
dGV4UGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5h
bWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMdWludCAqcGFyYW1zKSBvdmVycmlkZTsK
LSAgICB2b2lkIGdldFRleFBhcmFtZXRlcklpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwg
R0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NH
TGludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldFRleFBhcmFtZXRlckl1aXZSb2J1
c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6
ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0x1aW50ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZv
aWQgc2FtcGxlclBhcmFtZXRlcklpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xl
bnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGludCAqcGFyYW0pIG92ZXJy
aWRlOwotICAgIHZvaWQgc2FtcGxlclBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRShHQ0dMdWludCBz
YW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0x1aW50
ICpwYXJhbSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRTYW1wbGVyUGFyYW1ldGVySWl2Um9idXN0
QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXpl
LCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lk
IGdldFNhbXBsZXJQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NH
TGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHVp
bnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0KLSAgICB2b2lkIGdldFF1ZXJ5T2JqZWN0aXZSb2J1c3RB
TkdMRShHQ0dMdWludCBpZCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dM
c2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldFF1
ZXJ5T2JqZWN0aTY0dlJvYnVzdEFOR0xFKEdDR0x1aW50IGlkLCBHQ0dMZW51bSBwbmFtZSwgR0NH
THNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50NjQgKnBhcmFtcykgb3Zl
cnJpZGU7Ci0gICAgdm9pZCBnZXRRdWVyeU9iamVjdHVpNjR2Um9idXN0QU5HTEUoR0NHTHVpbnQg
aWQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgs
IEdDR0x1aW50NjQgKnBhcmFtcykgb3ZlcnJpZGU7CisgICAgdm9pZCByZWFkblBpeGVsc0VYVChp
bnQgeCwgaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0g
Zm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgdm9pZCAqZGF0YSk7Cisg
ICAgdm9pZCBnZXRuVW5pZm9ybWZ2RVhUKEdDR0x1aW50IHByb2dyYW0sIGludCBsb2NhdGlvbiwg
R0NHTHNpemVpIGJ1ZlNpemUsIGZsb2F0ICpwYXJhbXMpOworICAgIHZvaWQgZ2V0blVuaWZvcm1p
dkVYVChHQ0dMdWludCBwcm9ncmFtLCBpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBp
bnQgKnBhcmFtcyk7CisKKyAgICBib29sIGlzTlZJRElBKCkgY29uc3QgeyByZXR1cm4gbV9pc05W
SURJQTsgfQorICAgIGJvb2wgaXNBTUQoKSBjb25zdCB7IHJldHVybiBtX2lzQU1EOyB9CisgICAg
Ym9vbCBpc0ludGVsKCkgY29uc3QgeyByZXR1cm4gbV9pc0ludGVsOyB9CisgICAgYm9vbCBpc0lt
YWdpbmF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9pc0ltYWdpbmF0aW9uOyB9CisgICAgU3RyaW5n
IHZlbmRvcigpIGNvbnN0IHsgcmV0dXJuIG1fdmVuZG9yOyB9CisKKyAgICBib29sIHJlcXVpcmVz
QnVpbHRJbkZ1bmN0aW9uRW11bGF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9yZXF1aXJlc0J1aWx0
SW5GdW5jdGlvbkVtdWxhdGlvbjsgfQorICAgIGJvb2wgcmVxdWlyZXNSZXN0cmljdGVkTWF4aW11
bVRleHR1cmVTaXplKCkgY29uc3QgeyByZXR1cm4gbV9yZXF1aXJlc1Jlc3RyaWN0ZWRNYXhpbXVt
VGV4dHVyZVNpemU7IH0KIAogcHJvdGVjdGVkOgogICAgIGZyaWVuZCBjbGFzcyBFeHRlbnNpb25z
R0xPcGVuR0xFUzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xFUy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMRVMuY3BwCmluZGV4IDhjYTg3Nzg4
NGVlYWI4YTJjYTFkZGUyZGIyZWM4ZDZiMjEyMmZkZTEuLmIyZTNjOGI5ODQ5MzQ1ZDU3MzhmN2E1
YzEwZTEyZGI1OTRkMmEwMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xFUy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVTLmNwcApAQCAt
MTAwLDExICsxMDAsNiBAQCB2b2lkIEV4dGVuc2lvbnNHTE9wZW5HTEVTOjpyZW5kZXJidWZmZXJT
dG9yYWdlTXVsdGlzYW1wbGVJTUcodW5zaWduZWQgbG9uZyB0YXJnZQogICAgICAgICBtX2NvbnRl
eHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKIH0KIAotdm9pZCBF
eHRlbnNpb25zR0xPcGVuR0xFUzo6YmxpdEZyYW1lYnVmZmVyQU5HTEUoR0NHTGludCwgR0NHTGlu
dCwgR0NHTGludCwgR0NHTGludCwgR0NHTGludCwgR0NHTGludCwgR0NHTGludCwgR0NHTGludCwg
R0NHTGJpdGZpZWxkLCBHQ0dMZW51bSkKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCiB2
b2lkIEV4dGVuc2lvbnNHTE9wZW5HTEVTOjpyZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVB
TkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xzaXplaSBzYW1wbGVzLCBHQ0dMZW51bSBpbnRlcm5h
bGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KQogewogICAgIGlmICgh
bV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKQEAgLTExNSwyMSArMTEwLDYgQEAgdm9p
ZCBFeHRlbnNpb25zR0xPcGVuR0xFUzo6cmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5H
TEUoR0NHTGVudW0gdGFyZ2V0LAogICAgICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi12b2lk
IEV4dGVuc2lvbnNHTE9wZW5HTEVTOjppbnNlcnRFdmVudE1hcmtlckVYVChjb25zdCBTdHJpbmcm
KQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdM
RVM6OnB1c2hHcm91cE1hcmtlckVYVChjb25zdCBTdHJpbmcmKQotewotICAgIG5vdEltcGxlbWVu
dGVkKCk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMRVM6OnBvcEdyb3VwTWFya2VyRVhU
KHZvaWQpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQogUGxhdGZvcm1HTE9iamVjdCBF
eHRlbnNpb25zR0xPcGVuR0xFUzo6Y3JlYXRlVmVydGV4QXJyYXlPRVMoKQogewogICAgIGlmICht
X2dsR2VuVmVydGV4QXJyYXlzT0VTKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMRVMuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xFUy5oCmluZGV4
IDVjNzYwMzdmYTdiYzZlOGVlZTNlNjczZjk5YTdkZmMyZjc4ZmI0ZDIuLmFkZDBiYjc2M2Y0YmRh
NWI2OWU2MWJhYjYwMjJhNDA4MjQ4YWYzZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xFUy5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xFUy5o
CkBAIC0yNyw2ICsyNyw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkV4dGVuc2lvbnNH
TE9wZW5HTENvbW1vbi5oIgorI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgiCiAK
ICNpZiBVU0UoT1BFTkdMX0VTKQogCkBAIC03NSwxMSArNzYsNyBAQCBwdWJsaWM6CiAKICAgICAv
LyBFeHRlbnNpb24zRCBtZXRob2RzCiAgICAgYm9vbCBpc0VuYWJsZWQoY29uc3QgU3RyaW5nJikg
b3ZlcnJpZGU7Ci0gICAgdm9pZCBibGl0RnJhbWVidWZmZXJBTkdMRShHQ0dMaW50IHNyY1gwLCBH
Q0dMaW50IHNyY1kwLCBHQ0dMaW50IHNyY1gxLCBHQ0dMaW50IHNyY1kxLCBHQ0dMaW50IGRzdFgw
LCBHQ0dMaW50IGRzdFkwLCBHQ0dMaW50IGRzdFgxLCBHQ0dMaW50IGRzdFkxLCBHQ0dMYml0Zmll
bGQgbWFzaywgR0NHTGVudW0gZmlsdGVyKSBvdmVycmlkZTsKLSAgICB2b2lkIHJlbmRlcmJ1ZmZl
clN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVpIHNhbXBs
ZXMsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBo
ZWlnaHQpIG92ZXJyaWRlOwotICAgIHZvaWQgaW5zZXJ0RXZlbnRNYXJrZXJFWFQoY29uc3QgU3Ry
aW5nJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBwdXNoR3JvdXBNYXJrZXJFWFQoY29uc3QgU3RyaW5n
Jikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBwb3BHcm91cE1hcmtlckVYVCh2b2lkKSBvdmVycmlkZTsK
KyAgICB2b2lkIHJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKEdDR0xlbnVtIHRh
cmdldCwgR0NHTHNpemVpIHNhbXBsZXMsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6
ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQpOwogCiAgICAgUGxhdGZvcm1HTE9iamVjdCBjcmVh
dGVWZXJ0ZXhBcnJheU9FUygpIG92ZXJyaWRlOwogICAgIHZvaWQgZGVsZXRlVmVydGV4QXJyYXlP
RVMoUGxhdGZvcm1HTE9iamVjdCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9w
ZW5HTC5oCmluZGV4IGY1MjRkZTkyZGNkOWE1OThiMGZiZWY4ZDMzYjljNDQwOWI4Y2QxYjAuLjM5
NWI5NTczYjc2NWQ5M2MwNDI3NDZhMWY1NDkxMjBhZGYyM2Y4MTEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5H
TC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGlj
c0NvbnRleHRHTE9wZW5HTC5oCkBAIC00NSw2ICs0NSw3IEBACiAKICNpZiAhVVNFKEFOR0xFKQog
I2luY2x1ZGUgIkFOR0xFV2ViS2l0QnJpZGdlLmgiCisjaW5jbHVkZSAiRXh0ZW5zaW9uc0dMT3Bl
bkdMQ29tbW9uLmgiCiAjZW5kaWYKIAogLy8gRklYTUU6IEZpbmQgYSBiZXR0ZXIgd2F5IHRvIGF2
b2lkIHRoZSBuYW1lIGNvbmZsaWN0aW9uIGZvciBOT19FUlJPUi4KQEAgLTQ4Niw3ICs0ODcsMTIg
QEAgcHVibGljOgogICAgIC8vIGFsbCBtZXRob2RzIGl0IGNvbnRhaW5zIG1heSBuZWNlc3Nhcmls
eSBiZSBzdXBwb3J0ZWQgb24gdGhlCiAgICAgLy8gY3VycmVudCBoYXJkd2FyZS4gTXVzdCBjYWxs
IEV4dGVuc2lvbnNHTDo6c3VwcG9ydHMoKSB0bwogICAgIC8vIGRldGVybWluZSB0aGlzLgorI2lm
ICFVU0UoQU5HTEUpCisgICAgLy8gVXNlIGNvdmFyaWFudCByZXR1cm4gdHlwZSBmb3IgT1BFTkdM
L09QRU5HTF9FUworICAgIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbiYgZ2V0RXh0ZW5zaW9ucygp
IGZpbmFsOworI2Vsc2UKICAgICBFeHRlbnNpb25zR0wmIGdldEV4dGVuc2lvbnMoKSBmaW5hbDsK
KyNlbmRpZgogCiAgICAgdm9pZCBzZXRGYWlsTmV4dEdQVVN0YXR1c0NoZWNrKCkgZmluYWwgeyBt
X2ZhaWxOZXh0U3RhdHVzQ2hlY2sgPSB0cnVlOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEJhc2Uu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMQmFzZS5jcHAKaW5kZXggZjQxNGY5Yzk2MzRkNjFiOGQ5MDE1ZDVhNmFmYTUy
N2NjMzQyYmU4Zi4uMGZmNTMzYmU3MTI4NGVkMDhkNTM0M2I5OTk2YTk2ZmExNmUyYjVhZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNz
Q29udGV4dEdMT3BlbkdMQmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQmFzZS5jcHAKQEAgLTExNiw3ICsx
MTYsNyBAQCBib29sIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZXNoYXBlRkJPcyhjb25zdCBJ
bnRTaXplJiBzaXplKQogICAgICAgICAvLyBXZSBkb24ndCBhbGxvdyB0aGUgbG9naWMgd2hlcmUg
c3RlbmNpbCBpcyByZXF1aXJlZCBhbmQgZGVwdGggaXMgbm90LgogICAgICAgICAvLyBTZWUgR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OnZhbGlkYXRlQXR0cmlidXRlcy4KIAotICAgICAgICBFeHRl
bnNpb25zR0wmIGV4dGVuc2lvbnMgPSBnZXRFeHRlbnNpb25zKCk7CisgICAgICAgIEV4dGVuc2lv
bnNHTE9wZW5HTENvbW1vbiYgZXh0ZW5zaW9ucyA9IGdldEV4dGVuc2lvbnMoKTsKICAgICAgICAg
Ly8gVXNlIGEgMjQgYml0IGRlcHRoIGJ1ZmZlciB3aGVyZSB3ZSBrbm93IHdlIGhhdmUgaXQuCiAg
ICAgICAgIGlmIChleHRlbnNpb25zLnN1cHBvcnRzKCJHTF9FWFRfcGFja2VkX2RlcHRoX3N0ZW5j
aWwiKSkKICAgICAgICAgICAgIGludGVybmFsRGVwdGhTdGVuY2lsRm9ybWF0ID0gR0xfREVQVEgy
NF9TVEVOQ0lMOF9FWFQ7CkBAIC00MTcsNyArNDE3LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6Y2xlYXJEZXB0aChHQ0dMY2xhbXBmIGRlcHRoKQogfQogCiAjaWYgIVBMQVRGT1JN
KEdUSykKLUV4dGVuc2lvbnNHTCYgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEV4dGVuc2lv
bnMoKQorRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uJiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
Z2V0RXh0ZW5zaW9ucygpCiB7CiAgICAgaWYgKCFtX2V4dGVuc2lvbnMpCiAgICAgICAgIG1fZXh0
ZW5zaW9ucyA9IG1ha2VVbmlxdWU8RXh0ZW5zaW9uc0dMT3BlbkdMPih0aGlzLCBpc0dMRVMyQ29t
cGxpYW50KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
b3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29tbW9uLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvbW1vbi5j
cHAKaW5kZXggMmRlMTg1YTY2ODEzMGEzNjJjMTI3NjdmMzgzZjU3ZjEzNDlkZDQ4MS4uZGY5ODNm
ZGE4ODExMjg5YjYwMjJkYWZlZTk4ZGNmOTI5ZGMyNDUxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29t
bW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0xDb21tb24uY3BwCkBAIC0xMTgsNyArMTE4LDcgQEAgdm9pZCBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmFsaWRhdGVEZXB0aFN0ZW5jaWwoY29uc3QgY2hhciog
cGFja2VkRGVwdGhTdGVuY2kKIHsKICAgICBhdXRvIGF0dHJzID0gY29udGV4dEF0dHJpYnV0ZXMo
KTsKIAotICAgIEV4dGVuc2lvbnNHTCYgZXh0ZW5zaW9ucyA9IGdldEV4dGVuc2lvbnMoKTsKKyAg
ICBFeHRlbnNpb25zR0xPcGVuR0xDb21tb24mIGV4dGVuc2lvbnMgPSBnZXRFeHRlbnNpb25zKCk7
CiAgICAgaWYgKGF0dHJzLnN0ZW5jaWwpIHsKICAgICAgICAgaWYgKGV4dGVuc2lvbnMuc3VwcG9y
dHMocGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uKSkgewogICAgICAgICAgICAgZXh0ZW5zaW9u
cy5lbnN1cmVFbmFibGVkKHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvbik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0xFUy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wv
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0xFUy5jcHAKaW5kZXggMGQ0NzZjMjI5ZDZmNmVlOTZjY2Y5
OTNkODFkNWMzZGQ2NTIxNWU0OC4uYWI5YzM1Zjg0OTY0MzZjOTYwZTIxMmE0MWJjM2UwY2ZlOWFi
YmYwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Blbmds
L0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMRVMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEVTLmNwcApAQCAtMjU0
LDcgKzI1NCw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNsZWFyRGVwdGgoR0NH
TGNsYW1wZiBkZXB0aCkKIH0KIAogI2lmICFQTEFURk9STShHVEspCi1FeHRlbnNpb25zR0wmIEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRFeHRlbnNpb25zKCkKK0V4dGVuc2lvbnNHTE9wZW5H
TENvbW1vbiYgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEV4dGVuc2lvbnMoKQogewogICAg
IGlmICghbV9leHRlbnNpb25zKQogICAgICAgICBtX2V4dGVuc2lvbnMgPSBtYWtlVW5pcXVlPEV4
dGVuc2lvbnNHTE9wZW5HTEVTPih0aGlzLCBpc0dMRVMyQ29tcGxpYW50KCkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4
dEdMVGV4dHVyZU1hcHBlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyLmNwcAppbmRleCA4NzMxNDBiMGQ5
NTI0NzQ3OGEyMWYxNGNhOTk4ZjY3MTZlZTdhZDdhLi5lYTVkYTlmODgxODg3NzIxZTdhZDQyZTg0
MGJkYjFhN2RkZjIxNWRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0R0xUZXh0
dXJlTWFwcGVyLmNwcApAQCAtNDI5LDcgKzQyOSw3IEBAIFBsYXRmb3JtTGF5ZXIqIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpwbGF0Zm9ybUxheWVyKCkgY29uc3QKIH0KIAogI2lmIFBMQVRGT1JN
KEdUSykgJiYgIVVTRShBTkdMRSkKLUV4dGVuc2lvbnNHTCYgR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OmdldEV4dGVuc2lvbnMoKQorRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uJiBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6Z2V0RXh0ZW5zaW9ucygpCiB7CiAgICAgaWYgKCFtX2V4dGVuc2lvbnMp
IHsKICNpZiBVU0UoT1BFTkdMX0VTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLm1lc3NhZ2VzLmluIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLm1lc3Nh
Z2VzLmluCmluZGV4IGFhMDM0NzI1ZjlhYTQyZjQyYmQzYzhhMDBiMGFhMTgwOTBhNTliOWEuLmM3
ODhkNjVkYjRkOTcxYzJkNGQ1NDBjNDY4ODhjNDUxMTE0YjM0NmIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5tZXNz
YWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0wubWVzc2FnZXMuaW4KQEAgLTI3NCwxNiArMjc0LDExIEBAIG1lc3NhZ2Vz
IC0+IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMIE5vdFJlZkNvdW50ZWQgewogICAgIHZvaWQgVW5p
Zm9ybUJsb2NrQmluZGluZyh1aW50MzJfdCBwcm9ncmFtLCB1aW50MzJfdCB1bmlmb3JtQmxvY2tJ
bmRleCwgdWludDMyX3QgdW5pZm9ybUJsb2NrQmluZGluZykKICAgICB2b2lkIEdldEFjdGl2ZVVu
aWZvcm1CbG9ja2l2KHVpbnQzMl90IHByb2dyYW0sIHVpbnQzMl90IHVuaWZvcm1CbG9ja0luZGV4
LCB1aW50MzJfdCBwbmFtZSwgdWludDY0X3QgcGFyYW1zU2l6ZSkgLT4gKElQQzo6QXJyYXlSZWZl
cmVuY2U8aW50MzJfdD4gcGFyYW1zKSBTeW5jaHJvbm91cwogICAgIHZvaWQgR2V0R3JhcGhpY3NS
ZXNldFN0YXR1c0FSQigpIC0+IChpbnQzMl90IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cwotICAg
IHZvaWQgQmxpdEZyYW1lYnVmZmVyQU5HTEUoaW50MzJfdCBzcmNYMCwgaW50MzJfdCBzcmNZMCwg
aW50MzJfdCBzcmNYMSwgaW50MzJfdCBzcmNZMSwgaW50MzJfdCBkc3RYMCwgaW50MzJfdCBkc3RZ
MCwgaW50MzJfdCBkc3RYMSwgaW50MzJfdCBkc3RZMSwgdWludDMyX3QgbWFzaywgdWludDMyX3Qg
ZmlsdGVyKQotICAgIHZvaWQgUmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5HTEUodWlu
dDMyX3QgdGFyZ2V0LCBpbnQzMl90IHNhbXBsZXMsIHVpbnQzMl90IGludGVybmFsZm9ybWF0LCBp
bnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCkKICAgICB2b2lkIENyZWF0ZVZlcnRleEFycmF5
T0VTKCkgLT4gKHVpbnQzMl90IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cwogICAgIHZvaWQgRGVs
ZXRlVmVydGV4QXJyYXlPRVModWludDMyX3QgYXJnMCkKICAgICB2b2lkIElzVmVydGV4QXJyYXlP
RVModWludDMyX3QgYXJnMCkgLT4gKGJvb2wgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCiAgICAg
dm9pZCBCaW5kVmVydGV4QXJyYXlPRVModWludDMyX3QgYXJnMCkKICAgICB2b2lkIEdldFRyYW5z
bGF0ZWRTaGFkZXJTb3VyY2VBTkdMRSh1aW50MzJfdCBhcmcwKSAtPiAoU3RyaW5nIHJldHVyblZh
bHVlKSBTeW5jaHJvbm91cwotICAgIHZvaWQgSW5zZXJ0RXZlbnRNYXJrZXJFWFQoU3RyaW5nIGFy
ZzApCi0gICAgdm9pZCBQdXNoR3JvdXBNYXJrZXJFWFQoU3RyaW5nIGFyZzApCi0gICAgdm9pZCBQ
b3BHcm91cE1hcmtlckVYVCgpCiAgICAgdm9pZCBEcmF3QnVmZmVyc0VYVChJUEM6OkFycmF5UmVm
ZXJlbmNlPHVpbnQzMl90PiBidWZzKQogICAgIHZvaWQgRHJhd0FycmF5c0luc3RhbmNlZEFOR0xF
KHVpbnQzMl90IG1vZGUsIGludDMyX3QgZmlyc3QsIGludDMyX3QgY291bnQsIGludDMyX3QgcHJp
bWNvdW50KQogICAgIHZvaWQgRHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUodWludDMyX3QgbW9k
ZSwgaW50MzJfdCBjb3VudCwgdWludDMyX3QgdHlwZSwgdWludDY0X3Qgb2Zmc2V0LCBpbnQzMl90
IHByaW1jb3VudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGlj
cy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTEZ1bmN0aW9uc0dlbmVyYXRlZC5oIGIvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMRnVuY3Rpb25z
R2VuZXJhdGVkLmgKaW5kZXggYWYwMTYwMmFmNDkzZWI2N2RlM2U2MmNmMGU1MGFjMGEyYjk5MjVm
MS4uMWJjNTdkZjlhZmRhMjhkOGJlNGViYzZkNDQ5MzJlYTk1NTMyYWNhOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdM
RnVuY3Rpb25zR2VuZXJhdGVkLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBo
aWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMRnVuY3Rpb25zR2VuZXJhdGVkLmgKQEAgLTExMTgs
MTQgKzExMTgsNiBAQAogICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Z2V0RXh0ZW5z
aW9ucygpLmdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIoKTsKICAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIocmV0dXJuVmFsdWUpOwogICAgIH0KLSAgICB2b2lkIGJsaXRGcmFtZWJ1ZmZlckFOR0xF
KGludDMyX3Qgc3JjWDAsIGludDMyX3Qgc3JjWTAsIGludDMyX3Qgc3JjWDEsIGludDMyX3Qgc3Jj
WTEsIGludDMyX3QgZHN0WDAsIGludDMyX3QgZHN0WTAsIGludDMyX3QgZHN0WDEsIGludDMyX3Qg
ZHN0WTEsIHVpbnQzMl90IG1hc2ssIHVpbnQzMl90IGZpbHRlcikKLSAgICB7Ci0gICAgICAgIG1f
Y29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmJsaXRGcmFtZWJ1ZmZlckFOR0xFKHNyY1gwLCBzcmNZ
MCwgc3JjWDEsIHNyY1kxLCBkc3RYMCwgZHN0WTAsIGRzdFgxLCBkc3RZMSwgbWFzaywgZmlsdGVy
KTsKLSAgICB9Ci0gICAgdm9pZCByZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVBTkdMRSh1
aW50MzJfdCB0YXJnZXQsIGludDMyX3Qgc2FtcGxlcywgdWludDMyX3QgaW50ZXJuYWxmb3JtYXQs
IGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0KQotICAgIHsKLSAgICAgICAgbV9jb250ZXh0
LT5nZXRFeHRlbnNpb25zKCkucmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5HTEUodGFy
Z2V0LCBzYW1wbGVzLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCk7Ci0gICAgfQogICAg
IHZvaWQgY3JlYXRlVmVydGV4QXJyYXlPRVMoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50MzJf
dCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiAgICAgewogICAgICAgICBQbGF0Zm9ybUdMT2JqZWN0
IHJldHVyblZhbHVlID0geyB9OwpAQCAtMTE1MiwxOCArMTE0NCw2IEBACiAgICAgICAgIHJldHVy
blZhbHVlID0gbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuZ2V0VHJhbnNsYXRlZFNoYWRlclNv
dXJjZUFOR0xFKGFyZzApOwogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHJldHVy
blZhbHVlKSk7CiAgICAgfQotICAgIHZvaWQgaW5zZXJ0RXZlbnRNYXJrZXJFWFQoU3RyaW5nJiYg
YXJnMCkKLSAgICB7Ci0gICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmluc2VydEV2
ZW50TWFya2VyRVhUKGFyZzApOwotICAgIH0KLSAgICB2b2lkIHB1c2hHcm91cE1hcmtlckVYVChT
dHJpbmcmJiBhcmcwKQotICAgIHsKLSAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCku
cHVzaEdyb3VwTWFya2VyRVhUKGFyZzApOwotICAgIH0KLSAgICB2b2lkIHBvcEdyb3VwTWFya2Vy
RVhUKCkKLSAgICB7Ci0gICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnBvcEdyb3Vw
TWFya2VyRVhUKCk7Ci0gICAgfQogICAgIHZvaWQgZHJhd0J1ZmZlcnNFWFQoSVBDOjpBcnJheVJl
ZmVyZW5jZTx1aW50MzJfdD4mJiBidWZzKQogICAgIHsKICAgICAgICAgbV9jb250ZXh0LT5nZXRF
eHRlbnNpb25zKCkuZHJhd0J1ZmZlcnNFWFQobWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgR0NHTGVudW0qPihidWZzLmRhdGEoKSksIGJ1ZnMuc2l6ZSgpKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5oCmluZGV4IGQ5OWVkYTI5ZjZkYjVlMTgxOTcxMzE3
OGYyYWE1MzFiNGY1ZGQ2ZTAuLjkwYmRkMzVjMzA0MzA5NTI0NGMwZDEwM2FmZDRhMTZiN2NkMmY5
YWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5oCkBAIC0zMTIsNTYg
KzMxMiwxNiBAQCBwdWJsaWM6CiAgICAgdm9pZCB1bmlmb3JtQmxvY2tCaW5kaW5nKFBsYXRmb3Jt
R0xPYmplY3QgcHJvZ3JhbSwgR0NHTHVpbnQgdW5pZm9ybUJsb2NrSW5kZXgsIEdDR0x1aW50IHVu
aWZvcm1CbG9ja0JpbmRpbmcpIGZpbmFsOwogICAgIHZvaWQgZ2V0QWN0aXZlVW5pZm9ybUJsb2Nr
aXYoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTHVpbnQgdW5pZm9ybUJsb2NrSW5kZXgsIEdDR0xlbnVt
IHBuYW1lLCBHQ0dMU3BhbjxHQ0dMaW50PiBwYXJhbXMpIGZpbmFsOwogICAgIEdDR0xpbnQgZ2V0
R3JhcGhpY3NSZXNldFN0YXR1c0FSQigpIGZpbmFsOwotICAgIHZvaWQgYmxpdEZyYW1lYnVmZmVy
QU5HTEUoR0NHTGludCBzcmNYMCwgR0NHTGludCBzcmNZMCwgR0NHTGludCBzcmNYMSwgR0NHTGlu
dCBzcmNZMSwgR0NHTGludCBkc3RYMCwgR0NHTGludCBkc3RZMCwgR0NHTGludCBkc3RYMSwgR0NH
TGludCBkc3RZMSwgR0NHTGJpdGZpZWxkIG1hc2ssIEdDR0xlbnVtIGZpbHRlcikgZmluYWw7Ci0g
ICAgdm9pZCByZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVBTkdMRShHQ0dMZW51bSB0YXJn
ZXQsIEdDR0xzaXplaSBzYW1wbGVzLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVp
IHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KSBmaW5hbDsKICAgICBQbGF0Zm9ybUdMT2JqZWN0IGNy
ZWF0ZVZlcnRleEFycmF5T0VTKCkgZmluYWw7CiAgICAgdm9pZCBkZWxldGVWZXJ0ZXhBcnJheU9F
UyhQbGF0Zm9ybUdMT2JqZWN0IGFyZzApIGZpbmFsOwogICAgIEdDR0xib29sZWFuIGlzVmVydGV4
QXJyYXlPRVMoUGxhdGZvcm1HTE9iamVjdCBhcmcwKSBmaW5hbDsKICAgICB2b2lkIGJpbmRWZXJ0
ZXhBcnJheU9FUyhQbGF0Zm9ybUdMT2JqZWN0IGFyZzApIGZpbmFsOwogICAgIFN0cmluZyBnZXRU
cmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUoUGxhdGZvcm1HTE9iamVjdCBhcmcwKSBmaW5hbDsK
LSAgICB2b2lkIGluc2VydEV2ZW50TWFya2VyRVhUKGNvbnN0IFN0cmluZyYgYXJnMCkgZmluYWw7
Ci0gICAgdm9pZCBwdXNoR3JvdXBNYXJrZXJFWFQoY29uc3QgU3RyaW5nJiBhcmcwKSBmaW5hbDsK
LSAgICB2b2lkIHBvcEdyb3VwTWFya2VyRVhUKCkgZmluYWw7CiAgICAgdm9pZCBkcmF3QnVmZmVy
c0VYVChHQ0dMU3Bhbjxjb25zdCBHQ0dMZW51bT4gYnVmcykgZmluYWw7CiAgICAgdm9pZCBkcmF3
QXJyYXlzSW5zdGFuY2VkQU5HTEUoR0NHTGVudW0gbW9kZSwgR0NHTGludCBmaXJzdCwgR0NHTHNp
emVpIGNvdW50LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KSBmaW5hbDsKICAgICB2b2lkIGRyYXdFbGVt
ZW50c0luc3RhbmNlZEFOR0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xzaXplaSBjb3VudCwgR0NHTGVu
dW0gdHlwZSwgR0NHTHZvaWRwdHIgb2Zmc2V0LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KSBmaW5hbDsK
ICAgICB2b2lkIHZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRShHQ0dMdWludCBpbmRleCwgR0NHTHVp
bnQgZGl2aXNvcikgZmluYWw7CiAgICAgdm9pZCBnZXRJbnRlcm5hbGZvcm1hdGl2KEdDR0xlbnVt
IHRhcmdldCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3Bh
bjxHQ0dMaW50PiBwYXJhbXMpIGZpbmFsOwotICAgIHZvaWQgcmVhZFBpeGVsc1JvYnVzdEFOR0xF
KEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQs
IEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xz
aXplaSogbGVuZ3RoLCBHQ0dMc2l6ZWkqIGNvbHVtbnMsIEdDR0xzaXplaSogcm93cywgR0NHTHZv
aWQqIHBpeGVscykgZmluYWw7Ci0gICAgdm9pZCB0ZXhQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdD
R0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBH
Q0dMZmxvYXQqIHBhcmFtcykgZmluYWw7Ci0gICAgdm9pZCB0ZXhQYXJhbWV0ZXJpdlJvYnVzdEFO
R0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBj
b25zdCBHQ0dMaW50KiBwYXJhbXMpIGZpbmFsOwotICAgIHZvaWQgZ2V0UXVlcnlpdlJvYnVzdEFO
R0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBH
Q0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1zKSBmaW5hbDsKLSAgICB2b2lkIGdldFF1
ZXJ5T2JqZWN0dWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgaWQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dM
c2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0x1aW50KiBwYXJhbXMpIGZpbmFs
OwotICAgIHZvaWQgZ2V0QnVmZmVyUG9pbnRlcnZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQs
IEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdD
R0x2b2lkKiogcGFyYW1zKSBmaW5hbDsKLSAgICB2b2lkIGdldFZlcnRleEF0dHJpYklpdlJvYnVz
dEFOR0xFKEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUs
IEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpIGZpbmFsOwotICAgIHZvaWQgZ2V0
VmVydGV4QXR0cmliSXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFt
ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMdWludCogcGFyYW1z
KSBmaW5hbDsKLSAgICB2b2lkIGdldFVuaWZvcm11aXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9n
cmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5n
dGgsIEdDR0x1aW50KiBwYXJhbXMpIGZpbmFsOwotICAgIHZvaWQgZ2V0QnVmZmVyUGFyYW1ldGVy
aTY0dlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXpl
aSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludDY0KiBwYXJhbXMpIGZpbmFsOwot
ICAgIHZvaWQgc2FtcGxlclBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwg
R0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMaW50KiBwYXJhbSkg
ZmluYWw7Ci0gICAgdm9pZCBzYW1wbGVyUGFyYW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dMdWludCBz
YW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xmbG9h
dCogcGFyYW0pIGZpbmFsOwotICAgIHZvaWQgZ2V0U2FtcGxlclBhcmFtZXRlcml2Um9idXN0QU5H
TEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBH
Q0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1zKSBmaW5hbDsKLSAgICB2b2lkIGdldFNh
bXBsZXJQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBu
YW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xmbG9hdCogcGFy
YW1zKSBmaW5hbDsKLSAgICB2b2lkIGdldEZyYW1lYnVmZmVyUGFyYW1ldGVyaXZSb2J1c3RBTkdM
RShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NH
THNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykgZmluYWw7Ci0gICAgdm9pZCBnZXRQcm9n
cmFtSW50ZXJmYWNlaXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMZW51bSBwcm9n
cmFtSW50ZXJmYWNlLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXpl
aSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpIGZpbmFsOwotICAgIHZvaWQgZ2V0Qm9vbGVhbmlf
dlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTHVpbnQgaW5kZXgsIEdDR0xzaXplaSBi
dWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGJvb2xlYW4qIGRhdGEpIGZpbmFsOyAvLyBO
T0xJTlQKLSAgICB2b2lkIGdldE11bHRpc2FtcGxlZnZSb2J1c3RBTkdMRShHQ0dMZW51bSBwbmFt
ZSwgR0NHTHVpbnQgaW5kZXgsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwg
R0NHTGZsb2F0KiB2YWwpIGZpbmFsOwotICAgIHZvaWQgZ2V0VGV4TGV2ZWxQYXJhbWV0ZXJpdlJv
YnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gcG5hbWUs
IEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1zKSBm
aW5hbDsKLSAgICB2b2lkIGdldFRleExldmVsUGFyYW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dMZW51
bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6
ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xmbG9hdCogcGFyYW1zKSBmaW5hbDsKLSAgICB2b2lk
IGdldFBvaW50ZXJ2Um9idXN0QU5HTEVSb2J1c3RBTkdMRShHQ0dMZW51bSBwbmFtZSwgR0NHTHNp
emVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMdm9pZCoqIHBhcmFtcykgZmluYWw7
Ci0gICAgdm9pZCBnZXRuVW5pZm9ybWZ2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NH
TGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dM
ZmxvYXQqIHBhcmFtcykgZmluYWw7Ci0gICAgdm9pZCBnZXRuVW5pZm9ybWl2Um9idXN0QU5HTEUo
R0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdD
R0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpIGZpbmFsOwotICAgIHZvaWQgZ2V0blVu
aWZvcm11aXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBH
Q0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0x1aW50KiBwYXJhbXMpIGZp
bmFsOwotICAgIHZvaWQgdGV4UGFyYW1ldGVySWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xpbnQqIHBhcmFt
cykgZmluYWw7Ci0gICAgdm9pZCB0ZXhQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUoR0NHTGVudW0g
dGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0x1aW50
KiBwYXJhbXMpIGZpbmFsOwotICAgIHZvaWQgZ2V0VGV4UGFyYW1ldGVySWl2Um9idXN0QU5HTEUo
R0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xz
aXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpIGZpbmFsOwotICAgIHZvaWQgZ2V0VGV4UGFy
YW1ldGVySXVpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdD
R0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHVpbnQqIHBhcmFtcykgZmlu
YWw7Ci0gICAgdm9pZCBzYW1wbGVyUGFyYW1ldGVySWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2Ft
cGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMaW50KiBw
YXJhbSkgZmluYWw7Ci0gICAgdm9pZCBzYW1wbGVyUGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFKEdD
R0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3Qg
R0NHTHVpbnQqIHBhcmFtKSBmaW5hbDsKLSAgICB2b2lkIGdldFNhbXBsZXJQYXJhbWV0ZXJJaXZS
b2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1
ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpIGZpbmFsOwotICAgIHZv
aWQgZ2V0U2FtcGxlclBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBH
Q0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dM
dWludCogcGFyYW1zKSBmaW5hbDsKLSAgICB2b2lkIGdldFF1ZXJ5T2JqZWN0aXZSb2J1c3RBTkdM
RShHQ0dMdWludCBpZCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6
ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1zKSBmaW5hbDsKLSAgICB2b2lkIGdldFF1ZXJ5T2Jq
ZWN0aTY0dlJvYnVzdEFOR0xFKEdDR0x1aW50IGlkLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVp
IGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50NjQqIHBhcmFtcykgZmluYWw7Ci0g
ICAgdm9pZCBnZXRRdWVyeU9iamVjdHVpNjR2Um9idXN0QU5HTEUoR0NHTHVpbnQgaWQsIEdDR0xl
bnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0x1aW50
NjQqIHBhcmFtcykgZmluYWw7CiAgICAgLy8gRW5kIG9mIGxpc3QgdXNlZCBieSBnZW5lcmF0ZS1n
cHVwLXdlYmdsIHNjcmlwdC4KIAogcHJvdGVjdGVkOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5RnVu
Y3Rpb25zR2VuZXJhdGVkLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhp
Y3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUZ1bmN0aW9uc0dlbmVyYXRlZC5jcHAKaW5k
ZXggZjdlY2Y4NjU1NmEwMDczYWY4ZjU1NGNmY2ZjMGVmMzM5ZjYxZTg5YS4uZTFhNmRkMzRlNTVi
NTI1ZmVmMjZiNTdjYjEzMjUyY2YzMmJkMDY5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5RnVuY3Rp
b25zR2VuZXJhdGVkLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBo
aWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlGdW5jdGlvbnNHZW5lcmF0ZWQuY3BwCkBA
IC0xMzgwLDE2ICsxMzgwLDYgQEAgR0NHTGludCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpnZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJCKCkKICAgICByZXR1cm4gcmV0dXJuVmFsdWU7CiB9
CiAKLXZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmxpdEZyYW1lYnVmZmVyQU5H
TEUoR0NHTGludCBzcmNYMCwgR0NHTGludCBzcmNZMCwgR0NHTGludCBzcmNYMSwgR0NHTGludCBz
cmNZMSwgR0NHTGludCBkc3RYMCwgR0NHTGludCBkc3RZMCwgR0NHTGludCBkc3RYMSwgR0NHTGlu
dCBkc3RZMSwgR0NHTGJpdGZpZWxkIG1hc2ssIEdDR0xlbnVtIGZpbHRlcikKLXsKLSAgICBzZW5k
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QmxpdEZyYW1lYnVmZmVyQU5HTEUo
c3JjWDAsIHNyY1kwLCBzcmNYMSwgc3JjWTEsIGRzdFgwLCBkc3RZMCwgZHN0WDEsIGRzdFkxLCBt
YXNrLCBmaWx0ZXIpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Ci19Ci0KLXZvaWQg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2Ft
cGxlQU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWkgc2FtcGxlcywgR0NHTGVudW0gaW50
ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkKLXsKLSAgICBz
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6UmVuZGVyYnVmZmVyU3RvcmFn
ZU11bHRpc2FtcGxlQU5HTEUodGFyZ2V0LCBzYW1wbGVzLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgs
IGhlaWdodCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKLX0KLQogUGxhdGZvcm1H
TE9iamVjdCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjcmVhdGVWZXJ0ZXhBcnJheU9F
UygpCiB7CiAgICAgdWludDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07CkBAIC0xNDIxLDIxICsxNDEx
LDYgQEAgU3RyaW5nIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFRyYW5zbGF0ZWRT
aGFkZXJTb3VyY2VBTkdMRShQbGF0Zm9ybUdMT2IKICAgICByZXR1cm4gcmV0dXJuVmFsdWU7CiB9
CiAKLXZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aW5zZXJ0RXZlbnRNYXJrZXJF
WFQoY29uc3QgU3RyaW5nJiBhcmcwKQotewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpJbnNlcnRFdmVudE1hcmtlckVYVChhcmcwKSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIpOwotfQotCi12b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OnB1c2hHcm91cE1hcmtlckVYVChjb25zdCBTdHJpbmcmIGFyZzApCi17Ci0gICAgc2VuZChNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlB1c2hHcm91cE1hcmtlckVYVChhcmcwKSwg
bV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOwotfQotCi12b2lkIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OnBvcEdyb3VwTWFya2VyRVhUKCkKLXsKLSAgICBzZW5kKE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6UG9wR3JvdXBNYXJrZXJFWFQoKSwgbV9ncmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIpOwotfQotCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmRyYXdCdWZmZXJzRVhUKEdDR0xTcGFuPGNvbnN0IEdDR0xlbnVtPiBidWZzKQogewog
ICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEcmF3QnVmZmVyc0VY
VChJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90PihyZWludGVycHJldF9jYXN0PGNvbnN0IHVp
bnQzMl90Kj4oYnVmcy5kYXRhKSwgYnVmcy5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyKTsKQEAgLTE0NjUsMTgxICsxNDQwLDYgQEAgdm9pZCBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpnZXRJbnRlcm5hbGZvcm1hdGl2KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVu
dW0KICAgICAKIH0KIAotdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpyZWFkUGl4
ZWxzUm9idXN0QU5HTEUoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NH
THNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkg
YnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xzaXplaSogY29sdW1ucywgR0NHTHNpemVp
KiByb3dzLCBHQ0dMdm9pZCogcGl4ZWxzKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0K
LXZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4UGFyYW1ldGVyZnZSb2J1c3RB
TkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwg
Y29uc3QgR0NHTGZsb2F0KiBwYXJhbXMpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQot
dm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhQYXJhbWV0ZXJpdlJvYnVzdEFO
R0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBj
b25zdCBHQ0dMaW50KiBwYXJhbXMpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9p
ZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRRdWVyeWl2Um9idXN0QU5HTEUoR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXpl
aSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0K
LQotdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRRdWVyeU9iamVjdHVpdlJv
YnVzdEFOR0xFKEdDR0x1aW50IGlkLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUs
IEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMdWludCogcGFyYW1zKQotewotICAgIG5vdEltcGxlbWVu
dGVkKCk7Ci19Ci0KLXZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0QnVmZmVy
UG9pbnRlcnZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dM
c2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0x2b2lkKiogcGFyYW1zKQotewot
ICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6Z2V0VmVydGV4QXR0cmliSWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0xl
bnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQq
IHBhcmFtcykKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OmdldFZlcnRleEF0dHJpYkl1aXZSb2J1c3RBTkdMRShHQ0dMdWlu
dCBpbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxl
bmd0aCwgR0NHTHVpbnQqIHBhcmFtcykKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12
b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFVuaWZvcm11aXZSb2J1c3RBTkdM
RShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwg
R0NHTHNpemVpKiBsZW5ndGgsIEdDR0x1aW50KiBwYXJhbXMpCi17Ci0gICAgbm90SW1wbGVtZW50
ZWQoKTsKLX0KLQotdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRCdWZmZXJQ
YXJhbWV0ZXJpNjR2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwg
R0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50NjQqIHBhcmFtcykK
LXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OnNhbXBsZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIs
IEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGludCogcGFyYW0p
Ci17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpzYW1wbGVyUGFyYW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVy
LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xmbG9hdCogcGFy
YW0pCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpnZXRTYW1wbGVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMdWludCBz
YW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVu
Z3RoLCBHQ0dMaW50KiBwYXJhbXMpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9p
ZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRTYW1wbGVyUGFyYW1ldGVyZnZSb2J1
c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNp
emUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMZmxvYXQqIHBhcmFtcykKLXsKLSAgICBub3RJbXBs
ZW1lbnRlZCgpOwotfQotCi12b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEZy
YW1lYnVmZmVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVt
IHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBh
cmFtcykKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmdldFByb2dyYW1JbnRlcmZhY2VpdlJvYnVzdEFOR0xFKEdDR0x1aW50
IHByb2dyYW0sIEdDR0xlbnVtIHByb2dyYW1JbnRlcmZhY2UsIEdDR0xlbnVtIHBuYW1lLCBHQ0dM
c2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykKLXsKLSAg
ICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OmdldEJvb2xlYW5pX3ZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0x1aW50IGlu
ZGV4LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xib29sZWFuKiBk
YXRhKSAvLyBOT0xJTlQKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldE11bHRpc2FtcGxlZnZSb2J1c3RBTkdMRShHQ0dM
ZW51bSBwbmFtZSwgR0NHTHVpbnQgaW5kZXgsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkq
IGxlbmd0aCwgR0NHTGZsb2F0KiB2YWwpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQot
dm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRUZXhMZXZlbFBhcmFtZXRlcml2
Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBwbmFt
ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMp
Ci17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpnZXRUZXhMZXZlbFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdD
R0xzaXplaSogbGVuZ3RoLCBHQ0dMZmxvYXQqIHBhcmFtcykKLXsKLSAgICBub3RJbXBsZW1lbnRl
ZCgpOwotfQotCi12b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFBvaW50ZXJ2
Um9idXN0QU5HTEVSb2J1c3RBTkdMRShHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUs
IEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMdm9pZCoqIHBhcmFtcykKLXsKLSAgICBub3RJbXBsZW1l
bnRlZCgpOwotfQotCi12b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldG5Vbmlm
b3JtZnZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dM
c2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xmbG9hdCogcGFyYW1zKQotewot
ICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6Z2V0blVuaWZvcm1pdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xpbnQg
bG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCog
cGFyYW1zKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6Z2V0blVuaWZvcm11aXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9n
cmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5n
dGgsIEdDR0x1aW50KiBwYXJhbXMpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9p
ZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhQYXJhbWV0ZXJJaXZSb2J1c3RBTkdM
RShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29u
c3QgR0NHTGludCogcGFyYW1zKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4UGFyYW1ldGVySXVpdlJvYnVzdEFOR0xF
KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25z
dCBHQ0dMdWludCogcGFyYW1zKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VGV4UGFyYW1ldGVySWl2Um9idXN0QU5H
TEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdD
R0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQo
KTsKLX0KLQotdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRUZXhQYXJhbWV0
ZXJJdWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNp
emVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMdWludCogcGFyYW1zKQotewotICAg
IG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6c2FtcGxlclBhcmFtZXRlcklpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xl
bnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGludCogcGFyYW0pCi17Ci0g
ICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpzYW1wbGVyUGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdD
R0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTHVpbnQqIHBhcmFtKQot
ewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6Z2V0U2FtcGxlclBhcmFtZXRlcklpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBs
ZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgs
IEdDR0xpbnQqIHBhcmFtcykKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFNhbXBsZXJQYXJhbWV0ZXJJdWl2Um9idXN0
QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXpl
LCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHVpbnQqIHBhcmFtcykKLXsKLSAgICBub3RJbXBsZW1l
bnRlZCgpOwotfQotCi12b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFF1ZXJ5
T2JqZWN0aXZSb2J1c3RBTkdMRShHQ0dMdWludCBpZCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXpl
aSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1zKQotewotICAgIG5v
dEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
Z2V0UXVlcnlPYmplY3RpNjR2Um9idXN0QU5HTEUoR0NHTHVpbnQgaWQsIEdDR0xlbnVtIHBuYW1l
LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQ2NCogcGFyYW1z
KQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6Z2V0UXVlcnlPYmplY3R1aTY0dlJvYnVzdEFOR0xFKEdDR0x1aW50IGlkLCBH
Q0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dM
dWludDY0KiBwYXJhbXMpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQogfQogCiAjZW5k
aWYK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>416296</attachid>
            <date>2020-12-15 14:44:00 -0800</date>
            <delta_ts>2021-01-05 11:02:00 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-218896-20201215144359.patch</filename>
            <type>text/plain</type>
            <size>88452</size>
            <attacher name="Rini Patel">rini_patel</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwODAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWM0YTkzMGZiNjkyNGJl
MDg1NTY4ZGQ0NTIzZDliM2Y5OWI4OTJlZC4uY2UzMjI0M2JhYjQwNzZjZmM0NWFkOGUyNTJmYzdh
NDMxN2YyNWZlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyOSBAQAorMjAyMC0xMi0wNyAgUmlu
aSBQYXRlbCAgPHJpbmlfcGF0ZWxAYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZSB1bnVzZWQg
ZnVuY3Rpb25zIGZyb20gR3JhcGhpY3NDb250ZXh0R0wgYW5kIEV4dGVuc2lvbnNHTAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE4ODk2CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVtb3ZlIHVudXNlZCBm
dW5jdGlvbnMgZnJvbSBHcmFwaGljc0NvbnRleHRHTCBhbmQgRXh0ZW5zaW9uc0dMCisgICAgICAg
IFRoZXkncmUgZGVhZCBjb2RlIGFuZCBtYWtlIGl0IGhhcmRlciB0byBpbXBsZW1lbnQgdGhlIEdQ
VSBQcm9jZXNzIHZlcnNpb24uCisKKyAgICAgICAgLSBJZiB0aGUgZnVuY3Rpb24gaXMgdW51c2Vk
LCByZW1vdmUgaXQgZnVsbHkKKyAgICAgICAgLSBJZiB0aGUgZnVuY3Rpb24gaXMgdW51c2VkIGlu
IFVTRShBTkdMRSkgV2ViR0wgcGFydCwgcmVtb3ZlIHRoZSBmdW5jdGlvbiBmcm9tIEdyYXBoaWNz
Q29udGV4dEdMIGFuZCBBTkdMRSBHcmFwaGljc0NvbnRleHRHTE9wZW5HTAorCisgICAgICAgICog
aHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL0V4dGVuc2lvbnNHTC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lv
bnNHTEFOR0xFOjpFeHRlbnNpb25zR0xBTkdMRSk6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNp
b25zR0xBTkdMRTo6aW5pdGlhbGl6ZUF2YWlsYWJsZUV4dGVuc2lvbnMpOgorICAgICAgICAoV2Vi
Q29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmJsaXRGcmFtZWJ1ZmZlckFOR0xFKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpyZW5kZXJidWZmZXJTdG9yYWdl
TXVsdGlzYW1wbGVBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25z
R0xBTkdMRTo6aW5zZXJ0RXZlbnRNYXJrZXJFWFQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OnB1c2hHcm91cE1hcmtlckVYVCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6cG9wR3JvdXBNYXJrZXJFWFQpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OnJlYWRQaXhlbHNSb2J1
c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6
dGV4UGFyYW1ldGVyZnZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpF
eHRlbnNpb25zR0xBTkdMRTo6dGV4UGFyYW1ldGVyaXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6Z2V0UXVlcnlpdlJvYnVzdEFOR0xF
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpnZXRRdWVy
eU9iamVjdHVpdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVu
c2lvbnNHTEFOR0xFOjpnZXRCdWZmZXJQb2ludGVydlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpnZXRWZXJ0ZXhBdHRyaWJJaXZSb2J1
c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6
Z2V0VmVydGV4QXR0cmliSXVpdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpnZXRVbmlmb3JtdWl2Um9idXN0QU5HTEUpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldEJ1ZmZlclBhcmFtZXRl
cmk2NHZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25z
R0xBTkdMRTo6c2FtcGxlclBhcmFtZXRlcml2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OnNhbXBsZXJQYXJhbWV0ZXJmdlJvYnVzdEFO
R0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpnZXRT
YW1wbGVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpFeHRlbnNpb25zR0xBTkdMRTo6Z2V0U2FtcGxlclBhcmFtZXRlcmZ2Um9idXN0QU5HTEUpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldEZyYW1lYnVm
ZmVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpF
eHRlbnNpb25zR0xBTkdMRTo6Z2V0UHJvZ3JhbUludGVyZmFjZWl2Um9idXN0QU5HTEUpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldEJvb2xlYW5pX3ZS
b2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdM
RTo6Z2V0TXVsdGlzYW1wbGVmdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpnZXRUZXhMZXZlbFBhcmFtZXRlcml2Um9idXN0QU5HTEUp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldFRleExl
dmVsUGFyYW1ldGVyZnZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpF
eHRlbnNpb25zR0xBTkdMRTo6Z2V0UG9pbnRlcnZSb2J1c3RBTkdMRVJvYnVzdEFOR0xFKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpnZXRuVW5pZm9ybWZ2
Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5H
TEU6OmdldG5Vbmlmb3JtaXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpFeHRlbnNpb25zR0xBTkdMRTo6Z2V0blVuaWZvcm11aXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6dGV4UGFyYW1ldGVySWl2Um9i
dXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6
OnRleFBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpFeHRlbnNpb25zR0xBTkdMRTo6Z2V0VGV4UGFyYW1ldGVySWl2Um9idXN0QU5HTEUpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldFRleFBhcmFtZXRl
ckl1aXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25z
R0xBTkdMRTo6c2FtcGxlclBhcmFtZXRlcklpdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpzYW1wbGVyUGFyYW1ldGVySXVpdlJvYnVz
dEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpn
ZXRTYW1wbGVyUGFyYW1ldGVySWl2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldFNhbXBsZXJQYXJhbWV0ZXJJdWl2Um9idXN0QU5H
TEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldFF1
ZXJ5T2JqZWN0aXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRl
bnNpb25zR0xBTkdMRTo6Z2V0UXVlcnlPYmplY3RpNjR2Um9idXN0QU5HTEUpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldFF1ZXJ5T2JqZWN0dWk2NHZS
b2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUv
RXh0ZW5zaW9uc0dMQU5HTEUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wv
RXh0ZW5zaW9uc0dMT3BlbkdMLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9w
ZW5HTDo6YmxpdEZyYW1lYnVmZmVyQU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
RXh0ZW5zaW9uc0dMT3BlbkdMOjpyZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVBTkdMRSk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0w6Omluc2VydEV2
ZW50TWFya2VyRVhUKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9w
ZW5HTDo6cHVzaEdyb3VwTWFya2VyRVhUKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4
dGVuc2lvbnNHTE9wZW5HTDo6cG9wR3JvdXBNYXJrZXJFWFQpOiBEZWxldGVkLgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6cmVhZFBpeGVsc1Jv
YnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5H
TENvbW1vbjo6dGV4UGFyYW1ldGVyZnZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OnRleFBhcmFtZXRlcml2Um9idXN0QU5H
TEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9u
OjpnZXRRdWVyeWl2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0
ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRRdWVyeU9iamVjdHVpdlJvYnVzdEFOR0xFKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0QnVm
ZmVyUG9pbnRlcnZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRl
bnNpb25zR0xPcGVuR0xDb21tb246OmdldFZlcnRleEF0dHJpYklpdlJvYnVzdEFOR0xFKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0VmVy
dGV4QXR0cmliSXVpdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4
dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0VW5pZm9ybXVpdlJvYnVzdEFOR0xFKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0QnVmZmVy
UGFyYW1ldGVyaTY0dlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4
dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6c2FtcGxlclBhcmFtZXRlcml2Um9idXN0QU5HTEUpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpzYW1w
bGVyUGFyYW1ldGVyZnZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpF
eHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFNhbXBsZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xF
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6
Z2V0U2FtcGxlclBhcmFtZXRlcmZ2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRGcmFtZWJ1ZmZlclBhcmFtZXRlcml2
Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3Bl
bkdMQ29tbW9uOjpnZXRQcm9ncmFtSW50ZXJmYWNlaXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldEJvb2xlYW5pX3ZS
b2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVu
R0xDb21tb246OmdldE11bHRpc2FtcGxlZnZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFRleExldmVsUGFyYW1ldGVy
aXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xP
cGVuR0xDb21tb246OmdldFRleExldmVsUGFyYW1ldGVyZnZSb2J1c3RBTkdMRSk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFBvaW50ZXJ2
Um9idXN0QU5HTEVSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRl
bnNpb25zR0xPcGVuR0xDb21tb246OmdldG5Vbmlmb3JtZnZSb2J1c3RBTkdMRSk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldG5Vbmlmb3Jt
aXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xP
cGVuR0xDb21tb246OmdldG5Vbmlmb3JtdWl2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjp0ZXhQYXJhbWV0ZXJJaXZSb2J1
c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xD
b21tb246OnRleFBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFRleFBhcmFtZXRlcklpdlJvYnVz
dEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTENv
bW1vbjo6Z2V0VGV4UGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6c2FtcGxlclBhcmFtZXRlcklpdlJv
YnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5H
TENvbW1vbjo6c2FtcGxlclBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFNhbXBsZXJQYXJhbWV0
ZXJJaXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25z
R0xPcGVuR0xDb21tb246OmdldFNhbXBsZXJQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRRdWVy
eU9iamVjdGl2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5z
aW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRRdWVyeU9iamVjdGk2NHZSb2J1c3RBTkdMRSk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFF1ZXJ5
T2JqZWN0dWk2NHZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5oOgorICAgICAgICAoV2ViQ29y
ZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjppc05WSURJQSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmlzQU1EIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6aXNJbnRlbCBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmlzSW1hZ2luYXRpb24gY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjp2ZW5kb3Ig
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpyZXF1
aXJlc0J1aWx0SW5GdW5jdGlvbkVtdWxhdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpF
eHRlbnNpb25zR0xPcGVuR0xDb21tb246OnJlcXVpcmVzUmVzdHJpY3RlZE1heGltdW1UZXh0dXJl
U2l6ZSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lv
bnNHTE9wZW5HTEVTLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTEVT
OjpibGl0RnJhbWVidWZmZXJBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRl
bnNpb25zR0xPcGVuR0xFUzo6aW5zZXJ0RXZlbnRNYXJrZXJFWFQpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMRVM6OnB1c2hHcm91cE1hcmtlckVYVCk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xFUzo6cG9wR3JvdXBN
YXJrZXJFWFQpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9F
eHRlbnNpb25zR0xPcGVuR0xFUy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5n
bC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEJhc2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlc2hhcGVGQk9zKToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRFeHRlbnNpb25zKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb21tb24uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnZhbGlkYXRlRGVw
dGhTdGVuY2lsKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0xFUy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6Z2V0RXh0ZW5zaW9ucyk6CisKIDIwMjAtMTItMTQgIFJvYiBCdWlzICA8cmJ1aXNA
aWdhbGlhLmNvbT4KIAogICAgICAgICBNYWtlIENhY2hlUG9saWN5IGFuIGVudW0gY2xhc3MKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZS5jcHAKaW5kZXggMDEzYjg5YWY0ODg4Yjg3YzBmNjQ4ZTUyY2I1NjFjZGI5MWM1NDk3
My4uNjk5NjE2OWIyMDcyZDgzMWI4YWJhMWNmNDVkNTlhN2FkODA3MTE5ZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZS5jcHAKQEAgLTc0MCwxMCArNzQwLDYgQEAgc3RkOjp1bmlxdWVfcHRyPFdlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2U+IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmNyZWF0ZShDYW4KICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAgYXV0byYgZXh0ZW5zaW9ucyA9IGNvbnRl
eHQtPmdldEV4dGVuc2lvbnMoKTsKLSAgICBpZiAoZXh0ZW5zaW9ucy5zdXBwb3J0cygiR0xfRVhU
X2RlYnVnX21hcmtlciJfcykpCi0gICAgICAgIGV4dGVuc2lvbnMucHVzaEdyb3VwTWFya2VyRVhU
KCJXZWJHTFJlbmRlcmluZ0NvbnRleHQiX3MpOwotCiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2U+IHJlbmRlcmluZ0NvbnRleHQ7CiAjaWYgRU5BQkxFKFdFQkdM
MikKICAgICBpZiAodHlwZSA9PSAid2ViZ2wyIikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0V4dGVuc2lvbnNHTC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvRXh0ZW5zaW9uc0dMLmgKaW5kZXggZDUwMjFkZDMzNGVkZjkxYTM0MjMwYmUw
MTY4OTIwNzQyNDllYjBlOC4uYWM4Yzg4OTMyMzQ1NjcyZTlkMDUzZmNkOTdhMjJkYThlOTkwNWU4
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRXh0ZW5zaW9u
c0dMLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRXh0ZW5zaW9uc0dM
LmgKQEAgLTI4MSwxMiArMjgxLDYgQEAgcHVibGljOgogICAgIC8vIGV4dGVybmFsbHkuCiAgICAg
dmlydHVhbCBHQ0dMaW50IGdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIoKSA9IDA7CiAKLSAgICAv
LyBHTF9BTkdMRV9mcmFtZWJ1ZmZlcl9ibGl0Ci0gICAgdmlydHVhbCB2b2lkIGJsaXRGcmFtZWJ1
ZmZlckFOR0xFKEdDR0xpbnQgc3JjWDAsIEdDR0xpbnQgc3JjWTAsIEdDR0xpbnQgc3JjWDEsIEdD
R0xpbnQgc3JjWTEsIEdDR0xpbnQgZHN0WDAsIEdDR0xpbnQgZHN0WTAsIEdDR0xpbnQgZHN0WDEs
IEdDR0xpbnQgZHN0WTEsIEdDR0xiaXRmaWVsZCBtYXNrLCBHQ0dMZW51bSBmaWx0ZXIpID0gMDsK
LQotICAgIC8vIEdMX0FOR0xFX2ZyYW1lYnVmZmVyX211bHRpc2FtcGxlCi0gICAgdmlydHVhbCB2
b2lkIHJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKEdDR0xlbnVtIHRhcmdldCwg
R0NHTHNpemVpIHNhbXBsZXMsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lk
dGgsIEdDR0xzaXplaSBoZWlnaHQpID0gMDsKLQogICAgIC8vIEdMX09FU192ZXJ0ZXhfYXJyYXlf
b2JqZWN0CiAgICAgdmlydHVhbCBQbGF0Zm9ybUdMT2JqZWN0IGNyZWF0ZVZlcnRleEFycmF5T0VT
KCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkZWxldGVWZXJ0ZXhBcnJheU9FUyhQbGF0Zm9ybUdM
T2JqZWN0KSA9IDA7CkBAIC0yOTYsMTEgKzI5MCw2IEBAIHB1YmxpYzoKICAgICAvLyBHTF9BTkdM
RV90cmFuc2xhdGVkX3NoYWRlcl9zb3VyY2UKICAgICB2aXJ0dWFsIFN0cmluZyBnZXRUcmFuc2xh
dGVkU2hhZGVyU291cmNlQU5HTEUoUGxhdGZvcm1HTE9iamVjdCkgPSAwOwogCi0gICAgLy8gR0xf
RVhUX2RlYnVnX21hcmtlcgotICAgIHZpcnR1YWwgdm9pZCBpbnNlcnRFdmVudE1hcmtlckVYVChj
b25zdCBTdHJpbmcmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHB1c2hHcm91cE1hcmtlckVYVChj
b25zdCBTdHJpbmcmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHBvcEdyb3VwTWFya2VyRVhUKCkg
PSAwOwotCiAgICAgLy8gR0xfQVJCX2RyYXdfYnVmZmVycyAvIEdMX0VYVF9kcmF3X2J1ZmZlcnMK
ICAgICB2aXJ0dWFsIHZvaWQgZHJhd0J1ZmZlcnNFWFQoR0NHTFNwYW48Y29uc3QgR0NHTGVudW0+
IGJ1ZnMpID0gMDsKIApAQCAtMzA5LDQ3ICsyOTgsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2
b2lkIGRyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xzaXplaSBj
b3VudCwgR0NHTGVudW0gdHlwZSwgR0NHTHZvaWRwdHIgb2Zmc2V0LCBHQ0dMc2l6ZWkgcHJpbWNv
dW50KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRShHQ0dM
dWludCBpbmRleCwgR0NHTHVpbnQgZGl2aXNvcikgPSAwOwogCi0gICAgLy8gR0xfQU5HTEVfcm9i
dXN0X2NsaWVudF9tZW1vcnkKLSAgICB2aXJ0dWFsIHZvaWQgcmVhZFBpeGVsc1JvYnVzdEFOR0xF
KEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQs
IEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xz
aXplaSogbGVuZ3RoLCBHQ0dMc2l6ZWkqIGNvbHVtbnMsIEdDR0xzaXplaSogcm93cywgR0NHTHZv
aWQqIHBpeGVscykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCB0ZXhQYXJhbWV0ZXJmdlJvYnVzdEFO
R0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBj
b25zdCBHQ0dMZmxvYXQqIHBhcmFtcykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCB0ZXhQYXJhbWV0
ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXpl
aSBidWZTaXplLCBjb25zdCBHQ0dMaW50KiBwYXJhbXMpID0gMDsKLQotICAgIHZpcnR1YWwgdm9p
ZCBnZXRRdWVyeWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwg
R0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpID0g
MDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0UXVlcnlPYmplY3R1aXZSb2J1c3RBTkdMRShHQ0dMdWlu
dCBpZCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0
aCwgR0NHTHVpbnQqIHBhcmFtcykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRCdWZmZXJQb2lu
dGVydlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXpl
aSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHZvaWQqKiBwYXJhbXMpID0gMDsKLSAg
ICB2aXJ0dWFsIHZvaWQgZ2V0VmVydGV4QXR0cmliSWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgaW5k
ZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgs
IEdDR0xpbnQqIHBhcmFtcykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJJ
dWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkg
YnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0x1aW50KiBwYXJhbXMpID0gMDsKLSAgICB2
aXJ0dWFsIHZvaWQgZ2V0VW5pZm9ybXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdD
R0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NH
THVpbnQqIHBhcmFtcykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRCdWZmZXJQYXJhbWV0ZXJp
NjR2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVp
IGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50NjQqIHBhcmFtcykgPSAwOwotICAg
IHZpcnR1YWwgdm9pZCBzYW1wbGVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1w
bGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xpbnQqIHBh
cmFtKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHNhbXBsZXJQYXJhbWV0ZXJmdlJvYnVzdEFOR0xF
KEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29u
c3QgR0NHTGZsb2F0KiBwYXJhbSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRTYW1wbGVyUGFy
YW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NH
THNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpID0gMDsK
LSAgICB2aXJ0dWFsIHZvaWQgZ2V0U2FtcGxlclBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTHVp
bnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkq
IGxlbmd0aCwgR0NHTGZsb2F0KiBwYXJhbXMpID0gMDsKLQotICAgIHZpcnR1YWwgdm9pZCBnZXRG
cmFtZWJ1ZmZlclBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51
bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBw
YXJhbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0UHJvZ3JhbUludGVyZmFjZWl2Um9idXN0
QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGVudW0gcHJvZ3JhbUludGVyZmFjZSwgR0NHTGVu
dW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCog
cGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldEJvb2xlYW5pX3ZSb2J1c3RBTkdMRShH
Q0dMZW51bSB0YXJnZXQsIEdDR0x1aW50IGluZGV4LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNp
emVpKiBsZW5ndGgsIEdDR0xib29sZWFuKiBkYXRhKSA9IDA7IC8vIE5PTElOVAotICAgIHZpcnR1
YWwgdm9pZCBnZXRNdWx0aXNhbXBsZWZ2Um9idXN0QU5HTEUoR0NHTGVudW0gcG5hbWUsIEdDR0x1
aW50IGluZGV4LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xmbG9h
dCogdmFsKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldFRleExldmVsUGFyYW1ldGVyaXZSb2J1
c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIHBuYW1lLCBH
Q0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykgPSAw
OwotICAgIHZpcnR1YWwgdm9pZCBnZXRUZXhMZXZlbFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1
ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMZmxvYXQqIHBhcmFtcykgPSAwOwotCi0gICAg
dmlydHVhbCB2b2lkIGdldFBvaW50ZXJ2Um9idXN0QU5HTEVSb2J1c3RBTkdMRShHQ0dMZW51bSBw
bmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMdm9pZCoqIHBh
cmFtcykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRuVW5pZm9ybWZ2Um9idXN0QU5HTEUoR0NH
THVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xz
aXplaSogbGVuZ3RoLCBHQ0dMZmxvYXQqIHBhcmFtcykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBn
ZXRuVW5pZm9ybWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlv
biwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMp
ID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0blVuaWZvcm11aXZSb2J1c3RBTkdMRShHQ0dMdWlu
dCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVp
KiBsZW5ndGgsIEdDR0x1aW50KiBwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgdGV4UGFy
YW1ldGVySWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NH
THNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xpbnQqIHBhcmFtcykgPSAwOwotICAgIHZpcnR1YWwg
dm9pZCB0ZXhQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51
bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0x1aW50KiBwYXJhbXMpID0gMDsK
LSAgICB2aXJ0dWFsIHZvaWQgZ2V0VGV4UGFyYW1ldGVySWl2Um9idXN0QU5HTEUoR0NHTGVudW0g
dGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVu
Z3RoLCBHQ0dMaW50KiBwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0VGV4UGFyYW1l
dGVySXVpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xz
aXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHVpbnQqIHBhcmFtcykgPSAwOwot
ICAgIHZpcnR1YWwgdm9pZCBzYW1wbGVyUGFyYW1ldGVySWl2Um9idXN0QU5HTEUoR0NHTHVpbnQg
c2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMaW50
KiBwYXJhbSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBzYW1wbGVyUGFyYW1ldGVySXVpdlJvYnVz
dEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6
ZSwgY29uc3QgR0NHTHVpbnQqIHBhcmFtKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldFNhbXBs
ZXJQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFt
ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMp
ID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0U2FtcGxlclBhcmFtZXRlckl1aXZSb2J1c3RBTkdM
RShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdD
R0xzaXplaSogbGVuZ3RoLCBHQ0dMdWludCogcGFyYW1zKSA9IDA7Ci0KLSAgICB2aXJ0dWFsIHZv
aWQgZ2V0UXVlcnlPYmplY3RpdlJvYnVzdEFOR0xFKEdDR0x1aW50IGlkLCBHQ0dMZW51bSBwbmFt
ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMp
ID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0UXVlcnlPYmplY3RpNjR2Um9idXN0QU5HTEUoR0NH
THVpbnQgaWQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBs
ZW5ndGgsIEdDR0xpbnQ2NCogcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldFF1ZXJ5
T2JqZWN0dWk2NHZSb2J1c3RBTkdMRShHQ0dMdWludCBpZCwgR0NHTGVudW0gcG5hbWUsIEdDR0xz
aXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHVpbnQ2NCogcGFyYW1zKSA9IDA7
Ci0KICAgICAvLyBPdGhlciBmdW5jdGlvbnMuCiAjaWYgIVVTRShBTkdMRSkKICAgICAvLyBFWFQg
Um9idXN0bmVzcyAtIHVzZXMgZ2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQgpAQCAtMzU3LDE2ICsz
MDUsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGdldG5Vbmlmb3JtZnZFWFQoR0NHTHVp
bnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xmbG9h
dCogcGFyYW1zKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGdldG5Vbmlmb3JtaXZFWFQoR0NHTHVp
bnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xpbnQq
IHBhcmFtcykgPSAwOwogCi0gICAgdmlydHVhbCBib29sIGlzTlZJRElBKCkgPSAwOwotICAgIHZp
cnR1YWwgYm9vbCBpc0FNRCgpID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgaXNJbnRlbCgpID0gMDsK
LSAgICB2aXJ0dWFsIGJvb2wgaXNJbWFnaW5hdGlvbigpID0gMDsKLSAgICB2aXJ0dWFsIFN0cmlu
ZyB2ZW5kb3IoKSA9IDA7Ci0KLSAgICAvLyBTb21lIGNvbmZpZ3VyYXRpb25zIGhhdmUgYnVncyBy
ZWdhcmRpbmcgYnVpbHQtaW4gZnVuY3Rpb25zIGluIHRoZWlyIE9wZW5HTCBkcml2ZXJzCi0gICAg
Ly8gdGhhdCBtdXN0IGJlIGF2b2lkZWQuIFBvcnRzIHNob3VsZCBpbXBsZW1lbnQgdGhlc2UgZmxh
Z3Mgb24gc3VjaCBjb25maWd1cmF0aW9ucy4KLSAgICB2aXJ0dWFsIGJvb2wgcmVxdWlyZXNCdWls
dEluRnVuY3Rpb25FbXVsYXRpb24oKSA9IDA7Ci0gICAgdmlydHVhbCBib29sIHJlcXVpcmVzUmVz
dHJpY3RlZE1heGltdW1UZXh0dXJlU2l6ZSgpID0gMDsKICNlbmRpZgogCiB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eUJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuY3BwCmluZGV4IDYwZjdhOTQ3ZWZjYmIzNzE1NmMw
OThlMGI1ZWUzM2MzYjYyYjg0OWIuLjQ1YmNjMWViYzRlZmUxZTM0YTQ4NGQ2YzVlMGMyZGZmYmRi
MzVmNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5jcHAKQEAgLTE2
Miw0MSArMTYyLDYgQEAgdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6Z2V0
blVuaWZvcm1mdkVYVChHQ0dMdWludCwgR0NHTGludCwgR0NHTHMKIHZvaWQgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eUJhc2U6OmdldG5Vbmlmb3JtaXZFWFQoR0NHTHVpbnQsIEdDR0xpbnQs
IEdDR0xzaXplaSwgR0NHTGludCopCiB7CiB9Ci0KLWJvb2wgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eUJhc2U6OmlzTlZJRElBKCkKLXsKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLWJvb2wg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OmlzQU1EKCkKLXsKLSAgICByZXR1cm4g
ZmFsc2U7Ci19Ci0KLWJvb2wgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OmlzSW50
ZWwoKQotewotICAgIHJldHVybiBmYWxzZTsKLX0KLQotYm9vbCBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5QmFzZTo6aXNJbWFnaW5hdGlvbigpCi17Ci0gICAgcmV0dXJuIGZhbHNlOwotfQot
Ci1TdHJpbmcgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OnZlbmRvcigpCi17Ci0g
ICAgcmV0dXJuIHsgfTsKLX0KLQotYm9vbCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFz
ZTo6cmVxdWlyZXNCdWlsdEluRnVuY3Rpb25FbXVsYXRpb24oKQotewotICAgIHJldHVybiBmYWxz
ZTsKLX0KLQotYm9vbCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6cmVxdWlyZXNS
ZXN0cmljdGVkTWF4aW11bVRleHR1cmVTaXplKCkKLXsKLSAgICByZXR1cm4gZmFsc2U7Ci19CiAj
ZW5kaWYKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmgKaW5k
ZXggNzI2YWFmNmM2YTBmNjJmZjI4MmU1YjhkMjAyYTEyOTRlMWRlODU3MS4uYTM3M2VmMmI0NzU2
Yjg5YTkxNmE5ODQ3MzRlZjVmNWYwNzRiZDY1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5QmFzZS5oCkBAIC04MSwxNyArODEsOSBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0VuYWJs
ZWQoY29uc3QgU3RyaW5nJikgZmluYWw7CiAKICNpZiAhVVNFKEFOR0xFKQotICAgIC8vIEZJWE1F
OiBUaGVzZSBhcmUgc3VwcG9zZWQgdG8gYmUgcmVtb3ZlZCBpbiBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE4ODk2LgogICAgIHZvaWQgcmVhZG5QaXhlbHNFWFQoR0NH
TGludCwgR0NHTGludCwgR0NHTHNpemVpLCBHQ0dMc2l6ZWksIEdDR0xlbnVtLCBHQ0dMZW51bSwg
R0NHTHNpemVpLCBHQ0dMdm9pZCopIGZpbmFsOwogICAgIHZvaWQgZ2V0blVuaWZvcm1mdkVYVChH
Q0dMdWludCwgR0NHTGludCwgR0NHTHNpemVpLCBHQ0dMZmxvYXQqKSBmaW5hbDsKICAgICB2b2lk
IGdldG5Vbmlmb3JtaXZFWFQoR0NHTHVpbnQsIEdDR0xpbnQsIEdDR0xzaXplaSwgR0NHTGludCop
IGZpbmFsOwotICAgIGJvb2wgaXNOVklESUEoKSBmaW5hbDsKLSAgICBib29sIGlzQU1EKCkgZmlu
YWw7Ci0gICAgYm9vbCBpc0ludGVsKCkgZmluYWw7Ci0gICAgYm9vbCBpc0ltYWdpbmF0aW9uKCkg
ZmluYWw7Ci0gICAgU3RyaW5nIHZlbmRvcigpIGZpbmFsOwotICAgIGJvb2wgcmVxdWlyZXNCdWls
dEluRnVuY3Rpb25FbXVsYXRpb24oKSBmaW5hbDsKLSAgICBib29sIHJlcXVpcmVzUmVzdHJpY3Rl
ZE1heGltdW1UZXh0dXJlU2l6ZSgpIGZpbmFsOwogI2VuZGlmCiAKIHByb3RlY3RlZDoKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0V4dGVuc2lvbnNH
TEFOR0xFLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0V4dGVu
c2lvbnNHTEFOR0xFLmNwcAppbmRleCA5MjBkOTJmMzVjYWRkOGJiMDg1MjNkMTc2NTc1NDEyMDk3
ZjZjOTZmLi5mNTQwYWIzY2E4NTBiMWYyN2NjNjJlZTk2NGNmMDRlMWQ4MTVlOGFhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRlbnNpb25zR0xB
TkdMRS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvRXh0
ZW5zaW9uc0dMQU5HTEUuY3BwCkBAIC0zMywxMCArMzMsOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLUV4dGVuc2lvbnNHTEFOR0xFOjpFeHRlbnNpb25zR0xBTkdMRShHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTCogY29udGV4dCwgYm9vbCB1c2VJbmRleGVkR2V0U3RyaW5nKQorRXh0ZW5zaW9u
c0dMQU5HTEU6OkV4dGVuc2lvbnNHTEFOR0xFKEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiBjb250
ZXh0KQogICAgIDogbV9pbml0aWFsaXplZEF2YWlsYWJsZUV4dGVuc2lvbnMoZmFsc2UpCiAgICAg
LCBtX2NvbnRleHQoY29udGV4dCkKLSAgICAsIG1fdXNlSW5kZXhlZEdldFN0cmluZyh1c2VJbmRl
eGVkR2V0U3RyaW5nKQogewogfQogCkBAIC05OSw0MiArOTgsMTUgQEAgU3RyaW5nIEV4dGVuc2lv
bnNHTEFOR0xFOjpnZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUoUGxhdGZvcm1HTE9iamVj
dCBzaGFkZXIKIAogdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6aW5pdGlhbGl6ZUF2YWlsYWJsZUV4
dGVuc2lvbnMoKQogewotICAgIGlmIChtX3VzZUluZGV4ZWRHZXRTdHJpbmcpIHsKLSAgICAgICAg
R0xpbnQgbnVtRXh0ZW5zaW9ucyA9IDA7Ci0gICAgICAgIGdsOjpHZXRJbnRlZ2VydihHTF9OVU1f
RVhURU5TSU9OUywgJm51bUV4dGVuc2lvbnMpOwotICAgICAgICBmb3IgKEdMaW50IGkgPSAwOyBp
IDwgbnVtRXh0ZW5zaW9uczsgKytpKQotICAgICAgICAgICAgbV9hdmFpbGFibGVFeHRlbnNpb25z
LmFkZChnbDo6R2V0U3RyaW5naShHTF9FWFRFTlNJT05TLCBpKSk7Ci0gICAgICAgIGdsOjpHZXRJ
bnRlZ2VydihHTF9OVU1fUkVRVUVTVEFCTEVfRVhURU5TSU9OU19BTkdMRSwgJm51bUV4dGVuc2lv
bnMpOwotICAgICAgICBmb3IgKEdMaW50IGkgPSAwOyBpIDwgbnVtRXh0ZW5zaW9uczsgKytpKQot
ICAgICAgICAgICAgbV9yZXF1ZXN0YWJsZUV4dGVuc2lvbnMuYWRkKGdsOjpHZXRTdHJpbmdpKEdM
X1JFUVVFU1RBQkxFX0VYVEVOU0lPTlNfQU5HTEUsIGkpKTsKLSAgICB9IGVsc2UgewotICAgICAg
ICBTdHJpbmcgZXh0ZW5zaW9uc1N0cmluZyA9IGdldEV4dGVuc2lvbnMoKTsKLSAgICAgICAgZm9y
IChhdXRvJiBleHRlbnNpb24gOiBleHRlbnNpb25zU3RyaW5nLnNwbGl0KCcgJykpCi0gICAgICAg
ICAgICBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuYWRkKGV4dGVuc2lvbik7Ci0gICAgICAgIGV4dGVu
c2lvbnNTdHJpbmcgPSBTdHJpbmcocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZ2w6Okdl
dFN0cmluZyhHTF9SRVFVRVNUQUJMRV9FWFRFTlNJT05TX0FOR0xFKSkpOwotICAgICAgICBmb3Ig
KGF1dG8mIGV4dGVuc2lvbiA6IGV4dGVuc2lvbnNTdHJpbmcuc3BsaXQoJyAnKSkKLSAgICAgICAg
ICAgIG1fcmVxdWVzdGFibGVFeHRlbnNpb25zLmFkZChleHRlbnNpb24pOwotICAgIH0KKyAgICBT
dHJpbmcgZXh0ZW5zaW9uc1N0cmluZyA9IGdldEV4dGVuc2lvbnMoKTsKKyAgICBmb3IgKGF1dG8m
IGV4dGVuc2lvbiA6IGV4dGVuc2lvbnNTdHJpbmcuc3BsaXQoJyAnKSkKKyAgICAgICAgbV9hdmFp
bGFibGVFeHRlbnNpb25zLmFkZChleHRlbnNpb24pOworICAgIGV4dGVuc2lvbnNTdHJpbmcgPSBT
dHJpbmcocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZ2w6OkdldFN0cmluZyhHTF9SRVFV
RVNUQUJMRV9FWFRFTlNJT05TX0FOR0xFKSkpOworICAgIGZvciAoYXV0byYgZXh0ZW5zaW9uIDog
ZXh0ZW5zaW9uc1N0cmluZy5zcGxpdCgnICcpKQorICAgICAgICBtX3JlcXVlc3RhYmxlRXh0ZW5z
aW9ucy5hZGQoZXh0ZW5zaW9uKTsKICAgICBtX2luaXRpYWxpemVkQXZhaWxhYmxlRXh0ZW5zaW9u
cyA9IHRydWU7CiB9CiAKLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmJsaXRGcmFtZWJ1ZmZlckFO
R0xFKEdDR0xpbnQgc3JjWDAsIEdDR0xpbnQgc3JjWTAsIEdDR0xpbnQgc3JjWDEsIEdDR0xpbnQg
c3JjWTEsIEdDR0xpbnQgZHN0WDAsIEdDR0xpbnQgZHN0WTAsIEdDR0xpbnQgZHN0WDEsIEdDR0xp
bnQgZHN0WTEsIEdDR0xiaXRmaWVsZCBtYXNrLCBHQ0dMZW51bSBmaWx0ZXIpCi17Ci0gICAgLy8g
RklYTUU6IGNvbnNpZGVyIGFkZGluZyBzdXBwb3J0IGZvciBBUFBMRV9mcmFtZWJ1ZmZlcl9tdWx0
aXNhbXBsZS4KLSAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAg
ICAgIHJldHVybjsKLQotICAgIGdsOjpCbGl0RnJhbWVidWZmZXJBTkdMRShzcmNYMCwgc3JjWTAs
IHNyY1gxLCBzcmNZMSwgZHN0WDAsIGRzdFkwLCBkc3RYMSwgZHN0WTEsIG1hc2ssIGZpbHRlcik7
Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OnJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNh
bXBsZUFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVpIHNhbXBsZXMsIEdDR0xlbnVtIGlu
dGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQpCi17Ci0gICAg
aWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0K
LSAgICBnbDo6UmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5HTEUodGFyZ2V0LCBzYW1w
bGVzLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCk7Ci19Ci0KIFBsYXRmb3JtR0xPYmpl
Y3QgRXh0ZW5zaW9uc0dMQU5HTEU6OmNyZWF0ZVZlcnRleEFycmF5T0VTKCkKIHsKICAgICBpZiAo
IW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCkBAIC0xNzUsMjQgKzE0Nyw2IEBAIHZv
aWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmJpbmRWZXJ0ZXhBcnJheU9FUyhQbGF0Zm9ybUdMT2JqZWN0
IGFycmF5KQogICAgIGdsOjpCaW5kVmVydGV4QXJyYXlPRVMoYXJyYXkpOwogfQogCi12b2lkIEV4
dGVuc2lvbnNHTEFOR0xFOjppbnNlcnRFdmVudE1hcmtlckVYVChjb25zdCBTdHJpbmcmKQotewot
ICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQgdGhpcyBmdW5jdGlvbiBhbmQgYWRkIEdMX0VYVF9kZWJ1
Z19tYXJrZXIgaW4gc3VwcG9ydHMoKS4KLSAgICByZXR1cm47Ci19Ci0KLXZvaWQgRXh0ZW5zaW9u
c0dMQU5HTEU6OnB1c2hHcm91cE1hcmtlckVYVChjb25zdCBTdHJpbmcmKQotewotICAgIC8vIEZJ
WE1FOiBpbXBsZW1lbnQgdGhpcyBmdW5jdGlvbiBhbmQgYWRkIEdMX0VYVF9kZWJ1Z19tYXJrZXIg
aW4gc3VwcG9ydHMoKS4KLSAgICByZXR1cm47Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6
OnBvcEdyb3VwTWFya2VyRVhUKHZvaWQpCi17Ci0gICAgLy8gRklYTUU6IGltcGxlbWVudCB0aGlz
IGZ1bmN0aW9uIGFuZCBhZGQgR0xfRVhUX2RlYnVnX21hcmtlciBpbiBzdXBwb3J0cygpLgotICAg
IHJldHVybjsKLX0KLQogYm9vbCBFeHRlbnNpb25zR0xBTkdMRTo6c3VwcG9ydHNFeHRlbnNpb24o
Y29uc3QgU3RyaW5nJiBuYW1lKQogewogICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMu
Y29udGFpbnMobmFtZSkgfHwgbV9yZXF1ZXN0YWJsZUV4dGVuc2lvbnMuY29udGFpbnMobmFtZSk7
CkBAIC0yNDgsMjkxICsyMDIsNiBAQCBHQ0dMZW51bSBFeHRlbnNpb25zR0xBTkdMRTo6YWRqdXN0
V2ViR0wxVGV4dHVyZUludGVybmFsRm9ybWF0KEdDR0xlbnVtIGludGVybmFsZgogICAgIHJldHVy
biBpbnRlcm5hbGZvcm1hdDsKIH0KIAotLy8gR0xfQU5HTEVfcm9idXN0X2NsaWVudF9tZW1vcnkK
LXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OnJlYWRQaXhlbHNSb2J1c3RBTkdMRShpbnQgeCwgaW50
IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBH
Q0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xz
aXplaSAqY29sdW1ucywgR0NHTHNpemVpICpyb3dzLCB2b2lkICpwaXhlbHMpCi17Ci0gICAgaWYg
KCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAg
ICBnbDo6UmVhZFBpeGVsc1JvYnVzdEFOR0xFKHgsIHksIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwg
dHlwZSwgYnVmU2l6ZSwgbGVuZ3RoLCBjb2x1bW5zLCByb3dzLCBwaXhlbHMpOwotfQotCi12b2lk
IEV4dGVuc2lvbnNHTEFOR0xFOjp0ZXhQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRh
cmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMZmxvYXQg
KnBhcmFtcykKLXsKLSAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0g
ICAgICAgIHJldHVybjsKLQotICAgIGdsOjpUZXhQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKHRhcmdl
dCwgcG5hbWUsIGJ1ZlNpemUsIHBhcmFtcyk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6
OnRleFBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFt
ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xpbnQgKnBhcmFtcykKLXsKLSAgICBpZiAo
IW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAg
IGdsOjpUZXhQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKHRhcmdldCwgcG5hbWUsIGJ1ZlNpemUsIHBh
cmFtcyk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldFF1ZXJ5aXZSb2J1c3RBTkdM
RShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NH
THNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykKLXsKLSAgICBpZiAoIW1fY29udGV4dC0+
bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpHZXRRdWVy
eWl2Um9idXN0QU5HTEUodGFyZ2V0LCBwbmFtZSwgYnVmU2l6ZSwgbGVuZ3RoLCBwYXJhbXMpOwot
fQotCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRRdWVyeU9iamVjdHVpdlJvYnVzdEFOR0xF
KEdDR0x1aW50IGlkLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXpl
aSAqbGVuZ3RoLCBHQ0dMdWludCAqcGFyYW1zKQotewotICAgIGlmICghbV9jb250ZXh0LT5tYWtl
Q29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OkdldFF1ZXJ5T2Jq
ZWN0dWl2Um9idXN0QU5HTEUoaWQsIHBuYW1lLCBidWZTaXplLCBsZW5ndGgsIHBhcmFtcyk7Ci19
Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldEJ1ZmZlclBvaW50ZXJ2Um9idXN0QU5HTEUo
R0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xz
aXplaSAqbGVuZ3RoLCB2b2lkICoqcGFyYW1zKQotewotICAgIGlmICghbV9jb250ZXh0LT5tYWtl
Q29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OkdldEJ1ZmZlclBv
aW50ZXJ2Um9idXN0QU5HTEUodGFyZ2V0LCBwbmFtZSwgYnVmU2l6ZSwgbGVuZ3RoLCBwYXJhbXMp
OwotfQotCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRWZXJ0ZXhBdHRyaWJJaXZSb2J1c3RB
TkdMRShHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBH
Q0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKQotewotICAgIGlmICghbV9jb250ZXh0
LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OkdldFZl
cnRleEF0dHJpYklpdlJvYnVzdEFOR0xFKGluZGV4LCBwbmFtZSwgYnVmU2l6ZSwgbGVuZ3RoLCBw
YXJhbXMpOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRWZXJ0ZXhBdHRyaWJJdWl2
Um9idXN0QU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVm
U2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0x1aW50ICpwYXJhbXMpCi17Ci0gICAgaWYgKCFt
X2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBn
bDo6R2V0VmVydGV4QXR0cmliSXVpdlJvYnVzdEFOR0xFKGluZGV4LCBwbmFtZSwgYnVmU2l6ZSwg
bGVuZ3RoLCBwYXJhbXMpOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRVbmlmb3Jt
dWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNp
emVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMdWludCAqcGFyYW1zKQotewotICAg
IGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwot
Ci0gICAgZ2w6OkdldFVuaWZvcm11aXZSb2J1c3RBTkdMRShwcm9ncmFtLCBsb2NhdGlvbiwgYnVm
U2l6ZSwgbGVuZ3RoLCBwYXJhbXMpOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRC
dWZmZXJQYXJhbWV0ZXJpNjR2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBw
bmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50NjQgKnBh
cmFtcykKLXsKLSAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAg
ICAgIHJldHVybjsKLQotICAgIGdsOjpHZXRCdWZmZXJQYXJhbWV0ZXJpNjR2Um9idXN0QU5HTEUo
dGFyZ2V0LCBwbmFtZSwgYnVmU2l6ZSwgbGVuZ3RoLCByZWludGVycHJldF9jYXN0PEdMaW50NjQq
PihwYXJhbXMpKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6c2FtcGxlclBhcmFtZXRl
cml2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXpl
aSBidWZTaXplLCBjb25zdCBHQ0dMaW50ICpwYXJhbSkKLXsKLSAgICBpZiAoIW1fY29udGV4dC0+
bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpTYW1wbGVy
UGFyYW1ldGVyaXZSb2J1c3RBTkdMRShzYW1wbGVyLCBwbmFtZSwgYnVmU2l6ZSwgcGFyYW0pOwot
fQotCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpzYW1wbGVyUGFyYW1ldGVyZnZSb2J1c3RBTkdM
RShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNv
bnN0IEdDR0xmbG9hdCAqcGFyYW0pCi17Ci0gICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0
Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6U2FtcGxlclBhcmFtZXRlcmZ2
Um9idXN0QU5HTEUoc2FtcGxlciwgcG5hbWUsIGJ1ZlNpemUsIHBhcmFtKTsKLX0KLQotdm9pZCBF
eHRlbnNpb25zR0xBTkdMRTo6Z2V0U2FtcGxlclBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTHVp
bnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkg
Kmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKQotewotICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29u
dGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OkdldFNhbXBsZXJQYXJh
bWV0ZXJpdlJvYnVzdEFOR0xFKHNhbXBsZXIsIHBuYW1lLCBidWZTaXplLCBsZW5ndGgsIHBhcmFt
cyk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldFNhbXBsZXJQYXJhbWV0ZXJmdlJv
YnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVm
U2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xmbG9hdCAqcGFyYW1zKQotewotICAgIGlmICgh
bV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAg
Z2w6OkdldFNhbXBsZXJQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKHNhbXBsZXIsIHBuYW1lLCBidWZT
aXplLCBsZW5ndGgsIHBhcmFtcyk7Ci19Ci0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0
RnJhbWVidWZmZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVu
dW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAq
cGFyYW1zKQotewotICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAg
ICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OkdldEZyYW1lYnVmZmVyUGFyYW1ldGVyaXZSb2J1c3RB
TkdMRSh0YXJnZXQsIHBuYW1lLCBidWZTaXplLCBsZW5ndGgsIHBhcmFtcyk7Ci19Ci0KLXZvaWQg
RXh0ZW5zaW9uc0dMQU5HTEU6OmdldFByb2dyYW1JbnRlcmZhY2VpdlJvYnVzdEFOR0xFKEdDR0x1
aW50IHByb2dyYW0sIEdDR0xlbnVtIHByb2dyYW1JbnRlcmZhY2UsIEdDR0xlbnVtIHBuYW1lLCBH
Q0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykKLXsK
LSAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVy
bjsKLQotICAgIGdsOjpHZXRQcm9ncmFtSW50ZXJmYWNlaXZSb2J1c3RBTkdMRShwcm9ncmFtLCBw
cm9ncmFtSW50ZXJmYWNlLCBwbmFtZSwgYnVmU2l6ZSwgbGVuZ3RoLCBwYXJhbXMpOwotfQotCi12
b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRCb29sZWFuaV92Um9idXN0QU5HTEUoR0NHTGVudW0g
dGFyZ2V0LCBHQ0dMdWludCBpbmRleCwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVu
Z3RoLCBHQ0dMYm9vbGVhbiAqZGF0YSkKLXsKLSAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRl
eHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpHZXRCb29sZWFuaV92Um9i
dXN0QU5HTEUodGFyZ2V0LCBpbmRleCwgYnVmU2l6ZSwgbGVuZ3RoLCBkYXRhKTsKLX0KLQotdm9p
ZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0TXVsdGlzYW1wbGVmdlJvYnVzdEFOR0xFKEdDR0xlbnVt
IHBuYW1lLCBHQ0dMdWludCBpbmRleCwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVu
Z3RoLCBHQ0dMZmxvYXQgKnZhbCkKLXsKLSAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRD
dXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpHZXRNdWx0aXNhbXBsZWZ2Um9i
dXN0QU5HTEUocG5hbWUsIGluZGV4LCBidWZTaXplLCBsZW5ndGgsIHZhbCk7Ci19Ci0KLXZvaWQg
RXh0ZW5zaW9uc0dMQU5HTEU6OmdldFRleExldmVsUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVm
U2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykKLXsKLSAgICBpZiAoIW1f
Y29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGds
OjpHZXRUZXhMZXZlbFBhcmFtZXRlcml2Um9idXN0QU5HTEUodGFyZ2V0LCBsZXZlbCwgcG5hbWUs
IGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1zKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6
Z2V0VGV4TGV2ZWxQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGlu
dCBsZXZlbCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxl
bmd0aCwgR0NHTGZsb2F0ICpwYXJhbXMpCi17Ci0gICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250
ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6R2V0VGV4TGV2ZWxQYXJh
bWV0ZXJmdlJvYnVzdEFOR0xFKHRhcmdldCwgbGV2ZWwsIHBuYW1lLCBidWZTaXplLCBsZW5ndGgs
IHBhcmFtcyk7Ci19Ci0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0UG9pbnRlcnZSb2J1
c3RBTkdMRVJvYnVzdEFOR0xFKEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NH
THNpemVpICpsZW5ndGgsIHZvaWQgKipwYXJhbXMpCi17Ci0gICAgaWYgKCFtX2NvbnRleHQtPm1h
a2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6R2V0UG9pbnRl
cnZSb2J1c3RBTkdMRVJvYnVzdEFOR0xFKHBuYW1lLCBidWZTaXplLCBsZW5ndGgsIHBhcmFtcyk7
Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldG5Vbmlmb3JtZnZSb2J1c3RBTkdMRShH
Q0dMdWludCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NH
THNpemVpICpsZW5ndGgsIEdDR0xmbG9hdCAqcGFyYW1zKQotewotICAgIGlmICghbV9jb250ZXh0
LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OkdldG5V
bmlmb3JtZnZSb2J1c3RBTkdMRShwcm9ncmFtLCBsb2NhdGlvbiwgYnVmU2l6ZSwgbGVuZ3RoLCBw
YXJhbXMpOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRuVW5pZm9ybWl2Um9idXN0
QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNp
emUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpCi17Ci0gICAgaWYgKCFtX2Nv
bnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6
R2V0blVuaWZvcm1pdlJvYnVzdEFOR0xFKHByb2dyYW0sIGxvY2F0aW9uLCBidWZTaXplLCBsZW5n
dGgsIHBhcmFtcyk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldG5Vbmlmb3JtdWl2
Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVp
IGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMdWludCAqcGFyYW1zKQotewotICAgIGlm
ICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0g
ICAgZ2w6OkdldG5Vbmlmb3JtdWl2Um9idXN0QU5HTEUocHJvZ3JhbSwgbG9jYXRpb24sIGJ1ZlNp
emUsIGxlbmd0aCwgcGFyYW1zKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6dGV4UGFy
YW1ldGVySWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NH
THNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xpbnQgKnBhcmFtcykKLXsKLSAgICBpZiAoIW1fY29u
dGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpU
ZXhQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRSh0YXJnZXQsIHBuYW1lLCBidWZTaXplLCBwYXJhbXMp
OwotfQotCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjp0ZXhQYXJhbWV0ZXJJdWl2Um9idXN0QU5H
TEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNv
bnN0IEdDR0x1aW50ICpwYXJhbXMpCi17Ci0gICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0
Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6VGV4UGFyYW1ldGVySXVpdlJv
YnVzdEFOR0xFKHRhcmdldCwgcG5hbWUsIGJ1ZlNpemUsIHBhcmFtcyk7Ci19Ci0KLXZvaWQgRXh0
ZW5zaW9uc0dMQU5HTEU6OmdldFRleFBhcmFtZXRlcklpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRh
cmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0
aCwgR0NHTGludCAqcGFyYW1zKQotewotICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1
cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OkdldFRleFBhcmFtZXRlcklpdlJv
YnVzdEFOR0xFKHRhcmdldCwgcG5hbWUsIGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1zKTsKLX0KLQot
dm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0VGV4UGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFKEdD
R0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6
ZWkgKmxlbmd0aCwgR0NHTHVpbnQgKnBhcmFtcykKLXsKLSAgICBpZiAoIW1fY29udGV4dC0+bWFr
ZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpHZXRUZXhQYXJh
bWV0ZXJJdWl2Um9idXN0QU5HTEUodGFyZ2V0LCBwbmFtZSwgYnVmU2l6ZSwgbGVuZ3RoLCBwYXJh
bXMpOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpzYW1wbGVyUGFyYW1ldGVySWl2Um9i
dXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZT
aXplLCBjb25zdCBHQ0dMaW50ICpwYXJhbSkKLXsKLSAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNv
bnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpTYW1wbGVyUGFyYW1l
dGVySWl2Um9idXN0QU5HTEUoc2FtcGxlciwgcG5hbWUsIGJ1ZlNpemUsIHBhcmFtKTsKLX0KLQot
dm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6c2FtcGxlclBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRShH
Q0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0
IEdDR0x1aW50ICpwYXJhbSkKLXsKLSAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJy
ZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpTYW1wbGVyUGFyYW1ldGVySXVpdlJv
YnVzdEFOR0xFKHNhbXBsZXIsIHBuYW1lLCBidWZTaXplLCBwYXJhbSk7Ci19Ci0KLXZvaWQgRXh0
ZW5zaW9uc0dMQU5HTEU6OmdldFNhbXBsZXJQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRShHQ0dMdWlu
dCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAq
bGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpCi17Ci0gICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250
ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6R2V0U2FtcGxlclBhcmFt
ZXRlcklpdlJvYnVzdEFOR0xFKHNhbXBsZXIsIHBuYW1lLCBidWZTaXplLCBsZW5ndGgsIHBhcmFt
cyk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldFNhbXBsZXJQYXJhbWV0ZXJJdWl2
Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBi
dWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHVpbnQgKnBhcmFtcykKLXsKLSAgICBpZiAo
IW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAg
IGdsOjpHZXRTYW1wbGVyUGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFKHNhbXBsZXIsIHBuYW1lLCBi
dWZTaXplLCBsZW5ndGgsIHBhcmFtcyk7Ci19Ci0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6
Z2V0UXVlcnlPYmplY3RpdlJvYnVzdEFOR0xFKEdDR0x1aW50IGlkLCBHQ0dMZW51bSBwbmFtZSwg
R0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpCi17
Ci0gICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1
cm47Ci0KLSAgICBnbDo6R2V0UXVlcnlPYmplY3RpdlJvYnVzdEFOR0xFKGlkLCBwbmFtZSwgYnVm
U2l6ZSwgbGVuZ3RoLCBwYXJhbXMpOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRR
dWVyeU9iamVjdGk2NHZSb2J1c3RBTkdMRShHQ0dMdWludCBpZCwgR0NHTGVudW0gcG5hbWUsIEdD
R0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludDY0ICpwYXJhbXMpCi17
Ci0gICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1
cm47Ci0KLSAgICBnbDo6R2V0UXVlcnlPYmplY3RpNjR2Um9idXN0QU5HTEUoaWQsIHBuYW1lLCBi
dWZTaXplLCBsZW5ndGgsIHJlaW50ZXJwcmV0X2Nhc3Q8R0xpbnQ2NCo+KHBhcmFtcykpOwotfQot
Ci12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRRdWVyeU9iamVjdHVpNjR2Um9idXN0QU5HTEUo
R0NHTHVpbnQgaWQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVp
ICpsZW5ndGgsIEdDR0x1aW50NjQgKnBhcmFtcykKLXsKLSAgICBpZiAoIW1fY29udGV4dC0+bWFr
ZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpHZXRRdWVyeU9i
amVjdHVpNjR2Um9idXN0QU5HTEUoaWQsIHBuYW1lLCBidWZTaXplLCBsZW5ndGgsIHJlaW50ZXJw
cmV0X2Nhc3Q8R0x1aW50NjQqPihwYXJhbXMpKTsKLX0KLQotCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoV0VCR0wpICYmIFVTRShBTkdMRSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xF
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRlbnNpb25zR0xB
TkdMRS5oCmluZGV4IGIyZDI3N2I5YWM5ZDI3ODYwZjU1YWJhYmY4Y2ZlNTVlODRiNWY1N2UuLjAw
NDIzMzc3MjAzNGJmYTNlYWMxMzdkYzM2MzQ4MDkxNmRlYWFmN2EgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvRXh0ZW5zaW9uc0dMQU5H
TEUuaApAQCAtMzYsNyArMzYsNyBAQCBjbGFzcyBFeHRlbnNpb25zR0xBTkdMRSA6IHB1YmxpYyBF
eHRlbnNpb25zR0wgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAg
IC8vIFRoaXMgY2xhc3Mgb25seSBuZWVkcyB0byBiZSBpbnN0YW50aWF0ZWQgYnkgR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0wgaW1wbGVtZW50YXRpb25zLgotICAgIEV4dGVuc2lvbnNHTEFOR0xFKEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMKiwgYm9vbCB1c2VJbmRleGVkR2V0U3RyaW5nID0gZmFsc2Up
OworICAgIGV4cGxpY2l0IEV4dGVuc2lvbnNHTEFOR0xFKEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
Kik7CiAgICAgdmlydHVhbCB+RXh0ZW5zaW9uc0dMQU5HTEUoKTsKIAogICAgIC8vIEV4dGVuc2lv
bnNHTCBtZXRob2RzLgpAQCAtNDksNjAgKzQ5LDE0IEBAIHB1YmxpYzoKICAgICB2b2lkIGRlbGV0
ZVZlcnRleEFycmF5T0VTKFBsYXRmb3JtR0xPYmplY3QpIG92ZXJyaWRlOwogICAgIEdDR0xib29s
ZWFuIGlzVmVydGV4QXJyYXlPRVMoUGxhdGZvcm1HTE9iamVjdCkgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBiaW5kVmVydGV4QXJyYXlPRVMoUGxhdGZvcm1HTE9iamVjdCkgb3ZlcnJpZGU7Ci0gICAgdm9p
ZCBpbnNlcnRFdmVudE1hcmtlckVYVChjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKLSAgICB2b2lk
IHB1c2hHcm91cE1hcmtlckVYVChjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKLSAgICB2b2lkIHBv
cEdyb3VwTWFya2VyRVhUKHZvaWQpIG92ZXJyaWRlOwogICAgIHZvaWQgZHJhd0J1ZmZlcnNFWFQo
R0NHTFNwYW48Y29uc3QgR0NHTGVudW0+KSBvdmVycmlkZTsKIAogICAgIFN0cmluZyBnZXRUcmFu
c2xhdGVkU2hhZGVyU291cmNlQU5HTEUoUGxhdGZvcm1HTE9iamVjdCkgb3ZlcnJpZGU7CiAKLSAg
ICB2b2lkIGJsaXRGcmFtZWJ1ZmZlckFOR0xFKEdDR0xpbnQgc3JjWDAsIEdDR0xpbnQgc3JjWTAs
IEdDR0xpbnQgc3JjWDEsIEdDR0xpbnQgc3JjWTEsIEdDR0xpbnQgZHN0WDAsIEdDR0xpbnQgZHN0
WTAsIEdDR0xpbnQgZHN0WDEsIEdDR0xpbnQgZHN0WTEsIEdDR0xiaXRmaWVsZCBtYXNrLCBHQ0dM
ZW51bSBmaWx0ZXIpIG92ZXJyaWRlOwotICAgIHZvaWQgcmVuZGVyYnVmZmVyU3RvcmFnZU11bHRp
c2FtcGxlQU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWkgc2FtcGxlcywgR0NHTGVudW0g
aW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkgb3ZlcnJp
ZGU7Ci0KICAgICB2b2lkIGRyYXdBcnJheXNJbnN0YW5jZWRBTkdMRShHQ0dMZW51bSBtb2RlLCBH
Q0dMaW50IGZpcnN0LCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xzaXplaSBwcmltY291bnQpIG92ZXJy
aWRlOwogICAgIHZvaWQgZHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUoR0NHTGVudW0gbW9kZSwg
R0NHTHNpemVpIGNvdW50LCBHQ0dMZW51bSB0eXBlLCBHQ0dMdm9pZHB0ciBvZmZzZXQsIEdDR0xz
aXplaSBwcmltY291bnQpIG92ZXJyaWRlOwogICAgIHZvaWQgdmVydGV4QXR0cmliRGl2aXNvckFO
R0xFKEdDR0x1aW50IGluZGV4LCBHQ0dMdWludCBkaXZpc29yKSBvdmVycmlkZTsKIAotICAgIC8v
IEdMX0FOR0xFX3JvYnVzdF9jbGllbnRfbWVtb3J5Ci0gICAgdm9pZCByZWFkUGl4ZWxzUm9idXN0
QU5HTEUoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhl
aWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwg
R0NHTHNpemVpICpsZW5ndGgsIEdDR0xzaXplaSAqY29sdW1ucywgR0NHTHNpemVpICpyb3dzLCB2
b2lkICpwaXhlbHMpIG92ZXJyaWRlOwotICAgIHZvaWQgdGV4UGFyYW1ldGVyZnZSb2J1c3RBTkdM
RShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29u
c3QgR0NHTGZsb2F0ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgdGV4UGFyYW1ldGVyaXZS
b2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVm
U2l6ZSwgY29uc3QgR0NHTGludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldFF1ZXJ5
aXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkg
YnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0g
ICAgdm9pZCBnZXRRdWVyeU9iamVjdHVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IGlkLCBHQ0dMZW51
bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMdWludCAq
cGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldEJ1ZmZlclBvaW50ZXJ2Um9idXN0QU5HTEUo
R0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xz
aXplaSAqbGVuZ3RoLCB2b2lkICoqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldFZlcnRl
eEF0dHJpYklpdlJvYnVzdEFOR0xFKEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NH
THNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJy
aWRlOwotICAgIHZvaWQgZ2V0VmVydGV4QXR0cmliSXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IGlu
ZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3Ro
LCBHQ0dMdWludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldFVuaWZvcm11aXZSb2J1
c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVm
U2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0x1aW50ICpwYXJhbXMpIG92ZXJyaWRlOwotICAg
IHZvaWQgZ2V0QnVmZmVyUGFyYW1ldGVyaTY0dlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwg
R0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NH
TGludDY0ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgc2FtcGxlclBhcmFtZXRlcml2Um9i
dXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZT
aXplLCBjb25zdCBHQ0dMaW50ICpwYXJhbSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzYW1wbGVyUGFy
YW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NH
THNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xmbG9hdCAqcGFyYW0pIG92ZXJyaWRlOwotICAgIHZv
aWQgZ2V0U2FtcGxlclBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NH
TGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGlu
dCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldFNhbXBsZXJQYXJhbWV0ZXJmdlJvYnVz
dEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6
ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xmbG9hdCAqcGFyYW1zKSBvdmVycmlkZTsKLQotICAg
IHZvaWQgZ2V0RnJhbWVidWZmZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdl
dCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwg
R0NHTGludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldFByb2dyYW1JbnRlcmZhY2Vp
dlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xlbnVtIHByb2dyYW1JbnRlcmZhY2Us
IEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdD
R0xpbnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRCb29sZWFuaV92Um9idXN0QU5H
TEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMdWludCBpbmRleCwgR0NHTHNpemVpIGJ1ZlNpemUsIEdD
R0xzaXplaSAqbGVuZ3RoLCBHQ0dMYm9vbGVhbiAqZGF0YSkgb3ZlcnJpZGU7IC8vIE5PTElOVAot
ICAgIHZvaWQgZ2V0TXVsdGlzYW1wbGVmdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHBuYW1lLCBHQ0dM
dWludCBpbmRleCwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMZmxv
YXQgKnZhbCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRUZXhMZXZlbFBhcmFtZXRlcml2Um9idXN0
QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBwbmFtZSwgR0NH
THNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJy
aWRlOwotICAgIHZvaWQgZ2V0VGV4TGV2ZWxQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0xlbnVt
IHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXpl
LCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGZsb2F0ICpwYXJhbXMpIG92ZXJyaWRlOwotCi0gICAg
dm9pZCBnZXRQb2ludGVydlJvYnVzdEFOR0xFUm9idXN0QU5HTEUoR0NHTGVudW0gcG5hbWUsIEdD
R0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgdm9pZCAqKnBhcmFtcykgb3ZlcnJp
ZGU7Ci0gICAgdm9pZCBnZXRuVW5pZm9ybWZ2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwg
R0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBH
Q0dMZmxvYXQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRuVW5pZm9ybWl2Um9idXN0
QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNp
emUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZv
aWQgZ2V0blVuaWZvcm11aXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMaW50IGxv
Y2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0x1aW50ICpw
YXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgdGV4UGFyYW1ldGVySWl2Um9idXN0QU5HTEUoR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdD
R0xpbnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCB0ZXhQYXJhbWV0ZXJJdWl2Um9idXN0
QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUs
IGNvbnN0IEdDR0x1aW50ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0VGV4UGFyYW1l
dGVySWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNp
emVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJyaWRl
OwotICAgIHZvaWQgZ2V0VGV4UGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdl
dCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwg
R0NHTHVpbnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzYW1wbGVyUGFyYW1ldGVySWl2
Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBi
dWZTaXplLCBjb25zdCBHQ0dMaW50ICpwYXJhbSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzYW1wbGVy
UGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1l
LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTHVpbnQgKnBhcmFtKSBvdmVycmlkZTsKLSAg
ICB2b2lkIGdldFNhbXBsZXJQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVy
LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBH
Q0dMaW50ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0U2FtcGxlclBhcmFtZXRlckl1
aXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVp
IGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMdWludCAqcGFyYW1zKSBvdmVycmlkZTsK
LQotICAgIHZvaWQgZ2V0UXVlcnlPYmplY3RpdlJvYnVzdEFOR0xFKEdDR0x1aW50IGlkLCBHQ0dM
ZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50
ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0UXVlcnlPYmplY3RpNjR2Um9idXN0QU5H
TEUoR0NHTHVpbnQgaWQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNp
emVpICpsZW5ndGgsIEdDR0xpbnQ2NCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldFF1
ZXJ5T2JqZWN0dWk2NHZSb2J1c3RBTkdMRShHQ0dMdWludCBpZCwgR0NHTGVudW0gcG5hbWUsIEdD
R0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHVpbnQ2NCAqcGFyYW1zKSBv
dmVycmlkZTsKLQogICAgIC8vIE9ubHkgZm9yIG5vbi1XZWJHTCAyLjAgY29udGV4dHMuCiAgICAg
R0NHTGVudW0gYWRqdXN0V2ViR0wxVGV4dHVyZUludGVybmFsRm9ybWF0KEdDR0xlbnVtIGludGVy
bmFsZm9ybWF0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUpOwogCkBAIC0xMTksOCAr
NzMsNiBAQCBwcml2YXRlOgogICAgIC8vIFdlYWsgcG9pbnRlciBiYWNrIHRvIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMLgogICAgIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiBtX2NvbnRleHQ7CiAK
LSAgICBib29sIG1fdXNlSW5kZXhlZEdldFN0cmluZyB7IGZhbHNlIH07Ci0KICAgICAvLyBXaGV0
aGVyIHRoZSBXZWJHTCAxLjAtcmVsYXRlZCBmbG9hdGluZy1wb2ludCByZW5kZXJhYmlsaXR5IGV4
dGVuc2lvbnMgaGF2ZSBiZWVuIGVuYWJsZWQuCiAgICAgYm9vbCBtX3dlYmdsQ29sb3JCdWZmZXJG
bG9hdFJHQiB7IGZhbHNlIH07CiAgICAgYm9vbCBtX3dlYmdsQ29sb3JCdWZmZXJGbG9hdFJHQkEg
eyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcAppbmRleCAzMDlhNTMw
OWI2NDBhM2Q2YTI4MTQxY2E3YjFhNzVkYjQ2ZTlmOTUxLi5iYzMyMzUxZjY5OWE2ZjczZGU2Njdm
ODA4MWE5MDBmYTkzOTBlYTgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcApA
QCAtMTY0LDYgKzE2NCw5IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlc2hhcGVG
Qk9zKGNvbnN0IEludFNpemUmIHNpemUpCiAgICAgICAgICAgICBpbnRlcm5hbERlcHRoU3RlbmNp
bEZvcm1hdCA9IEdMX0RFUFRIX0NPTVBPTkVOVDE2OwogICAgIH0KIAorICAgIG1fY3VycmVudFdp
ZHRoID0gd2lkdGg7CisgICAgbV9jdXJyZW50SGVpZ2h0ID0gaGVpZ2h0OworCiAgICAgLy8gUmVz
aXplIG11bHRpc2FtcGxlIEZCTy4KICAgICBpZiAoYXR0cnMuYW50aWFsaWFzKSB7CiAgICAgICAg
IEdMaW50IG1heFNhbXBsZUNvdW50OwpAQCAtNjk5LDkgKzcwMiw2IEBAIHZvaWQgR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OnJlc2hhcGUoaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQogCiAgICAgbWFy
a0NvbnRleHRDaGFuZ2VkKCk7CiAKLSAgICBtX2N1cnJlbnRXaWR0aCA9IHdpZHRoOwotICAgIG1f
Y3VycmVudEhlaWdodCA9IGhlaWdodDsKLQogICAgIFRlbXBvcmFyeUFOR0xFU2V0dGluZyBzY29w
ZWRTY2lzc29yKEdMX1NDSVNTT1JfVEVTVCwgR0xfRkFMU0UpOwogICAgIFRlbXBvcmFyeUFOR0xF
U2V0dGluZyBzY29wZWREaXRoZXIoR0xfRElUSEVSLCBHTF9GQUxTRSk7CiAgICAgU2NvcGVkUmVz
ZXRCdWZmZXJCaW5kaW5nIHNjb3BlZFBpeGVsVW5wYWNrQnVmZmVyUmVzZXQobV9pc0ZvcldlYkdM
MiwgR0xfUElYRUxfVU5QQUNLX0JVRkZFUl9CSU5ESU5HLCBHTF9QSVhFTF9VTlBBQ0tfQlVGRkVS
KTsKQEAgLTIyNTAsNiArMjI1MCw5IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Om1h
cmtDb250ZXh0Q2hhbmdlZCgpCiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Om1hcmtM
YXllckNvbXBvc2l0ZWQoKQogeworICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCisgICAg
ICAgIHJldHVybjsKKwogICAgIG1fbGF5ZXJDb21wb3NpdGVkID0gdHJ1ZTsKICAgICByZXNldEJ1
ZmZlcnNUb0F1dG9DbGVhcigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuY3BwCmluZGV4IDg0
MjI4NDZiNmY2MmE3NTU0ZThiMmRjZjAyNDdmZjYwNTM5NWQ0NWEuLjg2ZDE5Y2FhZmI2ZTNmMGUz
MjFkZTE3MzIxMmE1NGZjZTYxZjcxZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuY3BwCkBA
IC00OCwyMiArNDgsNiBAQCBFeHRlbnNpb25zR0xPcGVuR0w6OkV4dGVuc2lvbnNHTE9wZW5HTChH
cmFwaGljc0NvbnRleHRHTE9wZW5HTCogY29udGV4dCwgYm9vbCB1cwogRXh0ZW5zaW9uc0dMT3Bl
bkdMOjp+RXh0ZW5zaW9uc0dMT3BlbkdMKCkgPSBkZWZhdWx0OwogCiAKLXZvaWQgRXh0ZW5zaW9u
c0dMT3BlbkdMOjpibGl0RnJhbWVidWZmZXJBTkdMRShHQ0dMaW50IHNyY1gwLCBHQ0dMaW50IHNy
Y1kwLCBHQ0dMaW50IHNyY1gxLCBHQ0dMaW50IHNyY1kxLCBHQ0dMaW50IGRzdFgwLCBHQ0dMaW50
IGRzdFkwLCBHQ0dMaW50IGRzdFgxLCBHQ0dMaW50IGRzdFkxLCBHQ0dMYml0ZmllbGQgbWFzaywg
R0NHTGVudW0gZmlsdGVyKQotewotICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJl
bnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgOjpnbEJsaXRGcmFtZWJ1ZmZlckVYVChzcmNY
MCwgc3JjWTAsIHNyY1gxLCBzcmNZMSwgZHN0WDAsIGRzdFkwLCBkc3RYMSwgZHN0WTEsIG1hc2ss
IGZpbHRlcik7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMOjpyZW5kZXJidWZmZXJTdG9y
YWdlTXVsdGlzYW1wbGVBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xzaXplaSBzYW1wbGVzLCBH
Q0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0
KQotewotICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgOjpnbFJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUVYVCh0YXJn
ZXQsIHNhbXBsZXMsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0KTsKLX0KLQogUGxhdGZv
cm1HTE9iamVjdCBFeHRlbnNpb25zR0xPcGVuR0w6OmNyZWF0ZVZlcnRleEFycmF5T0VTKCkKIHsK
ICAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCkBAIC0xMjcsMjQgKzEx
MSw2IEBAIHZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMOjpiaW5kVmVydGV4QXJyYXlPRVMoUGxhdGZv
cm1HTE9iamVjdCBhcnJheSkKICNlbmRpZgogfQogCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTDo6
aW5zZXJ0RXZlbnRNYXJrZXJFWFQoY29uc3QgU3RyaW5nJikKLXsKLSAgICAvLyBGSVhNRTogaW1w
bGVtZW50IHRoaXMgZnVuY3Rpb24gYW5kIGFkZCBHTF9FWFRfZGVidWdfbWFya2VyIGluIHN1cHBv
cnRzKCkuCi0gICAgcmV0dXJuOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTDo6cHVzaEdy
b3VwTWFya2VyRVhUKGNvbnN0IFN0cmluZyYpCi17Ci0gICAgLy8gRklYTUU6IGltcGxlbWVudCB0
aGlzIGZ1bmN0aW9uIGFuZCBhZGQgR0xfRVhUX2RlYnVnX21hcmtlciBpbiBzdXBwb3J0cygpLgot
ICAgIHJldHVybjsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0w6OnBvcEdyb3VwTWFya2Vy
RVhUKHZvaWQpCi17Ci0gICAgLy8gRklYTUU6IGltcGxlbWVudCB0aGlzIGZ1bmN0aW9uIGFuZCBh
ZGQgR0xfRVhUX2RlYnVnX21hcmtlciBpbiBzdXBwb3J0cygpLgotICAgIHJldHVybjsKLX0KLQog
Ym9vbCBFeHRlbnNpb25zR0xPcGVuR0w6OnN1cHBvcnRzRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYg
bmFtZSkKIHsKICAgICAvLyBHTF9BTkdMRV9mcmFtZWJ1ZmZlcl9ibGl0IGFuZCBHTF9BTkdMRV9m
cmFtZWJ1ZmZlcl9tdWx0aXNhbXBsZSBhcmUgImZha2UiLiBUaGV5IGFyZSBpbXBsZW1lbnRlZCB1
c2luZyBvdGhlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
b3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTC5oCmluZGV4IDQ3NTAyMjZlY2VjZWY0NDM5
NmU5OTM4Njc2Y2I2MzliZTgzNDM3YjYuLjBhZGJkNzA1MGI3ZTNmNzdlMDE4ODk0MzMyZmZjODdj
ZjMwZDkwYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29w
ZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMLmgKQEAgLTQwLDE2ICs0MCwxMCBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCB+RXh0ZW5zaW9uc0dMT3BlbkdMKCk7CiAKICAgICAvLyBFeHRl
bnNpb25zR0wgbWV0aG9kcy4KLSAgICB2b2lkIGJsaXRGcmFtZWJ1ZmZlckFOR0xFKEdDR0xpbnQg
c3JjWDAsIEdDR0xpbnQgc3JjWTAsIEdDR0xpbnQgc3JjWDEsIEdDR0xpbnQgc3JjWTEsIEdDR0xp
bnQgZHN0WDAsIEdDR0xpbnQgZHN0WTAsIEdDR0xpbnQgZHN0WDEsIEdDR0xpbnQgZHN0WTEsIEdD
R0xiaXRmaWVsZCBtYXNrLCBHQ0dMZW51bSBmaWx0ZXIpIG92ZXJyaWRlOwotICAgIHZvaWQgcmVu
ZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMc2l6
ZWkgc2FtcGxlcywgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NH
THNpemVpIGhlaWdodCkgb3ZlcnJpZGU7Ci0KICAgICBQbGF0Zm9ybUdMT2JqZWN0IGNyZWF0ZVZl
cnRleEFycmF5T0VTKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkZWxldGVWZXJ0ZXhBcnJheU9FUyhQ
bGF0Zm9ybUdMT2JqZWN0KSBvdmVycmlkZTsKICAgICBHQ0dMYm9vbGVhbiBpc1ZlcnRleEFycmF5
T0VTKFBsYXRmb3JtR0xPYmplY3QpIG92ZXJyaWRlOwogICAgIHZvaWQgYmluZFZlcnRleEFycmF5
T0VTKFBsYXRmb3JtR0xPYmplY3QpIG92ZXJyaWRlOwotICAgIHZvaWQgaW5zZXJ0RXZlbnRNYXJr
ZXJFWFQoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBwdXNoR3JvdXBNYXJrZXJF
WFQoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBwb3BHcm91cE1hcmtlckVYVCh2
b2lkKSBvdmVycmlkZTsKICAgICB2b2lkIGRyYXdCdWZmZXJzRVhUKEdDR0xTcGFuPGNvbnN0IEdD
R0xlbnVtPikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGRyYXdBcnJheXNJbnN0YW5jZWRBTkdMRShH
Q0dMZW51bSBtb2RlLCBHQ0dMaW50IGZpcnN0LCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xzaXplaSBw
cmltY291bnQpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmNw
cAppbmRleCBjMzQzOGQ1OTFjMDdhMzZjZjFlMDQyNmMxYjlmZDdiM2U5MTc3OWQ1Li4wOWRiODU0
MDAyMjFkZjk3NTc4ODg1OWE0YTI4N2FiYWEyNGY4MjcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9u
c0dMT3BlbkdMQ29tbW9uLmNwcApAQCAtMjU0LDE4NSArMjU0LDYgQEAgdm9pZCBFeHRlbnNpb25z
R0xPcGVuR0xDb21tb246OmdldG5Vbmlmb3JtaXZFWFQoR0NHTHVpbnQsIGludCwgR0NHTHNpemVp
LCBHQ0dMaW4KICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BF
UkFUSU9OKTsKIH0KIAotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OnJlYWRQaXhlbHNS
b2J1c3RBTkdMRShpbnQsIGludCwgR0NHTHNpemVpLCBHQ0dMc2l6ZWksIEdDR0xlbnVtLCBHQ0dM
ZW51bSwgR0NHTHNpemVpLCBHQ0dMc2l6ZWkgKiwgR0NHTHNpemVpICosIEdDR0xzaXplaSAqLCB2
b2lkICopCi17Ci0gICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09Q
RVJBVElPTik7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjp0ZXhQYXJhbWV0
ZXJmdlJvYnVzdEFOR0xFKEdDR0xlbnVtLCBHQ0dMZW51bSwgR0NHTHNpemVpLCBjb25zdCBHQ0dM
ZmxvYXQgKikKLXsKLSAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURf
T1BFUkFUSU9OKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OnRleFBhcmFt
ZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0sIEdDR0xlbnVtLCBHQ0dMc2l6ZWksIGNvbnN0IEdD
R0xpbnQgKikKLXsKLSAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURf
T1BFUkFUSU9OKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFF1ZXJ5
aXZSb2J1c3RBTkdMRShHQ0dMZW51bSwgR0NHTGVudW0sIEdDR0xzaXplaSwgR0NHTHNpemVpICos
IEdDR0xpbnQgKikKLXsKLSAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFM
SURfT1BFUkFUSU9OKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFF1
ZXJ5T2JqZWN0dWl2Um9idXN0QU5HTEUoR0NHTHVpbnQsIEdDR0xlbnVtLCBHQ0dMc2l6ZWksIEdD
R0xzaXplaSAqLCBHQ0dMdWludCAqKQotewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJy
b3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENv
bW1vbjo6Z2V0QnVmZmVyUG9pbnRlcnZSb2J1c3RBTkdMRShHQ0dMZW51bSwgR0NHTGVudW0sIEdD
R0xzaXplaSwgR0NHTHNpemVpICosIHZvaWQgKiopCi17Ci0gICAgbV9jb250ZXh0LT5zeW50aGVz
aXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dM
T3BlbkdMQ29tbW9uOjpnZXRWZXJ0ZXhBdHRyaWJJaXZSb2J1c3RBTkdMRShHQ0dMdWludCwgR0NH
TGVudW0sIEdDR0xzaXplaSwgR0NHTHNpemVpICosIEdDR0xpbnQgKikKLXsKLSAgICBtX2NvbnRl
eHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLX0KLQotdm9pZCBF
eHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFZlcnRleEF0dHJpYkl1aXZSb2J1c3RBTkdMRShH
Q0dMdWludCwgR0NHTGVudW0sIEdDR0xzaXplaSwgR0NHTHNpemVpICosIEdDR0x1aW50ICopCi17
Ci0gICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7
Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRVbmlmb3JtdWl2Um9idXN0
QU5HTEUoR0NHTHVpbnQsIGludCwgR0NHTHNpemVpLCBHQ0dMc2l6ZWkgKiwgR0NHTHVpbnQgKikK
LXsKLSAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9O
KTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldEJ1ZmZlclBhcmFtZXRl
cmk2NHZSb2J1c3RBTkdMRShHQ0dMZW51bSwgR0NHTGVudW0sIEdDR0xzaXplaSwgR0NHTHNpemVp
ICosIEdDR0xpbnQ2NCAqKQotewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xf
SU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6
c2FtcGxlclBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTHVpbnQsIEdDR0xlbnVtLCBHQ0dMc2l6
ZWksIGNvbnN0IEdDR0xpbnQgKikKLXsKLSAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9y
KEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21t
b246OnNhbXBsZXJQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0x1aW50LCBHQ0dMZW51bSwgR0NH
THNpemVpLCBjb25zdCBHQ0dMZmxvYXQgKikKLXsKLSAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVH
TEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xPcGVu
R0xDb21tb246OmdldFNhbXBsZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0x1aW50LCBHQ0dM
ZW51bSwgR0NHTHNpemVpLCBHQ0dMc2l6ZWkgKiwgR0NHTGludCAqKQotewotICAgIG1fY29udGV4
dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi12b2lkIEV4
dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0U2FtcGxlclBhcmFtZXRlcmZ2Um9idXN0QU5HTEUo
R0NHTHVpbnQsIEdDR0xlbnVtLCBHQ0dMc2l6ZWksIEdDR0xzaXplaSAqLCBHQ0dMZmxvYXQgKikK
LXsKLSAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9O
KTsKLX0KLQotCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0RnJhbWVidWZmZXJQ
YXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtLCBHQ0dMZW51bSwgR0NHTHNpemVpLCBHQ0dM
c2l6ZWkgKiwgR0NHTGludCAqKQotewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3Io
R0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1v
bjo6Z2V0UHJvZ3JhbUludGVyZmFjZWl2Um9idXN0QU5HTEUoR0NHTHVpbnQsIEdDR0xlbnVtLCBH
Q0dMZW51bSwgR0NHTHNpemVpLCBHQ0dMc2l6ZWkgKiwgR0NHTGludCAqKQotewotICAgIG1fY29u
dGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi12b2lk
IEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0Qm9vbGVhbmlfdlJvYnVzdEFOR0xFKEdDR0xl
bnVtLCBHQ0dMdWludCwgR0NHTHNpemVpLCBHQ0dMc2l6ZWkgKiwgR0NHTGJvb2xlYW4gKikKLXsK
LSAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsK
LX0KLQotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldE11bHRpc2FtcGxlZnZSb2J1
c3RBTkdMRShHQ0dMZW51bSwgR0NHTHVpbnQsIEdDR0xzaXplaSwgR0NHTHNpemVpICosIEdDR0xm
bG9hdCAqKQotewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9P
UEVSQVRJT04pOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0VGV4TGV2
ZWxQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtLCBpbnQsIEdDR0xlbnVtLCBHQ0dMc2l6
ZWksIEdDR0xzaXplaSAqLCBHQ0dMaW50ICopCi17Ci0gICAgbV9jb250ZXh0LT5zeW50aGVzaXpl
R0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMT3Bl
bkdMQ29tbW9uOjpnZXRUZXhMZXZlbFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTGVudW0sIGlu
dCwgR0NHTGVudW0sIEdDR0xzaXplaSwgR0NHTHNpemVpICosIEdDR0xmbG9hdCAqKQotewotICAg
IG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQot
Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRQb2ludGVydlJvYnVzdEFOR0xF
Um9idXN0QU5HTEUoR0NHTGVudW0sIEdDR0xzaXplaSwgR0NHTHNpemVpICosIHZvaWQgKiopCi17
Ci0gICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7
Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRuVW5pZm9ybWZ2Um9idXN0
QU5HTEUoR0NHTHVpbnQsIGludCwgR0NHTHNpemVpLCBHQ0dMc2l6ZWkgKiwgR0NHTGZsb2F0ICop
Ci17Ci0gICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElP
Tik7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRuVW5pZm9ybWl2Um9i
dXN0QU5HTEUoR0NHTHVpbnQsIGludCwgR0NHTHNpemVpLCBHQ0dMc2l6ZWkgKiwgR0NHTGludCAq
KQotewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJ
T04pOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0blVuaWZvcm11aXZS
b2J1c3RBTkdMRShHQ0dMdWludCwgaW50LCBHQ0dMc2l6ZWksIEdDR0xzaXplaSAqLCBHQ0dMdWlu
dCAqKQotewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVS
QVRJT04pOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6dGV4UGFyYW1ldGVy
SWl2Um9idXN0QU5HTEUoR0NHTGVudW0sIEdDR0xlbnVtLCBHQ0dMc2l6ZWksIGNvbnN0IEdDR0xp
bnQgKikKLXsKLSAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BF
UkFUSU9OKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OnRleFBhcmFtZXRl
ckl1aXZSb2J1c3RBTkdMRShHQ0dMZW51bSwgR0NHTGVudW0sIEdDR0xzaXplaSwgY29uc3QgR0NH
THVpbnQgKikKLXsKLSAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURf
T1BFUkFUSU9OKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFRleFBh
cmFtZXRlcklpdlJvYnVzdEFOR0xFKEdDR0xlbnVtLCBHQ0dMZW51bSwgR0NHTHNpemVpLCBHQ0dM
c2l6ZWkgKiwgR0NHTGludCAqKQotewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3Io
R0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1v
bjo6Z2V0VGV4UGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFKEdDR0xlbnVtLCBHQ0dMZW51bSwgR0NH
THNpemVpLCBHQ0dMc2l6ZWkgKiwgR0NHTHVpbnQgKikKLXsKLSAgICBtX2NvbnRleHQtPnN5bnRo
ZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLX0KLQotdm9pZCBFeHRlbnNpb25z
R0xPcGVuR0xDb21tb246OnNhbXBsZXJQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRShHQ0dMdWludCwg
R0NHTGVudW0sIEdDR0xzaXplaSwgY29uc3QgR0NHTGludCAqKQotewotICAgIG1fY29udGV4dC0+
c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi12b2lkIEV4dGVu
c2lvbnNHTE9wZW5HTENvbW1vbjo6c2FtcGxlclBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRShHQ0dM
dWludCwgR0NHTGVudW0sIEdDR0xzaXplaSwgY29uc3QgR0NHTHVpbnQgKikKLXsKLSAgICBtX2Nv
bnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLX0KLQotdm9p
ZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFNhbXBsZXJQYXJhbWV0ZXJJaXZSb2J1c3RB
TkdMRShHQ0dMdWludCwgR0NHTGVudW0sIEdDR0xzaXplaSwgR0NHTHNpemVpICosIEdDR0xpbnQg
KikKLXsKLSAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFU
SU9OKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFNhbXBsZXJQYXJh
bWV0ZXJJdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQsIEdDR0xlbnVtLCBHQ0dMc2l6ZWksIEdDR0xz
aXplaSAqLCBHQ0dMdWludCAqKQotewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3Io
R0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi0KLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29t
bW9uOjpnZXRRdWVyeU9iamVjdGl2Um9idXN0QU5HTEUoR0NHTHVpbnQsIEdDR0xlbnVtLCBHQ0dM
c2l6ZWksIEdDR0xzaXplaSAqLCBHQ0dMaW50ICopCi17Ci0gICAgbV9jb250ZXh0LT5zeW50aGVz
aXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dM
T3BlbkdMQ29tbW9uOjpnZXRRdWVyeU9iamVjdGk2NHZSb2J1c3RBTkdMRShHQ0dMdWludCwgR0NH
TGVudW0sIEdDR0xzaXplaSwgR0NHTHNpemVpICosIEdDR0xpbnQ2NCAqKQotewotICAgIG1fY29u
dGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi12b2lk
IEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0UXVlcnlPYmplY3R1aTY0dlJvYnVzdEFOR0xF
KEdDR0x1aW50LCBHQ0dMZW51bSwgR0NHTHNpemVpLCBHQ0dMc2l6ZWkgKiwgR0NHTHVpbnQ2NCAq
KQotewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJ
T04pOwotfQotCi0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShX
RUJHTCkgJiYgIVVTRShBTkdMRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uaApp
bmRleCAzZjEwNDAxNjJmZmEwN2EyZGMxMzBhYmIyMmZiMWIxZmZjM2ZkZjIwLi5kY2MwZTNhZjIx
NzMyZTc0N2VhMWJkNTY0YmI5Njc4NDMyY2EzZjcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9w
ZW5HTENvbW1vbi5oCkBAIC0yOCwxMSArMjgsMTEgQEAKIAogI2luY2x1ZGUgIkV4dGVuc2lvbnNH
TC5oIgogCi0jaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaCIKICNpbmNsdWRlIDx3
dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KIAogbmFtZXNw
YWNlIFdlYkNvcmUgeworY2xhc3MgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w7CiAKIGNsYXNzIEV4
dGVuc2lvbnNHTE9wZW5HTENvbW1vbiA6IHB1YmxpYyBFeHRlbnNpb25zR0wgewogICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwpAQCAtNTUsNTggKzU1LDE4IEBAIHB1YmxpYzoKICAgICBTdHJp
bmcgZ2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFKFBsYXRmb3JtR0xPYmplY3QpIG92ZXJy
aWRlOwogCiAgICAgLy8gRVhUIFJvYnVzdG5lc3MgLSB1c2VzIGdldEdyYXBoaWNzUmVzZXRTdGF0
dXNBUkIoKQotICAgIHZvaWQgcmVhZG5QaXhlbHNFWFQoaW50IHgsIGludCB5LCBHQ0dMc2l6ZWkg
d2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwg
R0NHTHNpemVpIGJ1ZlNpemUsIHZvaWQgKmRhdGEpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0blVu
aWZvcm1mdkVYVChHQ0dMdWludCBwcm9ncmFtLCBpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZT
aXplLCBmbG9hdCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldG5Vbmlmb3JtaXZFWFQo
R0NHTHVpbnQgcHJvZ3JhbSwgaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgaW50ICpw
YXJhbXMpIG92ZXJyaWRlOwotCi0gICAgYm9vbCBpc05WSURJQSgpIG92ZXJyaWRlIHsgcmV0dXJu
IG1faXNOVklESUE7IH0KLSAgICBib29sIGlzQU1EKCkgb3ZlcnJpZGUgeyByZXR1cm4gbV9pc0FN
RDsgfQotICAgIGJvb2wgaXNJbnRlbCgpIG92ZXJyaWRlIHsgcmV0dXJuIG1faXNJbnRlbDsgfQot
ICAgIGJvb2wgaXNJbWFnaW5hdGlvbigpIG92ZXJyaWRlIHsgcmV0dXJuIG1faXNJbWFnaW5hdGlv
bjsgfQotICAgIFN0cmluZyB2ZW5kb3IoKSBvdmVycmlkZSB7IHJldHVybiBtX3ZlbmRvcjsgfQot
Ci0gICAgYm9vbCByZXF1aXJlc0J1aWx0SW5GdW5jdGlvbkVtdWxhdGlvbigpIG92ZXJyaWRlIHsg
cmV0dXJuIG1fcmVxdWlyZXNCdWlsdEluRnVuY3Rpb25FbXVsYXRpb247IH0KLSAgICBib29sIHJl
cXVpcmVzUmVzdHJpY3RlZE1heGltdW1UZXh0dXJlU2l6ZSgpIG92ZXJyaWRlIHsgcmV0dXJuIG1f
cmVxdWlyZXNSZXN0cmljdGVkTWF4aW11bVRleHR1cmVTaXplOyB9Ci0KLSAgICAvLyBHTF9BTkdM
RV9yb2J1c3RfY2xpZW50X21lbW9yeQotICAgIHZvaWQgcmVhZFBpeGVsc1JvYnVzdEFOR0xFKGlu
dCB4LCBpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBm
b3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0
aCwgR0NHTHNpemVpICpjb2x1bW5zLCBHQ0dMc2l6ZWkgKnJvd3MsIHZvaWQgKnBpeGVscykgb3Zl
cnJpZGU7Ci0gICAgdm9pZCB0ZXhQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdl
dCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMZmxvYXQgKnBh
cmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCB0ZXhQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xl
bnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dM
aW50ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0UXVlcnlpdlJvYnVzdEFOR0xFKEdD
R0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6
ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldFF1ZXJ5
T2JqZWN0dWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgaWQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6
ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0x1aW50ICpwYXJhbXMpIG92ZXJyaWRl
OwotICAgIHZvaWQgZ2V0QnVmZmVyUG9pbnRlcnZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQs
IEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIHZv
aWQgKipwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0VmVydGV4QXR0cmliSWl2Um9idXN0
QU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwg
R0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBn
ZXRWZXJ0ZXhBdHRyaWJJdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBu
YW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0x1aW50ICpwYXJh
bXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0VW5pZm9ybXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50
IHByb2dyYW0sIGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVu
Z3RoLCBHQ0dMdWludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldEJ1ZmZlclBhcmFt
ZXRlcmk2NHZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dM
c2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQ2NCAqcGFyYW1zKSBvdmVy
cmlkZTsKLSAgICB2b2lkIHNhbXBsZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNh
bXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGludCAq
cGFyYW0pIG92ZXJyaWRlOwotICAgIHZvaWQgc2FtcGxlclBhcmFtZXRlcmZ2Um9idXN0QU5HTEUo
R0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25z
dCBHQ0dMZmxvYXQgKnBhcmFtKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldFNhbXBsZXJQYXJhbWV0
ZXJpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6
ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykgb3ZlcnJpZGU7
Ci0gICAgdm9pZCBnZXRTYW1wbGVyUGFyYW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1w
bGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3Ro
LCBHQ0dMZmxvYXQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0KLSAgICB2b2lkIGdldEZyYW1lYnVmZmVy
UGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBH
Q0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykgb3Zl
cnJpZGU7Ci0gICAgdm9pZCBnZXRQcm9ncmFtSW50ZXJmYWNlaXZSb2J1c3RBTkdMRShHQ0dMdWlu
dCBwcm9ncmFtLCBHQ0dMZW51bSBwcm9ncmFtSW50ZXJmYWNlLCBHQ0dMZW51bSBwbmFtZSwgR0NH
THNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJy
aWRlOwotICAgIHZvaWQgZ2V0Qm9vbGVhbmlfdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwg
R0NHTHVpbnQgaW5kZXgsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NH
TGJvb2xlYW4gKmRhdGEpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0TXVsdGlzYW1wbGVmdlJvYnVz
dEFOR0xFKEdDR0xlbnVtIHBuYW1lLCBHQ0dMdWludCBpbmRleCwgR0NHTHNpemVpIGJ1ZlNpemUs
IEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMZmxvYXQgKnZhbCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBn
ZXRUZXhMZXZlbFBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBpbnQgbGV2
ZWwsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgs
IEdDR0xpbnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRUZXhMZXZlbFBhcmFtZXRl
cmZ2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBpbnQgbGV2ZWwsIEdDR0xlbnVtIHBuYW1l
LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xmbG9hdCAqcGFyYW1z
KSBvdmVycmlkZTsKLQotICAgIHZvaWQgZ2V0UG9pbnRlcnZSb2J1c3RBTkdMRVJvYnVzdEFOR0xF
KEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIHZv
aWQgKipwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0blVuaWZvcm1mdlJvYnVzdEFOR0xF
KEdDR0x1aW50IHByb2dyYW0sIGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xz
aXplaSAqbGVuZ3RoLCBHQ0dMZmxvYXQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRu
VW5pZm9ybWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgaW50IGxvY2F0aW9uLCBHQ0dM
c2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykgb3ZlcnJp
ZGU7Ci0gICAgdm9pZCBnZXRuVW5pZm9ybXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0s
IGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dM
dWludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIHRleFBhcmFtZXRlcklpdlJvYnVzdEFO
R0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBj
b25zdCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgdGV4UGFyYW1ldGVySXVp
dlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBi
dWZTaXplLCBjb25zdCBHQ0dMdWludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldFRl
eFBhcmFtZXRlcklpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUs
IEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSBv
dmVycmlkZTsKLSAgICB2b2lkIGdldFRleFBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRShHQ0dMZW51
bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICps
ZW5ndGgsIEdDR0x1aW50ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgc2FtcGxlclBhcmFt
ZXRlcklpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dM
c2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGludCAqcGFyYW0pIG92ZXJyaWRlOwotICAgIHZvaWQg
c2FtcGxlclBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51
bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0x1aW50ICpwYXJhbSkgb3ZlcnJp
ZGU7Ci0gICAgdm9pZCBnZXRTYW1wbGVyUGFyYW1ldGVySWl2Um9idXN0QU5HTEUoR0NHTHVpbnQg
c2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxl
bmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldFNhbXBsZXJQYXJh
bWV0ZXJJdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdD
R0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHVpbnQgKnBhcmFtcykgb3Zl
cnJpZGU7Ci0KLSAgICB2b2lkIGdldFF1ZXJ5T2JqZWN0aXZSb2J1c3RBTkdMRShHQ0dMdWludCBp
ZCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwg
R0NHTGludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldFF1ZXJ5T2JqZWN0aTY0dlJv
YnVzdEFOR0xFKEdDR0x1aW50IGlkLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUs
IEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50NjQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9p
ZCBnZXRRdWVyeU9iamVjdHVpNjR2Um9idXN0QU5HTEUoR0NHTHVpbnQgaWQsIEdDR0xlbnVtIHBu
YW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0x1aW50NjQgKnBh
cmFtcykgb3ZlcnJpZGU7CisgICAgdm9pZCByZWFkblBpeGVsc0VYVChpbnQgeCwgaW50IHksIEdD
R0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51
bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgdm9pZCAqZGF0YSk7CisgICAgdm9pZCBnZXRuVW5p
Zm9ybWZ2RVhUKEdDR0x1aW50IHByb2dyYW0sIGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNp
emUsIGZsb2F0ICpwYXJhbXMpOworICAgIHZvaWQgZ2V0blVuaWZvcm1pdkVYVChHQ0dMdWludCBw
cm9ncmFtLCBpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBpbnQgKnBhcmFtcyk7CisK
KyAgICBib29sIGlzTlZJRElBKCkgY29uc3QgeyByZXR1cm4gbV9pc05WSURJQTsgfQorICAgIGJv
b2wgaXNBTUQoKSBjb25zdCB7IHJldHVybiBtX2lzQU1EOyB9CisgICAgYm9vbCBpc0ludGVsKCkg
Y29uc3QgeyByZXR1cm4gbV9pc0ludGVsOyB9CisgICAgYm9vbCBpc0ltYWdpbmF0aW9uKCkgY29u
c3QgeyByZXR1cm4gbV9pc0ltYWdpbmF0aW9uOyB9CisgICAgU3RyaW5nIHZlbmRvcigpIGNvbnN0
IHsgcmV0dXJuIG1fdmVuZG9yOyB9CisKKyAgICBib29sIHJlcXVpcmVzQnVpbHRJbkZ1bmN0aW9u
RW11bGF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9yZXF1aXJlc0J1aWx0SW5GdW5jdGlvbkVtdWxh
dGlvbjsgfQorICAgIGJvb2wgcmVxdWlyZXNSZXN0cmljdGVkTWF4aW11bVRleHR1cmVTaXplKCkg
Y29uc3QgeyByZXR1cm4gbV9yZXF1aXJlc1Jlc3RyaWN0ZWRNYXhpbXVtVGV4dHVyZVNpemU7IH0K
IAogcHJvdGVjdGVkOgogICAgIGZyaWVuZCBjbGFzcyBFeHRlbnNpb25zR0xPcGVuR0xFUzsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNp
b25zR0xPcGVuR0xFUy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVu
Z2wvRXh0ZW5zaW9uc0dMT3BlbkdMRVMuY3BwCmluZGV4IDhjYTg3Nzg4NGVlYWI4YTJjYTFkZGUy
ZGIyZWM4ZDZiMjEyMmZkZTEuLmIyZTNjOGI5ODQ5MzQ1ZDU3MzhmN2E1YzEwZTEyZGI1OTRkMmEw
MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9F
eHRlbnNpb25zR0xPcGVuR0xFUy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVTLmNwcApAQCAtMTAwLDExICsxMDAsNiBA
QCB2b2lkIEV4dGVuc2lvbnNHTE9wZW5HTEVTOjpyZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1w
bGVJTUcodW5zaWduZWQgbG9uZyB0YXJnZQogICAgICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVH
TEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKIH0KIAotdm9pZCBFeHRlbnNpb25zR0xPcGVu
R0xFUzo6YmxpdEZyYW1lYnVmZmVyQU5HTEUoR0NHTGludCwgR0NHTGludCwgR0NHTGludCwgR0NH
TGludCwgR0NHTGludCwgR0NHTGludCwgR0NHTGludCwgR0NHTGludCwgR0NHTGJpdGZpZWxkLCBH
Q0dMZW51bSkKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCiB2b2lkIEV4dGVuc2lvbnNH
TE9wZW5HTEVTOjpyZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVBTkdMRShHQ0dMZW51bSB0
YXJnZXQsIEdDR0xzaXplaSBzYW1wbGVzLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNp
emVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KQogewogICAgIGlmICghbV9jb250ZXh0LT5tYWtl
Q29udGV4dEN1cnJlbnQoKSkKQEAgLTExNSwyMSArMTEwLDYgQEAgdm9pZCBFeHRlbnNpb25zR0xP
cGVuR0xFUzo6cmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5HTEUoR0NHTGVudW0gdGFy
Z2V0LAogICAgICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi12b2lkIEV4dGVuc2lvbnNHTE9w
ZW5HTEVTOjppbnNlcnRFdmVudE1hcmtlckVYVChjb25zdCBTdHJpbmcmKQotewotICAgIG5vdElt
cGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMRVM6OnB1c2hHcm91cE1h
cmtlckVYVChjb25zdCBTdHJpbmcmKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZv
aWQgRXh0ZW5zaW9uc0dMT3BlbkdMRVM6OnBvcEdyb3VwTWFya2VyRVhUKHZvaWQpCi17Ci0gICAg
bm90SW1wbGVtZW50ZWQoKTsKLX0KLQogUGxhdGZvcm1HTE9iamVjdCBFeHRlbnNpb25zR0xPcGVu
R0xFUzo6Y3JlYXRlVmVydGV4QXJyYXlPRVMoKQogewogICAgIGlmIChtX2dsR2VuVmVydGV4QXJy
YXlzT0VTKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9v
cGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMRVMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xFUy5oCmluZGV4IDVjNzYwMzdmYTdiYzZl
OGVlZTNlNjczZjk5YTdkZmMyZjc4ZmI0ZDIuLmFkZDBiYjc2M2Y0YmRhNWI2OWU2MWJhYjYwMjJh
NDA4MjQ4YWYzZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xFUy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xFUy5oCkBAIC0yNyw2ICsyNyw3
IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5o
IgorI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgiCiAKICNpZiBVU0UoT1BFTkdM
X0VTKQogCkBAIC03NSwxMSArNzYsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBFeHRlbnNpb24zRCBt
ZXRob2RzCiAgICAgYm9vbCBpc0VuYWJsZWQoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7Ci0gICAg
dm9pZCBibGl0RnJhbWVidWZmZXJBTkdMRShHQ0dMaW50IHNyY1gwLCBHQ0dMaW50IHNyY1kwLCBH
Q0dMaW50IHNyY1gxLCBHQ0dMaW50IHNyY1kxLCBHQ0dMaW50IGRzdFgwLCBHQ0dMaW50IGRzdFkw
LCBHQ0dMaW50IGRzdFgxLCBHQ0dMaW50IGRzdFkxLCBHQ0dMYml0ZmllbGQgbWFzaywgR0NHTGVu
dW0gZmlsdGVyKSBvdmVycmlkZTsKLSAgICB2b2lkIHJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNh
bXBsZUFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVpIHNhbXBsZXMsIEdDR0xlbnVtIGlu
dGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQpIG92ZXJyaWRl
OwotICAgIHZvaWQgaW5zZXJ0RXZlbnRNYXJrZXJFWFQoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7
Ci0gICAgdm9pZCBwdXNoR3JvdXBNYXJrZXJFWFQoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7Ci0g
ICAgdm9pZCBwb3BHcm91cE1hcmtlckVYVCh2b2lkKSBvdmVycmlkZTsKKyAgICB2b2lkIHJlbmRl
cmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVp
IHNhbXBsZXMsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xz
aXplaSBoZWlnaHQpOwogCiAgICAgUGxhdGZvcm1HTE9iamVjdCBjcmVhdGVWZXJ0ZXhBcnJheU9F
UygpIG92ZXJyaWRlOwogICAgIHZvaWQgZGVsZXRlVmVydGV4QXJyYXlPRVMoUGxhdGZvcm1HTE9i
amVjdCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oCmluZGV4IGY1
MjRkZTkyZGNkOWE1OThiMGZiZWY4ZDMzYjljNDQwOWI4Y2QxYjAuLjM5NWI5NTczYjc2NWQ5M2Mw
NDI3NDZhMWY1NDkxMjBhZGYyM2Y4MTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5H
TC5oCkBAIC00NSw2ICs0NSw3IEBACiAKICNpZiAhVVNFKEFOR0xFKQogI2luY2x1ZGUgIkFOR0xF
V2ViS2l0QnJpZGdlLmgiCisjaW5jbHVkZSAiRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmgiCiAj
ZW5kaWYKIAogLy8gRklYTUU6IEZpbmQgYSBiZXR0ZXIgd2F5IHRvIGF2b2lkIHRoZSBuYW1lIGNv
bmZsaWN0aW9uIGZvciBOT19FUlJPUi4KQEAgLTQ4Niw3ICs0ODcsMTIgQEAgcHVibGljOgogICAg
IC8vIGFsbCBtZXRob2RzIGl0IGNvbnRhaW5zIG1heSBuZWNlc3NhcmlseSBiZSBzdXBwb3J0ZWQg
b24gdGhlCiAgICAgLy8gY3VycmVudCBoYXJkd2FyZS4gTXVzdCBjYWxsIEV4dGVuc2lvbnNHTDo6
c3VwcG9ydHMoKSB0bwogICAgIC8vIGRldGVybWluZSB0aGlzLgorI2lmICFVU0UoQU5HTEUpCisg
ICAgLy8gVXNlIGNvdmFyaWFudCByZXR1cm4gdHlwZSBmb3IgT1BFTkdML09QRU5HTF9FUworICAg
IEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbiYgZ2V0RXh0ZW5zaW9ucygpIGZpbmFsOworI2Vsc2UK
ICAgICBFeHRlbnNpb25zR0wmIGdldEV4dGVuc2lvbnMoKSBmaW5hbDsKKyNlbmRpZgogCiAgICAg
dm9pZCBzZXRGYWlsTmV4dEdQVVN0YXR1c0NoZWNrKCkgZmluYWwgeyBtX2ZhaWxOZXh0U3RhdHVz
Q2hlY2sgPSB0cnVlOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEJhc2UuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQmFz
ZS5jcHAKaW5kZXggZjQxNGY5Yzk2MzRkNjFiOGQ5MDE1ZDVhNmFmYTUyN2NjMzQyYmU4Zi4uMGZm
NTMzYmU3MTI4NGVkMDhkNTM0M2I5OTk2YTk2ZmExNmUyYjVhZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdM
QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dy
YXBoaWNzQ29udGV4dEdMT3BlbkdMQmFzZS5jcHAKQEAgLTExNiw3ICsxMTYsNyBAQCBib29sIEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZXNoYXBlRkJPcyhjb25zdCBJbnRTaXplJiBzaXplKQog
ICAgICAgICAvLyBXZSBkb24ndCBhbGxvdyB0aGUgbG9naWMgd2hlcmUgc3RlbmNpbCBpcyByZXF1
aXJlZCBhbmQgZGVwdGggaXMgbm90LgogICAgICAgICAvLyBTZWUgR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OnZhbGlkYXRlQXR0cmlidXRlcy4KIAotICAgICAgICBFeHRlbnNpb25zR0wmIGV4dGVu
c2lvbnMgPSBnZXRFeHRlbnNpb25zKCk7CisgICAgICAgIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1v
biYgZXh0ZW5zaW9ucyA9IGdldEV4dGVuc2lvbnMoKTsKICAgICAgICAgLy8gVXNlIGEgMjQgYml0
IGRlcHRoIGJ1ZmZlciB3aGVyZSB3ZSBrbm93IHdlIGhhdmUgaXQuCiAgICAgICAgIGlmIChleHRl
bnNpb25zLnN1cHBvcnRzKCJHTF9FWFRfcGFja2VkX2RlcHRoX3N0ZW5jaWwiKSkKICAgICAgICAg
ICAgIGludGVybmFsRGVwdGhTdGVuY2lsRm9ybWF0ID0gR0xfREVQVEgyNF9TVEVOQ0lMOF9FWFQ7
CkBAIC00MTcsNyArNDE3LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y2xlYXJE
ZXB0aChHQ0dMY2xhbXBmIGRlcHRoKQogfQogCiAjaWYgIVBMQVRGT1JNKEdUSykKLUV4dGVuc2lv
bnNHTCYgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEV4dGVuc2lvbnMoKQorRXh0ZW5zaW9u
c0dMT3BlbkdMQ29tbW9uJiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0RXh0ZW5zaW9ucygp
CiB7CiAgICAgaWYgKCFtX2V4dGVuc2lvbnMpCiAgICAgICAgIG1fZXh0ZW5zaW9ucyA9IG1ha2VV
bmlxdWU8RXh0ZW5zaW9uc0dMT3BlbkdMPih0aGlzLCBpc0dMRVMyQ29tcGxpYW50KCkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNz
Q29udGV4dEdMT3BlbkdMQ29tbW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvbW1vbi5jcHAKaW5kZXggMmRlMTg1
YTY2ODEzMGEzNjJjMTI3NjdmMzgzZjU3ZjEzNDlkZDQ4MS4uZGY5ODNmZGE4ODExMjg5YjYwMjJk
YWZlZTk4ZGNmOTI5ZGMyNDUxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29tbW9uLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0xDb21tb24uY3BwCkBAIC0xMTgsNyArMTE4LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6dmFsaWRhdGVEZXB0aFN0ZW5jaWwoY29uc3QgY2hhciogcGFja2VkRGVwdGhTdGVu
Y2kKIHsKICAgICBhdXRvIGF0dHJzID0gY29udGV4dEF0dHJpYnV0ZXMoKTsKIAotICAgIEV4dGVu
c2lvbnNHTCYgZXh0ZW5zaW9ucyA9IGdldEV4dGVuc2lvbnMoKTsKKyAgICBFeHRlbnNpb25zR0xP
cGVuR0xDb21tb24mIGV4dGVuc2lvbnMgPSBnZXRFeHRlbnNpb25zKCk7CiAgICAgaWYgKGF0dHJz
LnN0ZW5jaWwpIHsKICAgICAgICAgaWYgKGV4dGVuc2lvbnMuc3VwcG9ydHMocGFja2VkRGVwdGhT
dGVuY2lsRXh0ZW5zaW9uKSkgewogICAgICAgICAgICAgZXh0ZW5zaW9ucy5lbnN1cmVFbmFibGVk
KHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xFUy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0xFUy5jcHAKaW5kZXggMGQ0NzZjMjI5ZDZmNmVlOTZjY2Y5OTNkODFkNWMzZGQ2NTIx
NWU0OC4uYWI5YzM1Zjg0OTY0MzZjOTYwZTIxMmE0MWJjM2UwY2ZlOWFiYmYwOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4
dEdMT3BlbkdMRVMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29w
ZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEVTLmNwcApAQCAtMjU0LDcgKzI1NCw3IEBAIHZv
aWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNsZWFyRGVwdGgoR0NHTGNsYW1wZiBkZXB0aCkK
IH0KIAogI2lmICFQTEFURk9STShHVEspCi1FeHRlbnNpb25zR0wmIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpnZXRFeHRlbnNpb25zKCkKK0V4dGVuc2lvbnNHTE9wZW5HTENvbW1vbiYgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OmdldEV4dGVuc2lvbnMoKQogewogICAgIGlmICghbV9leHRlbnNp
b25zKQogICAgICAgICBtX2V4dGVuc2lvbnMgPSBtYWtlVW5pcXVlPEV4dGVuc2lvbnNHTE9wZW5H
TEVTPih0aGlzLCBpc0dMRVMyQ29tcGxpYW50KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3ND
b250ZXh0R0xUZXh0dXJlTWFwcGVyLmNwcAppbmRleCA4NzMxNDBiMGQ5NTI0NzQ3OGEyMWYxNGNh
OTk4ZjY3MTZlZTdhZDdhLi5lYTVkYTlmODgxODg3NzIxZTdhZDQyZTg0MGJkYjFhN2RkZjIxNWRl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3Jh
cGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyLmNwcApA
QCAtNDI5LDcgKzQyOSw3IEBAIFBsYXRmb3JtTGF5ZXIqIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjpwbGF0Zm9ybUxheWVyKCkgY29uc3QKIH0KIAogI2lmIFBMQVRGT1JNKEdUSykgJiYgIVVTRShB
TkdMRSkKLUV4dGVuc2lvbnNHTCYgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEV4dGVuc2lv
bnMoKQorRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uJiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
Z2V0RXh0ZW5zaW9ucygpCiB7CiAgICAgaWYgKCFtX2V4dGVuc2lvbnMpIHsKICNpZiBVU0UoT1BF
TkdMX0VTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1Jl
bW90ZUdyYXBoaWNzQ29udGV4dEdMLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLm1lc3NhZ2VzLmluCmluZGV4IGFh
MDM0NzI1ZjlhYTQyZjQyYmQzYzhhMDBiMGFhMTgwOTBhNTliOWEuLmM3ODhkNjVkYjRkOTcxYzJk
NGQ1NDBjNDY4ODhjNDUxMTE0YjM0NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5tZXNzYWdlcy5pbgorKysgYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wu
bWVzc2FnZXMuaW4KQEAgLTI3NCwxNiArMjc0LDExIEBAIG1lc3NhZ2VzIC0+IFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMIE5vdFJlZkNvdW50ZWQgewogICAgIHZvaWQgVW5pZm9ybUJsb2NrQmluZGlu
Zyh1aW50MzJfdCBwcm9ncmFtLCB1aW50MzJfdCB1bmlmb3JtQmxvY2tJbmRleCwgdWludDMyX3Qg
dW5pZm9ybUJsb2NrQmluZGluZykKICAgICB2b2lkIEdldEFjdGl2ZVVuaWZvcm1CbG9ja2l2KHVp
bnQzMl90IHByb2dyYW0sIHVpbnQzMl90IHVuaWZvcm1CbG9ja0luZGV4LCB1aW50MzJfdCBwbmFt
ZSwgdWludDY0X3QgcGFyYW1zU2l6ZSkgLT4gKElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4g
cGFyYW1zKSBTeW5jaHJvbm91cwogICAgIHZvaWQgR2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQigp
IC0+IChpbnQzMl90IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cwotICAgIHZvaWQgQmxpdEZyYW1l
YnVmZmVyQU5HTEUoaW50MzJfdCBzcmNYMCwgaW50MzJfdCBzcmNZMCwgaW50MzJfdCBzcmNYMSwg
aW50MzJfdCBzcmNZMSwgaW50MzJfdCBkc3RYMCwgaW50MzJfdCBkc3RZMCwgaW50MzJfdCBkc3RY
MSwgaW50MzJfdCBkc3RZMSwgdWludDMyX3QgbWFzaywgdWludDMyX3QgZmlsdGVyKQotICAgIHZv
aWQgUmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5HTEUodWludDMyX3QgdGFyZ2V0LCBp
bnQzMl90IHNhbXBsZXMsIHVpbnQzMl90IGludGVybmFsZm9ybWF0LCBpbnQzMl90IHdpZHRoLCBp
bnQzMl90IGhlaWdodCkKICAgICB2b2lkIENyZWF0ZVZlcnRleEFycmF5T0VTKCkgLT4gKHVpbnQz
Ml90IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cwogICAgIHZvaWQgRGVsZXRlVmVydGV4QXJyYXlP
RVModWludDMyX3QgYXJnMCkKICAgICB2b2lkIElzVmVydGV4QXJyYXlPRVModWludDMyX3QgYXJn
MCkgLT4gKGJvb2wgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCiAgICAgdm9pZCBCaW5kVmVydGV4
QXJyYXlPRVModWludDMyX3QgYXJnMCkKICAgICB2b2lkIEdldFRyYW5zbGF0ZWRTaGFkZXJTb3Vy
Y2VBTkdMRSh1aW50MzJfdCBhcmcwKSAtPiAoU3RyaW5nIHJldHVyblZhbHVlKSBTeW5jaHJvbm91
cwotICAgIHZvaWQgSW5zZXJ0RXZlbnRNYXJrZXJFWFQoU3RyaW5nIGFyZzApCi0gICAgdm9pZCBQ
dXNoR3JvdXBNYXJrZXJFWFQoU3RyaW5nIGFyZzApCi0gICAgdm9pZCBQb3BHcm91cE1hcmtlckVY
VCgpCiAgICAgdm9pZCBEcmF3QnVmZmVyc0VYVChJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90
PiBidWZzKQogICAgIHZvaWQgRHJhd0FycmF5c0luc3RhbmNlZEFOR0xFKHVpbnQzMl90IG1vZGUs
IGludDMyX3QgZmlyc3QsIGludDMyX3QgY291bnQsIGludDMyX3QgcHJpbWNvdW50KQogICAgIHZv
aWQgRHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUodWludDMyX3QgbW9kZSwgaW50MzJfdCBjb3Vu
dCwgdWludDMyX3QgdHlwZSwgdWludDY0X3Qgb2Zmc2V0LCBpbnQzMl90IHByaW1jb3VudCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGlj
c0NvbnRleHRHTEZ1bmN0aW9uc0dlbmVyYXRlZC5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMRnVuY3Rpb25zR2VuZXJhdGVkLmgKaW5k
ZXggYWYwMTYwMmFmNDkzZWI2N2RlM2U2MmNmMGU1MGFjMGEyYjk5MjVmMS4uMWJjNTdkZjlhZmRh
MjhkOGJlNGViYzZkNDQ5MzJlYTk1NTMyYWNhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMRnVuY3Rpb25zR2VuZXJh
dGVkLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBo
aWNzQ29udGV4dEdMRnVuY3Rpb25zR2VuZXJhdGVkLmgKQEAgLTExMTgsMTQgKzExMTgsNiBAQAog
ICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmdldEdyYXBo
aWNzUmVzZXRTdGF0dXNBUkIoKTsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmV0dXJuVmFs
dWUpOwogICAgIH0KLSAgICB2b2lkIGJsaXRGcmFtZWJ1ZmZlckFOR0xFKGludDMyX3Qgc3JjWDAs
IGludDMyX3Qgc3JjWTAsIGludDMyX3Qgc3JjWDEsIGludDMyX3Qgc3JjWTEsIGludDMyX3QgZHN0
WDAsIGludDMyX3QgZHN0WTAsIGludDMyX3QgZHN0WDEsIGludDMyX3QgZHN0WTEsIHVpbnQzMl90
IG1hc2ssIHVpbnQzMl90IGZpbHRlcikKLSAgICB7Ci0gICAgICAgIG1fY29udGV4dC0+Z2V0RXh0
ZW5zaW9ucygpLmJsaXRGcmFtZWJ1ZmZlckFOR0xFKHNyY1gwLCBzcmNZMCwgc3JjWDEsIHNyY1kx
LCBkc3RYMCwgZHN0WTAsIGRzdFgxLCBkc3RZMSwgbWFzaywgZmlsdGVyKTsKLSAgICB9Ci0gICAg
dm9pZCByZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVBTkdMRSh1aW50MzJfdCB0YXJnZXQs
IGludDMyX3Qgc2FtcGxlcywgdWludDMyX3QgaW50ZXJuYWxmb3JtYXQsIGludDMyX3Qgd2lkdGgs
IGludDMyX3QgaGVpZ2h0KQotICAgIHsKLSAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25z
KCkucmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5HTEUodGFyZ2V0LCBzYW1wbGVzLCBp
bnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCk7Ci0gICAgfQogICAgIHZvaWQgY3JlYXRlVmVy
dGV4QXJyYXlPRVMoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50MzJfdCk+JiYgY29tcGxldGlv
bkhhbmRsZXIpCiAgICAgewogICAgICAgICBQbGF0Zm9ybUdMT2JqZWN0IHJldHVyblZhbHVlID0g
eyB9OwpAQCAtMTE1MiwxOCArMTE0NCw2IEBACiAgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250
ZXh0LT5nZXRFeHRlbnNpb25zKCkuZ2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFKGFyZzAp
OwogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHJldHVyblZhbHVlKSk7CiAgICAg
fQotICAgIHZvaWQgaW5zZXJ0RXZlbnRNYXJrZXJFWFQoU3RyaW5nJiYgYXJnMCkKLSAgICB7Ci0g
ICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmluc2VydEV2ZW50TWFya2VyRVhUKGFy
ZzApOwotICAgIH0KLSAgICB2b2lkIHB1c2hHcm91cE1hcmtlckVYVChTdHJpbmcmJiBhcmcwKQot
ICAgIHsKLSAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkucHVzaEdyb3VwTWFya2Vy
RVhUKGFyZzApOwotICAgIH0KLSAgICB2b2lkIHBvcEdyb3VwTWFya2VyRVhUKCkKLSAgICB7Ci0g
ICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnBvcEdyb3VwTWFya2VyRVhUKCk7Ci0g
ICAgfQogICAgIHZvaWQgZHJhd0J1ZmZlcnNFWFQoSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJf
dD4mJiBidWZzKQogICAgIHsKICAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuZHJh
d0J1ZmZlcnNFWFQobWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTGVudW0q
PihidWZzLmRhdGEoKSksIGJ1ZnMuc2l6ZSgpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuaCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eS5oCmluZGV4IGQ5OWVkYTI5ZjZkYjVlMTgxOTcxMzE3OGYyYWE1MzFiNGY1ZGQ2
ZTAuLjkwYmRkMzVjMzA0MzA5NTI0NGMwZDEwM2FmZDRhMTZiN2NkMmY5YWQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mv
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5oCkBAIC0zMTIsNTYgKzMxMiwxNiBAQCBwdWJs
aWM6CiAgICAgdm9pZCB1bmlmb3JtQmxvY2tCaW5kaW5nKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3Jh
bSwgR0NHTHVpbnQgdW5pZm9ybUJsb2NrSW5kZXgsIEdDR0x1aW50IHVuaWZvcm1CbG9ja0JpbmRp
bmcpIGZpbmFsOwogICAgIHZvaWQgZ2V0QWN0aXZlVW5pZm9ybUJsb2NraXYoR0NHTHVpbnQgcHJv
Z3JhbSwgR0NHTHVpbnQgdW5pZm9ybUJsb2NrSW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3Bh
bjxHQ0dMaW50PiBwYXJhbXMpIGZpbmFsOwogICAgIEdDR0xpbnQgZ2V0R3JhcGhpY3NSZXNldFN0
YXR1c0FSQigpIGZpbmFsOwotICAgIHZvaWQgYmxpdEZyYW1lYnVmZmVyQU5HTEUoR0NHTGludCBz
cmNYMCwgR0NHTGludCBzcmNZMCwgR0NHTGludCBzcmNYMSwgR0NHTGludCBzcmNZMSwgR0NHTGlu
dCBkc3RYMCwgR0NHTGludCBkc3RZMCwgR0NHTGludCBkc3RYMSwgR0NHTGludCBkc3RZMSwgR0NH
TGJpdGZpZWxkIG1hc2ssIEdDR0xlbnVtIGZpbHRlcikgZmluYWw7Ci0gICAgdm9pZCByZW5kZXJi
dWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xzaXplaSBz
YW1wbGVzLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6
ZWkgaGVpZ2h0KSBmaW5hbDsKICAgICBQbGF0Zm9ybUdMT2JqZWN0IGNyZWF0ZVZlcnRleEFycmF5
T0VTKCkgZmluYWw7CiAgICAgdm9pZCBkZWxldGVWZXJ0ZXhBcnJheU9FUyhQbGF0Zm9ybUdMT2Jq
ZWN0IGFyZzApIGZpbmFsOwogICAgIEdDR0xib29sZWFuIGlzVmVydGV4QXJyYXlPRVMoUGxhdGZv
cm1HTE9iamVjdCBhcmcwKSBmaW5hbDsKICAgICB2b2lkIGJpbmRWZXJ0ZXhBcnJheU9FUyhQbGF0
Zm9ybUdMT2JqZWN0IGFyZzApIGZpbmFsOwogICAgIFN0cmluZyBnZXRUcmFuc2xhdGVkU2hhZGVy
U291cmNlQU5HTEUoUGxhdGZvcm1HTE9iamVjdCBhcmcwKSBmaW5hbDsKLSAgICB2b2lkIGluc2Vy
dEV2ZW50TWFya2VyRVhUKGNvbnN0IFN0cmluZyYgYXJnMCkgZmluYWw7Ci0gICAgdm9pZCBwdXNo
R3JvdXBNYXJrZXJFWFQoY29uc3QgU3RyaW5nJiBhcmcwKSBmaW5hbDsKLSAgICB2b2lkIHBvcEdy
b3VwTWFya2VyRVhUKCkgZmluYWw7CiAgICAgdm9pZCBkcmF3QnVmZmVyc0VYVChHQ0dMU3Bhbjxj
b25zdCBHQ0dMZW51bT4gYnVmcykgZmluYWw7CiAgICAgdm9pZCBkcmF3QXJyYXlzSW5zdGFuY2Vk
QU5HTEUoR0NHTGVudW0gbW9kZSwgR0NHTGludCBmaXJzdCwgR0NHTHNpemVpIGNvdW50LCBHQ0dM
c2l6ZWkgcHJpbWNvdW50KSBmaW5hbDsKICAgICB2b2lkIGRyYXdFbGVtZW50c0luc3RhbmNlZEFO
R0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xzaXplaSBjb3VudCwgR0NHTGVudW0gdHlwZSwgR0NHTHZv
aWRwdHIgb2Zmc2V0LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KSBmaW5hbDsKICAgICB2b2lkIHZlcnRl
eEF0dHJpYkRpdmlzb3JBTkdMRShHQ0dMdWludCBpbmRleCwgR0NHTHVpbnQgZGl2aXNvcikgZmlu
YWw7CiAgICAgdm9pZCBnZXRJbnRlcm5hbGZvcm1hdGl2KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVu
dW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3BhbjxHQ0dMaW50PiBwYXJh
bXMpIGZpbmFsOwotICAgIHZvaWQgcmVhZFBpeGVsc1JvYnVzdEFOR0xFKEdDR0xpbnQgeCwgR0NH
TGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1h
dCwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBH
Q0dMc2l6ZWkqIGNvbHVtbnMsIEdDR0xzaXplaSogcm93cywgR0NHTHZvaWQqIHBpeGVscykgZmlu
YWw7Ci0gICAgdm9pZCB0ZXhQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwg
R0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMZmxvYXQqIHBhcmFt
cykgZmluYWw7Ci0gICAgdm9pZCB0ZXhQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRh
cmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMaW50KiBw
YXJhbXMpIGZpbmFsOwotICAgIHZvaWQgZ2V0UXVlcnlpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRh
cmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0
aCwgR0NHTGludCogcGFyYW1zKSBmaW5hbDsKLSAgICB2b2lkIGdldFF1ZXJ5T2JqZWN0dWl2Um9i
dXN0QU5HTEUoR0NHTHVpbnQgaWQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwg
R0NHTHNpemVpKiBsZW5ndGgsIEdDR0x1aW50KiBwYXJhbXMpIGZpbmFsOwotICAgIHZvaWQgZ2V0
QnVmZmVyUG9pbnRlcnZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1l
LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0x2b2lkKiogcGFyYW1z
KSBmaW5hbDsKLSAgICB2b2lkIGdldFZlcnRleEF0dHJpYklpdlJvYnVzdEFOR0xFKEdDR0x1aW50
IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVu
Z3RoLCBHQ0dMaW50KiBwYXJhbXMpIGZpbmFsOwotICAgIHZvaWQgZ2V0VmVydGV4QXR0cmliSXVp
dlJvYnVzdEFOR0xFKEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1
ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMdWludCogcGFyYW1zKSBmaW5hbDsKLSAgICB2
b2lkIGdldFVuaWZvcm11aXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMaW50IGxv
Y2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0x1aW50KiBw
YXJhbXMpIGZpbmFsOwotICAgIHZvaWQgZ2V0QnVmZmVyUGFyYW1ldGVyaTY0dlJvYnVzdEFOR0xF
KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dM
c2l6ZWkqIGxlbmd0aCwgR0NHTGludDY0KiBwYXJhbXMpIGZpbmFsOwotICAgIHZvaWQgc2FtcGxl
clBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUs
IEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMaW50KiBwYXJhbSkgZmluYWw7Ci0gICAgdm9p
ZCBzYW1wbGVyUGFyYW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51
bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xmbG9hdCogcGFyYW0pIGZpbmFs
OwotICAgIHZvaWQgZ2V0U2FtcGxlclBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2Ft
cGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0
aCwgR0NHTGludCogcGFyYW1zKSBmaW5hbDsKLSAgICB2b2lkIGdldFNhbXBsZXJQYXJhbWV0ZXJm
dlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkg
YnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xmbG9hdCogcGFyYW1zKSBmaW5hbDsKLSAg
ICB2b2lkIGdldEZyYW1lYnVmZmVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJn
ZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgs
IEdDR0xpbnQqIHBhcmFtcykgZmluYWw7Ci0gICAgdm9pZCBnZXRQcm9ncmFtSW50ZXJmYWNlaXZS
b2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMZW51bSBwcm9ncmFtSW50ZXJmYWNlLCBH
Q0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dM
aW50KiBwYXJhbXMpIGZpbmFsOwotICAgIHZvaWQgZ2V0Qm9vbGVhbmlfdlJvYnVzdEFOR0xFKEdD
R0xlbnVtIHRhcmdldCwgR0NHTHVpbnQgaW5kZXgsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6
ZWkqIGxlbmd0aCwgR0NHTGJvb2xlYW4qIGRhdGEpIGZpbmFsOyAvLyBOT0xJTlQKLSAgICB2b2lk
IGdldE11bHRpc2FtcGxlZnZSb2J1c3RBTkdMRShHQ0dMZW51bSBwbmFtZSwgR0NHTHVpbnQgaW5k
ZXgsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGZsb2F0KiB2YWwp
IGZpbmFsOwotICAgIHZvaWQgZ2V0VGV4TGV2ZWxQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xl
bnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZT
aXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1zKSBmaW5hbDsKLSAgICB2b2lk
IGdldFRleExldmVsUGFyYW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xp
bnQgbGV2ZWwsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBs
ZW5ndGgsIEdDR0xmbG9hdCogcGFyYW1zKSBmaW5hbDsKLSAgICB2b2lkIGdldFBvaW50ZXJ2Um9i
dXN0QU5HTEVSb2J1c3RBTkdMRShHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdD
R0xzaXplaSogbGVuZ3RoLCBHQ0dMdm9pZCoqIHBhcmFtcykgZmluYWw7Ci0gICAgdm9pZCBnZXRu
VW5pZm9ybWZ2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwg
R0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMZmxvYXQqIHBhcmFtcykg
ZmluYWw7Ci0gICAgdm9pZCBnZXRuVW5pZm9ybWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3Jh
bSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3Ro
LCBHQ0dMaW50KiBwYXJhbXMpIGZpbmFsOwotICAgIHZvaWQgZ2V0blVuaWZvcm11aXZSb2J1c3RB
TkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6
ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0x1aW50KiBwYXJhbXMpIGZpbmFsOwotICAgIHZvaWQg
dGV4UGFyYW1ldGVySWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFt
ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xpbnQqIHBhcmFtcykgZmluYWw7Ci0gICAg
dm9pZCB0ZXhQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51
bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0x1aW50KiBwYXJhbXMpIGZpbmFs
OwotICAgIHZvaWQgZ2V0VGV4UGFyYW1ldGVySWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBH
Q0dMaW50KiBwYXJhbXMpIGZpbmFsOwotICAgIHZvaWQgZ2V0VGV4UGFyYW1ldGVySXVpdlJvYnVz
dEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXpl
LCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHVpbnQqIHBhcmFtcykgZmluYWw7Ci0gICAgdm9pZCBz
YW1wbGVyUGFyYW1ldGVySWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0g
cG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMaW50KiBwYXJhbSkgZmluYWw7Ci0g
ICAgdm9pZCBzYW1wbGVyUGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIs
IEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTHVpbnQqIHBhcmFt
KSBmaW5hbDsKLSAgICB2b2lkIGdldFNhbXBsZXJQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRShHQ0dM
dWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXpl
aSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpIGZpbmFsOwotICAgIHZvaWQgZ2V0U2FtcGxlclBh
cmFtZXRlckl1aXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwg
R0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMdWludCogcGFyYW1zKSBm
aW5hbDsKLSAgICB2b2lkIGdldFF1ZXJ5T2JqZWN0aXZSb2J1c3RBTkdMRShHQ0dMdWludCBpZCwg
R0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NH
TGludCogcGFyYW1zKSBmaW5hbDsKLSAgICB2b2lkIGdldFF1ZXJ5T2JqZWN0aTY0dlJvYnVzdEFO
R0xFKEdDR0x1aW50IGlkLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xz
aXplaSogbGVuZ3RoLCBHQ0dMaW50NjQqIHBhcmFtcykgZmluYWw7Ci0gICAgdm9pZCBnZXRRdWVy
eU9iamVjdHVpNjR2Um9idXN0QU5HTEUoR0NHTHVpbnQgaWQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dM
c2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0x1aW50NjQqIHBhcmFtcykgZmlu
YWw7CiAgICAgLy8gRW5kIG9mIGxpc3QgdXNlZCBieSBnZW5lcmF0ZS1ncHVwLXdlYmdsIHNjcmlw
dC4KIAogcHJvdGVjdGVkOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5RnVuY3Rpb25zR2VuZXJhdGVk
LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eUZ1bmN0aW9uc0dlbmVyYXRlZC5jcHAKaW5kZXggZjdlY2Y4NjU1NmEw
MDczYWY4ZjU1NGNmY2ZjMGVmMzM5ZjYxZTg5YS4uZTFhNmRkMzRlNTViNTI1ZmVmMjZiNTdjYjEz
MjUyY2YzMmJkMDY5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9n
cmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5RnVuY3Rpb25zR2VuZXJhdGVkLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHlGdW5jdGlvbnNHZW5lcmF0ZWQuY3BwCkBAIC0xMzgwLDE2ICsxMzgw
LDYgQEAgR0NHTGludCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRHcmFwaGljc1Jl
c2V0U3RhdHVzQVJCKCkKICAgICByZXR1cm4gcmV0dXJuVmFsdWU7CiB9CiAKLXZvaWQgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmxpdEZyYW1lYnVmZmVyQU5HTEUoR0NHTGludCBzcmNY
MCwgR0NHTGludCBzcmNZMCwgR0NHTGludCBzcmNYMSwgR0NHTGludCBzcmNZMSwgR0NHTGludCBk
c3RYMCwgR0NHTGludCBkc3RZMCwgR0NHTGludCBkc3RYMSwgR0NHTGludCBkc3RZMSwgR0NHTGJp
dGZpZWxkIG1hc2ssIEdDR0xlbnVtIGZpbHRlcikKLXsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6QmxpdEZyYW1lYnVmZmVyQU5HTEUoc3JjWDAsIHNyY1kwLCBz
cmNYMSwgc3JjWTEsIGRzdFgwLCBkc3RZMCwgZHN0WDEsIGRzdFkxLCBtYXNrLCBmaWx0ZXIpLCBt
X2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Ci19Ci0KLXZvaWQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6cmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5HTEUoR0NHTGVu
dW0gdGFyZ2V0LCBHQ0dMc2l6ZWkgc2FtcGxlcywgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdD
R0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkKLXsKLSAgICBzZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6UmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5H
TEUodGFyZ2V0LCBzYW1wbGVzLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCksIG1fZ3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKLX0KLQogUGxhdGZvcm1HTE9iamVjdCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpjcmVhdGVWZXJ0ZXhBcnJheU9FUygpCiB7CiAgICAgdWlu
dDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07CkBAIC0xNDIxLDIxICsxNDExLDYgQEAgU3RyaW5nIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdM
RShQbGF0Zm9ybUdMT2IKICAgICByZXR1cm4gcmV0dXJuVmFsdWU7CiB9CiAKLXZvaWQgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aW5zZXJ0RXZlbnRNYXJrZXJFWFQoY29uc3QgU3RyaW5n
JiBhcmcwKQotewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJ
bnNlcnRFdmVudE1hcmtlckVYVChhcmcwKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIp
OwotfQotCi12b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnB1c2hHcm91cE1hcmtl
ckVYVChjb25zdCBTdHJpbmcmIGFyZzApCi17Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OlB1c2hHcm91cE1hcmtlckVYVChhcmcwKSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIpOwotfQotCi12b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OnBvcEdyb3VwTWFya2VyRVhUKCkKLXsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6UG9wR3JvdXBNYXJrZXJFWFQoKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIpOwotfQotCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRyYXdCdWZm
ZXJzRVhUKEdDR0xTcGFuPGNvbnN0IEdDR0xlbnVtPiBidWZzKQogewogICAgIHNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEcmF3QnVmZmVyc0VYVChJUEM6OkFycmF5UmVm
ZXJlbmNlPHVpbnQzMl90PihyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQzMl90Kj4oYnVmcy5k
YXRhKSwgYnVmcy5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKQEAg
LTE0NjUsMTgxICsxNDQwLDYgQEAgdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpn
ZXRJbnRlcm5hbGZvcm1hdGl2KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0KICAgICAKIH0KIAot
dm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpyZWFkUGl4ZWxzUm9idXN0QU5HTEUo
R0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwg
R0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNp
emVpKiBsZW5ndGgsIEdDR0xzaXplaSogY29sdW1ucywgR0NHTHNpemVpKiByb3dzLCBHQ0dMdm9p
ZCogcGl4ZWxzKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6dGV4UGFyYW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dMZW51bSB0
YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGZsb2F0
KiBwYXJhbXMpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5Ojp0ZXhQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRh
cmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMaW50KiBw
YXJhbXMpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpnZXRRdWVyeWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dM
aW50KiBwYXJhbXMpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRRdWVyeU9iamVjdHVpdlJvYnVzdEFOR0xFKEdDR0x1
aW50IGlkLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVu
Z3RoLCBHQ0dMdWludCogcGFyYW1zKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZv
aWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0QnVmZmVyUG9pbnRlcnZSb2J1c3RB
TkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwg
R0NHTHNpemVpKiBsZW5ndGgsIEdDR0x2b2lkKiogcGFyYW1zKQotewotICAgIG5vdEltcGxlbWVu
dGVkKCk7Ci19Ci0KLXZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VmVydGV4
QXR0cmliSWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dM
c2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykKLXsKLSAg
ICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OmdldFZlcnRleEF0dHJpYkl1aXZSb2J1c3RBTkdMRShHQ0dMdWludCBpbmRleCwgR0NHTGVu
dW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHVpbnQq
IHBhcmFtcykKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OmdldFVuaWZvcm11aXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9n
cmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5n
dGgsIEdDR0x1aW50KiBwYXJhbXMpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9p
ZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRCdWZmZXJQYXJhbWV0ZXJpNjR2Um9i
dXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNp
emUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50NjQqIHBhcmFtcykKLXsKLSAgICBub3RJbXBs
ZW1lbnRlZCgpOwotfQotCi12b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnNhbXBs
ZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1l
LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGludCogcGFyYW0pCi17Ci0gICAgbm90SW1w
bGVtZW50ZWQoKTsKLX0KLQotdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpzYW1w
bGVyUGFyYW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFt
ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xmbG9hdCogcGFyYW0pCi17Ci0gICAgbm90
SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpn
ZXRTYW1wbGVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51
bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBw
YXJhbXMpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpnZXRTYW1wbGVyUGFyYW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dMdWlu
dCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSog
bGVuZ3RoLCBHQ0dMZmxvYXQqIHBhcmFtcykKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQot
Ci12b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEZyYW1lYnVmZmVyUGFyYW1l
dGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6
ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykKLXsKLSAgICBu
b3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmdldFByb2dyYW1JbnRlcmZhY2VpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xl
bnVtIHByb2dyYW1JbnRlcmZhY2UsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwg
R0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykKLXsKLSAgICBub3RJbXBsZW1lbnRl
ZCgpOwotfQotCi12b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEJvb2xlYW5p
X3ZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0x1aW50IGluZGV4LCBHQ0dMc2l6ZWkg
YnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xib29sZWFuKiBkYXRhKSAvLyBOT0xJTlQK
LXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmdldE11bHRpc2FtcGxlZnZSb2J1c3RBTkdMRShHQ0dMZW51bSBwbmFtZSwgR0NH
THVpbnQgaW5kZXgsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGZs
b2F0KiB2YWwpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpnZXRUZXhMZXZlbFBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1
ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpCi17Ci0gICAgbm90SW1w
bGVtZW50ZWQoKTsKLX0KLQotdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRU
ZXhMZXZlbFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxl
dmVsLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3Ro
LCBHQ0dMZmxvYXQqIHBhcmFtcykKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lk
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFBvaW50ZXJ2Um9idXN0QU5HTEVSb2J1
c3RBTkdMRShHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVu
Z3RoLCBHQ0dMdm9pZCoqIHBhcmFtcykKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12
b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldG5Vbmlmb3JtZnZSb2J1c3RBTkdM
RShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwg
R0NHTHNpemVpKiBsZW5ndGgsIEdDR0xmbG9hdCogcGFyYW1zKQotewotICAgIG5vdEltcGxlbWVu
dGVkKCk7Ci19Ci0KLXZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0blVuaWZv
cm1pdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xz
aXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1zKQotewotICAg
IG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6Z2V0blVuaWZvcm11aXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMaW50IGxv
Y2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0x1aW50KiBw
YXJhbXMpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5Ojp0ZXhQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJn
ZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGludCogcGFy
YW1zKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6dGV4UGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdl
dCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMdWludCogcGFy
YW1zKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6Z2V0VGV4UGFyYW1ldGVySWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3Ro
LCBHQ0dMaW50KiBwYXJhbXMpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRUZXhQYXJhbWV0ZXJJdWl2Um9idXN0QU5H
TEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdD
R0xzaXplaSogbGVuZ3RoLCBHQ0dMdWludCogcGFyYW1zKQotewotICAgIG5vdEltcGxlbWVudGVk
KCk7Ci19Ci0KLXZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c2FtcGxlclBhcmFt
ZXRlcklpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dM
c2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGludCogcGFyYW0pCi17Ci0gICAgbm90SW1wbGVtZW50
ZWQoKTsKLX0KLQotdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpzYW1wbGVyUGFy
YW1ldGVySXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBH
Q0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTHVpbnQqIHBhcmFtKQotewotICAgIG5vdEltcGxl
bWVudGVkKCk7Ci19Ci0KLXZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0U2Ft
cGxlclBhcmFtZXRlcklpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBu
YW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFt
cykKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmdldFNhbXBsZXJQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQg
c2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxl
bmd0aCwgR0NHTHVpbnQqIHBhcmFtcykKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12
b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFF1ZXJ5T2JqZWN0aXZSb2J1c3RB
TkdMRShHQ0dMdWludCBpZCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dM
c2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1zKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7
Ci19Ci0KLXZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0UXVlcnlPYmplY3Rp
NjR2Um9idXN0QU5HTEUoR0NHTHVpbnQgaWQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVm
U2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQ2NCogcGFyYW1zKQotewotICAgIG5vdElt
cGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0
UXVlcnlPYmplY3R1aTY0dlJvYnVzdEFOR0xFKEdDR0x1aW50IGlkLCBHQ0dMZW51bSBwbmFtZSwg
R0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMdWludDY0KiBwYXJhbXMp
Ci17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQogfQogCiAjZW5kaWYK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>417020</attachid>
            <date>2021-01-05 11:02:04 -0800</date>
            <delta_ts>2021-01-25 13:05:35 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-218896-20210105110203.patch</filename>
            <type>text/plain</type>
            <size>94157</size>
            <attacher name="Rini Patel">rini_patel</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcxMTU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTcwNzUyZmZhYzhmOGZm
OTEzZjIyMGQzMzlmODZlOTk0OWE1OTVlMy4uYmY5Zjc2ZWQ2MDkzMDkyNjI5N2I0M2ZkNDIxMzQ4
NzRjNDI3NWFkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0MCBAQAorMjAyMS0wMS0wNSAgUmlu
aSBQYXRlbCAgPHJpbmlfcGF0ZWxAYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZSB1bnVzZWQg
ZnVuY3Rpb25zIGZyb20gR3JhcGhpY3NDb250ZXh0R0wgYW5kIEV4dGVuc2lvbnNHTAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE4ODk2CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVtb3ZlIHVudXNlZCBm
dW5jdGlvbnMgZnJvbSBHcmFwaGljc0NvbnRleHRHTCBhbmQgRXh0ZW5zaW9uc0dMCisgICAgICAg
IFRoZXkncmUgZGVhZCBjb2RlIGFuZCBtYWtlIGl0IGhhcmRlciB0byBpbXBsZW1lbnQgdGhlIEdQ
VSBQcm9jZXNzIHZlcnNpb24uCisKKyAgICAgICAgLSBJZiB0aGUgZnVuY3Rpb24gaXMgdW51c2Vk
LCByZW1vdmUgaXQgZnVsbHkKKyAgICAgICAgLSBJZiB0aGUgZnVuY3Rpb24gaXMgdW51c2VkIGlu
IFVTRShBTkdMRSkgV2ViR0wgcGFydCwgcmVtb3ZlIHRoZSBmdW5jdGlvbiBmcm9tIEdyYXBoaWNz
Q29udGV4dEdMIGFuZCBBTkdMRSBHcmFwaGljc0NvbnRleHRHTE9wZW5HTAorCisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvRXh0ZW5zaW9uc0dMLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OmdldG5Vbmlmb3JtaXZFWFQp
OgorICAgICAgICAoV2ViQ29yZTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6Omlz
TlZJRElBKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHlCYXNlOjppc0FNRCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6aXNJbnRlbCk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6aXNJbWFnaW5hdGlvbik6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
QmFzZTo6dmVuZG9yKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHlCYXNlOjpyZXF1aXJlc0J1aWx0SW5GdW5jdGlvbkVtdWxhdGlvbik6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFz
ZTo6cmVxdWlyZXNSZXN0cmljdGVkTWF4aW11bVRleHR1cmVTaXplKTogRGVsZXRlZC4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5o
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpFeHRlbnNpb25zR0xBTkdM
RSk6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6aW5pdGlhbGl6ZUF2YWls
YWJsZUV4dGVuc2lvbnMpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmJs
aXRGcmFtZWJ1ZmZlckFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lv
bnNHTEFOR0xFOjpyZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVBTkdMRSk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6aW5zZXJ0RXZlbnRNYXJrZXJF
WFQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OnB1c2hH
cm91cE1hcmtlckVYVCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xB
TkdMRTo6cG9wR3JvdXBNYXJrZXJFWFQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0
ZW5zaW9uc0dMQU5HTEU6OnJlYWRQaXhlbHNSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6dGV4UGFyYW1ldGVyZnZSb2J1c3RBTkdMRSk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6dGV4UGFyYW1l
dGVyaXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25z
R0xBTkdMRTo6Z2V0UXVlcnlpdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpnZXRRdWVyeU9iamVjdHVpdlJvYnVzdEFOR0xFKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpnZXRCdWZmZXJQb2lu
dGVydlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNH
TEFOR0xFOjpnZXRWZXJ0ZXhBdHRyaWJJaXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6Z2V0VmVydGV4QXR0cmliSXVpdlJvYnVzdEFO
R0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpnZXRV
bmlmb3JtdWl2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5z
aW9uc0dMQU5HTEU6OmdldEJ1ZmZlclBhcmFtZXRlcmk2NHZSb2J1c3RBTkdMRSk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6c2FtcGxlclBhcmFtZXRlcml2
Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5H
TEU6OnNhbXBsZXJQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpnZXRTYW1wbGVyUGFyYW1ldGVyaXZSb2J1c3RBTkdM
RSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6Z2V0U2Ft
cGxlclBhcmFtZXRlcmZ2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
RXh0ZW5zaW9uc0dMQU5HTEU6OmdldEZyYW1lYnVmZmVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRSk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6Z2V0UHJvZ3Jh
bUludGVyZmFjZWl2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0
ZW5zaW9uc0dMQU5HTEU6OmdldEJvb2xlYW5pX3ZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6Z2V0TXVsdGlzYW1wbGVmdlJvYnVzdEFO
R0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpnZXRU
ZXhMZXZlbFBhcmFtZXRlcml2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldFRleExldmVsUGFyYW1ldGVyZnZSb2J1c3RBTkdMRSk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6Z2V0UG9pbnRl
cnZSb2J1c3RBTkdMRVJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4
dGVuc2lvbnNHTEFOR0xFOjpnZXRuVW5pZm9ybWZ2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldG5Vbmlmb3JtaXZSb2J1c3RBTkdM
RSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6Z2V0blVu
aWZvcm11aXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNp
b25zR0xBTkdMRTo6dGV4UGFyYW1ldGVySWl2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OnRleFBhcmFtZXRlckl1aXZSb2J1c3RBTkdM
RSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6Z2V0VGV4
UGFyYW1ldGVySWl2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0
ZW5zaW9uc0dMQU5HTEU6OmdldFRleFBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6c2FtcGxlclBhcmFtZXRlcklp
dlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFO
R0xFOjpzYW1wbGVyUGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpnZXRTYW1wbGVyUGFyYW1ldGVySWl2Um9idXN0
QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6Omdl
dFNhbXBsZXJQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldFF1ZXJ5T2JqZWN0aXZSb2J1c3RBTkdMRSk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6Z2V0UXVlcnlPYmpl
Y3RpNjR2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9u
c0dMQU5HTEU6OmdldFF1ZXJ5T2JqZWN0dWk2NHZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZXNoYXBlRkJPcyk6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6bWFya0xheWVyQ29t
cG9zaXRlZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNH
TE9wZW5HTC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0w6OmJsaXRG
cmFtZWJ1ZmZlckFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNH
TE9wZW5HTDo6cmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5HTEUpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMOjppbnNlcnRFdmVudE1hcmtlckVY
VCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0w6OnB1c2hH
cm91cE1hcmtlckVYVCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xP
cGVuR0w6OnBvcEdyb3VwTWFya2VyRVhUKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMLmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OnJlYWRQaXhlbHNSb2J1c3RBTkdMRSk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OnRl
eFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0
ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjp0ZXhQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0UXVlcnlp
dlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9w
ZW5HTENvbW1vbjo6Z2V0UXVlcnlPYmplY3R1aXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldEJ1ZmZlclBvaW50ZXJ2
Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3Bl
bkdMQ29tbW9uOjpnZXRWZXJ0ZXhBdHRyaWJJaXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFZlcnRleEF0dHJpYkl1
aXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xP
cGVuR0xDb21tb246OmdldFVuaWZvcm11aXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldEJ1ZmZlclBhcmFtZXRlcmk2
NHZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xP
cGVuR0xDb21tb246OnNhbXBsZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6c2FtcGxlclBhcmFtZXRl
cmZ2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dM
T3BlbkdMQ29tbW9uOjpnZXRTYW1wbGVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFNhbXBsZXJQ
YXJhbWV0ZXJmdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVu
c2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0RnJhbWVidWZmZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xF
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6
Z2V0UHJvZ3JhbUludGVyZmFjZWl2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRCb29sZWFuaV92Um9idXN0QU5HTEUp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpn
ZXRNdWx0aXNhbXBsZWZ2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRUZXhMZXZlbFBhcmFtZXRlcml2Um9idXN0QU5H
TEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9u
OjpnZXRUZXhMZXZlbFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRQb2ludGVydlJvYnVzdEFOR0xF
Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3Bl
bkdMQ29tbW9uOjpnZXRuVW5pZm9ybWZ2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRuVW5pZm9ybWl2Um9idXN0QU5H
TEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9u
OjpnZXRuVW5pZm9ybXVpdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6dGV4UGFyYW1ldGVySWl2Um9idXN0QU5HTEUpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjp0ZXhQ
YXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0
ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRUZXhQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRSk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFRl
eFBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpF
eHRlbnNpb25zR0xPcGVuR0xDb21tb246OnNhbXBsZXJQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRSk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OnNh
bXBsZXJQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRTYW1wbGVyUGFyYW1ldGVySWl2Um9idXN0
QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29t
bW9uOjpnZXRTYW1wbGVyUGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0UXVlcnlPYmplY3RpdlJv
YnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5H
TENvbW1vbjo6Z2V0UXVlcnlPYmplY3RpNjR2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRRdWVyeU9iamVjdHVpNjR2
Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5n
bC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uaDoKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lv
bnNHTE9wZW5HTENvbW1vbjo6aXNOVklESUEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RXh0
ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjppc0FNRCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpF
eHRlbnNpb25zR0xPcGVuR0xDb21tb246OmlzSW50ZWwgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjppc0ltYWdpbmF0aW9uIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6dmVuZG9yIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6cmVxdWlyZXNCdWlsdElu
RnVuY3Rpb25FbXVsYXRpb24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dM
T3BlbkdMQ29tbW9uOjpyZXF1aXJlc1Jlc3RyaWN0ZWRNYXhpbXVtVGV4dHVyZVNpemUgY29uc3Qp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xF
Uy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xFUzo6YmxpdEZyYW1l
YnVmZmVyQU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3Bl
bkdMRVM6Omluc2VydEV2ZW50TWFya2VyRVhUKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkV4dGVuc2lvbnNHTE9wZW5HTEVTOjpwdXNoR3JvdXBNYXJrZXJFWFQpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMRVM6OnBvcEdyb3VwTWFya2VyRVhUKTog
RGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dM
T3BlbkdMRVMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0wuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0xCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpyZXNoYXBlRkJPcyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6Z2V0RXh0ZW5zaW9ucyk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29tbW9uLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2YWxpZGF0ZURlcHRoU3RlbmNpbCk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMRVMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Omdl
dEV4dGVuc2lvbnMpOgorCiAyMDIxLTAxLTA1ICBTaWh1aSBMaXUgIDxzaWh1aV9saXVAYXBwZS5j
b20+CiAKICAgICAgICAgRmFpbCBzcGVlY2ggcmVjb2duaXRpb24gd2hlbiBwYWdlIGlzIG11dGVk
IGZvciBhdWRpbyBjYXB0dXJlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDY1ODRiOTljM2ZmNGQ4ZGY4ZGVhNGUyZTQy
MmJjODQ2YzY5NjI2ZjcuLjA2YjFiNGY1Zjk4ZDg3OTI5ZjliNDg0MGZjZjIyODE5NTAxZjVlZGYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsNjIgQEAKKzIwMjEtMDEtMDUgIFJpbmkgUGF0ZWwgIDxyaW5p
X3BhdGVsQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgdW51c2VkIGZ1bmN0aW9ucyBmcm9t
IEdyYXBoaWNzQ29udGV4dEdMIGFuZCBFeHRlbnNpb25zR0wKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxODg5NgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVH
cmFwaGljc0NvbnRleHRHTC5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBo
aWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMRnVuY3Rpb25zR2VuZXJhdGVkLmg6CisgICAgICAg
IChnZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJCKToKKyAgICAgICAgKGdldFRyYW5zbGF0ZWRTaGFk
ZXJTb3VyY2VBTkdMRSk6CisgICAgICAgIChibGl0RnJhbWVidWZmZXJBTkdMRSk6IERlbGV0ZWQu
CisgICAgICAgIChyZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVBTkdMRSk6IERlbGV0ZWQu
CisgICAgICAgIChpbnNlcnRFdmVudE1hcmtlckVYVCk6IERlbGV0ZWQuCisgICAgICAgIChwdXNo
R3JvdXBNYXJrZXJFWFQpOiBEZWxldGVkLgorICAgICAgICAocG9wR3JvdXBNYXJrZXJFWFQpOiBE
ZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHkuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5RnVuY3Rpb25zR2VuZXJhdGVkLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmxpdEZyYW1lYnVmZmVyQU5H
TEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpyZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVBTkdMRSk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Omluc2VydEV2ZW50TWFy
a2VyRVhUKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6cHVzaEdyb3VwTWFya2VyRVhUKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cG9wR3JvdXBNYXJrZXJFWFQpOiBEZWxldGVk
LgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpyZWFkUGl4
ZWxzUm9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5Ojp0ZXhQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4UGFyYW1ldGVy
aXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmdldFF1ZXJ5aXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFF1ZXJ5T2JqZWN0dWl2
Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpnZXRCdWZmZXJQb2ludGVydlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VmVydGV4QXR0
cmliSWl2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpnZXRWZXJ0ZXhBdHRyaWJJdWl2Um9idXN0QU5HTEUpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRV
bmlmb3JtdWl2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRCdWZmZXJQYXJhbWV0ZXJpNjR2Um9idXN0QU5HTEUp
OiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpzYW1wbGVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnNhbXBsZXJQYXJhbWV0ZXJmdlJvYnVz
dEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6Z2V0U2FtcGxlclBhcmFtZXRlcml2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRTYW1wbGVyUGFy
YW1ldGVyZnZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEZyYW1lYnVmZmVyUGFyYW1ldGVyaXZSb2J1c3RBTkdM
RSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OmdldFByb2dyYW1JbnRlcmZhY2VpdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0Qm9vbGVhbmlfdlJvYnVz
dEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6Z2V0TXVsdGlzYW1wbGVmdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VGV4TGV2ZWxQYXJhbWV0
ZXJpdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6Z2V0VGV4TGV2ZWxQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0
UG9pbnRlcnZSb2J1c3RBTkdMRVJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0blVuaWZvcm1mdlJvYnVzdEFOR0xF
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6Z2V0blVuaWZvcm1pdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0blVuaWZvcm11aXZSb2J1c3RBTkdMRSk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OnRleFBhcmFtZXRlcklpdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4UGFyYW1ldGVySXVpdlJvYnVzdEFOR0xF
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6Z2V0VGV4UGFyYW1ldGVySWl2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRUZXhQYXJhbWV0ZXJJdWl2Um9i
dXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpzYW1wbGVyUGFyYW1ldGVySWl2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpzYW1wbGVyUGFyYW1l
dGVySXVpdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0U2FtcGxlclBhcmFtZXRlcklpdlJvYnVzdEFOR0xFKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
Z2V0U2FtcGxlclBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFF1ZXJ5T2JqZWN0aXZSb2J1
c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmdldFF1ZXJ5T2JqZWN0aTY0dlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0UXVlcnlPYmplY3R1
aTY0dlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKwogMjAyMS0wMS0wNSAgU2lodWkgTGl1ICA8c2lo
dWlfbGl1QGFwcGUuY29tPgogCiAgICAgICAgIEZhaWwgc3BlZWNoIHJlY29nbml0aW9uIHdoZW4g
cGFnZSBpcyBtdXRlZCBmb3IgYXVkaW8gY2FwdHVyZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcAppbmRleCBjMWE4
OTM3ZWVjN2ZhZmViZWVkNWU0MDFlYzA4NmRiZmY4NGM1OWE4Li5kYzBjYzhjMjNmNGNlOTVmMGRk
ZGE1ZmFmZTc1N2ZjNGY0NzUyNWJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcApAQCAtNzM1LDEwICs3MzUs
NiBAQCBzdGQ6OnVuaXF1ZV9wdHI8V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZT4gV2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZTo6Y3JlYXRlKENhbgogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAg
ICB9CiAKLSAgICBhdXRvJiBleHRlbnNpb25zID0gY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpOwot
ICAgIGlmIChleHRlbnNpb25zLnN1cHBvcnRzKCJHTF9FWFRfZGVidWdfbWFya2VyIl9zKSkKLSAg
ICAgICAgZXh0ZW5zaW9ucy5wdXNoR3JvdXBNYXJrZXJFWFQoIldlYkdMUmVuZGVyaW5nQ29udGV4
dCJfcyk7Ci0KICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZT4g
cmVuZGVyaW5nQ29udGV4dDsKICNpZiBFTkFCTEUoV0VCR0wyKQogICAgIGlmICh0eXBlID09IFdl
YkdMVmVyc2lvbjo6V2ViR0wyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvRXh0ZW5zaW9uc0dMLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9FeHRlbnNpb25zR0wuaAppbmRleCBkNTAyMWRkMzM0ZWRmOTFhMzQyMzBiZTAxNjg5MjA3NDI0
OWViMGU4Li5hYzhjODg5MzIzNDU2NzJlOWQwNTNmY2Q5N2EyMmRhOGU5OTA1ZThjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9FeHRlbnNpb25zR0wuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9FeHRlbnNpb25zR0wuaApAQCAtMjgx
LDEyICsyODEsNiBAQCBwdWJsaWM6CiAgICAgLy8gZXh0ZXJuYWxseS4KICAgICB2aXJ0dWFsIEdD
R0xpbnQgZ2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQigpID0gMDsKIAotICAgIC8vIEdMX0FOR0xF
X2ZyYW1lYnVmZmVyX2JsaXQKLSAgICB2aXJ0dWFsIHZvaWQgYmxpdEZyYW1lYnVmZmVyQU5HTEUo
R0NHTGludCBzcmNYMCwgR0NHTGludCBzcmNZMCwgR0NHTGludCBzcmNYMSwgR0NHTGludCBzcmNZ
MSwgR0NHTGludCBkc3RYMCwgR0NHTGludCBkc3RZMCwgR0NHTGludCBkc3RYMSwgR0NHTGludCBk
c3RZMSwgR0NHTGJpdGZpZWxkIG1hc2ssIEdDR0xlbnVtIGZpbHRlcikgPSAwOwotCi0gICAgLy8g
R0xfQU5HTEVfZnJhbWVidWZmZXJfbXVsdGlzYW1wbGUKLSAgICB2aXJ0dWFsIHZvaWQgcmVuZGVy
YnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWkg
c2FtcGxlcywgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNp
emVpIGhlaWdodCkgPSAwOwotCiAgICAgLy8gR0xfT0VTX3ZlcnRleF9hcnJheV9vYmplY3QKICAg
ICB2aXJ0dWFsIFBsYXRmb3JtR0xPYmplY3QgY3JlYXRlVmVydGV4QXJyYXlPRVMoKSA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIGRlbGV0ZVZlcnRleEFycmF5T0VTKFBsYXRmb3JtR0xPYmplY3QpID0g
MDsKQEAgLTI5NiwxMSArMjkwLDYgQEAgcHVibGljOgogICAgIC8vIEdMX0FOR0xFX3RyYW5zbGF0
ZWRfc2hhZGVyX3NvdXJjZQogICAgIHZpcnR1YWwgU3RyaW5nIGdldFRyYW5zbGF0ZWRTaGFkZXJT
b3VyY2VBTkdMRShQbGF0Zm9ybUdMT2JqZWN0KSA9IDA7CiAKLSAgICAvLyBHTF9FWFRfZGVidWdf
bWFya2VyCi0gICAgdmlydHVhbCB2b2lkIGluc2VydEV2ZW50TWFya2VyRVhUKGNvbnN0IFN0cmlu
ZyYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgcHVzaEdyb3VwTWFya2VyRVhUKGNvbnN0IFN0cmlu
ZyYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgcG9wR3JvdXBNYXJrZXJFWFQoKSA9IDA7Ci0KICAg
ICAvLyBHTF9BUkJfZHJhd19idWZmZXJzIC8gR0xfRVhUX2RyYXdfYnVmZmVycwogICAgIHZpcnR1
YWwgdm9pZCBkcmF3QnVmZmVyc0VYVChHQ0dMU3Bhbjxjb25zdCBHQ0dMZW51bT4gYnVmcykgPSAw
OwogCkBAIC0zMDksNDcgKzI5OCw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZHJhd0Vs
ZW1lbnRzSW5zdGFuY2VkQU5HTEUoR0NHTGVudW0gbW9kZSwgR0NHTHNpemVpIGNvdW50LCBHQ0dM
ZW51bSB0eXBlLCBHQ0dMdm9pZHB0ciBvZmZzZXQsIEdDR0xzaXplaSBwcmltY291bnQpID0gMDsK
ICAgICB2aXJ0dWFsIHZvaWQgdmVydGV4QXR0cmliRGl2aXNvckFOR0xFKEdDR0x1aW50IGluZGV4
LCBHQ0dMdWludCBkaXZpc29yKSA9IDA7CiAKLSAgICAvLyBHTF9BTkdMRV9yb2J1c3RfY2xpZW50
X21lbW9yeQotICAgIHZpcnR1YWwgdm9pZCByZWFkUGl4ZWxzUm9idXN0QU5HTEUoR0NHTGludCB4
LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0g
Zm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5n
dGgsIEdDR0xzaXplaSogY29sdW1ucywgR0NHTHNpemVpKiByb3dzLCBHQ0dMdm9pZCogcGl4ZWxz
KSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHRleFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTGVu
dW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xm
bG9hdCogcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHRleFBhcmFtZXRlcml2Um9idXN0
QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUs
IGNvbnN0IEdDR0xpbnQqIHBhcmFtcykgPSAwOwotCi0gICAgdmlydHVhbCB2b2lkIGdldFF1ZXJ5
aXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkg
YnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykgPSAwOwotICAgIHZp
cnR1YWwgdm9pZCBnZXRRdWVyeU9iamVjdHVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IGlkLCBHQ0dM
ZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMdWlu
dCogcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldEJ1ZmZlclBvaW50ZXJ2Um9idXN0
QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUs
IEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMdm9pZCoqIHBhcmFtcykgPSAwOwotICAgIHZpcnR1YWwg
dm9pZCBnZXRWZXJ0ZXhBdHRyaWJJaXZSb2J1c3RBTkdMRShHQ0dMdWludCBpbmRleCwgR0NHTGVu
dW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCog
cGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldFZlcnRleEF0dHJpYkl1aXZSb2J1c3RB
TkdMRShHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBH
Q0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHVpbnQqIHBhcmFtcykgPSAwOwotICAgIHZpcnR1YWwgdm9p
ZCBnZXRVbmlmb3JtdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2Nh
dGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMdWludCogcGFy
YW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldEJ1ZmZlclBhcmFtZXRlcmk2NHZSb2J1c3RB
TkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwg
R0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQ2NCogcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2
b2lkIHNhbXBsZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xl
bnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGludCogcGFyYW0pID0gMDsK
LSAgICB2aXJ0dWFsIHZvaWQgc2FtcGxlclBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTHVpbnQg
c2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMZmxv
YXQqIHBhcmFtKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldFNhbXBsZXJQYXJhbWV0ZXJpdlJv
YnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVm
U2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykgPSAwOwotICAgIHZpcnR1
YWwgdm9pZCBnZXRTYW1wbGVyUGFyYW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVy
LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBH
Q0dMZmxvYXQqIHBhcmFtcykgPSAwOwotCi0gICAgdmlydHVhbCB2b2lkIGdldEZyYW1lYnVmZmVy
UGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBH
Q0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykgPSAw
OwotICAgIHZpcnR1YWwgdm9pZCBnZXRQcm9ncmFtSW50ZXJmYWNlaXZSb2J1c3RBTkdMRShHQ0dM
dWludCBwcm9ncmFtLCBHQ0dMZW51bSBwcm9ncmFtSW50ZXJmYWNlLCBHQ0dMZW51bSBwbmFtZSwg
R0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpID0g
MDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0Qm9vbGVhbmlfdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRh
cmdldCwgR0NHTHVpbnQgaW5kZXgsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0
aCwgR0NHTGJvb2xlYW4qIGRhdGEpID0gMDsgLy8gTk9MSU5UCi0gICAgdmlydHVhbCB2b2lkIGdl
dE11bHRpc2FtcGxlZnZSb2J1c3RBTkdMRShHQ0dMZW51bSBwbmFtZSwgR0NHTHVpbnQgaW5kZXgs
IEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGZsb2F0KiB2YWwpID0g
MDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0VGV4TGV2ZWxQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdD
R0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBi
dWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1zKSA9IDA7Ci0gICAgdmly
dHVhbCB2b2lkIGdldFRleExldmVsUGFyYW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJn
ZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NH
THNpemVpKiBsZW5ndGgsIEdDR0xmbG9hdCogcGFyYW1zKSA9IDA7Ci0KLSAgICB2aXJ0dWFsIHZv
aWQgZ2V0UG9pbnRlcnZSb2J1c3RBTkdMRVJvYnVzdEFOR0xFKEdDR0xlbnVtIHBuYW1lLCBHQ0dM
c2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0x2b2lkKiogcGFyYW1zKSA9IDA7
Ci0gICAgdmlydHVhbCB2b2lkIGdldG5Vbmlmb3JtZnZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9n
cmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5n
dGgsIEdDR0xmbG9hdCogcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldG5Vbmlmb3Jt
aXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6
ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykgPSAwOwotICAg
IHZpcnR1YWwgdm9pZCBnZXRuVW5pZm9ybXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0s
IEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwg
R0NHTHVpbnQqIHBhcmFtcykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCB0ZXhQYXJhbWV0ZXJJaXZS
b2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVm
U2l6ZSwgY29uc3QgR0NHTGludCogcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHRleFBh
cmFtZXRlckl1aXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBH
Q0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTHVpbnQqIHBhcmFtcykgPSAwOwotICAgIHZpcnR1
YWwgdm9pZCBnZXRUZXhQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdD
R0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xp
bnQqIHBhcmFtcykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRUZXhQYXJhbWV0ZXJJdWl2Um9i
dXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNp
emUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMdWludCogcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVh
bCB2b2lkIHNhbXBsZXJQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBH
Q0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xpbnQqIHBhcmFtKSA9
IDA7Ci0gICAgdmlydHVhbCB2b2lkIHNhbXBsZXJQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUoR0NH
THVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBH
Q0dMdWludCogcGFyYW0pID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0U2FtcGxlclBhcmFtZXRl
cklpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6
ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykgPSAwOwotICAg
IHZpcnR1YWwgdm9pZCBnZXRTYW1wbGVyUGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50
IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBs
ZW5ndGgsIEdDR0x1aW50KiBwYXJhbXMpID0gMDsKLQotICAgIHZpcnR1YWwgdm9pZCBnZXRRdWVy
eU9iamVjdGl2Um9idXN0QU5HTEUoR0NHTHVpbnQgaWQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6
ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykgPSAwOwotICAg
IHZpcnR1YWwgdm9pZCBnZXRRdWVyeU9iamVjdGk2NHZSb2J1c3RBTkdMRShHQ0dMdWludCBpZCwg
R0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NH
TGludDY0KiBwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0UXVlcnlPYmplY3R1aTY0
dlJvYnVzdEFOR0xFKEdDR0x1aW50IGlkLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNp
emUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMdWludDY0KiBwYXJhbXMpID0gMDsKLQogICAgIC8v
IE90aGVyIGZ1bmN0aW9ucy4KICNpZiAhVVNFKEFOR0xFKQogICAgIC8vIEVYVCBSb2J1c3RuZXNz
IC0gdXNlcyBnZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJCCkBAIC0zNTcsMTYgKzMwNSw2IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZ2V0blVuaWZvcm1mdkVYVChHQ0dMdWludCBwcm9ncmFt
LCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTGZsb2F0KiBwYXJhbXMp
ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZ2V0blVuaWZvcm1pdkVYVChHQ0dMdWludCBwcm9ncmFt
LCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTGludCogcGFyYW1zKSA9
IDA7CiAKLSAgICB2aXJ0dWFsIGJvb2wgaXNOVklESUEoKSA9IDA7Ci0gICAgdmlydHVhbCBib29s
IGlzQU1EKCkgPSAwOwotICAgIHZpcnR1YWwgYm9vbCBpc0ludGVsKCkgPSAwOwotICAgIHZpcnR1
YWwgYm9vbCBpc0ltYWdpbmF0aW9uKCkgPSAwOwotICAgIHZpcnR1YWwgU3RyaW5nIHZlbmRvcigp
ID0gMDsKLQotICAgIC8vIFNvbWUgY29uZmlndXJhdGlvbnMgaGF2ZSBidWdzIHJlZ2FyZGluZyBi
dWlsdC1pbiBmdW5jdGlvbnMgaW4gdGhlaXIgT3BlbkdMIGRyaXZlcnMKLSAgICAvLyB0aGF0IG11
c3QgYmUgYXZvaWRlZC4gUG9ydHMgc2hvdWxkIGltcGxlbWVudCB0aGVzZSBmbGFncyBvbiBzdWNo
IGNvbmZpZ3VyYXRpb25zLgotICAgIHZpcnR1YWwgYm9vbCByZXF1aXJlc0J1aWx0SW5GdW5jdGlv
bkVtdWxhdGlvbigpID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgcmVxdWlyZXNSZXN0cmljdGVkTWF4
aW11bVRleHR1cmVTaXplKCkgPSAwOwogI2VuZGlmCiAKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFz
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5QmFzZS5jcHAKaW5kZXggNTUyZDg1MzliNjk1MDBjZjExNjk2ODBkNGI1YzYy
ODU4NThiNzczNy4uYjE1YmJmMDM1MjY1ODFjYTdkMTg3NTczYjlmMmU4ZDY0ZThiY2IzZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eUJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmNwcApAQCAtMTYxLDQxICsxNjEs
NiBAQCB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjpnZXRuVW5pZm9ybWZ2
RVhUKEdDR0x1aW50LCBHQ0dMaW50LCBHQ0dMcwogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5QmFzZTo6Z2V0blVuaWZvcm1pdkVYVChHQ0dMdWludCwgR0NHTGludCwgR0NHTHNpemVp
LCBHQ0dMaW50KikKIHsKIH0KLQotYm9vbCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFz
ZTo6aXNOVklESUEoKQotewotICAgIHJldHVybiBmYWxzZTsKLX0KLQotYm9vbCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5QmFzZTo6aXNBTUQoKQotewotICAgIHJldHVybiBmYWxzZTsKLX0K
LQotYm9vbCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6aXNJbnRlbCgpCi17Ci0g
ICAgcmV0dXJuIGZhbHNlOwotfQotCi1ib29sIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlC
YXNlOjppc0ltYWdpbmF0aW9uKCkKLXsKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLVN0cmluZyBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6dmVuZG9yKCkKLXsKLSAgICByZXR1cm4g
eyB9OwotfQotCi1ib29sIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjpyZXF1aXJl
c0J1aWx0SW5GdW5jdGlvbkVtdWxhdGlvbigpCi17Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi1i
b29sIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjpyZXF1aXJlc1Jlc3RyaWN0ZWRN
YXhpbXVtVGV4dHVyZVNpemUoKQotewotICAgIHJldHVybiBmYWxzZTsKLX0KICNlbmRpZgogfQog
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuaAppbmRleCAyNDcxZDRl
MjVjOWFhMjAwZWM3NDNiMWZlMGM2NDY4YjBjOWE1MDgzLi41YTNmNTc4ZTg4Mzg5MDM1NTc1ZGVm
YmQzZjRhYzkxYTE1Yzc1MTI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNl
LmgKQEAgLTgwLDE3ICs4MCw5IEBAIHB1YmxpYzoKICAgICBib29sIGlzRW5hYmxlZChjb25zdCBT
dHJpbmcmKSBmaW5hbDsKIAogI2lmICFVU0UoQU5HTEUpCi0gICAgLy8gRklYTUU6IFRoZXNlIGFy
ZSBzdXBwb3NlZCB0byBiZSByZW1vdmVkIGluIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMTg4OTYuCiAgICAgdm9pZCByZWFkblBpeGVsc0VYVChHQ0dMaW50LCBHQ0dM
aW50LCBHQ0dMc2l6ZWksIEdDR0xzaXplaSwgR0NHTGVudW0sIEdDR0xlbnVtLCBHQ0dMc2l6ZWks
IEdDR0x2b2lkKikgZmluYWw7CiAgICAgdm9pZCBnZXRuVW5pZm9ybWZ2RVhUKEdDR0x1aW50LCBH
Q0dMaW50LCBHQ0dMc2l6ZWksIEdDR0xmbG9hdCopIGZpbmFsOwogICAgIHZvaWQgZ2V0blVuaWZv
cm1pdkVYVChHQ0dMdWludCwgR0NHTGludCwgR0NHTHNpemVpLCBHQ0dMaW50KikgZmluYWw7Ci0g
ICAgYm9vbCBpc05WSURJQSgpIGZpbmFsOwotICAgIGJvb2wgaXNBTUQoKSBmaW5hbDsKLSAgICBi
b29sIGlzSW50ZWwoKSBmaW5hbDsKLSAgICBib29sIGlzSW1hZ2luYXRpb24oKSBmaW5hbDsKLSAg
ICBTdHJpbmcgdmVuZG9yKCkgZmluYWw7Ci0gICAgYm9vbCByZXF1aXJlc0J1aWx0SW5GdW5jdGlv
bkVtdWxhdGlvbigpIGZpbmFsOwotICAgIGJvb2wgcmVxdWlyZXNSZXN0cmljdGVkTWF4aW11bVRl
eHR1cmVTaXplKCkgZmluYWw7CiAjZW5kaWYKIAogcHJvdGVjdGVkOgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvRXh0ZW5zaW9uc0dMQU5H
TEUuY3BwCmluZGV4IDkyMGQ5MmYzNWNhZGQ4YmIwODUyM2QxNzY1NzU0MTIwOTdmNmM5NmYuLmY1
NDBhYjNjYTg1MGIxZjI3Y2M2MmVlOTY0Y2YwNGUxZDgxNWU4YWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRlbnNpb25zR0xB
TkdMRS5jcHAKQEAgLTMzLDEwICszMyw5IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotRXh0
ZW5zaW9uc0dMQU5HTEU6OkV4dGVuc2lvbnNHTEFOR0xFKEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
KiBjb250ZXh0LCBib29sIHVzZUluZGV4ZWRHZXRTdHJpbmcpCitFeHRlbnNpb25zR0xBTkdMRTo6
RXh0ZW5zaW9uc0dMQU5HTEUoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqIGNvbnRleHQpCiAgICAg
OiBtX2luaXRpYWxpemVkQXZhaWxhYmxlRXh0ZW5zaW9ucyhmYWxzZSkKICAgICAsIG1fY29udGV4
dChjb250ZXh0KQotICAgICwgbV91c2VJbmRleGVkR2V0U3RyaW5nKHVzZUluZGV4ZWRHZXRTdHJp
bmcpCiB7CiB9CiAKQEAgLTk5LDQyICs5OCwxNSBAQCBTdHJpbmcgRXh0ZW5zaW9uc0dMQU5HTEU6
OmdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRShQbGF0Zm9ybUdMT2JqZWN0IHNoYWRlcgog
CiB2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjppbml0aWFsaXplQXZhaWxhYmxlRXh0ZW5zaW9ucygp
CiB7Ci0gICAgaWYgKG1fdXNlSW5kZXhlZEdldFN0cmluZykgewotICAgICAgICBHTGludCBudW1F
eHRlbnNpb25zID0gMDsKLSAgICAgICAgZ2w6OkdldEludGVnZXJ2KEdMX05VTV9FWFRFTlNJT05T
LCAmbnVtRXh0ZW5zaW9ucyk7Ci0gICAgICAgIGZvciAoR0xpbnQgaSA9IDA7IGkgPCBudW1FeHRl
bnNpb25zOyArK2kpCi0gICAgICAgICAgICBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuYWRkKGdsOjpH
ZXRTdHJpbmdpKEdMX0VYVEVOU0lPTlMsIGkpKTsKLSAgICAgICAgZ2w6OkdldEludGVnZXJ2KEdM
X05VTV9SRVFVRVNUQUJMRV9FWFRFTlNJT05TX0FOR0xFLCAmbnVtRXh0ZW5zaW9ucyk7Ci0gICAg
ICAgIGZvciAoR0xpbnQgaSA9IDA7IGkgPCBudW1FeHRlbnNpb25zOyArK2kpCi0gICAgICAgICAg
ICBtX3JlcXVlc3RhYmxlRXh0ZW5zaW9ucy5hZGQoZ2w6OkdldFN0cmluZ2koR0xfUkVRVUVTVEFC
TEVfRVhURU5TSU9OU19BTkdMRSwgaSkpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIFN0cmluZyBl
eHRlbnNpb25zU3RyaW5nID0gZ2V0RXh0ZW5zaW9ucygpOwotICAgICAgICBmb3IgKGF1dG8mIGV4
dGVuc2lvbiA6IGV4dGVuc2lvbnNTdHJpbmcuc3BsaXQoJyAnKSkKLSAgICAgICAgICAgIG1fYXZh
aWxhYmxlRXh0ZW5zaW9ucy5hZGQoZXh0ZW5zaW9uKTsKLSAgICAgICAgZXh0ZW5zaW9uc1N0cmlu
ZyA9IFN0cmluZyhyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihnbDo6R2V0U3RyaW5nKEdM
X1JFUVVFU1RBQkxFX0VYVEVOU0lPTlNfQU5HTEUpKSk7Ci0gICAgICAgIGZvciAoYXV0byYgZXh0
ZW5zaW9uIDogZXh0ZW5zaW9uc1N0cmluZy5zcGxpdCgnICcpKQotICAgICAgICAgICAgbV9yZXF1
ZXN0YWJsZUV4dGVuc2lvbnMuYWRkKGV4dGVuc2lvbik7Ci0gICAgfQorICAgIFN0cmluZyBleHRl
bnNpb25zU3RyaW5nID0gZ2V0RXh0ZW5zaW9ucygpOworICAgIGZvciAoYXV0byYgZXh0ZW5zaW9u
IDogZXh0ZW5zaW9uc1N0cmluZy5zcGxpdCgnICcpKQorICAgICAgICBtX2F2YWlsYWJsZUV4dGVu
c2lvbnMuYWRkKGV4dGVuc2lvbik7CisgICAgZXh0ZW5zaW9uc1N0cmluZyA9IFN0cmluZyhyZWlu
dGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihnbDo6R2V0U3RyaW5nKEdMX1JFUVVFU1RBQkxFX0VY
VEVOU0lPTlNfQU5HTEUpKSk7CisgICAgZm9yIChhdXRvJiBleHRlbnNpb24gOiBleHRlbnNpb25z
U3RyaW5nLnNwbGl0KCcgJykpCisgICAgICAgIG1fcmVxdWVzdGFibGVFeHRlbnNpb25zLmFkZChl
eHRlbnNpb24pOwogICAgIG1faW5pdGlhbGl6ZWRBdmFpbGFibGVFeHRlbnNpb25zID0gdHJ1ZTsK
IH0KIAotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6YmxpdEZyYW1lYnVmZmVyQU5HTEUoR0NHTGlu
dCBzcmNYMCwgR0NHTGludCBzcmNZMCwgR0NHTGludCBzcmNYMSwgR0NHTGludCBzcmNZMSwgR0NH
TGludCBkc3RYMCwgR0NHTGludCBkc3RZMCwgR0NHTGludCBkc3RYMSwgR0NHTGludCBkc3RZMSwg
R0NHTGJpdGZpZWxkIG1hc2ssIEdDR0xlbnVtIGZpbHRlcikKLXsKLSAgICAvLyBGSVhNRTogY29u
c2lkZXIgYWRkaW5nIHN1cHBvcnQgZm9yIEFQUExFX2ZyYW1lYnVmZmVyX211bHRpc2FtcGxlLgot
ICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJu
OwotCi0gICAgZ2w6OkJsaXRGcmFtZWJ1ZmZlckFOR0xFKHNyY1gwLCBzcmNZMCwgc3JjWDEsIHNy
Y1kxLCBkc3RYMCwgZHN0WTAsIGRzdFgxLCBkc3RZMSwgbWFzaywgZmlsdGVyKTsKLX0KLQotdm9p
ZCBFeHRlbnNpb25zR0xBTkdMRTo6cmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5HTEUo
R0NHTGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWkgc2FtcGxlcywgR0NHTGVudW0gaW50ZXJuYWxmb3Jt
YXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkKLXsKLSAgICBpZiAoIW1fY29u
dGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpS
ZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVBTkdMRSh0YXJnZXQsIHNhbXBsZXMsIGludGVy
bmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0KTsKLX0KLQogUGxhdGZvcm1HTE9iamVjdCBFeHRlbnNp
b25zR0xBTkdMRTo6Y3JlYXRlVmVydGV4QXJyYXlPRVMoKQogewogICAgIGlmICghbV9jb250ZXh0
LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKQEAgLTE3NSwyNCArMTQ3LDYgQEAgdm9pZCBFeHRlbnNp
b25zR0xBTkdMRTo6YmluZFZlcnRleEFycmF5T0VTKFBsYXRmb3JtR0xPYmplY3QgYXJyYXkpCiAg
ICAgZ2w6OkJpbmRWZXJ0ZXhBcnJheU9FUyhhcnJheSk7CiB9CiAKLXZvaWQgRXh0ZW5zaW9uc0dM
QU5HTEU6Omluc2VydEV2ZW50TWFya2VyRVhUKGNvbnN0IFN0cmluZyYpCi17Ci0gICAgLy8gRklY
TUU6IGltcGxlbWVudCB0aGlzIGZ1bmN0aW9uIGFuZCBhZGQgR0xfRVhUX2RlYnVnX21hcmtlciBp
biBzdXBwb3J0cygpLgotICAgIHJldHVybjsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6
cHVzaEdyb3VwTWFya2VyRVhUKGNvbnN0IFN0cmluZyYpCi17Ci0gICAgLy8gRklYTUU6IGltcGxl
bWVudCB0aGlzIGZ1bmN0aW9uIGFuZCBhZGQgR0xfRVhUX2RlYnVnX21hcmtlciBpbiBzdXBwb3J0
cygpLgotICAgIHJldHVybjsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6cG9wR3JvdXBN
YXJrZXJFWFQodm9pZCkKLXsKLSAgICAvLyBGSVhNRTogaW1wbGVtZW50IHRoaXMgZnVuY3Rpb24g
YW5kIGFkZCBHTF9FWFRfZGVidWdfbWFya2VyIGluIHN1cHBvcnRzKCkuCi0gICAgcmV0dXJuOwot
fQotCiBib29sIEV4dGVuc2lvbnNHTEFOR0xFOjpzdXBwb3J0c0V4dGVuc2lvbihjb25zdCBTdHJp
bmcmIG5hbWUpCiB7CiAgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucyhu
YW1lKSB8fCBtX3JlcXVlc3RhYmxlRXh0ZW5zaW9ucy5jb250YWlucyhuYW1lKTsKQEAgLTI0OCwy
OTEgKzIwMiw2IEBAIEdDR0xlbnVtIEV4dGVuc2lvbnNHTEFOR0xFOjphZGp1c3RXZWJHTDFUZXh0
dXJlSW50ZXJuYWxGb3JtYXQoR0NHTGVudW0gaW50ZXJuYWxmCiAgICAgcmV0dXJuIGludGVybmFs
Zm9ybWF0OwogfQogCi0vLyBHTF9BTkdMRV9yb2J1c3RfY2xpZW50X21lbW9yeQotdm9pZCBFeHRl
bnNpb25zR0xBTkdMRTo6cmVhZFBpeGVsc1JvYnVzdEFOR0xFKGludCB4LCBpbnQgeSwgR0NHTHNp
emVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5
cGUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHNpemVpICpjb2x1
bW5zLCBHQ0dMc2l6ZWkgKnJvd3MsIHZvaWQgKnBpeGVscykKLXsKLSAgICBpZiAoIW1fY29udGV4
dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpSZWFk
UGl4ZWxzUm9idXN0QU5HTEUoeCwgeSwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBidWZT
aXplLCBsZW5ndGgsIGNvbHVtbnMsIHJvd3MsIHBpeGVscyk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9u
c0dMQU5HTEU6OnRleFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dM
ZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xmbG9hdCAqcGFyYW1zKQot
ewotICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0
dXJuOwotCi0gICAgZ2w6OlRleFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUodGFyZ2V0LCBwbmFtZSwg
YnVmU2l6ZSwgcGFyYW1zKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6dGV4UGFyYW1l
dGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6
ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGludCAqcGFyYW1zKQotewotICAgIGlmICghbV9jb250ZXh0
LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OlRleFBh
cmFtZXRlcml2Um9idXN0QU5HTEUodGFyZ2V0LCBwbmFtZSwgYnVmU2l6ZSwgcGFyYW1zKTsKLX0K
LQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0UXVlcnlpdlJvYnVzdEFOR0xFKEdDR0xlbnVt
IHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxl
bmd0aCwgR0NHTGludCAqcGFyYW1zKQotewotICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4
dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OkdldFF1ZXJ5aXZSb2J1c3RB
TkdMRSh0YXJnZXQsIHBuYW1lLCBidWZTaXplLCBsZW5ndGgsIHBhcmFtcyk7Ci19Ci0KLXZvaWQg
RXh0ZW5zaW9uc0dMQU5HTEU6OmdldFF1ZXJ5T2JqZWN0dWl2Um9idXN0QU5HTEUoR0NHTHVpbnQg
aWQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgs
IEdDR0x1aW50ICpwYXJhbXMpCi17Ci0gICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3Vy
cmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6R2V0UXVlcnlPYmplY3R1aXZSb2J1
c3RBTkdMRShpZCwgcG5hbWUsIGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1zKTsKLX0KLQotdm9pZCBF
eHRlbnNpb25zR0xBTkdMRTo6Z2V0QnVmZmVyUG9pbnRlcnZSb2J1c3RBTkdMRShHQ0dMZW51bSB0
YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5n
dGgsIHZvaWQgKipwYXJhbXMpCi17Ci0gICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3Vy
cmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6R2V0QnVmZmVyUG9pbnRlcnZSb2J1
c3RBTkdMRSh0YXJnZXQsIHBuYW1lLCBidWZTaXplLCBsZW5ndGgsIHBhcmFtcyk7Ci19Ci0KLXZv
aWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldFZlcnRleEF0dHJpYklpdlJvYnVzdEFOR0xFKEdDR0x1
aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAq
bGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpCi17Ci0gICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250
ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6R2V0VmVydGV4QXR0cmli
SWl2Um9idXN0QU5HTEUoaW5kZXgsIHBuYW1lLCBidWZTaXplLCBsZW5ndGgsIHBhcmFtcyk7Ci19
Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldFZlcnRleEF0dHJpYkl1aXZSb2J1c3RBTkdM
RShHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dM
c2l6ZWkgKmxlbmd0aCwgR0NHTHVpbnQgKnBhcmFtcykKLXsKLSAgICBpZiAoIW1fY29udGV4dC0+
bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpHZXRWZXJ0
ZXhBdHRyaWJJdWl2Um9idXN0QU5HTEUoaW5kZXgsIHBuYW1lLCBidWZTaXplLCBsZW5ndGgsIHBh
cmFtcyk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldFVuaWZvcm11aXZSb2J1c3RB
TkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6
ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0x1aW50ICpwYXJhbXMpCi17Ci0gICAgaWYgKCFtX2Nv
bnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6
R2V0VW5pZm9ybXVpdlJvYnVzdEFOR0xFKHByb2dyYW0sIGxvY2F0aW9uLCBidWZTaXplLCBsZW5n
dGgsIHBhcmFtcyk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldEJ1ZmZlclBhcmFt
ZXRlcmk2NHZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dM
c2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQ2NCAqcGFyYW1zKQotewot
ICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJu
OwotCi0gICAgZ2w6OkdldEJ1ZmZlclBhcmFtZXRlcmk2NHZSb2J1c3RBTkdMRSh0YXJnZXQsIHBu
YW1lLCBidWZTaXplLCBsZW5ndGgsIHJlaW50ZXJwcmV0X2Nhc3Q8R0xpbnQ2NCo+KHBhcmFtcykp
OwotfQotCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpzYW1wbGVyUGFyYW1ldGVyaXZSb2J1c3RB
TkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUs
IGNvbnN0IEdDR0xpbnQgKnBhcmFtKQotewotICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4
dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OlNhbXBsZXJQYXJhbWV0ZXJp
dlJvYnVzdEFOR0xFKHNhbXBsZXIsIHBuYW1lLCBidWZTaXplLCBwYXJhbSk7Ci19Ci0KLXZvaWQg
RXh0ZW5zaW9uc0dMQU5HTEU6OnNhbXBsZXJQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0x1aW50
IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGZs
b2F0ICpwYXJhbSkKLXsKLSAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkp
Ci0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpTYW1wbGVyUGFyYW1ldGVyZnZSb2J1c3RBTkdM
RShzYW1wbGVyLCBwbmFtZSwgYnVmU2l6ZSwgcGFyYW0pOwotfQotCi12b2lkIEV4dGVuc2lvbnNH
TEFOR0xFOjpnZXRTYW1wbGVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVy
LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBH
Q0dMaW50ICpwYXJhbXMpCi17Ci0gICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVu
dCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6R2V0U2FtcGxlclBhcmFtZXRlcml2Um9i
dXN0QU5HTEUoc2FtcGxlciwgcG5hbWUsIGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1zKTsKLX0KLQot
dm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0U2FtcGxlclBhcmFtZXRlcmZ2Um9idXN0QU5HTEUo
R0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dM
c2l6ZWkgKmxlbmd0aCwgR0NHTGZsb2F0ICpwYXJhbXMpCi17Ci0gICAgaWYgKCFtX2NvbnRleHQt
Pm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6R2V0U2Ft
cGxlclBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoc2FtcGxlciwgcG5hbWUsIGJ1ZlNpemUsIGxlbmd0
aCwgcGFyYW1zKTsKLX0KLQotCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRGcmFtZWJ1ZmZl
clBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwg
R0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpCi17
Ci0gICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1
cm47Ci0KLSAgICBnbDo6R2V0RnJhbWVidWZmZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKHRhcmdl
dCwgcG5hbWUsIGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1zKTsKLX0KLQotdm9pZCBFeHRlbnNpb25z
R0xBTkdMRTo6Z2V0UHJvZ3JhbUludGVyZmFjZWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3Jh
bSwgR0NHTGVudW0gcHJvZ3JhbUludGVyZmFjZSwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBi
dWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKQotewotICAgIGlmICgh
bV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAg
Z2w6OkdldFByb2dyYW1JbnRlcmZhY2VpdlJvYnVzdEFOR0xFKHByb2dyYW0sIHByb2dyYW1JbnRl
cmZhY2UsIHBuYW1lLCBidWZTaXplLCBsZW5ndGgsIHBhcmFtcyk7Ci19Ci0KLXZvaWQgRXh0ZW5z
aW9uc0dMQU5HTEU6OmdldEJvb2xlYW5pX3ZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdD
R0x1aW50IGluZGV4LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xi
b29sZWFuICpkYXRhKQotewotICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQo
KSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OkdldEJvb2xlYW5pX3ZSb2J1c3RBTkdMRSh0
YXJnZXQsIGluZGV4LCBidWZTaXplLCBsZW5ndGgsIGRhdGEpOwotfQotCi12b2lkIEV4dGVuc2lv
bnNHTEFOR0xFOjpnZXRNdWx0aXNhbXBsZWZ2Um9idXN0QU5HTEUoR0NHTGVudW0gcG5hbWUsIEdD
R0x1aW50IGluZGV4LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xm
bG9hdCAqdmFsKQotewotICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OkdldE11bHRpc2FtcGxlZnZSb2J1c3RBTkdMRShw
bmFtZSwgaW5kZXgsIGJ1ZlNpemUsIGxlbmd0aCwgdmFsKTsKLX0KLQotdm9pZCBFeHRlbnNpb25z
R0xBTkdMRTo6Z2V0VGV4TGV2ZWxQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdl
dCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dM
c2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKQotewotICAgIGlmICghbV9jb250ZXh0LT5t
YWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OkdldFRleExl
dmVsUGFyYW1ldGVyaXZSb2J1c3RBTkdMRSh0YXJnZXQsIGxldmVsLCBwbmFtZSwgYnVmU2l6ZSwg
bGVuZ3RoLCBwYXJhbXMpOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRUZXhMZXZl
bFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBH
Q0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dM
ZmxvYXQgKnBhcmFtcykKLXsKLSAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50
KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpHZXRUZXhMZXZlbFBhcmFtZXRlcmZ2Um9i
dXN0QU5HTEUodGFyZ2V0LCBsZXZlbCwgcG5hbWUsIGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1zKTsK
LX0KLQotCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRQb2ludGVydlJvYnVzdEFOR0xFUm9i
dXN0QU5HTEUoR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxl
bmd0aCwgdm9pZCAqKnBhcmFtcykKLXsKLSAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRD
dXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpHZXRQb2ludGVydlJvYnVzdEFO
R0xFUm9idXN0QU5HTEUocG5hbWUsIGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1zKTsKLX0KLQotdm9p
ZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0blVuaWZvcm1mdlJvYnVzdEFOR0xFKEdDR0x1aW50IHBy
b2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxl
bmd0aCwgR0NHTGZsb2F0ICpwYXJhbXMpCi17Ci0gICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250
ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6R2V0blVuaWZvcm1mdlJv
YnVzdEFOR0xFKHByb2dyYW0sIGxvY2F0aW9uLCBidWZTaXplLCBsZW5ndGgsIHBhcmFtcyk7Ci19
Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldG5Vbmlmb3JtaXZSb2J1c3RBTkdMRShHQ0dM
dWludCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNp
emVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykKLXsKLSAgICBpZiAoIW1fY29udGV4dC0+bWFr
ZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpHZXRuVW5pZm9y
bWl2Um9idXN0QU5HTEUocHJvZ3JhbSwgbG9jYXRpb24sIGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1z
KTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0blVuaWZvcm11aXZSb2J1c3RBTkdM
RShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwg
R0NHTHNpemVpICpsZW5ndGgsIEdDR0x1aW50ICpwYXJhbXMpCi17Ci0gICAgaWYgKCFtX2NvbnRl
eHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6R2V0
blVuaWZvcm11aXZSb2J1c3RBTkdMRShwcm9ncmFtLCBsb2NhdGlvbiwgYnVmU2l6ZSwgbGVuZ3Ro
LCBwYXJhbXMpOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjp0ZXhQYXJhbWV0ZXJJaXZS
b2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVm
U2l6ZSwgY29uc3QgR0NHTGludCAqcGFyYW1zKQotewotICAgIGlmICghbV9jb250ZXh0LT5tYWtl
Q29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OlRleFBhcmFtZXRl
cklpdlJvYnVzdEFOR0xFKHRhcmdldCwgcG5hbWUsIGJ1ZlNpemUsIHBhcmFtcyk7Ci19Ci0KLXZv
aWQgRXh0ZW5zaW9uc0dMQU5HTEU6OnRleFBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRShHQ0dMZW51
bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTHVp
bnQgKnBhcmFtcykKLXsKLSAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkp
Ci0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpUZXhQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUo
dGFyZ2V0LCBwbmFtZSwgYnVmU2l6ZSwgcGFyYW1zKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xB
TkdMRTo6Z2V0VGV4UGFyYW1ldGVySWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dM
ZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50
ICpwYXJhbXMpCi17Ci0gICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQot
ICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6R2V0VGV4UGFyYW1ldGVySWl2Um9idXN0QU5HTEUo
dGFyZ2V0LCBwbmFtZSwgYnVmU2l6ZSwgbGVuZ3RoLCBwYXJhbXMpOwotfQotCi12b2lkIEV4dGVu
c2lvbnNHTEFOR0xFOjpnZXRUZXhQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3Ro
LCBHQ0dMdWludCAqcGFyYW1zKQotewotICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1
cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OkdldFRleFBhcmFtZXRlckl1aXZS
b2J1c3RBTkdMRSh0YXJnZXQsIHBuYW1lLCBidWZTaXplLCBsZW5ndGgsIHBhcmFtcyk7Ci19Ci0K
LXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OnNhbXBsZXJQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRShH
Q0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0
IEdDR0xpbnQgKnBhcmFtKQotewotICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJl
bnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OlNhbXBsZXJQYXJhbWV0ZXJJaXZSb2J1
c3RBTkdMRShzYW1wbGVyLCBwbmFtZSwgYnVmU2l6ZSwgcGFyYW0pOwotfQotCi12b2lkIEV4dGVu
c2lvbnNHTEFOR0xFOjpzYW1wbGVyUGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNh
bXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTHVpbnQg
KnBhcmFtKQotewotICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAg
ICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OlNhbXBsZXJQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUo
c2FtcGxlciwgcG5hbWUsIGJ1ZlNpemUsIHBhcmFtKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xB
TkdMRTo6Z2V0U2FtcGxlclBhcmFtZXRlcklpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIs
IEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdD
R0xpbnQgKnBhcmFtcykKLXsKLSAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50
KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpHZXRTYW1wbGVyUGFyYW1ldGVySWl2Um9i
dXN0QU5HTEUoc2FtcGxlciwgcG5hbWUsIGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1zKTsKLX0KLQot
dm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0U2FtcGxlclBhcmFtZXRlckl1aXZSb2J1c3RBTkdM
RShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdD
R0xzaXplaSAqbGVuZ3RoLCBHQ0dMdWludCAqcGFyYW1zKQotewotICAgIGlmICghbV9jb250ZXh0
LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OkdldFNh
bXBsZXJQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUoc2FtcGxlciwgcG5hbWUsIGJ1ZlNpemUsIGxl
bmd0aCwgcGFyYW1zKTsKLX0KLQotCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRRdWVyeU9i
amVjdGl2Um9idXN0QU5HTEUoR0NHTHVpbnQgaWQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkg
YnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykKLXsKLSAgICBpZiAo
IW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAg
IGdsOjpHZXRRdWVyeU9iamVjdGl2Um9idXN0QU5HTEUoaWQsIHBuYW1lLCBidWZTaXplLCBsZW5n
dGgsIHBhcmFtcyk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldFF1ZXJ5T2JqZWN0
aTY0dlJvYnVzdEFOR0xFKEdDR0x1aW50IGlkLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1
ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50NjQgKnBhcmFtcykKLXsKLSAgICBpZiAo
IW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAg
IGdsOjpHZXRRdWVyeU9iamVjdGk2NHZSb2J1c3RBTkdMRShpZCwgcG5hbWUsIGJ1ZlNpemUsIGxl
bmd0aCwgcmVpbnRlcnByZXRfY2FzdDxHTGludDY0Kj4ocGFyYW1zKSk7Ci19Ci0KLXZvaWQgRXh0
ZW5zaW9uc0dMQU5HTEU6OmdldFF1ZXJ5T2JqZWN0dWk2NHZSb2J1c3RBTkdMRShHQ0dMdWludCBp
ZCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwg
R0NHTHVpbnQ2NCAqcGFyYW1zKQotewotICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1
cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OkdldFF1ZXJ5T2JqZWN0dWk2NHZS
b2J1c3RBTkdMRShpZCwgcG5hbWUsIGJ1ZlNpemUsIGxlbmd0aCwgcmVpbnRlcnByZXRfY2FzdDxH
THVpbnQ2NCo+KHBhcmFtcykpOwotfQotCi0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2Vu
ZGlmIC8vIEVOQUJMRShXRUJHTCkgJiYgVVNFKEFOR0xFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmgKaW5k
ZXggYjJkMjc3YjlhYzlkMjc4NjBmNTVhYmFiZjhjZmU1NWU4NGI1ZjU3ZS4uMDA0MjMzNzcyMDM0
YmZhM2VhYzEzN2RjMzYzNDgwOTE2ZGVhYWY3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRlbnNpb25zR0xBTkdMRS5oCkBAIC0z
Niw3ICszNiw3IEBAIGNsYXNzIEV4dGVuc2lvbnNHTEFOR0xFIDogcHVibGljIEV4dGVuc2lvbnNH
TCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgLy8gVGhpcyBj
bGFzcyBvbmx5IG5lZWRzIHRvIGJlIGluc3RhbnRpYXRlZCBieSBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTCBpbXBsZW1lbnRhdGlvbnMuCi0gICAgRXh0ZW5zaW9uc0dMQU5HTEUoR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0wqLCBib29sIHVzZUluZGV4ZWRHZXRTdHJpbmcgPSBmYWxzZSk7CisgICAgZXhw
bGljaXQgRXh0ZW5zaW9uc0dMQU5HTEUoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqKTsKICAgICB2
aXJ0dWFsIH5FeHRlbnNpb25zR0xBTkdMRSgpOwogCiAgICAgLy8gRXh0ZW5zaW9uc0dMIG1ldGhv
ZHMuCkBAIC00OSw2MCArNDksMTQgQEAgcHVibGljOgogICAgIHZvaWQgZGVsZXRlVmVydGV4QXJy
YXlPRVMoUGxhdGZvcm1HTE9iamVjdCkgb3ZlcnJpZGU7CiAgICAgR0NHTGJvb2xlYW4gaXNWZXJ0
ZXhBcnJheU9FUyhQbGF0Zm9ybUdMT2JqZWN0KSBvdmVycmlkZTsKICAgICB2b2lkIGJpbmRWZXJ0
ZXhBcnJheU9FUyhQbGF0Zm9ybUdMT2JqZWN0KSBvdmVycmlkZTsKLSAgICB2b2lkIGluc2VydEV2
ZW50TWFya2VyRVhUKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwotICAgIHZvaWQgcHVzaEdyb3Vw
TWFya2VyRVhUKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwotICAgIHZvaWQgcG9wR3JvdXBNYXJr
ZXJFWFQodm9pZCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkcmF3QnVmZmVyc0VYVChHQ0dMU3Bhbjxj
b25zdCBHQ0dMZW51bT4pIG92ZXJyaWRlOwogCiAgICAgU3RyaW5nIGdldFRyYW5zbGF0ZWRTaGFk
ZXJTb3VyY2VBTkdMRShQbGF0Zm9ybUdMT2JqZWN0KSBvdmVycmlkZTsKIAotICAgIHZvaWQgYmxp
dEZyYW1lYnVmZmVyQU5HTEUoR0NHTGludCBzcmNYMCwgR0NHTGludCBzcmNZMCwgR0NHTGludCBz
cmNYMSwgR0NHTGludCBzcmNZMSwgR0NHTGludCBkc3RYMCwgR0NHTGludCBkc3RZMCwgR0NHTGlu
dCBkc3RYMSwgR0NHTGludCBkc3RZMSwgR0NHTGJpdGZpZWxkIG1hc2ssIEdDR0xlbnVtIGZpbHRl
cikgb3ZlcnJpZGU7Ci0gICAgdm9pZCByZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVBTkdM
RShHQ0dMZW51bSB0YXJnZXQsIEdDR0xzaXplaSBzYW1wbGVzLCBHQ0dMZW51bSBpbnRlcm5hbGZv
cm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KSBvdmVycmlkZTsKLQogICAg
IHZvaWQgZHJhd0FycmF5c0luc3RhbmNlZEFOR0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xpbnQgZmly
c3QsIEdDR0xzaXplaSBjb3VudCwgR0NHTHNpemVpIHByaW1jb3VudCkgb3ZlcnJpZGU7CiAgICAg
dm9pZCBkcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMc2l6ZWkg
Y291bnQsIEdDR0xlbnVtIHR5cGUsIEdDR0x2b2lkcHRyIG9mZnNldCwgR0NHTHNpemVpIHByaW1j
b3VudCkgb3ZlcnJpZGU7CiAgICAgdm9pZCB2ZXJ0ZXhBdHRyaWJEaXZpc29yQU5HTEUoR0NHTHVp
bnQgaW5kZXgsIEdDR0x1aW50IGRpdmlzb3IpIG92ZXJyaWRlOwogCi0gICAgLy8gR0xfQU5HTEVf
cm9idXN0X2NsaWVudF9tZW1vcnkKLSAgICB2b2lkIHJlYWRQaXhlbHNSb2J1c3RBTkdMRShHQ0dM
aW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dM
ZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkg
Kmxlbmd0aCwgR0NHTHNpemVpICpjb2x1bW5zLCBHQ0dMc2l6ZWkgKnJvd3MsIHZvaWQgKnBpeGVs
cykgb3ZlcnJpZGU7Ci0gICAgdm9pZCB0ZXhQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0xlbnVt
IHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMZmxv
YXQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCB0ZXhQYXJhbWV0ZXJpdlJvYnVzdEFOR0xF
KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25z
dCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0UXVlcnlpdlJvYnVzdEFO
R0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBH
Q0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdl
dFF1ZXJ5T2JqZWN0dWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgaWQsIEdDR0xlbnVtIHBuYW1lLCBH
Q0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0x1aW50ICpwYXJhbXMpIG92
ZXJyaWRlOwotICAgIHZvaWQgZ2V0QnVmZmVyUG9pbnRlcnZSb2J1c3RBTkdMRShHQ0dMZW51bSB0
YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5n
dGgsIHZvaWQgKipwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0VmVydGV4QXR0cmliSWl2
Um9idXN0QU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVm
U2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAg
dm9pZCBnZXRWZXJ0ZXhBdHRyaWJJdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0xl
bnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0x1aW50
ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0VW5pZm9ybXVpdlJvYnVzdEFOR0xFKEdD
R0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dM
c2l6ZWkgKmxlbmd0aCwgR0NHTHVpbnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRC
dWZmZXJQYXJhbWV0ZXJpNjR2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBw
bmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50NjQgKnBh
cmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzYW1wbGVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShH
Q0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0
IEdDR0xpbnQgKnBhcmFtKSBvdmVycmlkZTsKLSAgICB2b2lkIHNhbXBsZXJQYXJhbWV0ZXJmdlJv
YnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVm
U2l6ZSwgY29uc3QgR0NHTGZsb2F0ICpwYXJhbSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRTYW1w
bGVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFt
ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMp
IG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0U2FtcGxlclBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NH
THVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6
ZWkgKmxlbmd0aCwgR0NHTGZsb2F0ICpwYXJhbXMpIG92ZXJyaWRlOwotCi0gICAgdm9pZCBnZXRG
cmFtZWJ1ZmZlclBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51
bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpw
YXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0UHJvZ3JhbUludGVyZmFjZWl2Um9idXN0QU5H
TEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGVudW0gcHJvZ3JhbUludGVyZmFjZSwgR0NHTGVudW0g
cG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFy
YW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldEJvb2xlYW5pX3ZSb2J1c3RBTkdMRShHQ0dMZW51
bSB0YXJnZXQsIEdDR0x1aW50IGluZGV4LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICps
ZW5ndGgsIEdDR0xib29sZWFuICpkYXRhKSBvdmVycmlkZTsgLy8gTk9MSU5UCi0gICAgdm9pZCBn
ZXRNdWx0aXNhbXBsZWZ2Um9idXN0QU5HTEUoR0NHTGVudW0gcG5hbWUsIEdDR0x1aW50IGluZGV4
LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xmbG9hdCAqdmFsKSBv
dmVycmlkZTsKLSAgICB2b2lkIGdldFRleExldmVsUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVm
U2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAg
dm9pZCBnZXRUZXhMZXZlbFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMaW50IGxldmVsLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXpl
aSAqbGVuZ3RoLCBHQ0dMZmxvYXQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0KLSAgICB2b2lkIGdldFBv
aW50ZXJ2Um9idXN0QU5HTEVSb2J1c3RBTkdMRShHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1
ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCB2b2lkICoqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2
b2lkIGdldG5Vbmlmb3JtZnZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMaW50IGxv
Y2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xmbG9hdCAq
cGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldG5Vbmlmb3JtaXZSb2J1c3RBTkdMRShHQ0dM
dWludCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNp
emVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRuVW5p
Zm9ybXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdD
R0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHVpbnQgKnBhcmFtcykgb3Zl
cnJpZGU7Ci0gICAgdm9pZCB0ZXhQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJn
ZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGludCAqcGFy
YW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIHRleFBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRShHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NH
THVpbnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRUZXhQYXJhbWV0ZXJJaXZSb2J1
c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6
ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9p
ZCBnZXRUZXhQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51
bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMdWludCAq
cGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIHNhbXBsZXJQYXJhbWV0ZXJJaXZSb2J1c3RBTkdM
RShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNv
bnN0IEdDR0xpbnQgKnBhcmFtKSBvdmVycmlkZTsKLSAgICB2b2lkIHNhbXBsZXJQYXJhbWV0ZXJJ
dWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXpl
aSBidWZTaXplLCBjb25zdCBHQ0dMdWludCAqcGFyYW0pIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0
U2FtcGxlclBhcmFtZXRlcklpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVt
IHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBh
cmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRTYW1wbGVyUGFyYW1ldGVySXVpdlJvYnVzdEFO
R0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwg
R0NHTHNpemVpICpsZW5ndGgsIEdDR0x1aW50ICpwYXJhbXMpIG92ZXJyaWRlOwotCi0gICAgdm9p
ZCBnZXRRdWVyeU9iamVjdGl2Um9idXN0QU5HTEUoR0NHTHVpbnQgaWQsIEdDR0xlbnVtIHBuYW1l
LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykg
b3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRRdWVyeU9iamVjdGk2NHZSb2J1c3RBTkdMRShHQ0dMdWlu
dCBpZCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0
aCwgR0NHTGludDY0ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0UXVlcnlPYmplY3R1
aTY0dlJvYnVzdEFOR0xFKEdDR0x1aW50IGlkLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1
ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMdWludDY0ICpwYXJhbXMpIG92ZXJyaWRlOwot
CiAgICAgLy8gT25seSBmb3Igbm9uLVdlYkdMIDIuMCBjb250ZXh0cy4KICAgICBHQ0dMZW51bSBh
ZGp1c3RXZWJHTDFUZXh0dXJlSW50ZXJuYWxGb3JtYXQoR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQs
IEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSk7CiAKQEAgLTExOSw4ICs3Myw2IEBAIHBy
aXZhdGU6CiAgICAgLy8gV2VhayBwb2ludGVyIGJhY2sgdG8gR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0wuCiAgICAgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqIG1fY29udGV4dDsKIAotICAgIGJvb2wg
bV91c2VJbmRleGVkR2V0U3RyaW5nIHsgZmFsc2UgfTsKLQogICAgIC8vIFdoZXRoZXIgdGhlIFdl
YkdMIDEuMC1yZWxhdGVkIGZsb2F0aW5nLXBvaW50IHJlbmRlcmFiaWxpdHkgZXh0ZW5zaW9ucyBo
YXZlIGJlZW4gZW5hYmxlZC4KICAgICBib29sIG1fd2ViZ2xDb2xvckJ1ZmZlckZsb2F0UkdCIHsg
ZmFsc2UgfTsKICAgICBib29sIG1fd2ViZ2xDb2xvckJ1ZmZlckZsb2F0UkdCQSB7IGZhbHNlIH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFw
aGljc0NvbnRleHRHTEFOR0xFLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwCmluZGV4IDRmNjQ3OTI1NjFjMTBkZDJl
MjQ2NzQzZmZjNmM3MGQyMmU1MWEwMWYuLjk2NWIwMTllMDc3ZDFjM2Q4MWU5MTc5ODZjOGNkMjUy
MTA5Y2NhOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Fu
Z2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwCkBAIC0xMTksMTcg
KzExOSwxMyBAQCBib29sIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZXNoYXBlRkJPcyhjb25z
dCBJbnRTaXplJiBzaXplKQogICAgICAgICBtX2ludGVybmFsQ29sb3JGb3JtYXQgPSBHTF9SR0I4
OwogICAgICAgICBjb2xvckZvcm1hdCA9IEdMX1JHQjsKICAgICB9Ci0gICAgaWYgKGF0dHJzLnN0
ZW5jaWwgfHwgYXR0cnMuZGVwdGgpIHsKKyAgICBpZiAoYXR0cnMuc3RlbmNpbCkgewogICAgICAg
ICAvLyBXZSBkb24ndCBhbGxvdyB0aGUgbG9naWMgd2hlcmUgc3RlbmNpbCBpcyByZXF1aXJlZCBh
bmQgZGVwdGggaXMgbm90LgogICAgICAgICAvLyBTZWUgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OnZhbGlkYXRlQXR0cmlidXRlcy4KLQotICAgICAgICBFeHRlbnNpb25zR0wmIGV4dGVuc2lvbnMg
PSBnZXRFeHRlbnNpb25zKCk7Ci0gICAgICAgIC8vIFVzZSBhIDI0IGJpdCBkZXB0aCBidWZmZXIg
d2hlcmUgd2Uga25vdyB3ZSBoYXZlIGl0LgotICAgICAgICBpZiAoZXh0ZW5zaW9ucy5zdXBwb3J0
cyhwYWNrZWREZXB0aFN0ZW5jaWxFeHRlbnNpb25OYW1lKSkKLSAgICAgICAgICAgIGludGVybmFs
RGVwdGhTdGVuY2lsRm9ybWF0ID0gR0xfREVQVEgyNF9TVEVOQ0lMOF9PRVM7Ci0gICAgICAgIGVs
c2UKKyAgICAgICAgaW50ZXJuYWxEZXB0aFN0ZW5jaWxGb3JtYXQgPSBHTF9ERVBUSDI0X1NURU5D
SUw4X09FUzsKKyAgICB9IGVsc2UgaWYgKGF0dHJzLmRlcHRoKQogICAgICAgICAgICAgaW50ZXJu
YWxEZXB0aFN0ZW5jaWxGb3JtYXQgPSBHTF9ERVBUSF9DT01QT05FTlQxNjsKLSAgICB9CisKIAog
ICAgIC8vIFJlc2l6ZSBtdWx0aXNhbXBsZSBGQk8uCiAgICAgaWYgKGF0dHJzLmFudGlhbGlhcykg
ewpAQCAtMjExNSw2ICsyMTExLDkgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6bWFy
a0NvbnRleHRDaGFuZ2VkKCkKIAogdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6bWFya0xh
eWVyQ29tcG9zaXRlZCgpCiB7CisgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKKyAgICAg
ICAgcmV0dXJuOworCiAgICAgbV9sYXllckNvbXBvc2l0ZWQgPSB0cnVlOwogICAgIHJlc2V0QnVm
ZmVyc1RvQXV0b0NsZWFyKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTC5jcHAKaW5kZXggODQy
Mjg0NmI2ZjYyYTc1NTRlOGIyZGNmMDI0N2ZmNjA1Mzk1ZDQ1YS4uODZkMTljYWFmYjZlM2YwZTMy
MWRlMTczMjEyYTU0ZmNlNjFmNzFlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTC5jcHAKQEAg
LTQ4LDIyICs0OCw2IEBAIEV4dGVuc2lvbnNHTE9wZW5HTDo6RXh0ZW5zaW9uc0dMT3BlbkdMKEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMKiBjb250ZXh0LCBib29sIHVzCiBFeHRlbnNpb25zR0xPcGVu
R0w6On5FeHRlbnNpb25zR0xPcGVuR0woKSA9IGRlZmF1bHQ7CiAKIAotdm9pZCBFeHRlbnNpb25z
R0xPcGVuR0w6OmJsaXRGcmFtZWJ1ZmZlckFOR0xFKEdDR0xpbnQgc3JjWDAsIEdDR0xpbnQgc3Jj
WTAsIEdDR0xpbnQgc3JjWDEsIEdDR0xpbnQgc3JjWTEsIEdDR0xpbnQgZHN0WDAsIEdDR0xpbnQg
ZHN0WTAsIEdDR0xpbnQgZHN0WDEsIEdDR0xpbnQgZHN0WTEsIEdDR0xiaXRmaWVsZCBtYXNrLCBH
Q0dMZW51bSBmaWx0ZXIpCi17Ci0gICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVu
dCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICA6OmdsQmxpdEZyYW1lYnVmZmVyRVhUKHNyY1gw
LCBzcmNZMCwgc3JjWDEsIHNyY1kxLCBkc3RYMCwgZHN0WTAsIGRzdFgxLCBkc3RZMSwgbWFzaywg
ZmlsdGVyKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0w6OnJlbmRlcmJ1ZmZlclN0b3Jh
Z2VNdWx0aXNhbXBsZUFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVpIHNhbXBsZXMsIEdD
R0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQp
Ci17Ci0gICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICBy
ZXR1cm47Ci0KLSAgICA6OmdsUmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlRVhUKHRhcmdl
dCwgc2FtcGxlcywgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQpOwotfQotCiBQbGF0Zm9y
bUdMT2JqZWN0IEV4dGVuc2lvbnNHTE9wZW5HTDo6Y3JlYXRlVmVydGV4QXJyYXlPRVMoKQogewog
ICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKQEAgLTEyNywyNCArMTEx
LDYgQEAgdm9pZCBFeHRlbnNpb25zR0xPcGVuR0w6OmJpbmRWZXJ0ZXhBcnJheU9FUyhQbGF0Zm9y
bUdMT2JqZWN0IGFycmF5KQogI2VuZGlmCiB9CiAKLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMOjpp
bnNlcnRFdmVudE1hcmtlckVYVChjb25zdCBTdHJpbmcmKQotewotICAgIC8vIEZJWE1FOiBpbXBs
ZW1lbnQgdGhpcyBmdW5jdGlvbiBhbmQgYWRkIEdMX0VYVF9kZWJ1Z19tYXJrZXIgaW4gc3VwcG9y
dHMoKS4KLSAgICByZXR1cm47Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMOjpwdXNoR3Jv
dXBNYXJrZXJFWFQoY29uc3QgU3RyaW5nJikKLXsKLSAgICAvLyBGSVhNRTogaW1wbGVtZW50IHRo
aXMgZnVuY3Rpb24gYW5kIGFkZCBHTF9FWFRfZGVidWdfbWFya2VyIGluIHN1cHBvcnRzKCkuCi0g
ICAgcmV0dXJuOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTDo6cG9wR3JvdXBNYXJrZXJF
WFQodm9pZCkKLXsKLSAgICAvLyBGSVhNRTogaW1wbGVtZW50IHRoaXMgZnVuY3Rpb24gYW5kIGFk
ZCBHTF9FWFRfZGVidWdfbWFya2VyIGluIHN1cHBvcnRzKCkuCi0gICAgcmV0dXJuOwotfQotCiBi
b29sIEV4dGVuc2lvbnNHTE9wZW5HTDo6c3VwcG9ydHNFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBu
YW1lKQogewogICAgIC8vIEdMX0FOR0xFX2ZyYW1lYnVmZmVyX2JsaXQgYW5kIEdMX0FOR0xFX2Zy
YW1lYnVmZmVyX211bHRpc2FtcGxlIGFyZSAiZmFrZSIuIFRoZXkgYXJlIGltcGxlbWVudGVkIHVz
aW5nIG90aGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9v
cGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMLmgKaW5kZXggNDc1MDIyNmVjZWNlZjQ0Mzk2
ZTk5Mzg2NzZjYjYzOWJlODM0MzdiNi4uMGFkYmQ3MDUwYjdlM2Y3N2UwMTg4OTQzMzJmZmM4N2Nm
MzBkOTBjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Bl
bmdsL0V4dGVuc2lvbnNHTE9wZW5HTC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuaApAQCAtNDAsMTYgKzQwLDEwIEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIH5FeHRlbnNpb25zR0xPcGVuR0woKTsKIAogICAgIC8vIEV4dGVu
c2lvbnNHTCBtZXRob2RzLgotICAgIHZvaWQgYmxpdEZyYW1lYnVmZmVyQU5HTEUoR0NHTGludCBz
cmNYMCwgR0NHTGludCBzcmNZMCwgR0NHTGludCBzcmNYMSwgR0NHTGludCBzcmNZMSwgR0NHTGlu
dCBkc3RYMCwgR0NHTGludCBkc3RZMCwgR0NHTGludCBkc3RYMSwgR0NHTGludCBkc3RZMSwgR0NH
TGJpdGZpZWxkIG1hc2ssIEdDR0xlbnVtIGZpbHRlcikgb3ZlcnJpZGU7Ci0gICAgdm9pZCByZW5k
ZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xzaXpl
aSBzYW1wbGVzLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dM
c2l6ZWkgaGVpZ2h0KSBvdmVycmlkZTsKLQogICAgIFBsYXRmb3JtR0xPYmplY3QgY3JlYXRlVmVy
dGV4QXJyYXlPRVMoKSBvdmVycmlkZTsKICAgICB2b2lkIGRlbGV0ZVZlcnRleEFycmF5T0VTKFBs
YXRmb3JtR0xPYmplY3QpIG92ZXJyaWRlOwogICAgIEdDR0xib29sZWFuIGlzVmVydGV4QXJyYXlP
RVMoUGxhdGZvcm1HTE9iamVjdCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBiaW5kVmVydGV4QXJyYXlP
RVMoUGxhdGZvcm1HTE9iamVjdCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBpbnNlcnRFdmVudE1hcmtl
ckVYVChjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKLSAgICB2b2lkIHB1c2hHcm91cE1hcmtlckVY
VChjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKLSAgICB2b2lkIHBvcEdyb3VwTWFya2VyRVhUKHZv
aWQpIG92ZXJyaWRlOwogICAgIHZvaWQgZHJhd0J1ZmZlcnNFWFQoR0NHTFNwYW48Y29uc3QgR0NH
TGVudW0+KSBvdmVycmlkZTsKIAogICAgIHZvaWQgZHJhd0FycmF5c0luc3RhbmNlZEFOR0xFKEdD
R0xlbnVtIG1vZGUsIEdDR0xpbnQgZmlyc3QsIEdDR0xzaXplaSBjb3VudCwgR0NHTHNpemVpIHBy
aW1jb3VudCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uY3Bw
CmluZGV4IGMzNDM4ZDU5MWMwN2EzNmNmMWUwNDI2YzFiOWZkN2IzZTkxNzc5ZDUuLjA5ZGI4NTQw
MDIyMWRmOTc1Nzg4ODU5YTRhMjg3YWJhYTI0ZjgyNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25z
R0xPcGVuR0xDb21tb24uY3BwCkBAIC0yNTQsMTg1ICsyNTQsNiBAQCB2b2lkIEV4dGVuc2lvbnNH
TE9wZW5HTENvbW1vbjo6Z2V0blVuaWZvcm1pdkVYVChHQ0dMdWludCwgaW50LCBHQ0dMc2l6ZWks
IEdDR0xpbgogICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVS
QVRJT04pOwogfQogCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6cmVhZFBpeGVsc1Jv
YnVzdEFOR0xFKGludCwgaW50LCBHQ0dMc2l6ZWksIEdDR0xzaXplaSwgR0NHTGVudW0sIEdDR0xl
bnVtLCBHQ0dMc2l6ZWksIEdDR0xzaXplaSAqLCBHQ0dMc2l6ZWkgKiwgR0NHTHNpemVpICosIHZv
aWQgKikKLXsKLSAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BF
UkFUSU9OKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OnRleFBhcmFtZXRl
cmZ2Um9idXN0QU5HTEUoR0NHTGVudW0sIEdDR0xlbnVtLCBHQ0dMc2l6ZWksIGNvbnN0IEdDR0xm
bG9hdCAqKQotewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9P
UEVSQVRJT04pOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6dGV4UGFyYW1l
dGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51bSwgR0NHTGVudW0sIEdDR0xzaXplaSwgY29uc3QgR0NH
TGludCAqKQotewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9P
UEVSQVRJT04pOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0UXVlcnlp
dlJvYnVzdEFOR0xFKEdDR0xlbnVtLCBHQ0dMZW51bSwgR0NHTHNpemVpLCBHQ0dMc2l6ZWkgKiwg
R0NHTGludCAqKQotewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJ
RF9PUEVSQVRJT04pOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0UXVl
cnlPYmplY3R1aXZSb2J1c3RBTkdMRShHQ0dMdWludCwgR0NHTGVudW0sIEdDR0xzaXplaSwgR0NH
THNpemVpICosIEdDR0x1aW50ICopCi17Ci0gICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJv
cihHTF9JTlZBTElEX09QRVJBVElPTik7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29t
bW9uOjpnZXRCdWZmZXJQb2ludGVydlJvYnVzdEFOR0xFKEdDR0xlbnVtLCBHQ0dMZW51bSwgR0NH
THNpemVpLCBHQ0dMc2l6ZWkgKiwgdm9pZCAqKikKLXsKLSAgICBtX2NvbnRleHQtPnN5bnRoZXNp
emVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xP
cGVuR0xDb21tb246OmdldFZlcnRleEF0dHJpYklpdlJvYnVzdEFOR0xFKEdDR0x1aW50LCBHQ0dM
ZW51bSwgR0NHTHNpemVpLCBHQ0dMc2l6ZWkgKiwgR0NHTGludCAqKQotewotICAgIG1fY29udGV4
dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi12b2lkIEV4
dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0VmVydGV4QXR0cmliSXVpdlJvYnVzdEFOR0xFKEdD
R0x1aW50LCBHQ0dMZW51bSwgR0NHTHNpemVpLCBHQ0dMc2l6ZWkgKiwgR0NHTHVpbnQgKikKLXsK
LSAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsK
LX0KLQotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFVuaWZvcm11aXZSb2J1c3RB
TkdMRShHQ0dMdWludCwgaW50LCBHQ0dMc2l6ZWksIEdDR0xzaXplaSAqLCBHQ0dMdWludCAqKQot
ewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04p
OwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0QnVmZmVyUGFyYW1ldGVy
aTY0dlJvYnVzdEFOR0xFKEdDR0xlbnVtLCBHQ0dMZW51bSwgR0NHTHNpemVpLCBHQ0dMc2l6ZWkg
KiwgR0NHTGludDY0ICopCi17Ci0gICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9J
TlZBTElEX09QRVJBVElPTik7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpz
YW1wbGVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMdWludCwgR0NHTGVudW0sIEdDR0xzaXpl
aSwgY29uc3QgR0NHTGludCAqKQotewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3Io
R0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1v
bjo6c2FtcGxlclBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTHVpbnQsIEdDR0xlbnVtLCBHQ0dM
c2l6ZWksIGNvbnN0IEdDR0xmbG9hdCAqKQotewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdM
RXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5H
TENvbW1vbjo6Z2V0U2FtcGxlclBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTHVpbnQsIEdDR0xl
bnVtLCBHQ0dMc2l6ZWksIEdDR0xzaXplaSAqLCBHQ0dMaW50ICopCi17Ci0gICAgbV9jb250ZXh0
LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Ci19Ci0KLXZvaWQgRXh0
ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRTYW1wbGVyUGFyYW1ldGVyZnZSb2J1c3RBTkdMRShH
Q0dMdWludCwgR0NHTGVudW0sIEdDR0xzaXplaSwgR0NHTHNpemVpICosIEdDR0xmbG9hdCAqKQot
ewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04p
OwotfQotCi0KLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRGcmFtZWJ1ZmZlclBh
cmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0sIEdDR0xlbnVtLCBHQ0dMc2l6ZWksIEdDR0xz
aXplaSAqLCBHQ0dMaW50ICopCi17Ci0gICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihH
TF9JTlZBTElEX09QRVJBVElPTik7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9u
OjpnZXRQcm9ncmFtSW50ZXJmYWNlaXZSb2J1c3RBTkdMRShHQ0dMdWludCwgR0NHTGVudW0sIEdD
R0xlbnVtLCBHQ0dMc2l6ZWksIEdDR0xzaXplaSAqLCBHQ0dMaW50ICopCi17Ci0gICAgbV9jb250
ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Ci19Ci0KLXZvaWQg
RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRCb29sZWFuaV92Um9idXN0QU5HTEUoR0NHTGVu
dW0sIEdDR0x1aW50LCBHQ0dMc2l6ZWksIEdDR0xzaXplaSAqLCBHQ0dMYm9vbGVhbiAqKQotewot
ICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwot
fQotCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0TXVsdGlzYW1wbGVmdlJvYnVz
dEFOR0xFKEdDR0xlbnVtLCBHQ0dMdWludCwgR0NHTHNpemVpLCBHQ0dMc2l6ZWkgKiwgR0NHTGZs
b2F0ICopCi17Ci0gICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09Q
RVJBVElPTik7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRUZXhMZXZl
bFBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0sIGludCwgR0NHTGVudW0sIEdDR0xzaXpl
aSwgR0NHTHNpemVpICosIEdDR0xpbnQgKikKLXsKLSAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVH
TEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xPcGVu
R0xDb21tb246OmdldFRleExldmVsUGFyYW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dMZW51bSwgaW50
LCBHQ0dMZW51bSwgR0NHTHNpemVpLCBHQ0dMc2l6ZWkgKiwgR0NHTGZsb2F0ICopCi17Ci0gICAg
bV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Ci19Ci0K
LQotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFBvaW50ZXJ2Um9idXN0QU5HTEVS
b2J1c3RBTkdMRShHQ0dMZW51bSwgR0NHTHNpemVpLCBHQ0dMc2l6ZWkgKiwgdm9pZCAqKikKLXsK
LSAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsK
LX0KLQotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldG5Vbmlmb3JtZnZSb2J1c3RB
TkdMRShHQ0dMdWludCwgaW50LCBHQ0dMc2l6ZWksIEdDR0xzaXplaSAqLCBHQ0dMZmxvYXQgKikK
LXsKLSAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9O
KTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldG5Vbmlmb3JtaXZSb2J1
c3RBTkdMRShHQ0dMdWludCwgaW50LCBHQ0dMc2l6ZWksIEdDR0xzaXplaSAqLCBHQ0dMaW50ICop
Ci17Ci0gICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElP
Tik7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRuVW5pZm9ybXVpdlJv
YnVzdEFOR0xFKEdDR0x1aW50LCBpbnQsIEdDR0xzaXplaSwgR0NHTHNpemVpICosIEdDR0x1aW50
ICopCi17Ci0gICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJB
VElPTik7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjp0ZXhQYXJhbWV0ZXJJ
aXZSb2J1c3RBTkdMRShHQ0dMZW51bSwgR0NHTGVudW0sIEdDR0xzaXplaSwgY29uc3QgR0NHTGlu
dCAqKQotewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVS
QVRJT04pOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6dGV4UGFyYW1ldGVy
SXVpdlJvYnVzdEFOR0xFKEdDR0xlbnVtLCBHQ0dMZW51bSwgR0NHTHNpemVpLCBjb25zdCBHQ0dM
dWludCAqKQotewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9P
UEVSQVRJT04pOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0VGV4UGFy
YW1ldGVySWl2Um9idXN0QU5HTEUoR0NHTGVudW0sIEdDR0xlbnVtLCBHQ0dMc2l6ZWksIEdDR0xz
aXplaSAqLCBHQ0dMaW50ICopCi17Ci0gICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihH
TF9JTlZBTElEX09QRVJBVElPTik7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9u
OjpnZXRUZXhQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUoR0NHTGVudW0sIEdDR0xlbnVtLCBHQ0dM
c2l6ZWksIEdDR0xzaXplaSAqLCBHQ0dMdWludCAqKQotewotICAgIG1fY29udGV4dC0+c3ludGhl
c2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi12b2lkIEV4dGVuc2lvbnNH
TE9wZW5HTENvbW1vbjo6c2FtcGxlclBhcmFtZXRlcklpdlJvYnVzdEFOR0xFKEdDR0x1aW50LCBH
Q0dMZW51bSwgR0NHTHNpemVpLCBjb25zdCBHQ0dMaW50ICopCi17Ci0gICAgbV9jb250ZXh0LT5z
eW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Ci19Ci0KLXZvaWQgRXh0ZW5z
aW9uc0dMT3BlbkdMQ29tbW9uOjpzYW1wbGVyUGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFKEdDR0x1
aW50LCBHQ0dMZW51bSwgR0NHTHNpemVpLCBjb25zdCBHQ0dMdWludCAqKQotewotICAgIG1fY29u
dGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi12b2lk
IEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0U2FtcGxlclBhcmFtZXRlcklpdlJvYnVzdEFO
R0xFKEdDR0x1aW50LCBHQ0dMZW51bSwgR0NHTHNpemVpLCBHQ0dMc2l6ZWkgKiwgR0NHTGludCAq
KQotewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJ
T04pOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0U2FtcGxlclBhcmFt
ZXRlckl1aXZSb2J1c3RBTkdMRShHQ0dMdWludCwgR0NHTGVudW0sIEdDR0xzaXplaSwgR0NHTHNp
emVpICosIEdDR0x1aW50ICopCi17Ci0gICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihH
TF9JTlZBTElEX09QRVJBVElPTik7Ci19Ci0KLQotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21t
b246OmdldFF1ZXJ5T2JqZWN0aXZSb2J1c3RBTkdMRShHQ0dMdWludCwgR0NHTGVudW0sIEdDR0xz
aXplaSwgR0NHTHNpemVpICosIEdDR0xpbnQgKikKLXsKLSAgICBtX2NvbnRleHQtPnN5bnRoZXNp
emVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xP
cGVuR0xDb21tb246OmdldFF1ZXJ5T2JqZWN0aTY0dlJvYnVzdEFOR0xFKEdDR0x1aW50LCBHQ0dM
ZW51bSwgR0NHTHNpemVpLCBHQ0dMc2l6ZWkgKiwgR0NHTGludDY0ICopCi17Ci0gICAgbV9jb250
ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Ci19Ci0KLXZvaWQg
RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRRdWVyeU9iamVjdHVpNjR2Um9idXN0QU5HTEUo
R0NHTHVpbnQsIEdDR0xlbnVtLCBHQ0dMc2l6ZWksIEdDR0xzaXplaSAqLCBHQ0dMdWludDY0ICop
Ci17Ci0gICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElP
Tik7Ci19Ci0KLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFdF
QkdMKSAmJiAhVVNFKEFOR0xFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5oCmlu
ZGV4IDNmMTA0MDE2MmZmYTA3YTJkYzEzMGFiYjIyZmIxYjFmZmMzZmRmMjAuLmRjYzBlM2FmMjE3
MzJlNzQ3ZWExYmQ1NjRiYjk2Nzg0MzJjYTNmNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3Bl
bkdMQ29tbW9uLmgKQEAgLTI4LDExICsyOCwxMSBAQAogCiAjaW5jbHVkZSAiRXh0ZW5zaW9uc0dM
LmgiCiAKLSNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oIgogI2luY2x1ZGUgPHd0
Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CitjbGFzcyBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDsKIAogY2xhc3MgRXh0
ZW5zaW9uc0dMT3BlbkdMQ29tbW9uIDogcHVibGljIEV4dGVuc2lvbnNHTCB7CiAgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CkBAIC01NSw1OCArNTUsMTggQEAgcHVibGljOgogICAgIFN0cmlu
ZyBnZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUoUGxhdGZvcm1HTE9iamVjdCkgb3ZlcnJp
ZGU7CiAKICAgICAvLyBFWFQgUm9idXN0bmVzcyAtIHVzZXMgZ2V0R3JhcGhpY3NSZXNldFN0YXR1
c0FSQigpCi0gICAgdm9pZCByZWFkblBpeGVsc0VYVChpbnQgeCwgaW50IHksIEdDR0xzaXplaSB3
aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBH
Q0dMc2l6ZWkgYnVmU2l6ZSwgdm9pZCAqZGF0YSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRuVW5p
Zm9ybWZ2RVhUKEdDR0x1aW50IHByb2dyYW0sIGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNp
emUsIGZsb2F0ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0blVuaWZvcm1pdkVYVChH
Q0dMdWludCBwcm9ncmFtLCBpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBpbnQgKnBh
cmFtcykgb3ZlcnJpZGU7Ci0KLSAgICBib29sIGlzTlZJRElBKCkgb3ZlcnJpZGUgeyByZXR1cm4g
bV9pc05WSURJQTsgfQotICAgIGJvb2wgaXNBTUQoKSBvdmVycmlkZSB7IHJldHVybiBtX2lzQU1E
OyB9Ci0gICAgYm9vbCBpc0ludGVsKCkgb3ZlcnJpZGUgeyByZXR1cm4gbV9pc0ludGVsOyB9Ci0g
ICAgYm9vbCBpc0ltYWdpbmF0aW9uKCkgb3ZlcnJpZGUgeyByZXR1cm4gbV9pc0ltYWdpbmF0aW9u
OyB9Ci0gICAgU3RyaW5nIHZlbmRvcigpIG92ZXJyaWRlIHsgcmV0dXJuIG1fdmVuZG9yOyB9Ci0K
LSAgICBib29sIHJlcXVpcmVzQnVpbHRJbkZ1bmN0aW9uRW11bGF0aW9uKCkgb3ZlcnJpZGUgeyBy
ZXR1cm4gbV9yZXF1aXJlc0J1aWx0SW5GdW5jdGlvbkVtdWxhdGlvbjsgfQotICAgIGJvb2wgcmVx
dWlyZXNSZXN0cmljdGVkTWF4aW11bVRleHR1cmVTaXplKCkgb3ZlcnJpZGUgeyByZXR1cm4gbV9y
ZXF1aXJlc1Jlc3RyaWN0ZWRNYXhpbXVtVGV4dHVyZVNpemU7IH0KLQotICAgIC8vIEdMX0FOR0xF
X3JvYnVzdF9jbGllbnRfbWVtb3J5Ci0gICAgdm9pZCByZWFkUGl4ZWxzUm9idXN0QU5HTEUoaW50
IHgsIGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZv
cm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3Ro
LCBHQ0dMc2l6ZWkgKmNvbHVtbnMsIEdDR0xzaXplaSAqcm93cywgdm9pZCAqcGl4ZWxzKSBvdmVy
cmlkZTsKLSAgICB2b2lkIHRleFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xmbG9hdCAqcGFy
YW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIHRleFBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVu
dW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xp
bnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRRdWVyeWl2Um9idXN0QU5HTEUoR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXpl
aSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0UXVlcnlP
YmplY3R1aXZSb2J1c3RBTkdMRShHQ0dMdWludCBpZCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXpl
aSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHVpbnQgKnBhcmFtcykgb3ZlcnJpZGU7
Ci0gICAgdm9pZCBnZXRCdWZmZXJQb2ludGVydlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwg
R0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgdm9p
ZCAqKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJJaXZSb2J1c3RB
TkdMRShHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBH
Q0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdl
dFZlcnRleEF0dHJpYkl1aXZSb2J1c3RBTkdMRShHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5h
bWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHVpbnQgKnBhcmFt
cykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRVbmlmb3JtdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQg
cHJvZ3JhbSwgaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5n
dGgsIEdDR0x1aW50ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0QnVmZmVyUGFyYW1l
dGVyaTY0dlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xz
aXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludDY0ICpwYXJhbXMpIG92ZXJy
aWRlOwotICAgIHZvaWQgc2FtcGxlclBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2Ft
cGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMaW50ICpw
YXJhbSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzYW1wbGVyUGFyYW1ldGVyZnZSb2J1c3RBTkdMRShH
Q0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0
IEdDR0xmbG9hdCAqcGFyYW0pIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0U2FtcGxlclBhcmFtZXRl
cml2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXpl
aSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVycmlkZTsK
LSAgICB2b2lkIGdldFNhbXBsZXJQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBs
ZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgs
IEdDR0xmbG9hdCAqcGFyYW1zKSBvdmVycmlkZTsKLQotICAgIHZvaWQgZ2V0RnJhbWVidWZmZXJQ
YXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdD
R0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVy
cmlkZTsKLSAgICB2b2lkIGdldFByb2dyYW1JbnRlcmZhY2VpdlJvYnVzdEFOR0xFKEdDR0x1aW50
IHByb2dyYW0sIEdDR0xlbnVtIHByb2dyYW1JbnRlcmZhY2UsIEdDR0xlbnVtIHBuYW1lLCBHQ0dM
c2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykgb3ZlcnJp
ZGU7Ci0gICAgdm9pZCBnZXRCb29sZWFuaV92Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMdWludCBpbmRleCwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dM
Ym9vbGVhbiAqZGF0YSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRNdWx0aXNhbXBsZWZ2Um9idXN0
QU5HTEUoR0NHTGVudW0gcG5hbWUsIEdDR0x1aW50IGluZGV4LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwg
R0NHTHNpemVpICpsZW5ndGgsIEdDR0xmbG9hdCAqdmFsKSBvdmVycmlkZTsKLSAgICB2b2lkIGdl
dFRleExldmVsUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIGludCBsZXZl
bCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwg
R0NHTGludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldFRleExldmVsUGFyYW1ldGVy
ZnZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIGludCBsZXZlbCwgR0NHTGVudW0gcG5hbWUs
IEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGZsb2F0ICpwYXJhbXMp
IG92ZXJyaWRlOwotCi0gICAgdm9pZCBnZXRQb2ludGVydlJvYnVzdEFOR0xFUm9idXN0QU5HTEUo
R0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgdm9p
ZCAqKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRuVW5pZm9ybWZ2Um9idXN0QU5HTEUo
R0NHTHVpbnQgcHJvZ3JhbSwgaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNp
emVpICpsZW5ndGgsIEdDR0xmbG9hdCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldG5V
bmlmb3JtaXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBpbnQgbG9jYXRpb24sIEdDR0xz
aXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVycmlk
ZTsKLSAgICB2b2lkIGdldG5Vbmlmb3JtdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwg
aW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0x1
aW50ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgdGV4UGFyYW1ldGVySWl2Um9idXN0QU5H
TEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNv
bnN0IEdDR0xpbnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCB0ZXhQYXJhbWV0ZXJJdWl2
Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1
ZlNpemUsIGNvbnN0IEdDR0x1aW50ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0VGV4
UGFyYW1ldGVySWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwg
R0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpIG92
ZXJyaWRlOwotICAgIHZvaWQgZ2V0VGV4UGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFKEdDR0xlbnVt
IHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxl
bmd0aCwgR0NHTHVpbnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzYW1wbGVyUGFyYW1l
dGVySWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xz
aXplaSBidWZTaXplLCBjb25zdCBHQ0dMaW50ICpwYXJhbSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBz
YW1wbGVyUGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVt
IHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTHVpbnQgKnBhcmFtKSBvdmVycmlk
ZTsKLSAgICB2b2lkIGdldFNhbXBsZXJQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRShHQ0dMdWludCBz
YW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVu
Z3RoLCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0U2FtcGxlclBhcmFt
ZXRlckl1aXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NH
THNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMdWludCAqcGFyYW1zKSBvdmVy
cmlkZTsKLQotICAgIHZvaWQgZ2V0UXVlcnlPYmplY3RpdlJvYnVzdEFOR0xFKEdDR0x1aW50IGlk
LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBH
Q0dMaW50ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0UXVlcnlPYmplY3RpNjR2Um9i
dXN0QU5HTEUoR0NHTHVpbnQgaWQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwg
R0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQ2NCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lk
IGdldFF1ZXJ5T2JqZWN0dWk2NHZSb2J1c3RBTkdMRShHQ0dMdWludCBpZCwgR0NHTGVudW0gcG5h
bWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHVpbnQ2NCAqcGFy
YW1zKSBvdmVycmlkZTsKKyAgICB2b2lkIHJlYWRuUGl4ZWxzRVhUKGludCB4LCBpbnQgeSwgR0NH
THNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVt
IHR5cGUsIEdDR0xzaXplaSBidWZTaXplLCB2b2lkICpkYXRhKTsKKyAgICB2b2lkIGdldG5Vbmlm
b3JtZnZFWFQoR0NHTHVpbnQgcHJvZ3JhbSwgaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6
ZSwgZmxvYXQgKnBhcmFtcyk7CisgICAgdm9pZCBnZXRuVW5pZm9ybWl2RVhUKEdDR0x1aW50IHBy
b2dyYW0sIGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIGludCAqcGFyYW1zKTsKKwor
ICAgIGJvb2wgaXNOVklESUEoKSBjb25zdCB7IHJldHVybiBtX2lzTlZJRElBOyB9CisgICAgYm9v
bCBpc0FNRCgpIGNvbnN0IHsgcmV0dXJuIG1faXNBTUQ7IH0KKyAgICBib29sIGlzSW50ZWwoKSBj
b25zdCB7IHJldHVybiBtX2lzSW50ZWw7IH0KKyAgICBib29sIGlzSW1hZ2luYXRpb24oKSBjb25z
dCB7IHJldHVybiBtX2lzSW1hZ2luYXRpb247IH0KKyAgICBTdHJpbmcgdmVuZG9yKCkgY29uc3Qg
eyByZXR1cm4gbV92ZW5kb3I7IH0KKworICAgIGJvb2wgcmVxdWlyZXNCdWlsdEluRnVuY3Rpb25F
bXVsYXRpb24oKSBjb25zdCB7IHJldHVybiBtX3JlcXVpcmVzQnVpbHRJbkZ1bmN0aW9uRW11bGF0
aW9uOyB9CisgICAgYm9vbCByZXF1aXJlc1Jlc3RyaWN0ZWRNYXhpbXVtVGV4dHVyZVNpemUoKSBj
b25zdCB7IHJldHVybiBtX3JlcXVpcmVzUmVzdHJpY3RlZE1heGltdW1UZXh0dXJlU2l6ZTsgfQog
CiBwcm90ZWN0ZWQ6CiAgICAgZnJpZW5kIGNsYXNzIEV4dGVuc2lvbnNHTE9wZW5HTEVTOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lv
bnNHTE9wZW5HTEVTLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5n
bC9FeHRlbnNpb25zR0xPcGVuR0xFUy5jcHAKaW5kZXggOGNhODc3ODg0ZWVhYjhhMmNhMWRkZTJk
YjJlYzhkNmIyMTIyZmRlMS4uYjJlM2M4Yjk4NDkzNDVkNTczOGY3YTVjMTBlMTJkYjU5NGQyYTAw
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4
dGVuc2lvbnNHTE9wZW5HTEVTLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMRVMuY3BwCkBAIC0xMDAsMTEgKzEwMCw2IEBA
IHZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMRVM6OnJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBs
ZUlNRyh1bnNpZ25lZCBsb25nIHRhcmdlCiAgICAgICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdM
RXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwogfQogCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5H
TEVTOjpibGl0RnJhbWVidWZmZXJBTkdMRShHQ0dMaW50LCBHQ0dMaW50LCBHQ0dMaW50LCBHQ0dM
aW50LCBHQ0dMaW50LCBHQ0dMaW50LCBHQ0dMaW50LCBHQ0dMaW50LCBHQ0dMYml0ZmllbGQsIEdD
R0xlbnVtKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KIHZvaWQgRXh0ZW5zaW9uc0dM
T3BlbkdMRVM6OnJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKEdDR0xlbnVtIHRh
cmdldCwgR0NHTHNpemVpIHNhbXBsZXMsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6
ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQpCiB7CiAgICAgaWYgKCFtX2NvbnRleHQtPm1ha2VD
b250ZXh0Q3VycmVudCgpKQpAQCAtMTE1LDIxICsxMTAsNiBAQCB2b2lkIEV4dGVuc2lvbnNHTE9w
ZW5HTEVTOjpyZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVBTkdMRShHQ0dMZW51bSB0YXJn
ZXQsCiAgICAgICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLXZvaWQgRXh0ZW5zaW9uc0dMT3Bl
bkdMRVM6Omluc2VydEV2ZW50TWFya2VyRVhUKGNvbnN0IFN0cmluZyYpCi17Ci0gICAgbm90SW1w
bGVtZW50ZWQoKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xFUzo6cHVzaEdyb3VwTWFy
a2VyRVhUKGNvbnN0IFN0cmluZyYpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9p
ZCBFeHRlbnNpb25zR0xPcGVuR0xFUzo6cG9wR3JvdXBNYXJrZXJFWFQodm9pZCkKLXsKLSAgICBu
b3RJbXBsZW1lbnRlZCgpOwotfQotCiBQbGF0Zm9ybUdMT2JqZWN0IEV4dGVuc2lvbnNHTE9wZW5H
TEVTOjpjcmVhdGVWZXJ0ZXhBcnJheU9FUygpCiB7CiAgICAgaWYgKG1fZ2xHZW5WZXJ0ZXhBcnJh
eXNPRVMpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29w
ZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xFUy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVTLmgKaW5kZXggNWM3NjAzN2ZhN2JjNmU4
ZWVlM2U2NzNmOTlhN2RmYzJmNzhmYjRkMi4uYWRkMGJiNzYzZjRiZGE1YjY5ZTYxYmFiNjAyMmE0
MDgyNDhhZjNlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
b3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVTLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVTLmgKQEAgLTI3LDYgKzI3LDcg
QEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmgi
CisjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaCIKIAogI2lmIFVTRShPUEVOR0xf
RVMpCiAKQEAgLTc1LDExICs3Niw3IEBAIHB1YmxpYzoKIAogICAgIC8vIEV4dGVuc2lvbjNEIG1l
dGhvZHMKICAgICBib29sIGlzRW5hYmxlZChjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKLSAgICB2
b2lkIGJsaXRGcmFtZWJ1ZmZlckFOR0xFKEdDR0xpbnQgc3JjWDAsIEdDR0xpbnQgc3JjWTAsIEdD
R0xpbnQgc3JjWDEsIEdDR0xpbnQgc3JjWTEsIEdDR0xpbnQgZHN0WDAsIEdDR0xpbnQgZHN0WTAs
IEdDR0xpbnQgZHN0WDEsIEdDR0xpbnQgZHN0WTEsIEdDR0xiaXRmaWVsZCBtYXNrLCBHQ0dMZW51
bSBmaWx0ZXIpIG92ZXJyaWRlOwotICAgIHZvaWQgcmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2Ft
cGxlQU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWkgc2FtcGxlcywgR0NHTGVudW0gaW50
ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkgb3ZlcnJpZGU7
Ci0gICAgdm9pZCBpbnNlcnRFdmVudE1hcmtlckVYVChjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsK
LSAgICB2b2lkIHB1c2hHcm91cE1hcmtlckVYVChjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKLSAg
ICB2b2lkIHBvcEdyb3VwTWFya2VyRVhUKHZvaWQpIG92ZXJyaWRlOworICAgIHZvaWQgcmVuZGVy
YnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWkg
c2FtcGxlcywgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNp
emVpIGhlaWdodCk7CiAKICAgICBQbGF0Zm9ybUdMT2JqZWN0IGNyZWF0ZVZlcnRleEFycmF5T0VT
KCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkZWxldGVWZXJ0ZXhBcnJheU9FUyhQbGF0Zm9ybUdMT2Jq
ZWN0KSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgKaW5kZXggZWU3
MTk0NjM5YTg4NDgxMTdjZDIxODBlZTc5MTIyZjhjZTA0NTVhNi4uZTFkYWY3ZjczZWEyYjU4ZDNk
ODBiY2ExNWM5MzU2Nzk5MmRlMTU0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdM
LmgKQEAgLTQ1LDYgKzQ1LDcgQEAKIAogI2lmICFVU0UoQU5HTEUpCiAjaW5jbHVkZSAiQU5HTEVX
ZWJLaXRCcmlkZ2UuaCIKKyNpbmNsdWRlICJFeHRlbnNpb25zR0xPcGVuR0xDb21tb24uaCIKICNl
bmRpZgogCiAvLyBGSVhNRTogRmluZCBhIGJldHRlciB3YXkgdG8gYXZvaWQgdGhlIG5hbWUgY29u
ZmxpY3Rpb24gZm9yIE5PX0VSUk9SLgpAQCAtNDg1LDcgKzQ4NiwxMiBAQCBwdWJsaWM6CiAgICAg
Ly8gYWxsIG1ldGhvZHMgaXQgY29udGFpbnMgbWF5IG5lY2Vzc2FyaWx5IGJlIHN1cHBvcnRlZCBv
biB0aGUKICAgICAvLyBjdXJyZW50IGhhcmR3YXJlLiBNdXN0IGNhbGwgRXh0ZW5zaW9uc0dMOjpz
dXBwb3J0cygpIHRvCiAgICAgLy8gZGV0ZXJtaW5lIHRoaXMuCisjaWYgIVVTRShBTkdMRSkKKyAg
ICAvLyBVc2UgY292YXJpYW50IHJldHVybiB0eXBlIGZvciBPUEVOR0wvT1BFTkdMX0VTCisgICAg
RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uJiBnZXRFeHRlbnNpb25zKCkgZmluYWw7CisjZWxzZQog
ICAgIEV4dGVuc2lvbnNHTCYgZ2V0RXh0ZW5zaW9ucygpIGZpbmFsOworI2VuZGlmCiAKICAgICB2
b2lkIHNldEZhaWxOZXh0R1BVU3RhdHVzQ2hlY2soKSBmaW5hbCB7IG1fZmFpbE5leHRTdGF0dXND
aGVjayA9IHRydWU7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQmFzZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xCYXNl
LmNwcAppbmRleCAyOWRmN2M5MDEzY2I5MTU5MzRhYmFiODk0ZmFiMjZjOWQ3ZmU3NzBmLi5hNTYy
ZThhZjI3YmRiNjI1OWMyZWZjZWI4MDRlZmUzOGZmOWQ2MWYxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xC
YXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0xCYXNlLmNwcApAQCAtMTA2LDcgKzEwNiw3IEBAIGJvb2wgR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlc2hhcGVGQk9zKGNvbnN0IEludFNpemUmIHNpemUpCiAg
ICAgICAgIC8vIFdlIGRvbid0IGFsbG93IHRoZSBsb2dpYyB3aGVyZSBzdGVuY2lsIGlzIHJlcXVp
cmVkIGFuZCBkZXB0aCBpcyBub3QuCiAgICAgICAgIC8vIFNlZSBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6dmFsaWRhdGVBdHRyaWJ1dGVzLgogCi0gICAgICAgIEV4dGVuc2lvbnNHTCYgZXh0ZW5z
aW9ucyA9IGdldEV4dGVuc2lvbnMoKTsKKyAgICAgICAgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9u
JiBleHRlbnNpb25zID0gZ2V0RXh0ZW5zaW9ucygpOwogICAgICAgICAvLyBVc2UgYSAyNCBiaXQg
ZGVwdGggYnVmZmVyIHdoZXJlIHdlIGtub3cgd2UgaGF2ZSBpdC4KICAgICAgICAgaWYgKGV4dGVu
c2lvbnMuc3VwcG9ydHMoIkdMX0VYVF9wYWNrZWRfZGVwdGhfc3RlbmNpbCIpKQogICAgICAgICAg
ICAgaW50ZXJuYWxEZXB0aFN0ZW5jaWxGb3JtYXQgPSBHTF9ERVBUSDI0X1NURU5DSUw4X0VYVDsK
QEAgLTQwNyw3ICs0MDcsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjbGVhckRl
cHRoKEdDR0xjbGFtcGYgZGVwdGgpCiB9CiAKICNpZiAhUExBVEZPUk0oR1RLKQotRXh0ZW5zaW9u
c0dMJiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0RXh0ZW5zaW9ucygpCitFeHRlbnNpb25z
R0xPcGVuR0xDb21tb24mIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRFeHRlbnNpb25zKCkK
IHsKICAgICBpZiAoIW1fZXh0ZW5zaW9ucykKICAgICAgICAgbV9leHRlbnNpb25zID0gbWFrZVVu
aXF1ZTxFeHRlbnNpb25zR0xPcGVuR0w+KHRoaXMsIGlzR0xFUzJDb21wbGlhbnQoKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0xDb21tb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29tbW9uLmNwcAppbmRleCBmY2RiNzEx
YTZmOGNiMDU5ZTAwYjc0Y2QwY2NiN2M5YWNlOTBkYTYwLi40NGQ2ZmRkNzBkNDI5NjM1Njc5OTRi
NjVmMTVlYTljYTY1NGNjYmY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb21tb24uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9w
ZW5HTENvbW1vbi5jcHAKQEAgLTExOCw3ICsxMTgsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjp2YWxpZGF0ZURlcHRoU3RlbmNpbChjb25zdCBjaGFyKiBwYWNrZWREZXB0aFN0ZW5j
aQogewogICAgIGF1dG8gYXR0cnMgPSBjb250ZXh0QXR0cmlidXRlcygpOwogCi0gICAgRXh0ZW5z
aW9uc0dMJiBleHRlbnNpb25zID0gZ2V0RXh0ZW5zaW9ucygpOworICAgIEV4dGVuc2lvbnNHTE9w
ZW5HTENvbW1vbiYgZXh0ZW5zaW9ucyA9IGdldEV4dGVuc2lvbnMoKTsKICAgICBpZiAoYXR0cnMu
c3RlbmNpbCkgewogICAgICAgICBpZiAoZXh0ZW5zaW9ucy5zdXBwb3J0cyhwYWNrZWREZXB0aFN0
ZW5jaWxFeHRlbnNpb24pKSB7CiAgICAgICAgICAgICBleHRlbnNpb25zLmVuc3VyZUVuYWJsZWQo
cGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEVTLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRH
TE9wZW5HTEVTLmNwcAppbmRleCBiYWFiZGUwNzkxNDY1ZjNmODNlNjZmZjI5MGVhMTRlYzE4NmIy
N2Q0Li5hZDY1NGU5Yzk1Njk0YTM5MDgwYTYyYTc4MTljMDBhN2VjMTUxNmMxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0xFUy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Bl
bmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMRVMuY3BwCkBAIC0yNjcsNyArMjY3LDcgQEAgdm9p
ZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y2xlYXJEZXB0aChHQ0dMY2xhbXBmIGRlcHRoKQog
fQogCiAjaWYgIVBMQVRGT1JNKEdUSykKLUV4dGVuc2lvbnNHTCYgR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OmdldEV4dGVuc2lvbnMoKQorRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uJiBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6Z2V0RXh0ZW5zaW9ucygpCiB7CiAgICAgaWYgKCFtX2V4dGVuc2lv
bnMpCiAgICAgICAgIG1fZXh0ZW5zaW9ucyA9IG1ha2VVbmlxdWU8RXh0ZW5zaW9uc0dMT3BlbkdM
RVM+KHRoaXMsIGlzR0xFUzJDb21wbGlhbnQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0Nv
bnRleHRHTFRleHR1cmVNYXBwZXIuY3BwCmluZGV4IGMyZjRhMjM2MWEwYWY3MTNlMWU0NmY0MGE0
MTZkNGFjZGMwZjUyOWYuLjdjM2QyMWI1YmEwYzliMjcyNmViYzU0ZDM0MDIyODdjMGU2MzZhNjUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFw
aGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXIuY3BwCkBA
IC00NTEsNyArNDUxLDcgQEAgR0NHTGVudW0gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmRyYXdp
bmdCdWZmZXJUZXh0dXJlVGFyZ2V0KCkKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oR1RLKSAmJiAh
VVNFKEFOR0xFKQotRXh0ZW5zaW9uc0dMJiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0RXh0
ZW5zaW9ucygpCitFeHRlbnNpb25zR0xPcGVuR0xDb21tb24mIEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjpnZXRFeHRlbnNpb25zKCkKIHsKICAgICBpZiAoIW1fZXh0ZW5zaW9ucykgewogI2lmIFVT
RShPUEVOR0xfRVMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhp
Y3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wubWVzc2FnZXMuaW4KaW5k
ZXggYWEwMzQ3MjVmOWFhNDJmNDJiZDNjOGEwMGIwYWExODA5MGE1OWI5YS4uYzc4OGQ2NWRiNGQ5
NzFjMmQ0ZDU0MGM0Njg4OGM0NTExMTRiMzQ2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLm1lc3NhZ2VzLmluCisr
KyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRl
eHRHTC5tZXNzYWdlcy5pbgpAQCAtMjc0LDE2ICsyNzQsMTEgQEAgbWVzc2FnZXMgLT4gUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0wgTm90UmVmQ291bnRlZCB7CiAgICAgdm9pZCBVbmlmb3JtQmxvY2tC
aW5kaW5nKHVpbnQzMl90IHByb2dyYW0sIHVpbnQzMl90IHVuaWZvcm1CbG9ja0luZGV4LCB1aW50
MzJfdCB1bmlmb3JtQmxvY2tCaW5kaW5nKQogICAgIHZvaWQgR2V0QWN0aXZlVW5pZm9ybUJsb2Nr
aXYodWludDMyX3QgcHJvZ3JhbSwgdWludDMyX3QgdW5pZm9ybUJsb2NrSW5kZXgsIHVpbnQzMl90
IHBuYW1lLCB1aW50NjRfdCBwYXJhbXNTaXplKSAtPiAoSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQz
Ml90PiBwYXJhbXMpIFN5bmNocm9ub3VzCiAgICAgdm9pZCBHZXRHcmFwaGljc1Jlc2V0U3RhdHVz
QVJCKCkgLT4gKGludDMyX3QgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCi0gICAgdm9pZCBCbGl0
RnJhbWVidWZmZXJBTkdMRShpbnQzMl90IHNyY1gwLCBpbnQzMl90IHNyY1kwLCBpbnQzMl90IHNy
Y1gxLCBpbnQzMl90IHNyY1kxLCBpbnQzMl90IGRzdFgwLCBpbnQzMl90IGRzdFkwLCBpbnQzMl90
IGRzdFgxLCBpbnQzMl90IGRzdFkxLCB1aW50MzJfdCBtYXNrLCB1aW50MzJfdCBmaWx0ZXIpCi0g
ICAgdm9pZCBSZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVBTkdMRSh1aW50MzJfdCB0YXJn
ZXQsIGludDMyX3Qgc2FtcGxlcywgdWludDMyX3QgaW50ZXJuYWxmb3JtYXQsIGludDMyX3Qgd2lk
dGgsIGludDMyX3QgaGVpZ2h0KQogICAgIHZvaWQgQ3JlYXRlVmVydGV4QXJyYXlPRVMoKSAtPiAo
dWludDMyX3QgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCiAgICAgdm9pZCBEZWxldGVWZXJ0ZXhB
cnJheU9FUyh1aW50MzJfdCBhcmcwKQogICAgIHZvaWQgSXNWZXJ0ZXhBcnJheU9FUyh1aW50MzJf
dCBhcmcwKSAtPiAoYm9vbCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKICAgICB2b2lkIEJpbmRW
ZXJ0ZXhBcnJheU9FUyh1aW50MzJfdCBhcmcwKQogICAgIHZvaWQgR2V0VHJhbnNsYXRlZFNoYWRl
clNvdXJjZUFOR0xFKHVpbnQzMl90IGFyZzApIC0+IChTdHJpbmcgcmV0dXJuVmFsdWUpIFN5bmNo
cm9ub3VzCi0gICAgdm9pZCBJbnNlcnRFdmVudE1hcmtlckVYVChTdHJpbmcgYXJnMCkKLSAgICB2
b2lkIFB1c2hHcm91cE1hcmtlckVYVChTdHJpbmcgYXJnMCkKLSAgICB2b2lkIFBvcEdyb3VwTWFy
a2VyRVhUKCkKICAgICB2b2lkIERyYXdCdWZmZXJzRVhUKElQQzo6QXJyYXlSZWZlcmVuY2U8dWlu
dDMyX3Q+IGJ1ZnMpCiAgICAgdm9pZCBEcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUodWludDMyX3Qg
bW9kZSwgaW50MzJfdCBmaXJzdCwgaW50MzJfdCBjb3VudCwgaW50MzJfdCBwcmltY291bnQpCiAg
ICAgdm9pZCBEcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRSh1aW50MzJfdCBtb2RlLCBpbnQzMl90
IGNvdW50LCB1aW50MzJfdCB0eXBlLCB1aW50NjRfdCBvZmZzZXQsIGludDMyX3QgcHJpbWNvdW50
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdy
YXBoaWNzQ29udGV4dEdMRnVuY3Rpb25zR2VuZXJhdGVkLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xGdW5jdGlvbnNHZW5lcmF0ZWQu
aAppbmRleCBhZjAxNjAyYWY0OTNlYjY3ZGUzZTYyY2YwZTUwYWMwYTJiOTkyNWYxLi4xYmM1N2Rm
OWFmZGEyOGQ4YmU0ZWJjNmQ0NDkzMmVhOTU1MzJhY2E4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xGdW5jdGlvbnNH
ZW5lcmF0ZWQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xGdW5jdGlvbnNHZW5lcmF0ZWQuaApAQCAtMTExOCwxNCArMTExOCw2
IEBACiAgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuZ2V0
R3JhcGhpY3NSZXNldFN0YXR1c0FSQigpOwogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1
cm5WYWx1ZSk7CiAgICAgfQotICAgIHZvaWQgYmxpdEZyYW1lYnVmZmVyQU5HTEUoaW50MzJfdCBz
cmNYMCwgaW50MzJfdCBzcmNZMCwgaW50MzJfdCBzcmNYMSwgaW50MzJfdCBzcmNZMSwgaW50MzJf
dCBkc3RYMCwgaW50MzJfdCBkc3RZMCwgaW50MzJfdCBkc3RYMSwgaW50MzJfdCBkc3RZMSwgdWlu
dDMyX3QgbWFzaywgdWludDMyX3QgZmlsdGVyKQotICAgIHsKLSAgICAgICAgbV9jb250ZXh0LT5n
ZXRFeHRlbnNpb25zKCkuYmxpdEZyYW1lYnVmZmVyQU5HTEUoc3JjWDAsIHNyY1kwLCBzcmNYMSwg
c3JjWTEsIGRzdFgwLCBkc3RZMCwgZHN0WDEsIGRzdFkxLCBtYXNrLCBmaWx0ZXIpOwotICAgIH0K
LSAgICB2b2lkIHJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKHVpbnQzMl90IHRh
cmdldCwgaW50MzJfdCBzYW1wbGVzLCB1aW50MzJfdCBpbnRlcm5hbGZvcm1hdCwgaW50MzJfdCB3
aWR0aCwgaW50MzJfdCBoZWlnaHQpCi0gICAgewotICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVu
c2lvbnMoKS5yZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVBTkdMRSh0YXJnZXQsIHNhbXBs
ZXMsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0KTsKLSAgICB9CiAgICAgdm9pZCBjcmVh
dGVWZXJ0ZXhBcnJheU9FUyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQzMl90KT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKICAgICB7CiAgICAgICAgIFBsYXRmb3JtR0xPYmplY3QgcmV0dXJuVmFs
dWUgPSB7IH07CkBAIC0xMTUyLDE4ICsxMTQ0LDYgQEAKICAgICAgICAgcmV0dXJuVmFsdWUgPSBt
X2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5nZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUo
YXJnMCk7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUocmV0dXJuVmFsdWUpKTsK
ICAgICB9Ci0gICAgdm9pZCBpbnNlcnRFdmVudE1hcmtlckVYVChTdHJpbmcmJiBhcmcwKQotICAg
IHsKLSAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuaW5zZXJ0RXZlbnRNYXJrZXJF
WFQoYXJnMCk7Ci0gICAgfQotICAgIHZvaWQgcHVzaEdyb3VwTWFya2VyRVhUKFN0cmluZyYmIGFy
ZzApCi0gICAgewotICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5wdXNoR3JvdXBN
YXJrZXJFWFQoYXJnMCk7Ci0gICAgfQotICAgIHZvaWQgcG9wR3JvdXBNYXJrZXJFWFQoKQotICAg
IHsKLSAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkucG9wR3JvdXBNYXJrZXJFWFQo
KTsKLSAgICB9CiAgICAgdm9pZCBkcmF3QnVmZmVyc0VYVChJUEM6OkFycmF5UmVmZXJlbmNlPHVp
bnQzMl90PiYmIGJ1ZnMpCiAgICAgewogICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMo
KS5kcmF3QnVmZmVyc0VYVChtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dM
ZW51bSo+KGJ1ZnMuZGF0YSgpKSwgYnVmcy5zaXplKCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5LmgKaW5kZXggYTE0MzkzNDdkODllMGFkYmYwOGE0MmE0MjU5MWJiYjNk
YmViMjFlNy4uNWVmMDljYjUwMzhhZjhkMTQwMjg0ZTNmYzNlNDYxNmQ1MzNlNTAzZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFw
aGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmgKQEAgLTMxMyw1NiArMzEzLDE2IEBA
IHB1YmxpYzoKICAgICB2b2lkIHVuaWZvcm1CbG9ja0JpbmRpbmcoUGxhdGZvcm1HTE9iamVjdCBw
cm9ncmFtLCBHQ0dMdWludCB1bmlmb3JtQmxvY2tJbmRleCwgR0NHTHVpbnQgdW5pZm9ybUJsb2Nr
QmluZGluZykgZmluYWw7CiAgICAgdm9pZCBnZXRBY3RpdmVVbmlmb3JtQmxvY2tpdihHQ0dMdWlu
dCBwcm9ncmFtLCBHQ0dMdWludCB1bmlmb3JtQmxvY2tJbmRleCwgR0NHTGVudW0gcG5hbWUsIEdD
R0xTcGFuPEdDR0xpbnQ+IHBhcmFtcykgZmluYWw7CiAgICAgR0NHTGludCBnZXRHcmFwaGljc1Jl
c2V0U3RhdHVzQVJCKCkgZmluYWw7Ci0gICAgdm9pZCBibGl0RnJhbWVidWZmZXJBTkdMRShHQ0dM
aW50IHNyY1gwLCBHQ0dMaW50IHNyY1kwLCBHQ0dMaW50IHNyY1gxLCBHQ0dMaW50IHNyY1kxLCBH
Q0dMaW50IGRzdFgwLCBHQ0dMaW50IGRzdFkwLCBHQ0dMaW50IGRzdFgxLCBHQ0dMaW50IGRzdFkx
LCBHQ0dMYml0ZmllbGQgbWFzaywgR0NHTGVudW0gZmlsdGVyKSBmaW5hbDsKLSAgICB2b2lkIHJl
bmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTHNp
emVpIHNhbXBsZXMsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdD
R0xzaXplaSBoZWlnaHQpIGZpbmFsOwogICAgIFBsYXRmb3JtR0xPYmplY3QgY3JlYXRlVmVydGV4
QXJyYXlPRVMoKSBmaW5hbDsKICAgICB2b2lkIGRlbGV0ZVZlcnRleEFycmF5T0VTKFBsYXRmb3Jt
R0xPYmplY3QgYXJnMCkgZmluYWw7CiAgICAgR0NHTGJvb2xlYW4gaXNWZXJ0ZXhBcnJheU9FUyhQ
bGF0Zm9ybUdMT2JqZWN0IGFyZzApIGZpbmFsOwogICAgIHZvaWQgYmluZFZlcnRleEFycmF5T0VT
KFBsYXRmb3JtR0xPYmplY3QgYXJnMCkgZmluYWw7CiAgICAgU3RyaW5nIGdldFRyYW5zbGF0ZWRT
aGFkZXJTb3VyY2VBTkdMRShQbGF0Zm9ybUdMT2JqZWN0IGFyZzApIGZpbmFsOwotICAgIHZvaWQg
aW5zZXJ0RXZlbnRNYXJrZXJFWFQoY29uc3QgU3RyaW5nJiBhcmcwKSBmaW5hbDsKLSAgICB2b2lk
IHB1c2hHcm91cE1hcmtlckVYVChjb25zdCBTdHJpbmcmIGFyZzApIGZpbmFsOwotICAgIHZvaWQg
cG9wR3JvdXBNYXJrZXJFWFQoKSBmaW5hbDsKICAgICB2b2lkIGRyYXdCdWZmZXJzRVhUKEdDR0xT
cGFuPGNvbnN0IEdDR0xlbnVtPiBidWZzKSBmaW5hbDsKICAgICB2b2lkIGRyYXdBcnJheXNJbnN0
YW5jZWRBTkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMaW50IGZpcnN0LCBHQ0dMc2l6ZWkgY291bnQs
IEdDR0xzaXplaSBwcmltY291bnQpIGZpbmFsOwogICAgIHZvaWQgZHJhd0VsZW1lbnRzSW5zdGFu
Y2VkQU5HTEUoR0NHTGVudW0gbW9kZSwgR0NHTHNpemVpIGNvdW50LCBHQ0dMZW51bSB0eXBlLCBH
Q0dMdm9pZHB0ciBvZmZzZXQsIEdDR0xzaXplaSBwcmltY291bnQpIGZpbmFsOwogICAgIHZvaWQg
dmVydGV4QXR0cmliRGl2aXNvckFOR0xFKEdDR0x1aW50IGluZGV4LCBHQ0dMdWludCBkaXZpc29y
KSBmaW5hbDsKICAgICB2b2lkIGdldEludGVybmFsZm9ybWF0aXYoR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xpbnQ+
IHBhcmFtcykgZmluYWw7Ci0gICAgdm9pZCByZWFkUGl4ZWxzUm9idXN0QU5HTEUoR0NHTGludCB4
LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0g
Zm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5n
dGgsIEdDR0xzaXplaSogY29sdW1ucywgR0NHTHNpemVpKiByb3dzLCBHQ0dMdm9pZCogcGl4ZWxz
KSBmaW5hbDsKLSAgICB2b2lkIHRleFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xmbG9hdCog
cGFyYW1zKSBmaW5hbDsKLSAgICB2b2lkIHRleFBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVu
dW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xp
bnQqIHBhcmFtcykgZmluYWw7Ci0gICAgdm9pZCBnZXRRdWVyeWl2Um9idXN0QU5HTEUoR0NHTGVu
dW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSog
bGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpIGZpbmFsOwotICAgIHZvaWQgZ2V0UXVlcnlPYmplY3R1
aXZSb2J1c3RBTkdMRShHQ0dMdWludCBpZCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZT
aXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHVpbnQqIHBhcmFtcykgZmluYWw7Ci0gICAgdm9p
ZCBnZXRCdWZmZXJQb2ludGVydlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0g
cG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHZvaWQqKiBw
YXJhbXMpIGZpbmFsOwotICAgIHZvaWQgZ2V0VmVydGV4QXR0cmliSWl2Um9idXN0QU5HTEUoR0NH
THVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVp
KiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykgZmluYWw7Ci0gICAgdm9pZCBnZXRWZXJ0ZXhBdHRy
aWJJdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6
ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0x1aW50KiBwYXJhbXMpIGZpbmFsOwot
ICAgIHZvaWQgZ2V0VW5pZm9ybXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xp
bnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHVp
bnQqIHBhcmFtcykgZmluYWw7Ci0gICAgdm9pZCBnZXRCdWZmZXJQYXJhbWV0ZXJpNjR2Um9idXN0
QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUs
IEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50NjQqIHBhcmFtcykgZmluYWw7Ci0gICAgdm9pZCBz
YW1wbGVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBw
bmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xpbnQqIHBhcmFtKSBmaW5hbDsKLSAg
ICB2b2lkIHNhbXBsZXJQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdD
R0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGZsb2F0KiBwYXJhbSkg
ZmluYWw7Ci0gICAgdm9pZCBnZXRTYW1wbGVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMdWlu
dCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSog
bGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpIGZpbmFsOwotICAgIHZvaWQgZ2V0U2FtcGxlclBhcmFt
ZXRlcmZ2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xz
aXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGZsb2F0KiBwYXJhbXMpIGZpbmFs
OwotICAgIHZvaWQgZ2V0RnJhbWVidWZmZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVt
IHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxl
bmd0aCwgR0NHTGludCogcGFyYW1zKSBmaW5hbDsKLSAgICB2b2lkIGdldFByb2dyYW1JbnRlcmZh
Y2VpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xlbnVtIHByb2dyYW1JbnRlcmZh
Y2UsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgs
IEdDR0xpbnQqIHBhcmFtcykgZmluYWw7Ci0gICAgdm9pZCBnZXRCb29sZWFuaV92Um9idXN0QU5H
TEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMdWludCBpbmRleCwgR0NHTHNpemVpIGJ1ZlNpemUsIEdD
R0xzaXplaSogbGVuZ3RoLCBHQ0dMYm9vbGVhbiogZGF0YSkgZmluYWw7IC8vIE5PTElOVAotICAg
IHZvaWQgZ2V0TXVsdGlzYW1wbGVmdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHBuYW1lLCBHQ0dMdWlu
dCBpbmRleCwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMZmxvYXQq
IHZhbCkgZmluYWw7Ci0gICAgdm9pZCBnZXRUZXhMZXZlbFBhcmFtZXRlcml2Um9idXN0QU5HTEUo
R0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVp
IGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpIGZpbmFsOwotICAg
IHZvaWQgZ2V0VGV4TGV2ZWxQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwg
R0NHTGludCBsZXZlbCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6
ZWkqIGxlbmd0aCwgR0NHTGZsb2F0KiBwYXJhbXMpIGZpbmFsOwotICAgIHZvaWQgZ2V0UG9pbnRl
cnZSb2J1c3RBTkdMRVJvYnVzdEFOR0xFKEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6
ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0x2b2lkKiogcGFyYW1zKSBmaW5hbDsKLSAgICB2b2lk
IGdldG5Vbmlmb3JtZnZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0
aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xmbG9hdCogcGFy
YW1zKSBmaW5hbDsKLSAgICB2b2lkIGdldG5Vbmlmb3JtaXZSb2J1c3RBTkdMRShHQ0dMdWludCBw
cm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBs
ZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykgZmluYWw7Ci0gICAgdm9pZCBnZXRuVW5pZm9ybXVpdlJv
YnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBi
dWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHVpbnQqIHBhcmFtcykgZmluYWw7Ci0gICAg
dm9pZCB0ZXhQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVt
IHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGludCogcGFyYW1zKSBmaW5hbDsK
LSAgICB2b2lkIHRleFBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdD
R0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTHVpbnQqIHBhcmFtcykg
ZmluYWw7Ci0gICAgdm9pZCBnZXRUZXhQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0
YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5n
dGgsIEdDR0xpbnQqIHBhcmFtcykgZmluYWw7Ci0gICAgdm9pZCBnZXRUZXhQYXJhbWV0ZXJJdWl2
Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1
ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMdWludCogcGFyYW1zKSBmaW5hbDsKLSAgICB2
b2lkIHNhbXBsZXJQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dM
ZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xpbnQqIHBhcmFtKSBmaW5h
bDsKLSAgICB2b2lkIHNhbXBsZXJQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2Ft
cGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMdWludCog
cGFyYW0pIGZpbmFsOwotICAgIHZvaWQgZ2V0U2FtcGxlclBhcmFtZXRlcklpdlJvYnVzdEFOR0xF
KEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NH
THNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykgZmluYWw7Ci0gICAgdm9pZCBnZXRTYW1w
bGVyUGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBu
YW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0x1aW50KiBwYXJh
bXMpIGZpbmFsOwotICAgIHZvaWQgZ2V0UXVlcnlPYmplY3RpdlJvYnVzdEFOR0xFKEdDR0x1aW50
IGlkLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3Ro
LCBHQ0dMaW50KiBwYXJhbXMpIGZpbmFsOwotICAgIHZvaWQgZ2V0UXVlcnlPYmplY3RpNjR2Um9i
dXN0QU5HTEUoR0NHTHVpbnQgaWQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwg
R0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQ2NCogcGFyYW1zKSBmaW5hbDsKLSAgICB2b2lkIGdl
dFF1ZXJ5T2JqZWN0dWk2NHZSb2J1c3RBTkdMRShHQ0dMdWludCBpZCwgR0NHTGVudW0gcG5hbWUs
IEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHVpbnQ2NCogcGFyYW1z
KSBmaW5hbDsKICAgICAvLyBFbmQgb2YgbGlzdCB1c2VkIGJ5IGdlbmVyYXRlLWdwdXAtd2ViZ2wg
c2NyaXB0LgogCiBwcm90ZWN0ZWQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlGdW5jdGlvbnNHZW5l
cmF0ZWQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5RnVuY3Rpb25zR2VuZXJhdGVkLmNwcAppbmRleCBmN2VjZjg2
NTU2YTAwNzNhZjhmNTU0Y2ZjZmMwZWYzMzlmNjFlODlhLi5lMWE2ZGQzNGU1NWI1MjVmZWYyNmI1
N2NiMTMyNTJjZjMyYmQwNjlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlGdW5jdGlvbnNHZW5lcmF0
ZWQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eUZ1bmN0aW9uc0dlbmVyYXRlZC5jcHAKQEAgLTEzODAsMTYg
KzEzODAsNiBAQCBHQ0dMaW50IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEdyYXBo
aWNzUmVzZXRTdGF0dXNBUkIoKQogICAgIHJldHVybiByZXR1cm5WYWx1ZTsKIH0KIAotdm9pZCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpibGl0RnJhbWVidWZmZXJBTkdMRShHQ0dMaW50
IHNyY1gwLCBHQ0dMaW50IHNyY1kwLCBHQ0dMaW50IHNyY1gxLCBHQ0dMaW50IHNyY1kxLCBHQ0dM
aW50IGRzdFgwLCBHQ0dMaW50IGRzdFkwLCBHQ0dMaW50IGRzdFgxLCBHQ0dMaW50IGRzdFkxLCBH
Q0dMYml0ZmllbGQgbWFzaywgR0NHTGVudW0gZmlsdGVyKQotewotICAgIHNlbmQoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpCbGl0RnJhbWVidWZmZXJBTkdMRShzcmNYMCwgc3Jj
WTAsIHNyY1gxLCBzcmNZMSwgZHN0WDAsIGRzdFkwLCBkc3RYMSwgZHN0WTEsIG1hc2ssIGZpbHRl
ciksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKLX0KLQotdm9pZCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpyZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVBTkdMRShH
Q0dMZW51bSB0YXJnZXQsIEdDR0xzaXplaSBzYW1wbGVzLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1h
dCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KQotewotICAgIHNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpSZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1w
bGVBTkdMRSh0YXJnZXQsIHNhbXBsZXMsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0KSwg
bV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOwotfQotCiBQbGF0Zm9ybUdMT2JqZWN0IFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNyZWF0ZVZlcnRleEFycmF5T0VTKCkKIHsKICAg
ICB1aW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKQEAgLTE0MjEsMjEgKzE0MTEsNiBAQCBTdHJp
bmcgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VHJhbnNsYXRlZFNoYWRlclNvdXJj
ZUFOR0xFKFBsYXRmb3JtR0xPYgogICAgIHJldHVybiByZXR1cm5WYWx1ZTsKIH0KIAotdm9pZCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjppbnNlcnRFdmVudE1hcmtlckVYVChjb25zdCBT
dHJpbmcmIGFyZzApCi17Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6Okluc2VydEV2ZW50TWFya2VyRVhUKGFyZzApLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRp
Zmllcik7Ci19Ci0KLXZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cHVzaEdyb3Vw
TWFya2VyRVhUKGNvbnN0IFN0cmluZyYgYXJnMCkKLXsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6UHVzaEdyb3VwTWFya2VyRVhUKGFyZzApLCBtX2dyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllcik7Ci19Ci0KLXZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6cG9wR3JvdXBNYXJrZXJFWFQoKQotewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpQb3BHcm91cE1hcmtlckVYVCgpLCBtX2dyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllcik7Ci19Ci0KIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZHJh
d0J1ZmZlcnNFWFQoR0NHTFNwYW48Y29uc3QgR0NHTGVudW0+IGJ1ZnMpCiB7CiAgICAgc2VuZChN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRyYXdCdWZmZXJzRVhUKElQQzo6QXJy
YXlSZWZlcmVuY2U8dWludDMyX3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDMyX3QqPihi
dWZzLmRhdGEpLCBidWZzLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIp
OwpAQCAtMTQ2NSwxODEgKzE0NDAsNiBAQCB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OmdldEludGVybmFsZm9ybWF0aXYoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bQogICAgIAog
fQogCi12b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnJlYWRQaXhlbHNSb2J1c3RB
TkdMRShHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVp
Z2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXplLCBH
Q0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHNpemVpKiBjb2x1bW5zLCBHQ0dMc2l6ZWkqIHJvd3MsIEdD
R0x2b2lkKiBwaXhlbHMpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0xl
bnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dM
ZmxvYXQqIHBhcmFtcykKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnRleFBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVu
dW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xp
bnQqIHBhcmFtcykKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFF1ZXJ5aXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJn
ZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgs
IEdDR0xpbnQqIHBhcmFtcykKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFF1ZXJ5T2JqZWN0dWl2Um9idXN0QU5HTEUo
R0NHTHVpbnQgaWQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVp
KiBsZW5ndGgsIEdDR0x1aW50KiBwYXJhbXMpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0K
LQotdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRCdWZmZXJQb2ludGVydlJv
YnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZT
aXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHZvaWQqKiBwYXJhbXMpCi17Ci0gICAgbm90SW1w
bGVtZW50ZWQoKTsKLX0KLQotdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRW
ZXJ0ZXhBdHRyaWJJaXZSb2J1c3RBTkdMRShHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUs
IEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1zKQot
ewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6Z2V0VmVydGV4QXR0cmliSXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IGluZGV4LCBH
Q0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dM
dWludCogcGFyYW1zKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VW5pZm9ybXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50
IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkq
IGxlbmd0aCwgR0NHTHVpbnQqIHBhcmFtcykKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQot
Ci12b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEJ1ZmZlclBhcmFtZXRlcmk2
NHZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkg
YnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQ2NCogcGFyYW1zKQotewotICAgIG5v
dEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
c2FtcGxlclBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0g
cG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMaW50KiBwYXJhbSkKLXsKLSAgICBu
b3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OnNhbXBsZXJQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVt
IHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGZsb2F0KiBwYXJhbSkKLXsKLSAg
ICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OmdldFNhbXBsZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdD
R0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xp
bnQqIHBhcmFtcykKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFNhbXBsZXJQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdD
R0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNp
emVpKiBsZW5ndGgsIEdDR0xmbG9hdCogcGFyYW1zKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7
Ci19Ci0KLXZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0RnJhbWVidWZmZXJQ
YXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdD
R0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1zKQotewot
ICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6Z2V0UHJvZ3JhbUludGVyZmFjZWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwg
R0NHTGVudW0gcHJvZ3JhbUludGVyZmFjZSwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZT
aXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1zKQotewotICAgIG5vdEltcGxl
bWVudGVkKCk7Ci19Ci0KLXZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0Qm9v
bGVhbmlfdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTHVpbnQgaW5kZXgsIEdDR0xz
aXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGJvb2xlYW4qIGRhdGEpIC8vIE5P
TElOVAotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6Z2V0TXVsdGlzYW1wbGVmdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHBuYW1l
LCBHQ0dMdWludCBpbmRleCwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBH
Q0dMZmxvYXQqIHZhbCkKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFRleExldmVsUGFyYW1ldGVyaXZSb2J1c3RBTkdM
RShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6
ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykKLXsKLSAgICBu
b3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmdldFRleExldmVsUGFyYW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xp
bnQgbGV2ZWwsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBs
ZW5ndGgsIEdDR0xmbG9hdCogcGFyYW1zKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0K
LXZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0UG9pbnRlcnZSb2J1c3RBTkdM
RVJvYnVzdEFOR0xFKEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVp
KiBsZW5ndGgsIEdDR0x2b2lkKiogcGFyYW1zKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19
Ci0KLXZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0blVuaWZvcm1mdlJvYnVz
dEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZT
aXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGZsb2F0KiBwYXJhbXMpCi17Ci0gICAgbm90SW1w
bGVtZW50ZWQoKTsKLX0KLQotdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRu
VW5pZm9ybWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwg
R0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpCi17
Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjpnZXRuVW5pZm9ybXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xp
bnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHVp
bnQqIHBhcmFtcykKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OnRleFBhcmFtZXRlcklpdlJvYnVzdEFOR0xFKEdDR0xlbnVt
IHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMaW50
KiBwYXJhbXMpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5Ojp0ZXhQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUoR0NHTGVudW0g
dGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0x1aW50
KiBwYXJhbXMpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpnZXRUZXhQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRShHQ0dMZW51
bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBs
ZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12
b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFRleFBhcmFtZXRlckl1aXZSb2J1
c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6
ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0x1aW50KiBwYXJhbXMpCi17Ci0gICAgbm90SW1wbGVt
ZW50ZWQoKTsKLX0KLQotdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpzYW1wbGVy
UGFyYW1ldGVySWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUs
IEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMaW50KiBwYXJhbSkKLXsKLSAgICBub3RJbXBs
ZW1lbnRlZCgpOwotfQotCi12b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnNhbXBs
ZXJQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5h
bWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMdWludCogcGFyYW0pCi17Ci0gICAgbm90
SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpn
ZXRTYW1wbGVyUGFyYW1ldGVySWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVu
dW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCog
cGFyYW1zKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6Z2V0U2FtcGxlclBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRShHQ0dM
dWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXpl
aSogbGVuZ3RoLCBHQ0dMdWludCogcGFyYW1zKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19
Ci0KLXZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0UXVlcnlPYmplY3RpdlJv
YnVzdEFOR0xFKEdDR0x1aW50IGlkLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUs
IEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpCi17Ci0gICAgbm90SW1wbGVtZW50
ZWQoKTsKLX0KLQotdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRRdWVyeU9i
amVjdGk2NHZSb2J1c3RBTkdMRShHQ0dMdWludCBpZCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXpl
aSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludDY0KiBwYXJhbXMpCi17Ci0gICAg
bm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpnZXRRdWVyeU9iamVjdHVpNjR2Um9idXN0QU5HTEUoR0NHTHVpbnQgaWQsIEdDR0xlbnVtIHBu
YW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0x1aW50NjQqIHBh
cmFtcykKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCiB9CiAKICNlbmRpZgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>418327</attachid>
            <date>2021-01-25 13:05:38 -0800</date>
            <delta_ts>2021-01-26 11:57:41 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-218896-20210125130536.patch</filename>
            <type>text/plain</type>
            <size>94336</size>
            <attacher name="Rini Patel">rini_patel</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcxNzk3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmEyNWMyMDU3NjUyNzg4
Nzg5YmQ1M2JlMDQ4MDVlZmFhYjZlNDQyYi4uOTY2YWY5M2EyOGYzZTIyNTRkMzFmMTlmZTlkMzU4
ZDRjNTY1M2VmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0MyBAQAorMjAyMS0wMS0yNSAgUmlu
aSBQYXRlbCAgPHJpbmlfcGF0ZWxAYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZSB1bnVzZWQg
ZnVuY3Rpb25zIGZyb20gR3JhcGhpY3NDb250ZXh0R0wgYW5kIEV4dGVuc2lvbnNHTAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE4ODk2CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVtb3ZlIHVudXNlZCBm
dW5jdGlvbnMgZnJvbSBHcmFwaGljc0NvbnRleHRHTCBhbmQgRXh0ZW5zaW9uc0dMCisgICAgICAg
IFRoZXkncmUgZGVhZCBjb2RlIGFuZCBtYWtlIGl0IGhhcmRlciB0byBpbXBsZW1lbnQgdGhlIEdQ
VSBQcm9jZXNzIHZlcnNpb24uCisKKyAgICAgICAgLSBJZiB0aGUgZnVuY3Rpb24gaXMgdW51c2Vk
LCByZW1vdmUgaXQgZnVsbHkKKyAgICAgICAgLSBJZiB0aGUgZnVuY3Rpb24gaXMgdW51c2VkIGlu
IFVTRShBTkdMRSkgV2ViR0wgcGFydCwgcmVtb3ZlIHRoZSBmdW5jdGlvbiBmcm9tIEdyYXBoaWNz
Q29udGV4dEdMIGFuZCBBTkdMRSBHcmFwaGljc0NvbnRleHRHTE9wZW5HTAorCisgICAgICAgICog
aHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL0V4dGVuc2lvbnNHTC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjpnZXRuVW5pZm9ybWl2RVhUKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjppc05WSURJ
QSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5QmFzZTo6aXNBTUQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eUJhc2U6OmlzSW50ZWwpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OmlzSW1hZ2luYXRpb24pOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6
OnZlbmRvcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5QmFzZTo6cmVxdWlyZXNCdWlsdEluRnVuY3Rpb25FbXVsYXRpb24pOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OnJl
cXVpcmVzUmVzdHJpY3RlZE1heGltdW1UZXh0dXJlU2l6ZSk6IERlbGV0ZWQuCisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRlbnNpb25zR0xBTkdMRS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6RXh0ZW5zaW9uc0dMQU5HTEUpOgor
ICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmluaXRpYWxpemVBdmFpbGFibGVF
eHRlbnNpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpibGl0RnJh
bWVidWZmZXJBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xB
TkdMRTo6cmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5HTEUpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6Omluc2VydEV2ZW50TWFya2VyRVhUKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpwdXNoR3JvdXBN
YXJrZXJFWFQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6
OnBvcEdyb3VwTWFya2VyRVhUKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lv
bnNHTEFOR0xFOjpyZWFkUGl4ZWxzUm9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OnRleFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OnRleFBhcmFtZXRlcml2
Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5H
TEU6OmdldFF1ZXJ5aXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpF
eHRlbnNpb25zR0xBTkdMRTo6Z2V0UXVlcnlPYmplY3R1aXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6Z2V0QnVmZmVyUG9pbnRlcnZS
b2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdM
RTo6Z2V0VmVydGV4QXR0cmliSWl2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldFZlcnRleEF0dHJpYkl1aXZSb2J1c3RBTkdMRSk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6Z2V0VW5pZm9y
bXVpdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNH
TEFOR0xFOjpnZXRCdWZmZXJQYXJhbWV0ZXJpNjR2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OnNhbXBsZXJQYXJhbWV0ZXJpdlJvYnVz
dEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpz
YW1wbGVyUGFyYW1ldGVyZnZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpFeHRlbnNpb25zR0xBTkdMRTo6Z2V0U2FtcGxlclBhcmFtZXRlcml2Um9idXN0QU5HTEUpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldFNhbXBsZXJQ
YXJhbWV0ZXJmdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVu
c2lvbnNHTEFOR0xFOjpnZXRGcmFtZWJ1ZmZlclBhcmFtZXRlcml2Um9idXN0QU5HTEUpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldFByb2dyYW1JbnRl
cmZhY2VpdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lv
bnNHTEFOR0xFOjpnZXRCb29sZWFuaV92Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldE11bHRpc2FtcGxlZnZSb2J1c3RBTkdMRSk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6Z2V0VGV4TGV2
ZWxQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4
dGVuc2lvbnNHTEFOR0xFOjpnZXRUZXhMZXZlbFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldFBvaW50ZXJ2Um9i
dXN0QU5HTEVSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNp
b25zR0xBTkdMRTo6Z2V0blVuaWZvcm1mdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpnZXRuVW5pZm9ybWl2Um9idXN0QU5HTEUpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldG5Vbmlmb3Jt
dWl2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dM
QU5HTEU6OnRleFBhcmFtZXRlcklpdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjp0ZXhQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldFRleFBhcmFt
ZXRlcklpdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lv
bnNHTEFOR0xFOjpnZXRUZXhQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OnNhbXBsZXJQYXJhbWV0ZXJJaXZSb2J1
c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6
c2FtcGxlclBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6Z2V0U2FtcGxlclBhcmFtZXRlcklpdlJvYnVzdEFOR0xF
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpnZXRTYW1w
bGVyUGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkV4dGVuc2lvbnNHTEFOR0xFOjpnZXRRdWVyeU9iamVjdGl2Um9idXN0QU5HTEUpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldFF1ZXJ5T2JqZWN0aTY0
dlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFO
R0xFOjpnZXRRdWVyeU9iamVjdHVpNjR2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6bWFya0xheWVyQ29tcG9zaXRl
ZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5H
TC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0w6OmJsaXRGcmFtZWJ1
ZmZlckFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5H
TDo6cmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5HTEUpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMOjppbnNlcnRFdmVudE1hcmtlckVYVCk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0w6OnB1c2hHcm91cE1h
cmtlckVYVCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0w6
OnBvcEdyb3VwTWFya2VyRVhUKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OnJlYWRQaXhlbHNSb2J1c3RBTkdMRSk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OnRleFBhcmFt
ZXRlcmZ2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9u
c0dMT3BlbkdMQ29tbW9uOjp0ZXhQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0UXVlcnlpdlJvYnVz
dEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTENv
bW1vbjo6Z2V0UXVlcnlPYmplY3R1aXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldEJ1ZmZlclBvaW50ZXJ2Um9idXN0
QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29t
bW9uOjpnZXRWZXJ0ZXhBdHRyaWJJaXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFZlcnRleEF0dHJpYkl1aXZSb2J1
c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xD
b21tb246OmdldFVuaWZvcm11aXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldEJ1ZmZlclBhcmFtZXRlcmk2NHZSb2J1
c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xD
b21tb246OnNhbXBsZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6c2FtcGxlclBhcmFtZXRlcmZ2Um9i
dXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdM
Q29tbW9uOjpnZXRTYW1wbGVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFNhbXBsZXJQYXJhbWV0
ZXJmdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNH
TE9wZW5HTENvbW1vbjo6Z2V0RnJhbWVidWZmZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0UHJv
Z3JhbUludGVyZmFjZWl2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRCb29sZWFuaV92Um9idXN0QU5HTEUpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRNdWx0
aXNhbXBsZWZ2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5z
aW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRUZXhMZXZlbFBhcmFtZXRlcml2Um9idXN0QU5HTEUpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRU
ZXhMZXZlbFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRQb2ludGVydlJvYnVzdEFOR0xFUm9idXN0
QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29t
bW9uOjpnZXRuVW5pZm9ybWZ2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRuVW5pZm9ybWl2Um9idXN0QU5HTEUpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRu
VW5pZm9ybXVpdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVu
c2lvbnNHTE9wZW5HTENvbW1vbjo6dGV4UGFyYW1ldGVySWl2Um9idXN0QU5HTEUpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjp0ZXhQYXJhbWV0
ZXJJdWl2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9u
c0dMT3BlbkdMQ29tbW9uOjpnZXRUZXhQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFRleFBhcmFt
ZXRlckl1aXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNp
b25zR0xPcGVuR0xDb21tb246OnNhbXBsZXJQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRSk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OnNhbXBsZXJQ
YXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0
ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRTYW1wbGVyUGFyYW1ldGVySWl2Um9idXN0QU5HTEUp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpn
ZXRTYW1wbGVyUGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0UXVlcnlPYmplY3RpdlJvYnVzdEFO
R0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTENvbW1v
bjo6Z2V0UXVlcnlPYmplY3RpNjR2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRRdWVyeU9iamVjdHVpNjR2Um9idXN0
QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRl
bnNpb25zR0xPcGVuR0xDb21tb24uaDoKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9w
ZW5HTENvbW1vbjo6aXNOVklESUEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9u
c0dMT3BlbkdMQ29tbW9uOjppc0FNRCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNp
b25zR0xPcGVuR0xDb21tb246OmlzSW50ZWwgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RXh0
ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjppc0ltYWdpbmF0aW9uIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6dmVuZG9yIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6cmVxdWlyZXNCdWlsdEluRnVuY3Rp
b25FbXVsYXRpb24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdM
Q29tbW9uOjpyZXF1aXJlc1Jlc3RyaWN0ZWRNYXhpbXVtVGV4dHVyZVNpemUgY29uc3QpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xFUy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xFUzo6YmxpdEZyYW1lYnVmZmVy
QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMRVM6
Omluc2VydEV2ZW50TWFya2VyRVhUKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVu
c2lvbnNHTE9wZW5HTEVTOjpwdXNoR3JvdXBNYXJrZXJFWFQpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMRVM6OnBvcEdyb3VwTWFya2VyRVhUKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdM
RVMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0wuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0xCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjpyZXNoYXBlRkJPcyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6Z2V0RXh0ZW5zaW9ucyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
b3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29tbW9uLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2YWxpZGF0ZURlcHRoU3RlbmNpbCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMRVMu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEV4dGVu
c2lvbnMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0NvbnRl
eHRHTFRleHR1cmVNYXBwZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OmdldEV4dGVuc2lvbnMpOgorCiAyMDIxLTAxLTI1ICBZb3Vlbm4gRmFibGV0ICA8
eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBBY3RpdmF0ZSBzaW11bGNhc3QgdGhyb3VnaCBh
ZGRUcmFuc2NlaXZlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBkYjA1MjQzYTJkZGQxMjIxZWZjMjE0YzIwMDljODFk
MmQxY2Y3ZjI0Li4zMjQ2OWQwMGE0MmUwNTVlZDY1ZmY1ZTExNjJlYjgzMGQyOTBkMzg3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDYyIEBACisyMDIxLTAxLTI1ICBSaW5pIFBhdGVsICA8cmluaV9wYXRl
bEBhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3ZlIHVudXNlZCBmdW5jdGlvbnMgZnJvbSBHcmFw
aGljc0NvbnRleHRHTCBhbmQgRXh0ZW5zaW9uc0dMCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTg4OTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0wubWVzc2FnZXMuaW46CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9S
ZW1vdGVHcmFwaGljc0NvbnRleHRHTEZ1bmN0aW9uc0dlbmVyYXRlZC5oOgorICAgICAgICAoZ2V0
R3JhcGhpY3NSZXNldFN0YXR1c0FSQik6CisgICAgICAgIChnZXRUcmFuc2xhdGVkU2hhZGVyU291
cmNlQU5HTEUpOgorICAgICAgICAoYmxpdEZyYW1lYnVmZmVyQU5HTEUpOiBEZWxldGVkLgorICAg
ICAgICAocmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5HTEUpOiBEZWxldGVkLgorICAg
ICAgICAoaW5zZXJ0RXZlbnRNYXJrZXJFWFQpOiBEZWxldGVkLgorICAgICAgICAocHVzaEdyb3Vw
TWFya2VyRVhUKTogRGVsZXRlZC4KKyAgICAgICAgKHBvcEdyb3VwTWFya2VyRVhUKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eUZ1bmN0aW9uc0dlbmVyYXRlZC5jcHA6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJsaXRGcmFtZWJ1ZmZlckFOR0xFKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
cmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5HTEUpOiBEZWxldGVkLgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjppbnNlcnRFdmVudE1hcmtlckVY
VCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OnB1c2hHcm91cE1hcmtlckVYVCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnBvcEdyb3VwTWFya2VyRVhUKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cmVhZFBpeGVsc1Jv
YnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6dGV4UGFyYW1ldGVyZnZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnRleFBhcmFtZXRlcml2Um9i
dXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpnZXRRdWVyeWl2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRRdWVyeU9iamVjdHVpdlJvYnVz
dEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6Z2V0QnVmZmVyUG9pbnRlcnZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFZlcnRleEF0dHJpYklp
dlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6Z2V0VmVydGV4QXR0cmliSXVpdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VW5pZm9y
bXVpdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6Z2V0QnVmZmVyUGFyYW1ldGVyaTY0dlJvYnVzdEFOR0xFKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c2Ft
cGxlclBhcmFtZXRlcml2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpzYW1wbGVyUGFyYW1ldGVyZnZSb2J1c3RBTkdM
RSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OmdldFNhbXBsZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0U2FtcGxlclBhcmFtZXRl
cmZ2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpnZXRGcmFtZWJ1ZmZlclBhcmFtZXRlcml2Um9idXN0QU5HTEUpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpn
ZXRQcm9ncmFtSW50ZXJmYWNlaXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEJvb2xlYW5pX3ZSb2J1c3RBTkdM
RSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OmdldE11bHRpc2FtcGxlZnZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFRleExldmVsUGFyYW1ldGVyaXZS
b2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmdldFRleExldmVsUGFyYW1ldGVyZnZSb2J1c3RBTkdMRSk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFBvaW50
ZXJ2Um9idXN0QU5HTEVSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldG5Vbmlmb3JtZnZSb2J1c3RBTkdMRSk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Omdl
dG5Vbmlmb3JtaXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldG5Vbmlmb3JtdWl2Um9idXN0QU5HTEUpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhQ
YXJhbWV0ZXJJaXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnRleFBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRSk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Omdl
dFRleFBhcmFtZXRlcklpdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VGV4UGFyYW1ldGVySXVpdlJvYnVzdEFO
R0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6c2FtcGxlclBhcmFtZXRlcklpdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c2FtcGxlclBhcmFtZXRlckl1
aXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmdldFNhbXBsZXJQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRSk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFNh
bXBsZXJQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRRdWVyeU9iamVjdGl2Um9idXN0QU5H
TEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpnZXRRdWVyeU9iamVjdGk2NHZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFF1ZXJ5T2JqZWN0dWk2NHZS
b2J1c3RBTkdMRSk6IERlbGV0ZWQuCisKIDIwMjEtMDEtMjQgIFNpbW9uIEZyYXNlciAgPHNpbW9u
LmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgW2lPUyBXSzJdIHRoZXZlcmdlLmNvbSAtIHJ1
YmJlciBiYW5kIHNjcm9sbGluZyBhdCB0aGUgdG9wIG9mIHRoZSBwYWdlIGNhdXNlcyBhbiBhYnJ1
cHQganVtcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlLmNwcAppbmRleCA1NzhlMDIxODBjNDZmM2RiYzRmZmZkMGFmMGMz
NTNmMzk0ODIwZGJlLi4wZDIxNzRjZmMzNmRmM2RiNzQzOGYwZTk0MmFmNzJmNTFmMzZkYjU2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlLmNwcApAQCAtNzM1LDEwICs3MzUsNiBAQCBzdGQ6OnVuaXF1ZV9wdHI8V2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZT4gV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Y3JlYXRl
KENhbgogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKLSAgICBhdXRvJiBleHRlbnNp
b25zID0gY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpOwotICAgIGlmIChleHRlbnNpb25zLnN1cHBv
cnRzKCJHTF9FWFRfZGVidWdfbWFya2VyIl9zKSkKLSAgICAgICAgZXh0ZW5zaW9ucy5wdXNoR3Jv
dXBNYXJrZXJFWFQoIldlYkdMUmVuZGVyaW5nQ29udGV4dCJfcyk7Ci0KICAgICBzdGQ6OnVuaXF1
ZV9wdHI8V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZT4gcmVuZGVyaW5nQ29udGV4dDsKICNpZiBF
TkFCTEUoV0VCR0wyKQogICAgIGlmICh0eXBlID09IFdlYkdMVmVyc2lvbjo6V2ViR0wyKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRXh0ZW5zaW9uc0dMLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9FeHRlbnNpb25zR0wuaAppbmRleCBk
NTAyMWRkMzM0ZWRmOTFhMzQyMzBiZTAxNjg5MjA3NDI0OWViMGU4Li5hYzhjODg5MzIzNDU2NzJl
OWQwNTNmY2Q5N2EyMmRhOGU5OTA1ZThjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9FeHRlbnNpb25zR0wuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9FeHRlbnNpb25zR0wuaApAQCAtMjgxLDEyICsyODEsNiBAQCBwdWJsaWM6CiAg
ICAgLy8gZXh0ZXJuYWxseS4KICAgICB2aXJ0dWFsIEdDR0xpbnQgZ2V0R3JhcGhpY3NSZXNldFN0
YXR1c0FSQigpID0gMDsKIAotICAgIC8vIEdMX0FOR0xFX2ZyYW1lYnVmZmVyX2JsaXQKLSAgICB2
aXJ0dWFsIHZvaWQgYmxpdEZyYW1lYnVmZmVyQU5HTEUoR0NHTGludCBzcmNYMCwgR0NHTGludCBz
cmNZMCwgR0NHTGludCBzcmNYMSwgR0NHTGludCBzcmNZMSwgR0NHTGludCBkc3RYMCwgR0NHTGlu
dCBkc3RZMCwgR0NHTGludCBkc3RYMSwgR0NHTGludCBkc3RZMSwgR0NHTGJpdGZpZWxkIG1hc2ss
IEdDR0xlbnVtIGZpbHRlcikgPSAwOwotCi0gICAgLy8gR0xfQU5HTEVfZnJhbWVidWZmZXJfbXVs
dGlzYW1wbGUKLSAgICB2aXJ0dWFsIHZvaWQgcmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxl
QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWkgc2FtcGxlcywgR0NHTGVudW0gaW50ZXJu
YWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkgPSAwOwotCiAgICAg
Ly8gR0xfT0VTX3ZlcnRleF9hcnJheV9vYmplY3QKICAgICB2aXJ0dWFsIFBsYXRmb3JtR0xPYmpl
Y3QgY3JlYXRlVmVydGV4QXJyYXlPRVMoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZVZl
cnRleEFycmF5T0VTKFBsYXRmb3JtR0xPYmplY3QpID0gMDsKQEAgLTI5NiwxMSArMjkwLDYgQEAg
cHVibGljOgogICAgIC8vIEdMX0FOR0xFX3RyYW5zbGF0ZWRfc2hhZGVyX3NvdXJjZQogICAgIHZp
cnR1YWwgU3RyaW5nIGdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRShQbGF0Zm9ybUdMT2Jq
ZWN0KSA9IDA7CiAKLSAgICAvLyBHTF9FWFRfZGVidWdfbWFya2VyCi0gICAgdmlydHVhbCB2b2lk
IGluc2VydEV2ZW50TWFya2VyRVhUKGNvbnN0IFN0cmluZyYpID0gMDsKLSAgICB2aXJ0dWFsIHZv
aWQgcHVzaEdyb3VwTWFya2VyRVhUKGNvbnN0IFN0cmluZyYpID0gMDsKLSAgICB2aXJ0dWFsIHZv
aWQgcG9wR3JvdXBNYXJrZXJFWFQoKSA9IDA7Ci0KICAgICAvLyBHTF9BUkJfZHJhd19idWZmZXJz
IC8gR0xfRVhUX2RyYXdfYnVmZmVycwogICAgIHZpcnR1YWwgdm9pZCBkcmF3QnVmZmVyc0VYVChH
Q0dMU3Bhbjxjb25zdCBHQ0dMZW51bT4gYnVmcykgPSAwOwogCkBAIC0zMDksNDcgKzI5OCw2IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUoR0NH
TGVudW0gbW9kZSwgR0NHTHNpemVpIGNvdW50LCBHQ0dMZW51bSB0eXBlLCBHQ0dMdm9pZHB0ciBv
ZmZzZXQsIEdDR0xzaXplaSBwcmltY291bnQpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgdmVydGV4
QXR0cmliRGl2aXNvckFOR0xFKEdDR0x1aW50IGluZGV4LCBHQ0dMdWludCBkaXZpc29yKSA9IDA7
CiAKLSAgICAvLyBHTF9BTkdMRV9yb2J1c3RfY2xpZW50X21lbW9yeQotICAgIHZpcnR1YWwgdm9p
ZCByZWFkUGl4ZWxzUm9idXN0QU5HTEUoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3
aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBH
Q0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xzaXplaSogY29sdW1ucywg
R0NHTHNpemVpKiByb3dzLCBHQ0dMdm9pZCogcGl4ZWxzKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lk
IHRleFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFt
ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xmbG9hdCogcGFyYW1zKSA9IDA7Ci0gICAg
dmlydHVhbCB2b2lkIHRleFBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xpbnQqIHBhcmFtcykg
PSAwOwotCi0gICAgdmlydHVhbCB2b2lkIGdldFF1ZXJ5aXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0
YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5n
dGgsIEdDR0xpbnQqIHBhcmFtcykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRRdWVyeU9iamVj
dHVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IGlkLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1
ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMdWludCogcGFyYW1zKSA9IDA7Ci0gICAgdmly
dHVhbCB2b2lkIGdldEJ1ZmZlclBvaW50ZXJ2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dM
dm9pZCoqIHBhcmFtcykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJJaXZS
b2J1c3RBTkdMRShHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZT
aXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVh
bCB2b2lkIGdldFZlcnRleEF0dHJpYkl1aXZSb2J1c3RBTkdMRShHQ0dMdWludCBpbmRleCwgR0NH
TGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHVp
bnQqIHBhcmFtcykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRVbmlmb3JtdWl2Um9idXN0QU5H
TEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUs
IEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMdWludCogcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2
b2lkIGdldEJ1ZmZlclBhcmFtZXRlcmk2NHZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdD
R0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xp
bnQ2NCogcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHNhbXBsZXJQYXJhbWV0ZXJpdlJv
YnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVm
U2l6ZSwgY29uc3QgR0NHTGludCogcGFyYW0pID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgc2FtcGxl
clBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUs
IEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMZmxvYXQqIHBhcmFtKSA9IDA7Ci0gICAgdmly
dHVhbCB2b2lkIGdldFNhbXBsZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBs
ZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgs
IEdDR0xpbnQqIHBhcmFtcykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRTYW1wbGVyUGFyYW1l
dGVyZnZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNp
emVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMZmxvYXQqIHBhcmFtcykgPSAwOwot
Ci0gICAgdmlydHVhbCB2b2lkIGdldEZyYW1lYnVmZmVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShH
Q0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNp
emVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRQ
cm9ncmFtSW50ZXJmYWNlaXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMZW51bSBw
cm9ncmFtSW50ZXJmYWNlLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xz
aXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0
Qm9vbGVhbmlfdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTHVpbnQgaW5kZXgsIEdD
R0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGJvb2xlYW4qIGRhdGEpID0g
MDsgLy8gTk9MSU5UCi0gICAgdmlydHVhbCB2b2lkIGdldE11bHRpc2FtcGxlZnZSb2J1c3RBTkdM
RShHQ0dMZW51bSBwbmFtZSwgR0NHTHVpbnQgaW5kZXgsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dM
c2l6ZWkqIGxlbmd0aCwgR0NHTGZsb2F0KiB2YWwpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0
VGV4TGV2ZWxQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBs
ZXZlbCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0
aCwgR0NHTGludCogcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldFRleExldmVsUGFy
YW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xl
bnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xmbG9h
dCogcGFyYW1zKSA9IDA7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgZ2V0UG9pbnRlcnZSb2J1c3RBTkdM
RVJvYnVzdEFOR0xFKEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVp
KiBsZW5ndGgsIEdDR0x2b2lkKiogcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldG5V
bmlmb3JtZnZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBH
Q0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xmbG9hdCogcGFyYW1zKSA9
IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldG5Vbmlmb3JtaXZSb2J1c3RBTkdMRShHQ0dMdWludCBw
cm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBs
ZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRuVW5pZm9y
bXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xz
aXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHVpbnQqIHBhcmFtcykgPSAwOwot
ICAgIHZpcnR1YWwgdm9pZCB0ZXhQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJn
ZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGludCogcGFy
YW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHRleFBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRShH
Q0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3Qg
R0NHTHVpbnQqIHBhcmFtcykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRUZXhQYXJhbWV0ZXJJ
aXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkg
YnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykgPSAwOwotICAgIHZp
cnR1YWwgdm9pZCBnZXRUZXhQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBH
Q0dMdWludCogcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHNhbXBsZXJQYXJhbWV0ZXJJ
aXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVp
IGJ1ZlNpemUsIGNvbnN0IEdDR0xpbnQqIHBhcmFtKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHNh
bXBsZXJQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0g
cG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMdWludCogcGFyYW0pID0gMDsKLSAg
ICB2aXJ0dWFsIHZvaWQgZ2V0U2FtcGxlclBhcmFtZXRlcklpdlJvYnVzdEFOR0xFKEdDR0x1aW50
IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBs
ZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRTYW1wbGVy
UGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1l
LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0x1aW50KiBwYXJhbXMp
ID0gMDsKLQotICAgIHZpcnR1YWwgdm9pZCBnZXRRdWVyeU9iamVjdGl2Um9idXN0QU5HTEUoR0NH
THVpbnQgaWQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBs
ZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRRdWVyeU9i
amVjdGk2NHZSb2J1c3RBTkdMRShHQ0dMdWludCBpZCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXpl
aSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludDY0KiBwYXJhbXMpID0gMDsKLSAg
ICB2aXJ0dWFsIHZvaWQgZ2V0UXVlcnlPYmplY3R1aTY0dlJvYnVzdEFOR0xFKEdDR0x1aW50IGlk
LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBH
Q0dMdWludDY0KiBwYXJhbXMpID0gMDsKLQogICAgIC8vIE90aGVyIGZ1bmN0aW9ucy4KICNpZiAh
VVNFKEFOR0xFKQogICAgIC8vIEVYVCBSb2J1c3RuZXNzIC0gdXNlcyBnZXRHcmFwaGljc1Jlc2V0
U3RhdHVzQVJCCkBAIC0zNTcsMTYgKzMwNSw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQg
Z2V0blVuaWZvcm1mdkVYVChHQ0dMdWludCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dM
c2l6ZWkgYnVmU2l6ZSwgR0NHTGZsb2F0KiBwYXJhbXMpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
Z2V0blVuaWZvcm1pdkVYVChHQ0dMdWludCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dM
c2l6ZWkgYnVmU2l6ZSwgR0NHTGludCogcGFyYW1zKSA9IDA7CiAKLSAgICB2aXJ0dWFsIGJvb2wg
aXNOVklESUEoKSA9IDA7Ci0gICAgdmlydHVhbCBib29sIGlzQU1EKCkgPSAwOwotICAgIHZpcnR1
YWwgYm9vbCBpc0ludGVsKCkgPSAwOwotICAgIHZpcnR1YWwgYm9vbCBpc0ltYWdpbmF0aW9uKCkg
PSAwOwotICAgIHZpcnR1YWwgU3RyaW5nIHZlbmRvcigpID0gMDsKLQotICAgIC8vIFNvbWUgY29u
ZmlndXJhdGlvbnMgaGF2ZSBidWdzIHJlZ2FyZGluZyBidWlsdC1pbiBmdW5jdGlvbnMgaW4gdGhl
aXIgT3BlbkdMIGRyaXZlcnMKLSAgICAvLyB0aGF0IG11c3QgYmUgYXZvaWRlZC4gUG9ydHMgc2hv
dWxkIGltcGxlbWVudCB0aGVzZSBmbGFncyBvbiBzdWNoIGNvbmZpZ3VyYXRpb25zLgotICAgIHZp
cnR1YWwgYm9vbCByZXF1aXJlc0J1aWx0SW5GdW5jdGlvbkVtdWxhdGlvbigpID0gMDsKLSAgICB2
aXJ0dWFsIGJvb2wgcmVxdWlyZXNSZXN0cmljdGVkTWF4aW11bVRleHR1cmVTaXplKCkgPSAwOwog
I2VuZGlmCiAKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5jcHAKaW5k
ZXggNTUyZDg1MzliNjk1MDBjZjExNjk2ODBkNGI1YzYyODU4NThiNzczNy4uYjE1YmJmMDM1MjY1
ODFjYTdkMTg3NTczYjlmMmU4ZDY0ZThiY2IzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHlCYXNlLmNwcApAQCAtMTYxLDQxICsxNjEsNiBAQCB2b2lkIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHlCYXNlOjpnZXRuVW5pZm9ybWZ2RVhUKEdDR0x1aW50LCBHQ0dMaW50LCBH
Q0dMcwogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6Z2V0blVuaWZvcm1p
dkVYVChHQ0dMdWludCwgR0NHTGludCwgR0NHTHNpemVpLCBHQ0dMaW50KikKIHsKIH0KLQotYm9v
bCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6aXNOVklESUEoKQotewotICAgIHJl
dHVybiBmYWxzZTsKLX0KLQotYm9vbCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6
aXNBTUQoKQotewotICAgIHJldHVybiBmYWxzZTsKLX0KLQotYm9vbCBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5QmFzZTo6aXNJbnRlbCgpCi17Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi1i
b29sIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjppc0ltYWdpbmF0aW9uKCkKLXsK
LSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLVN0cmluZyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5QmFzZTo6dmVuZG9yKCkKLXsKLSAgICByZXR1cm4geyB9OwotfQotCi1ib29sIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjpyZXF1aXJlc0J1aWx0SW5GdW5jdGlvbkVtdWxhdGlv
bigpCi17Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi1ib29sIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHlCYXNlOjpyZXF1aXJlc1Jlc3RyaWN0ZWRNYXhpbXVtVGV4dHVyZVNpemUoKQotewot
ICAgIHJldHVybiBmYWxzZTsKLX0KICNlbmRpZgogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
QmFzZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eUJhc2UuaAppbmRleCAyNDcxZDRlMjVjOWFhMjAwZWM3NDNiMWZlMGM2NDY4
YjBjOWE1MDgzLi41YTNmNTc4ZTg4Mzg5MDM1NTc1ZGVmYmQzZjRhYzkxYTE1Yzc1MTI3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5QmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmgKQEAgLTgwLDE3ICs4MCw5IEBAIHB1
YmxpYzoKICAgICBib29sIGlzRW5hYmxlZChjb25zdCBTdHJpbmcmKSBmaW5hbDsKIAogI2lmICFV
U0UoQU5HTEUpCi0gICAgLy8gRklYTUU6IFRoZXNlIGFyZSBzdXBwb3NlZCB0byBiZSByZW1vdmVk
IGluIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTg4OTYuCiAgICAg
dm9pZCByZWFkblBpeGVsc0VYVChHQ0dMaW50LCBHQ0dMaW50LCBHQ0dMc2l6ZWksIEdDR0xzaXpl
aSwgR0NHTGVudW0sIEdDR0xlbnVtLCBHQ0dMc2l6ZWksIEdDR0x2b2lkKikgZmluYWw7CiAgICAg
dm9pZCBnZXRuVW5pZm9ybWZ2RVhUKEdDR0x1aW50LCBHQ0dMaW50LCBHQ0dMc2l6ZWksIEdDR0xm
bG9hdCopIGZpbmFsOwogICAgIHZvaWQgZ2V0blVuaWZvcm1pdkVYVChHQ0dMdWludCwgR0NHTGlu
dCwgR0NHTHNpemVpLCBHQ0dMaW50KikgZmluYWw7Ci0gICAgYm9vbCBpc05WSURJQSgpIGZpbmFs
OwotICAgIGJvb2wgaXNBTUQoKSBmaW5hbDsKLSAgICBib29sIGlzSW50ZWwoKSBmaW5hbDsKLSAg
ICBib29sIGlzSW1hZ2luYXRpb24oKSBmaW5hbDsKLSAgICBTdHJpbmcgdmVuZG9yKCkgZmluYWw7
Ci0gICAgYm9vbCByZXF1aXJlc0J1aWx0SW5GdW5jdGlvbkVtdWxhdGlvbigpIGZpbmFsOwotICAg
IGJvb2wgcmVxdWlyZXNSZXN0cmljdGVkTWF4aW11bVRleHR1cmVTaXplKCkgZmluYWw7CiAjZW5k
aWYKIAogcHJvdGVjdGVkOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUuY3BwCmluZGV4IDkyMGQ5MmYzNWNh
ZGQ4YmIwODUyM2QxNzY1NzU0MTIwOTdmNmM5NmYuLmY1NDBhYjNjYTg1MGIxZjI3Y2M2MmVlOTY0
Y2YwNGUxZDgxNWU4YWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRlbnNpb25zR0xBTkdMRS5jcHAKQEAgLTMzLDEwICszMyw5
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotRXh0ZW5zaW9uc0dMQU5HTEU6OkV4dGVuc2lv
bnNHTEFOR0xFKEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiBjb250ZXh0LCBib29sIHVzZUluZGV4
ZWRHZXRTdHJpbmcpCitFeHRlbnNpb25zR0xBTkdMRTo6RXh0ZW5zaW9uc0dMQU5HTEUoR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0wqIGNvbnRleHQpCiAgICAgOiBtX2luaXRpYWxpemVkQXZhaWxhYmxl
RXh0ZW5zaW9ucyhmYWxzZSkKICAgICAsIG1fY29udGV4dChjb250ZXh0KQotICAgICwgbV91c2VJ
bmRleGVkR2V0U3RyaW5nKHVzZUluZGV4ZWRHZXRTdHJpbmcpCiB7CiB9CiAKQEAgLTk5LDQyICs5
OCwxNSBAQCBTdHJpbmcgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldFRyYW5zbGF0ZWRTaGFkZXJTb3Vy
Y2VBTkdMRShQbGF0Zm9ybUdMT2JqZWN0IHNoYWRlcgogCiB2b2lkIEV4dGVuc2lvbnNHTEFOR0xF
Ojppbml0aWFsaXplQXZhaWxhYmxlRXh0ZW5zaW9ucygpCiB7Ci0gICAgaWYgKG1fdXNlSW5kZXhl
ZEdldFN0cmluZykgewotICAgICAgICBHTGludCBudW1FeHRlbnNpb25zID0gMDsKLSAgICAgICAg
Z2w6OkdldEludGVnZXJ2KEdMX05VTV9FWFRFTlNJT05TLCAmbnVtRXh0ZW5zaW9ucyk7Ci0gICAg
ICAgIGZvciAoR0xpbnQgaSA9IDA7IGkgPCBudW1FeHRlbnNpb25zOyArK2kpCi0gICAgICAgICAg
ICBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuYWRkKGdsOjpHZXRTdHJpbmdpKEdMX0VYVEVOU0lPTlMs
IGkpKTsKLSAgICAgICAgZ2w6OkdldEludGVnZXJ2KEdMX05VTV9SRVFVRVNUQUJMRV9FWFRFTlNJ
T05TX0FOR0xFLCAmbnVtRXh0ZW5zaW9ucyk7Ci0gICAgICAgIGZvciAoR0xpbnQgaSA9IDA7IGkg
PCBudW1FeHRlbnNpb25zOyArK2kpCi0gICAgICAgICAgICBtX3JlcXVlc3RhYmxlRXh0ZW5zaW9u
cy5hZGQoZ2w6OkdldFN0cmluZ2koR0xfUkVRVUVTVEFCTEVfRVhURU5TSU9OU19BTkdMRSwgaSkp
OwotICAgIH0gZWxzZSB7Ci0gICAgICAgIFN0cmluZyBleHRlbnNpb25zU3RyaW5nID0gZ2V0RXh0
ZW5zaW9ucygpOwotICAgICAgICBmb3IgKGF1dG8mIGV4dGVuc2lvbiA6IGV4dGVuc2lvbnNTdHJp
bmcuc3BsaXQoJyAnKSkKLSAgICAgICAgICAgIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5hZGQoZXh0
ZW5zaW9uKTsKLSAgICAgICAgZXh0ZW5zaW9uc1N0cmluZyA9IFN0cmluZyhyZWludGVycHJldF9j
YXN0PGNvbnN0IGNoYXIqPihnbDo6R2V0U3RyaW5nKEdMX1JFUVVFU1RBQkxFX0VYVEVOU0lPTlNf
QU5HTEUpKSk7Ci0gICAgICAgIGZvciAoYXV0byYgZXh0ZW5zaW9uIDogZXh0ZW5zaW9uc1N0cmlu
Zy5zcGxpdCgnICcpKQotICAgICAgICAgICAgbV9yZXF1ZXN0YWJsZUV4dGVuc2lvbnMuYWRkKGV4
dGVuc2lvbik7Ci0gICAgfQorICAgIFN0cmluZyBleHRlbnNpb25zU3RyaW5nID0gZ2V0RXh0ZW5z
aW9ucygpOworICAgIGZvciAoYXV0byYgZXh0ZW5zaW9uIDogZXh0ZW5zaW9uc1N0cmluZy5zcGxp
dCgnICcpKQorICAgICAgICBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuYWRkKGV4dGVuc2lvbik7Cisg
ICAgZXh0ZW5zaW9uc1N0cmluZyA9IFN0cmluZyhyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIq
PihnbDo6R2V0U3RyaW5nKEdMX1JFUVVFU1RBQkxFX0VYVEVOU0lPTlNfQU5HTEUpKSk7CisgICAg
Zm9yIChhdXRvJiBleHRlbnNpb24gOiBleHRlbnNpb25zU3RyaW5nLnNwbGl0KCcgJykpCisgICAg
ICAgIG1fcmVxdWVzdGFibGVFeHRlbnNpb25zLmFkZChleHRlbnNpb24pOwogICAgIG1faW5pdGlh
bGl6ZWRBdmFpbGFibGVFeHRlbnNpb25zID0gdHJ1ZTsKIH0KIAotdm9pZCBFeHRlbnNpb25zR0xB
TkdMRTo6YmxpdEZyYW1lYnVmZmVyQU5HTEUoR0NHTGludCBzcmNYMCwgR0NHTGludCBzcmNZMCwg
R0NHTGludCBzcmNYMSwgR0NHTGludCBzcmNZMSwgR0NHTGludCBkc3RYMCwgR0NHTGludCBkc3RZ
MCwgR0NHTGludCBkc3RYMSwgR0NHTGludCBkc3RZMSwgR0NHTGJpdGZpZWxkIG1hc2ssIEdDR0xl
bnVtIGZpbHRlcikKLXsKLSAgICAvLyBGSVhNRTogY29uc2lkZXIgYWRkaW5nIHN1cHBvcnQgZm9y
IEFQUExFX2ZyYW1lYnVmZmVyX211bHRpc2FtcGxlLgotICAgIGlmICghbV9jb250ZXh0LT5tYWtl
Q29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OkJsaXRGcmFtZWJ1
ZmZlckFOR0xFKHNyY1gwLCBzcmNZMCwgc3JjWDEsIHNyY1kxLCBkc3RYMCwgZHN0WTAsIGRzdFgx
LCBkc3RZMSwgbWFzaywgZmlsdGVyKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6cmVu
ZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMc2l6
ZWkgc2FtcGxlcywgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NH
THNpemVpIGhlaWdodCkKLXsKLSAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50
KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpSZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlz
YW1wbGVBTkdMRSh0YXJnZXQsIHNhbXBsZXMsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0
KTsKLX0KLQogUGxhdGZvcm1HTE9iamVjdCBFeHRlbnNpb25zR0xBTkdMRTo6Y3JlYXRlVmVydGV4
QXJyYXlPRVMoKQogewogICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkK
QEAgLTE3NSwyNCArMTQ3LDYgQEAgdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6YmluZFZlcnRleEFy
cmF5T0VTKFBsYXRmb3JtR0xPYmplY3QgYXJyYXkpCiAgICAgZ2w6OkJpbmRWZXJ0ZXhBcnJheU9F
UyhhcnJheSk7CiB9CiAKLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6Omluc2VydEV2ZW50TWFya2Vy
RVhUKGNvbnN0IFN0cmluZyYpCi17Ci0gICAgLy8gRklYTUU6IGltcGxlbWVudCB0aGlzIGZ1bmN0
aW9uIGFuZCBhZGQgR0xfRVhUX2RlYnVnX21hcmtlciBpbiBzdXBwb3J0cygpLgotICAgIHJldHVy
bjsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6cHVzaEdyb3VwTWFya2VyRVhUKGNvbnN0
IFN0cmluZyYpCi17Ci0gICAgLy8gRklYTUU6IGltcGxlbWVudCB0aGlzIGZ1bmN0aW9uIGFuZCBh
ZGQgR0xfRVhUX2RlYnVnX21hcmtlciBpbiBzdXBwb3J0cygpLgotICAgIHJldHVybjsKLX0KLQot
dm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6cG9wR3JvdXBNYXJrZXJFWFQodm9pZCkKLXsKLSAgICAv
LyBGSVhNRTogaW1wbGVtZW50IHRoaXMgZnVuY3Rpb24gYW5kIGFkZCBHTF9FWFRfZGVidWdfbWFy
a2VyIGluIHN1cHBvcnRzKCkuCi0gICAgcmV0dXJuOwotfQotCiBib29sIEV4dGVuc2lvbnNHTEFO
R0xFOjpzdXBwb3J0c0V4dGVuc2lvbihjb25zdCBTdHJpbmcmIG5hbWUpCiB7CiAgICAgcmV0dXJu
IG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucyhuYW1lKSB8fCBtX3JlcXVlc3RhYmxlRXh0
ZW5zaW9ucy5jb250YWlucyhuYW1lKTsKQEAgLTI0OCwyOTEgKzIwMiw2IEBAIEdDR0xlbnVtIEV4
dGVuc2lvbnNHTEFOR0xFOjphZGp1c3RXZWJHTDFUZXh0dXJlSW50ZXJuYWxGb3JtYXQoR0NHTGVu
dW0gaW50ZXJuYWxmCiAgICAgcmV0dXJuIGludGVybmFsZm9ybWF0OwogfQogCi0vLyBHTF9BTkdM
RV9yb2J1c3RfY2xpZW50X21lbW9yeQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6cmVhZFBpeGVs
c1JvYnVzdEFOR0xFKGludCB4LCBpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVp
Z2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXplLCBH
Q0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHNpemVpICpjb2x1bW5zLCBHQ0dMc2l6ZWkgKnJvd3MsIHZv
aWQgKnBpeGVscykKLXsKLSAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkp
Ci0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpSZWFkUGl4ZWxzUm9idXN0QU5HTEUoeCwgeSwg
d2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBidWZTaXplLCBsZW5ndGgsIGNvbHVtbnMsIHJv
d3MsIHBpeGVscyk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OnRleFBhcmFtZXRlcmZ2
Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1
ZlNpemUsIGNvbnN0IEdDR0xmbG9hdCAqcGFyYW1zKQotewotICAgIGlmICghbV9jb250ZXh0LT5t
YWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OlRleFBhcmFt
ZXRlcmZ2Um9idXN0QU5HTEUodGFyZ2V0LCBwbmFtZSwgYnVmU2l6ZSwgcGFyYW1zKTsKLX0KLQot
dm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6dGV4UGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51
bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGlu
dCAqcGFyYW1zKQotewotICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OlRleFBhcmFtZXRlcml2Um9idXN0QU5HTEUodGFy
Z2V0LCBwbmFtZSwgYnVmU2l6ZSwgcGFyYW1zKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdM
RTo6Z2V0UXVlcnlpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUs
IEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKQot
ewotICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0
dXJuOwotCi0gICAgZ2w6OkdldFF1ZXJ5aXZSb2J1c3RBTkdMRSh0YXJnZXQsIHBuYW1lLCBidWZT
aXplLCBsZW5ndGgsIHBhcmFtcyk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldFF1
ZXJ5T2JqZWN0dWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgaWQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dM
c2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0x1aW50ICpwYXJhbXMpCi17Ci0g
ICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47
Ci0KLSAgICBnbDo6R2V0UXVlcnlPYmplY3R1aXZSb2J1c3RBTkdMRShpZCwgcG5hbWUsIGJ1ZlNp
emUsIGxlbmd0aCwgcGFyYW1zKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0QnVm
ZmVyUG9pbnRlcnZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBH
Q0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIHZvaWQgKipwYXJhbXMpCi17Ci0g
ICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47
Ci0KLSAgICBnbDo6R2V0QnVmZmVyUG9pbnRlcnZSb2J1c3RBTkdMRSh0YXJnZXQsIHBuYW1lLCBi
dWZTaXplLCBsZW5ndGgsIHBhcmFtcyk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6Omdl
dFZlcnRleEF0dHJpYklpdlJvYnVzdEFOR0xFKEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFt
ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMp
Ci17Ci0gICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICBy
ZXR1cm47Ci0KLSAgICBnbDo6R2V0VmVydGV4QXR0cmliSWl2Um9idXN0QU5HTEUoaW5kZXgsIHBu
YW1lLCBidWZTaXplLCBsZW5ndGgsIHBhcmFtcyk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5H
TEU6OmdldFZlcnRleEF0dHJpYkl1aXZSb2J1c3RBTkdMRShHQ0dMdWludCBpbmRleCwgR0NHTGVu
dW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHVpbnQg
KnBhcmFtcykKLXsKLSAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0g
ICAgICAgIHJldHVybjsKLQotICAgIGdsOjpHZXRWZXJ0ZXhBdHRyaWJJdWl2Um9idXN0QU5HTEUo
aW5kZXgsIHBuYW1lLCBidWZTaXplLCBsZW5ndGgsIHBhcmFtcyk7Ci19Ci0KLXZvaWQgRXh0ZW5z
aW9uc0dMQU5HTEU6OmdldFVuaWZvcm11aXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBH
Q0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdD
R0x1aW50ICpwYXJhbXMpCi17Ci0gICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVu
dCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6R2V0VW5pZm9ybXVpdlJvYnVzdEFOR0xF
KHByb2dyYW0sIGxvY2F0aW9uLCBidWZTaXplLCBsZW5ndGgsIHBhcmFtcyk7Ci19Ci0KLXZvaWQg
RXh0ZW5zaW9uc0dMQU5HTEU6OmdldEJ1ZmZlclBhcmFtZXRlcmk2NHZSb2J1c3RBTkdMRShHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVp
ICpsZW5ndGgsIEdDR0xpbnQ2NCAqcGFyYW1zKQotewotICAgIGlmICghbV9jb250ZXh0LT5tYWtl
Q29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OkdldEJ1ZmZlclBh
cmFtZXRlcmk2NHZSb2J1c3RBTkdMRSh0YXJnZXQsIHBuYW1lLCBidWZTaXplLCBsZW5ndGgsIHJl
aW50ZXJwcmV0X2Nhc3Q8R0xpbnQ2NCo+KHBhcmFtcykpOwotfQotCi12b2lkIEV4dGVuc2lvbnNH
TEFOR0xFOjpzYW1wbGVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBH
Q0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xpbnQgKnBhcmFtKQot
ewotICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0
dXJuOwotCi0gICAgZ2w6OlNhbXBsZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKHNhbXBsZXIsIHBu
YW1lLCBidWZTaXplLCBwYXJhbSk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OnNhbXBs
ZXJQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1l
LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGZsb2F0ICpwYXJhbSkKLXsKLSAgICBpZiAo
IW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAg
IGdsOjpTYW1wbGVyUGFyYW1ldGVyZnZSb2J1c3RBTkdMRShzYW1wbGVyLCBwbmFtZSwgYnVmU2l6
ZSwgcGFyYW0pOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRTYW1wbGVyUGFyYW1l
dGVyaXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNp
emVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpCi17Ci0gICAg
aWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0K
LSAgICBnbDo6R2V0U2FtcGxlclBhcmFtZXRlcml2Um9idXN0QU5HTEUoc2FtcGxlciwgcG5hbWUs
IGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1zKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6
Z2V0U2FtcGxlclBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVu
dW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGZsb2F0
ICpwYXJhbXMpCi17Ci0gICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQot
ICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6R2V0U2FtcGxlclBhcmFtZXRlcmZ2Um9idXN0QU5H
TEUoc2FtcGxlciwgcG5hbWUsIGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1zKTsKLX0KLQotCi12b2lk
IEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRGcmFtZWJ1ZmZlclBhcmFtZXRlcml2Um9idXN0QU5HTEUo
R0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xz
aXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpCi17Ci0gICAgaWYgKCFtX2NvbnRleHQtPm1h
a2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6R2V0RnJhbWVi
dWZmZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKHRhcmdldCwgcG5hbWUsIGJ1ZlNpemUsIGxlbmd0
aCwgcGFyYW1zKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0UHJvZ3JhbUludGVy
ZmFjZWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGVudW0gcHJvZ3JhbUludGVy
ZmFjZSwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0
aCwgR0NHTGludCAqcGFyYW1zKQotewotICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1
cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OkdldFByb2dyYW1JbnRlcmZhY2Vp
dlJvYnVzdEFOR0xFKHByb2dyYW0sIHByb2dyYW1JbnRlcmZhY2UsIHBuYW1lLCBidWZTaXplLCBs
ZW5ndGgsIHBhcmFtcyk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldEJvb2xlYW5p
X3ZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0x1aW50IGluZGV4LCBHQ0dMc2l6ZWkg
YnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xib29sZWFuICpkYXRhKQotewotICAgIGlm
ICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0g
ICAgZ2w6OkdldEJvb2xlYW5pX3ZSb2J1c3RBTkdMRSh0YXJnZXQsIGluZGV4LCBidWZTaXplLCBs
ZW5ndGgsIGRhdGEpOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRNdWx0aXNhbXBs
ZWZ2Um9idXN0QU5HTEUoR0NHTGVudW0gcG5hbWUsIEdDR0x1aW50IGluZGV4LCBHQ0dMc2l6ZWkg
YnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xmbG9hdCAqdmFsKQotewotICAgIGlmICgh
bV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAg
Z2w6OkdldE11bHRpc2FtcGxlZnZSb2J1c3RBTkdMRShwbmFtZSwgaW5kZXgsIGJ1ZlNpemUsIGxl
bmd0aCwgdmFsKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0VGV4TGV2ZWxQYXJh
bWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVu
dW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAq
cGFyYW1zKQotewotICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAg
ICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OkdldFRleExldmVsUGFyYW1ldGVyaXZSb2J1c3RBTkdM
RSh0YXJnZXQsIGxldmVsLCBwbmFtZSwgYnVmU2l6ZSwgbGVuZ3RoLCBwYXJhbXMpOwotfQotCi12
b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRUZXhMZXZlbFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUo
R0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVp
IGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMZmxvYXQgKnBhcmFtcykKLXsKLSAgICBp
ZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQot
ICAgIGdsOjpHZXRUZXhMZXZlbFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUodGFyZ2V0LCBsZXZlbCwg
cG5hbWUsIGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1zKTsKLX0KLQotCi12b2lkIEV4dGVuc2lvbnNH
TEFOR0xFOjpnZXRQb2ludGVydlJvYnVzdEFOR0xFUm9idXN0QU5HTEUoR0NHTGVudW0gcG5hbWUs
IEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgdm9pZCAqKnBhcmFtcykKLXsK
LSAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVy
bjsKLQotICAgIGdsOjpHZXRQb2ludGVydlJvYnVzdEFOR0xFUm9idXN0QU5HTEUocG5hbWUsIGJ1
ZlNpemUsIGxlbmd0aCwgcGFyYW1zKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0
blVuaWZvcm1mdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24s
IEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGZsb2F0ICpwYXJhbXMp
Ci17Ci0gICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICBy
ZXR1cm47Ci0KLSAgICBnbDo6R2V0blVuaWZvcm1mdlJvYnVzdEFOR0xFKHByb2dyYW0sIGxvY2F0
aW9uLCBidWZTaXplLCBsZW5ndGgsIHBhcmFtcyk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5H
TEU6OmdldG5Vbmlmb3JtaXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMaW50IGxv
Y2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBh
cmFtcykKLXsKLSAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAg
ICAgIHJldHVybjsKLQotICAgIGdsOjpHZXRuVW5pZm9ybWl2Um9idXN0QU5HTEUocHJvZ3JhbSwg
bG9jYXRpb24sIGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1zKTsKLX0KLQotdm9pZCBFeHRlbnNpb25z
R0xBTkdMRTo6Z2V0blVuaWZvcm11aXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dM
aW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0x1
aW50ICpwYXJhbXMpCi17Ci0gICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgp
KQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6R2V0blVuaWZvcm11aXZSb2J1c3RBTkdMRShw
cm9ncmFtLCBsb2NhdGlvbiwgYnVmU2l6ZSwgbGVuZ3RoLCBwYXJhbXMpOwotfQotCi12b2lkIEV4
dGVuc2lvbnNHTEFOR0xFOjp0ZXhQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJn
ZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGludCAqcGFy
YW1zKQotewotICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAg
ICAgcmV0dXJuOwotCi0gICAgZ2w6OlRleFBhcmFtZXRlcklpdlJvYnVzdEFOR0xFKHRhcmdldCwg
cG5hbWUsIGJ1ZlNpemUsIHBhcmFtcyk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OnRl
eFBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1l
LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTHVpbnQgKnBhcmFtcykKLXsKLSAgICBpZiAo
IW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAg
IGdsOjpUZXhQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUodGFyZ2V0LCBwbmFtZSwgYnVmU2l6ZSwg
cGFyYW1zKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0VGV4UGFyYW1ldGVySWl2
Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1
ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpCi17Ci0gICAgaWYgKCFt
X2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBn
bDo6R2V0VGV4UGFyYW1ldGVySWl2Um9idXN0QU5HTEUodGFyZ2V0LCBwbmFtZSwgYnVmU2l6ZSwg
bGVuZ3RoLCBwYXJhbXMpOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRUZXhQYXJh
bWV0ZXJJdWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NH
THNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMdWludCAqcGFyYW1zKQotewot
ICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJu
OwotCi0gICAgZ2w6OkdldFRleFBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRSh0YXJnZXQsIHBuYW1l
LCBidWZTaXplLCBsZW5ndGgsIHBhcmFtcyk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6
OnNhbXBsZXJQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51
bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xpbnQgKnBhcmFtKQotewotICAg
IGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwot
Ci0gICAgZ2w6OlNhbXBsZXJQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRShzYW1wbGVyLCBwbmFtZSwg
YnVmU2l6ZSwgcGFyYW0pOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpzYW1wbGVyUGFy
YW1ldGVySXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBH
Q0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTHVpbnQgKnBhcmFtKQotewotICAgIGlmICghbV9j
b250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6
OlNhbXBsZXJQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUoc2FtcGxlciwgcG5hbWUsIGJ1ZlNpemUs
IHBhcmFtKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0U2FtcGxlclBhcmFtZXRl
cklpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6
ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykKLXsKLSAgICBp
ZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQot
ICAgIGdsOjpHZXRTYW1wbGVyUGFyYW1ldGVySWl2Um9idXN0QU5HTEUoc2FtcGxlciwgcG5hbWUs
IGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1zKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6
Z2V0U2FtcGxlclBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dM
ZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMdWlu
dCAqcGFyYW1zKQotewotICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OkdldFNhbXBsZXJQYXJhbWV0ZXJJdWl2Um9idXN0
QU5HTEUoc2FtcGxlciwgcG5hbWUsIGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1zKTsKLX0KLQotCi12
b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRRdWVyeU9iamVjdGl2Um9idXN0QU5HTEUoR0NHTHVp
bnQgaWQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5n
dGgsIEdDR0xpbnQgKnBhcmFtcykKLXsKLSAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRD
dXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpHZXRRdWVyeU9iamVjdGl2Um9i
dXN0QU5HTEUoaWQsIHBuYW1lLCBidWZTaXplLCBsZW5ndGgsIHBhcmFtcyk7Ci19Ci0KLXZvaWQg
RXh0ZW5zaW9uc0dMQU5HTEU6OmdldFF1ZXJ5T2JqZWN0aTY0dlJvYnVzdEFOR0xFKEdDR0x1aW50
IGlkLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3Ro
LCBHQ0dMaW50NjQgKnBhcmFtcykKLXsKLSAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRD
dXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpHZXRRdWVyeU9iamVjdGk2NHZS
b2J1c3RBTkdMRShpZCwgcG5hbWUsIGJ1ZlNpemUsIGxlbmd0aCwgcmVpbnRlcnByZXRfY2FzdDxH
TGludDY0Kj4ocGFyYW1zKSk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldFF1ZXJ5
T2JqZWN0dWk2NHZSb2J1c3RBTkdMRShHQ0dMdWludCBpZCwgR0NHTGVudW0gcG5hbWUsIEdDR0xz
aXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHVpbnQ2NCAqcGFyYW1zKQotewot
ICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJu
OwotCi0gICAgZ2w6OkdldFF1ZXJ5T2JqZWN0dWk2NHZSb2J1c3RBTkdMRShpZCwgcG5hbWUsIGJ1
ZlNpemUsIGxlbmd0aCwgcmVpbnRlcnByZXRfY2FzdDxHTHVpbnQ2NCo+KHBhcmFtcykpOwotfQot
Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShXRUJHTCkgJiYg
VVNFKEFOR0xFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmgKaW5kZXggYjJkMjc3YjlhYzlkMjc4NjBmNTVh
YmFiZjhjZmU1NWU4NGI1ZjU3ZS4uMDA0MjMzNzcyMDM0YmZhM2VhYzEzN2RjMzYzNDgwOTE2ZGVh
YWY3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUv
RXh0ZW5zaW9uc0dMQU5HTEUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hbmdsZS9FeHRlbnNpb25zR0xBTkdMRS5oCkBAIC0zNiw3ICszNiw3IEBAIGNsYXNzIEV4dGVu
c2lvbnNHTEFOR0xFIDogcHVibGljIEV4dGVuc2lvbnNHTCB7CiAgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgLy8gVGhpcyBjbGFzcyBvbmx5IG5lZWRzIHRvIGJlIGlu
c3RhbnRpYXRlZCBieSBHcmFwaGljc0NvbnRleHRHTE9wZW5HTCBpbXBsZW1lbnRhdGlvbnMuCi0g
ICAgRXh0ZW5zaW9uc0dMQU5HTEUoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqLCBib29sIHVzZUlu
ZGV4ZWRHZXRTdHJpbmcgPSBmYWxzZSk7CisgICAgZXhwbGljaXQgRXh0ZW5zaW9uc0dMQU5HTEUo
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqKTsKICAgICB2aXJ0dWFsIH5FeHRlbnNpb25zR0xBTkdM
RSgpOwogCiAgICAgLy8gRXh0ZW5zaW9uc0dMIG1ldGhvZHMuCkBAIC00OSw2MCArNDksMTQgQEAg
cHVibGljOgogICAgIHZvaWQgZGVsZXRlVmVydGV4QXJyYXlPRVMoUGxhdGZvcm1HTE9iamVjdCkg
b3ZlcnJpZGU7CiAgICAgR0NHTGJvb2xlYW4gaXNWZXJ0ZXhBcnJheU9FUyhQbGF0Zm9ybUdMT2Jq
ZWN0KSBvdmVycmlkZTsKICAgICB2b2lkIGJpbmRWZXJ0ZXhBcnJheU9FUyhQbGF0Zm9ybUdMT2Jq
ZWN0KSBvdmVycmlkZTsKLSAgICB2b2lkIGluc2VydEV2ZW50TWFya2VyRVhUKGNvbnN0IFN0cmlu
ZyYpIG92ZXJyaWRlOwotICAgIHZvaWQgcHVzaEdyb3VwTWFya2VyRVhUKGNvbnN0IFN0cmluZyYp
IG92ZXJyaWRlOwotICAgIHZvaWQgcG9wR3JvdXBNYXJrZXJFWFQodm9pZCkgb3ZlcnJpZGU7CiAg
ICAgdm9pZCBkcmF3QnVmZmVyc0VYVChHQ0dMU3Bhbjxjb25zdCBHQ0dMZW51bT4pIG92ZXJyaWRl
OwogCiAgICAgU3RyaW5nIGdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRShQbGF0Zm9ybUdM
T2JqZWN0KSBvdmVycmlkZTsKIAotICAgIHZvaWQgYmxpdEZyYW1lYnVmZmVyQU5HTEUoR0NHTGlu
dCBzcmNYMCwgR0NHTGludCBzcmNZMCwgR0NHTGludCBzcmNYMSwgR0NHTGludCBzcmNZMSwgR0NH
TGludCBkc3RYMCwgR0NHTGludCBkc3RZMCwgR0NHTGludCBkc3RYMSwgR0NHTGludCBkc3RZMSwg
R0NHTGJpdGZpZWxkIG1hc2ssIEdDR0xlbnVtIGZpbHRlcikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBy
ZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xz
aXplaSBzYW1wbGVzLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBH
Q0dMc2l6ZWkgaGVpZ2h0KSBvdmVycmlkZTsKLQogICAgIHZvaWQgZHJhd0FycmF5c0luc3RhbmNl
ZEFOR0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xpbnQgZmlyc3QsIEdDR0xzaXplaSBjb3VudCwgR0NH
THNpemVpIHByaW1jb3VudCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkcmF3RWxlbWVudHNJbnN0YW5j
ZWRBTkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xlbnVtIHR5cGUsIEdD
R0x2b2lkcHRyIG9mZnNldCwgR0NHTHNpemVpIHByaW1jb3VudCkgb3ZlcnJpZGU7CiAgICAgdm9p
ZCB2ZXJ0ZXhBdHRyaWJEaXZpc29yQU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0x1aW50IGRpdmlz
b3IpIG92ZXJyaWRlOwogCi0gICAgLy8gR0xfQU5HTEVfcm9idXN0X2NsaWVudF9tZW1vcnkKLSAg
ICB2b2lkIHJlYWRQaXhlbHNSb2J1c3RBTkdMRShHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNp
emVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5
cGUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHNpemVpICpjb2x1
bW5zLCBHQ0dMc2l6ZWkgKnJvd3MsIHZvaWQgKnBpeGVscykgb3ZlcnJpZGU7Ci0gICAgdm9pZCB0
ZXhQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUs
IEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMZmxvYXQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0g
ICAgdm9pZCB0ZXhQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVu
dW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJy
aWRlOwotICAgIHZvaWQgZ2V0UXVlcnlpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NH
TGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGlu
dCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldFF1ZXJ5T2JqZWN0dWl2Um9idXN0QU5H
TEUoR0NHTHVpbnQgaWQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNp
emVpICpsZW5ndGgsIEdDR0x1aW50ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0QnVm
ZmVyUG9pbnRlcnZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBH
Q0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIHZvaWQgKipwYXJhbXMpIG92ZXJy
aWRlOwotICAgIHZvaWQgZ2V0VmVydGV4QXR0cmliSWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgaW5k
ZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgs
IEdDR0xpbnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJJdWl2
Um9idXN0QU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVm
U2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0x1aW50ICpwYXJhbXMpIG92ZXJyaWRlOwotICAg
IHZvaWQgZ2V0VW5pZm9ybXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xpbnQg
bG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHVpbnQg
KnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRCdWZmZXJQYXJhbWV0ZXJpNjR2Um9idXN0
QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUs
IEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50NjQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9p
ZCBzYW1wbGVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51
bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xpbnQgKnBhcmFtKSBvdmVycmlk
ZTsKLSAgICB2b2lkIHNhbXBsZXJQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBs
ZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGZsb2F0ICpw
YXJhbSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRTYW1wbGVyUGFyYW1ldGVyaXZSb2J1c3RBTkdM
RShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdD
R0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0
U2FtcGxlclBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0g
cG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGZsb2F0ICpw
YXJhbXMpIG92ZXJyaWRlOwotCi0gICAgdm9pZCBnZXRGcmFtZWJ1ZmZlclBhcmFtZXRlcml2Um9i
dXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNp
emUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZv
aWQgZ2V0UHJvZ3JhbUludGVyZmFjZWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NH
TGVudW0gcHJvZ3JhbUludGVyZmFjZSwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXpl
LCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lk
IGdldEJvb2xlYW5pX3ZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0x1aW50IGluZGV4
LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xib29sZWFuICpkYXRh
KSBvdmVycmlkZTsgLy8gTk9MSU5UCi0gICAgdm9pZCBnZXRNdWx0aXNhbXBsZWZ2Um9idXN0QU5H
TEUoR0NHTGVudW0gcG5hbWUsIEdDR0x1aW50IGluZGV4LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NH
THNpemVpICpsZW5ndGgsIEdDR0xmbG9hdCAqdmFsKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldFRl
eExldmVsUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2
ZWwsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgs
IEdDR0xpbnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRUZXhMZXZlbFBhcmFtZXRl
cmZ2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBw
bmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMZmxvYXQgKnBh
cmFtcykgb3ZlcnJpZGU7Ci0KLSAgICB2b2lkIGdldFBvaW50ZXJ2Um9idXN0QU5HTEVSb2J1c3RB
TkdMRShHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3Ro
LCB2b2lkICoqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldG5Vbmlmb3JtZnZSb2J1c3RB
TkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6
ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xmbG9hdCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2
b2lkIGdldG5Vbmlmb3JtaXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMaW50IGxv
Y2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBh
cmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRuVW5pZm9ybXVpdlJvYnVzdEFOR0xFKEdDR0x1
aW50IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6
ZWkgKmxlbmd0aCwgR0NHTHVpbnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCB0ZXhQYXJh
bWV0ZXJJaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dM
c2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lk
IHRleFBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBu
YW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTHVpbnQgKnBhcmFtcykgb3ZlcnJpZGU7
Ci0gICAgdm9pZCBnZXRUZXhQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQs
IEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdD
R0xpbnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRUZXhQYXJhbWV0ZXJJdWl2Um9i
dXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNp
emUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMdWludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2
b2lkIHNhbXBsZXJQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dM
ZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xpbnQgKnBhcmFtKSBvdmVy
cmlkZTsKLSAgICB2b2lkIHNhbXBsZXJQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQg
c2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMdWlu
dCAqcGFyYW0pIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0U2FtcGxlclBhcmFtZXRlcklpdlJvYnVz
dEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6
ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9p
ZCBnZXRTYW1wbGVyUGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdD
R0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0x1
aW50ICpwYXJhbXMpIG92ZXJyaWRlOwotCi0gICAgdm9pZCBnZXRRdWVyeU9iamVjdGl2Um9idXN0
QU5HTEUoR0NHTHVpbnQgaWQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NH
THNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRR
dWVyeU9iamVjdGk2NHZSb2J1c3RBTkdMRShHQ0dMdWludCBpZCwgR0NHTGVudW0gcG5hbWUsIEdD
R0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludDY0ICpwYXJhbXMpIG92
ZXJyaWRlOwotICAgIHZvaWQgZ2V0UXVlcnlPYmplY3R1aTY0dlJvYnVzdEFOR0xFKEdDR0x1aW50
IGlkLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3Ro
LCBHQ0dMdWludDY0ICpwYXJhbXMpIG92ZXJyaWRlOwotCiAgICAgLy8gT25seSBmb3Igbm9uLVdl
YkdMIDIuMCBjb250ZXh0cy4KICAgICBHQ0dMZW51bSBhZGp1c3RXZWJHTDFUZXh0dXJlSW50ZXJu
YWxGb3JtYXQoR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVu
dW0gdHlwZSk7CiAKQEAgLTExOSw4ICs3Myw2IEBAIHByaXZhdGU6CiAgICAgLy8gV2VhayBwb2lu
dGVyIGJhY2sgdG8gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuCiAgICAgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0wqIG1fY29udGV4dDsKIAotICAgIGJvb2wgbV91c2VJbmRleGVkR2V0U3RyaW5nIHsg
ZmFsc2UgfTsKLQogICAgIC8vIFdoZXRoZXIgdGhlIFdlYkdMIDEuMC1yZWxhdGVkIGZsb2F0aW5n
LXBvaW50IHJlbmRlcmFiaWxpdHkgZXh0ZW5zaW9ucyBoYXZlIGJlZW4gZW5hYmxlZC4KICAgICBi
b29sIG1fd2ViZ2xDb2xvckJ1ZmZlckZsb2F0UkdCIHsgZmFsc2UgfTsKICAgICBib29sIG1fd2Vi
Z2xDb2xvckJ1ZmZlckZsb2F0UkdCQSB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdM
QU5HTEUuY3BwCmluZGV4IGViYzRhZjlhODcxZDA0MTAzZjZhNjUwNTI5NDY1NGZiNjhkZGMyZmIu
Ljg1ZjI1ZjVhOTVjOWMzNjg1NGM1MWQ0NTczZjgyNmNlY2U1NzA2Y2IgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5H
TEUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBo
aWNzQ29udGV4dEdMQU5HTEUuY3BwCkBAIC0yMDkwLDYgKzIwOTAsOSBAQCB2b2lkIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjptYXJrQ29udGV4dENoYW5nZWQoKQogCiB2b2lkIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjptYXJrTGF5ZXJDb21wb3NpdGVkKCkKIHsKKyAgICBpZiAoIW1ha2VDb250
ZXh0Q3VycmVudCgpKQorICAgICAgICByZXR1cm47CisKICAgICBtX2xheWVyQ29tcG9zaXRlZCA9
IHRydWU7CiAgICAgcmVzZXRCdWZmZXJzVG9BdXRvQ2xlYXIoKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dM
T3BlbkdMLmNwcAppbmRleCA4NDIyODQ2YjZmNjJhNzU1NGU4YjJkY2YwMjQ3ZmY2MDUzOTVkNDVh
Li44NmQxOWNhYWZiNmUzZjBlMzIxZGUxNzMyMTJhNTRmY2U2MWY3MWVjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdM
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5z
aW9uc0dMT3BlbkdMLmNwcApAQCAtNDgsMjIgKzQ4LDYgQEAgRXh0ZW5zaW9uc0dMT3BlbkdMOjpF
eHRlbnNpb25zR0xPcGVuR0woR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqIGNvbnRleHQsIGJvb2wg
dXMKIEV4dGVuc2lvbnNHTE9wZW5HTDo6fkV4dGVuc2lvbnNHTE9wZW5HTCgpID0gZGVmYXVsdDsK
IAogCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTDo6YmxpdEZyYW1lYnVmZmVyQU5HTEUoR0NHTGlu
dCBzcmNYMCwgR0NHTGludCBzcmNZMCwgR0NHTGludCBzcmNYMSwgR0NHTGludCBzcmNZMSwgR0NH
TGludCBkc3RYMCwgR0NHTGludCBkc3RZMCwgR0NHTGludCBkc3RYMSwgR0NHTGludCBkc3RZMSwg
R0NHTGJpdGZpZWxkIG1hc2ssIEdDR0xlbnVtIGZpbHRlcikKLXsKLSAgICBpZiAoIW1fY29udGV4
dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIDo6Z2xCbGl0
RnJhbWVidWZmZXJFWFQoc3JjWDAsIHNyY1kwLCBzcmNYMSwgc3JjWTEsIGRzdFgwLCBkc3RZMCwg
ZHN0WDEsIGRzdFkxLCBtYXNrLCBmaWx0ZXIpOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5H
TDo6cmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMc2l6ZWkgc2FtcGxlcywgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0
aCwgR0NHTHNpemVpIGhlaWdodCkKLXsKLSAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRD
dXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIDo6Z2xSZW5kZXJidWZmZXJTdG9yYWdl
TXVsdGlzYW1wbGVFWFQodGFyZ2V0LCBzYW1wbGVzLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhl
aWdodCk7Ci19Ci0KIFBsYXRmb3JtR0xPYmplY3QgRXh0ZW5zaW9uc0dMT3BlbkdMOjpjcmVhdGVW
ZXJ0ZXhBcnJheU9FUygpCiB7CiAgICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVu
dCgpKQpAQCAtMTI3LDI0ICsxMTEsNiBAQCB2b2lkIEV4dGVuc2lvbnNHTE9wZW5HTDo6YmluZFZl
cnRleEFycmF5T0VTKFBsYXRmb3JtR0xPYmplY3QgYXJyYXkpCiAjZW5kaWYKIH0KIAotdm9pZCBF
eHRlbnNpb25zR0xPcGVuR0w6Omluc2VydEV2ZW50TWFya2VyRVhUKGNvbnN0IFN0cmluZyYpCi17
Ci0gICAgLy8gRklYTUU6IGltcGxlbWVudCB0aGlzIGZ1bmN0aW9uIGFuZCBhZGQgR0xfRVhUX2Rl
YnVnX21hcmtlciBpbiBzdXBwb3J0cygpLgotICAgIHJldHVybjsKLX0KLQotdm9pZCBFeHRlbnNp
b25zR0xPcGVuR0w6OnB1c2hHcm91cE1hcmtlckVYVChjb25zdCBTdHJpbmcmKQotewotICAgIC8v
IEZJWE1FOiBpbXBsZW1lbnQgdGhpcyBmdW5jdGlvbiBhbmQgYWRkIEdMX0VYVF9kZWJ1Z19tYXJr
ZXIgaW4gc3VwcG9ydHMoKS4KLSAgICByZXR1cm47Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMT3Bl
bkdMOjpwb3BHcm91cE1hcmtlckVYVCh2b2lkKQotewotICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQg
dGhpcyBmdW5jdGlvbiBhbmQgYWRkIEdMX0VYVF9kZWJ1Z19tYXJrZXIgaW4gc3VwcG9ydHMoKS4K
LSAgICByZXR1cm47Ci19Ci0KIGJvb2wgRXh0ZW5zaW9uc0dMT3BlbkdMOjpzdXBwb3J0c0V4dGVu
c2lvbihjb25zdCBTdHJpbmcmIG5hbWUpCiB7CiAgICAgLy8gR0xfQU5HTEVfZnJhbWVidWZmZXJf
YmxpdCBhbmQgR0xfQU5HTEVfZnJhbWVidWZmZXJfbXVsdGlzYW1wbGUgYXJlICJmYWtlIi4gVGhl
eSBhcmUgaW1wbGVtZW50ZWQgdXNpbmcgb3RoZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuaAppbmRl
eCA0NzUwMjI2ZWNlY2VmNDQzOTZlOTkzODY3NmNiNjM5YmU4MzQzN2I2Li4wYWRiZDcwNTBiN2Uz
Zjc3ZTAxODg5NDMzMmZmYzg3Y2YzMGQ5MGM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTC5oCkBA
IC00MCwxNiArNDAsMTAgQEAgcHVibGljOgogICAgIHZpcnR1YWwgfkV4dGVuc2lvbnNHTE9wZW5H
TCgpOwogCiAgICAgLy8gRXh0ZW5zaW9uc0dMIG1ldGhvZHMuCi0gICAgdm9pZCBibGl0RnJhbWVi
dWZmZXJBTkdMRShHQ0dMaW50IHNyY1gwLCBHQ0dMaW50IHNyY1kwLCBHQ0dMaW50IHNyY1gxLCBH
Q0dMaW50IHNyY1kxLCBHQ0dMaW50IGRzdFgwLCBHQ0dMaW50IGRzdFkwLCBHQ0dMaW50IGRzdFgx
LCBHQ0dMaW50IGRzdFkxLCBHQ0dMYml0ZmllbGQgbWFzaywgR0NHTGVudW0gZmlsdGVyKSBvdmVy
cmlkZTsKLSAgICB2b2lkIHJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKEdDR0xl
bnVtIHRhcmdldCwgR0NHTHNpemVpIHNhbXBsZXMsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBH
Q0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQpIG92ZXJyaWRlOwotCiAgICAgUGxhdGZv
cm1HTE9iamVjdCBjcmVhdGVWZXJ0ZXhBcnJheU9FUygpIG92ZXJyaWRlOwogICAgIHZvaWQgZGVs
ZXRlVmVydGV4QXJyYXlPRVMoUGxhdGZvcm1HTE9iamVjdCkgb3ZlcnJpZGU7CiAgICAgR0NHTGJv
b2xlYW4gaXNWZXJ0ZXhBcnJheU9FUyhQbGF0Zm9ybUdMT2JqZWN0KSBvdmVycmlkZTsKICAgICB2
b2lkIGJpbmRWZXJ0ZXhBcnJheU9FUyhQbGF0Zm9ybUdMT2JqZWN0KSBvdmVycmlkZTsKLSAgICB2
b2lkIGluc2VydEV2ZW50TWFya2VyRVhUKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwotICAgIHZv
aWQgcHVzaEdyb3VwTWFya2VyRVhUKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwotICAgIHZvaWQg
cG9wR3JvdXBNYXJrZXJFWFQodm9pZCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkcmF3QnVmZmVyc0VY
VChHQ0dMU3Bhbjxjb25zdCBHQ0dMZW51bT4pIG92ZXJyaWRlOwogCiAgICAgdm9pZCBkcmF3QXJy
YXlzSW5zdGFuY2VkQU5HTEUoR0NHTGVudW0gbW9kZSwgR0NHTGludCBmaXJzdCwgR0NHTHNpemVp
IGNvdW50LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21t
b24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lv
bnNHTE9wZW5HTENvbW1vbi5jcHAKaW5kZXggYzM0MzhkNTkxYzA3YTM2Y2YxZTA0MjZjMWI5ZmQ3
YjNlOTE3NzlkNS4uMDlkYjg1NDAwMjIxZGY5NzU3ODg4NTlhNGEyODdhYmFhMjRmODI3MSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lv
bnNHTE9wZW5HTENvbW1vbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5jcHAKQEAgLTI1NCwxODUgKzI1NCw2
IEBAIHZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRuVW5pZm9ybWl2RVhUKEdDR0x1
aW50LCBpbnQsIEdDR0xzaXplaSwgR0NHTGluCiAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xF
cnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CiB9CiAKLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdM
Q29tbW9uOjpyZWFkUGl4ZWxzUm9idXN0QU5HTEUoaW50LCBpbnQsIEdDR0xzaXplaSwgR0NHTHNp
emVpLCBHQ0dMZW51bSwgR0NHTGVudW0sIEdDR0xzaXplaSwgR0NHTHNpemVpICosIEdDR0xzaXpl
aSAqLCBHQ0dMc2l6ZWkgKiwgdm9pZCAqKQotewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdM
RXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5H
TENvbW1vbjo6dGV4UGFyYW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dMZW51bSwgR0NHTGVudW0sIEdD
R0xzaXplaSwgY29uc3QgR0NHTGZsb2F0ICopCi17Ci0gICAgbV9jb250ZXh0LT5zeW50aGVzaXpl
R0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMT3Bl
bkdMQ29tbW9uOjp0ZXhQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtLCBHQ0dMZW51bSwg
R0NHTHNpemVpLCBjb25zdCBHQ0dMaW50ICopCi17Ci0gICAgbV9jb250ZXh0LT5zeW50aGVzaXpl
R0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMT3Bl
bkdMQ29tbW9uOjpnZXRRdWVyeWl2Um9idXN0QU5HTEUoR0NHTGVudW0sIEdDR0xlbnVtLCBHQ0dM
c2l6ZWksIEdDR0xzaXplaSAqLCBHQ0dMaW50ICopCi17Ci0gICAgbV9jb250ZXh0LT5zeW50aGVz
aXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dM
T3BlbkdMQ29tbW9uOjpnZXRRdWVyeU9iamVjdHVpdlJvYnVzdEFOR0xFKEdDR0x1aW50LCBHQ0dM
ZW51bSwgR0NHTHNpemVpLCBHQ0dMc2l6ZWkgKiwgR0NHTHVpbnQgKikKLXsKLSAgICBtX2NvbnRl
eHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLX0KLQotdm9pZCBF
eHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldEJ1ZmZlclBvaW50ZXJ2Um9idXN0QU5HTEUoR0NH
TGVudW0sIEdDR0xlbnVtLCBHQ0dMc2l6ZWksIEdDR0xzaXplaSAqLCB2b2lkICoqKQotewotICAg
IG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQot
Ci12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0VmVydGV4QXR0cmliSWl2Um9idXN0
QU5HTEUoR0NHTHVpbnQsIEdDR0xlbnVtLCBHQ0dMc2l6ZWksIEdDR0xzaXplaSAqLCBHQ0dMaW50
ICopCi17Ci0gICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJB
VElPTik7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRWZXJ0ZXhBdHRy
aWJJdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQsIEdDR0xlbnVtLCBHQ0dMc2l6ZWksIEdDR0xzaXpl
aSAqLCBHQ0dMdWludCAqKQotewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xf
SU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6
Z2V0VW5pZm9ybXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50LCBpbnQsIEdDR0xzaXplaSwgR0NHTHNp
emVpICosIEdDR0x1aW50ICopCi17Ci0gICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihH
TF9JTlZBTElEX09QRVJBVElPTik7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9u
OjpnZXRCdWZmZXJQYXJhbWV0ZXJpNjR2Um9idXN0QU5HTEUoR0NHTGVudW0sIEdDR0xlbnVtLCBH
Q0dMc2l6ZWksIEdDR0xzaXplaSAqLCBHQ0dMaW50NjQgKikKLXsKLSAgICBtX2NvbnRleHQtPnN5
bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLX0KLQotdm9pZCBFeHRlbnNp
b25zR0xPcGVuR0xDb21tb246OnNhbXBsZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0x1aW50
LCBHQ0dMZW51bSwgR0NHTHNpemVpLCBjb25zdCBHQ0dMaW50ICopCi17Ci0gICAgbV9jb250ZXh0
LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Ci19Ci0KLXZvaWQgRXh0
ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpzYW1wbGVyUGFyYW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dM
dWludCwgR0NHTGVudW0sIEdDR0xzaXplaSwgY29uc3QgR0NHTGZsb2F0ICopCi17Ci0gICAgbV9j
b250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Ci19Ci0KLXZv
aWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRTYW1wbGVyUGFyYW1ldGVyaXZSb2J1c3RB
TkdMRShHQ0dMdWludCwgR0NHTGVudW0sIEdDR0xzaXplaSwgR0NHTHNpemVpICosIEdDR0xpbnQg
KikKLXsKLSAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFU
SU9OKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFNhbXBsZXJQYXJh
bWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0x1aW50LCBHQ0dMZW51bSwgR0NHTHNpemVpLCBHQ0dMc2l6
ZWkgKiwgR0NHTGZsb2F0ICopCi17Ci0gICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihH
TF9JTlZBTElEX09QRVJBVElPTik7Ci19Ci0KLQotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21t
b246OmdldEZyYW1lYnVmZmVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51bSwgR0NHTGVu
dW0sIEdDR0xzaXplaSwgR0NHTHNpemVpICosIEdDR0xpbnQgKikKLXsKLSAgICBtX2NvbnRleHQt
PnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLX0KLQotdm9pZCBFeHRl
bnNpb25zR0xPcGVuR0xDb21tb246OmdldFByb2dyYW1JbnRlcmZhY2VpdlJvYnVzdEFOR0xFKEdD
R0x1aW50LCBHQ0dMZW51bSwgR0NHTGVudW0sIEdDR0xzaXplaSwgR0NHTHNpemVpICosIEdDR0xp
bnQgKikKLXsKLSAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BF
UkFUSU9OKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldEJvb2xlYW5p
X3ZSb2J1c3RBTkdMRShHQ0dMZW51bSwgR0NHTHVpbnQsIEdDR0xzaXplaSwgR0NHTHNpemVpICos
IEdDR0xib29sZWFuICopCi17Ci0gICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9J
TlZBTElEX09QRVJBVElPTik7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpn
ZXRNdWx0aXNhbXBsZWZ2Um9idXN0QU5HTEUoR0NHTGVudW0sIEdDR0x1aW50LCBHQ0dMc2l6ZWks
IEdDR0xzaXplaSAqLCBHQ0dMZmxvYXQgKikKLXsKLSAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVH
TEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xPcGVu
R0xDb21tb246OmdldFRleExldmVsUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51bSwgaW50
LCBHQ0dMZW51bSwgR0NHTHNpemVpLCBHQ0dMc2l6ZWkgKiwgR0NHTGludCAqKQotewotICAgIG1f
Y29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi12
b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0VGV4TGV2ZWxQYXJhbWV0ZXJmdlJvYnVz
dEFOR0xFKEdDR0xlbnVtLCBpbnQsIEdDR0xlbnVtLCBHQ0dMc2l6ZWksIEdDR0xzaXplaSAqLCBH
Q0dMZmxvYXQgKikKLXsKLSAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFM
SURfT1BFUkFUSU9OKTsKLX0KLQotCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0
UG9pbnRlcnZSb2J1c3RBTkdMRVJvYnVzdEFOR0xFKEdDR0xlbnVtLCBHQ0dMc2l6ZWksIEdDR0xz
aXplaSAqLCB2b2lkICoqKQotewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xf
SU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6
Z2V0blVuaWZvcm1mdlJvYnVzdEFOR0xFKEdDR0x1aW50LCBpbnQsIEdDR0xzaXplaSwgR0NHTHNp
emVpICosIEdDR0xmbG9hdCAqKQotewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3Io
R0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1v
bjo6Z2V0blVuaWZvcm1pdlJvYnVzdEFOR0xFKEdDR0x1aW50LCBpbnQsIEdDR0xzaXplaSwgR0NH
THNpemVpICosIEdDR0xpbnQgKikKLXsKLSAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9y
KEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21t
b246OmdldG5Vbmlmb3JtdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQsIGludCwgR0NHTHNpemVpLCBH
Q0dMc2l6ZWkgKiwgR0NHTHVpbnQgKikKLXsKLSAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVy
cm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xD
b21tb246OnRleFBhcmFtZXRlcklpdlJvYnVzdEFOR0xFKEdDR0xlbnVtLCBHQ0dMZW51bSwgR0NH
THNpemVpLCBjb25zdCBHQ0dMaW50ICopCi17Ci0gICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xF
cnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdM
Q29tbW9uOjp0ZXhQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUoR0NHTGVudW0sIEdDR0xlbnVtLCBH
Q0dMc2l6ZWksIGNvbnN0IEdDR0x1aW50ICopCi17Ci0gICAgbV9jb250ZXh0LT5zeW50aGVzaXpl
R0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMT3Bl
bkdMQ29tbW9uOjpnZXRUZXhQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRShHQ0dMZW51bSwgR0NHTGVu
dW0sIEdDR0xzaXplaSwgR0NHTHNpemVpICosIEdDR0xpbnQgKikKLXsKLSAgICBtX2NvbnRleHQt
PnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLX0KLQotdm9pZCBFeHRl
bnNpb25zR0xPcGVuR0xDb21tb246OmdldFRleFBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRShHQ0dM
ZW51bSwgR0NHTGVudW0sIEdDR0xzaXplaSwgR0NHTHNpemVpICosIEdDR0x1aW50ICopCi17Ci0g
ICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Ci19
Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpzYW1wbGVyUGFyYW1ldGVySWl2Um9i
dXN0QU5HTEUoR0NHTHVpbnQsIEdDR0xlbnVtLCBHQ0dMc2l6ZWksIGNvbnN0IEdDR0xpbnQgKikK
LXsKLSAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9O
KTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OnNhbXBsZXJQYXJhbWV0ZXJJ
dWl2Um9idXN0QU5HTEUoR0NHTHVpbnQsIEdDR0xlbnVtLCBHQ0dMc2l6ZWksIGNvbnN0IEdDR0x1
aW50ICopCi17Ci0gICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09Q
RVJBVElPTik7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRTYW1wbGVy
UGFyYW1ldGVySWl2Um9idXN0QU5HTEUoR0NHTHVpbnQsIEdDR0xlbnVtLCBHQ0dMc2l6ZWksIEdD
R0xzaXplaSAqLCBHQ0dMaW50ICopCi17Ci0gICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJv
cihHTF9JTlZBTElEX09QRVJBVElPTik7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29t
bW9uOjpnZXRTYW1wbGVyUGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50LCBHQ0dMZW51
bSwgR0NHTHNpemVpLCBHQ0dMc2l6ZWkgKiwgR0NHTHVpbnQgKikKLXsKLSAgICBtX2NvbnRleHQt
PnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLX0KLQotCi12b2lkIEV4
dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0UXVlcnlPYmplY3RpdlJvYnVzdEFOR0xFKEdDR0x1
aW50LCBHQ0dMZW51bSwgR0NHTHNpemVpLCBHQ0dMc2l6ZWkgKiwgR0NHTGludCAqKQotewotICAg
IG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQot
Ci12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0UXVlcnlPYmplY3RpNjR2Um9idXN0
QU5HTEUoR0NHTHVpbnQsIEdDR0xlbnVtLCBHQ0dMc2l6ZWksIEdDR0xzaXplaSAqLCBHQ0dMaW50
NjQgKikKLXsKLSAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BF
UkFUSU9OKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFF1ZXJ5T2Jq
ZWN0dWk2NHZSb2J1c3RBTkdMRShHQ0dMdWludCwgR0NHTGVudW0sIEdDR0xzaXplaSwgR0NHTHNp
emVpICosIEdDR0x1aW50NjQgKikKLXsKLSAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9y
KEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLX0KLQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAK
ICNlbmRpZiAvLyBFTkFCTEUoV0VCR0wpICYmICFVU0UoQU5HTEUpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29t
bW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9u
c0dMT3BlbkdMQ29tbW9uLmgKaW5kZXggM2YxMDQwMTYyZmZhMDdhMmRjMTMwYWJiMjJmYjFiMWZm
YzNmZGYyMC4uZGNjMGUzYWYyMTczMmU3NDdlYTFiZDU2NGJiOTY3ODQzMmNhM2Y3MCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNH
TE9wZW5HTENvbW1vbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29w
ZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uaApAQCAtMjgsMTEgKzI4LDExIEBACiAKICNp
bmNsdWRlICJFeHRlbnNpb25zR0wuaCIKIAotI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJp
bmdIYXNoLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOwogCiBjbGFzcyBFeHRlbnNpb25zR0xPcGVuR0xDb21tb24gOiBwdWJsaWMgRXh0ZW5z
aW9uc0dMIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKQEAgLTU1LDU4ICs1NSwxOCBA
QCBwdWJsaWM6CiAgICAgU3RyaW5nIGdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRShQbGF0
Zm9ybUdMT2JqZWN0KSBvdmVycmlkZTsKIAogICAgIC8vIEVYVCBSb2J1c3RuZXNzIC0gdXNlcyBn
ZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJCKCkKLSAgICB2b2lkIHJlYWRuUGl4ZWxzRVhUKGludCB4
LCBpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3Jt
YXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXplLCB2b2lkICpkYXRhKSBvdmVycmlk
ZTsKLSAgICB2b2lkIGdldG5Vbmlmb3JtZnZFWFQoR0NHTHVpbnQgcHJvZ3JhbSwgaW50IGxvY2F0
aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgZmxvYXQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9p
ZCBnZXRuVW5pZm9ybWl2RVhUKEdDR0x1aW50IHByb2dyYW0sIGludCBsb2NhdGlvbiwgR0NHTHNp
emVpIGJ1ZlNpemUsIGludCAqcGFyYW1zKSBvdmVycmlkZTsKLQotICAgIGJvb2wgaXNOVklESUEo
KSBvdmVycmlkZSB7IHJldHVybiBtX2lzTlZJRElBOyB9Ci0gICAgYm9vbCBpc0FNRCgpIG92ZXJy
aWRlIHsgcmV0dXJuIG1faXNBTUQ7IH0KLSAgICBib29sIGlzSW50ZWwoKSBvdmVycmlkZSB7IHJl
dHVybiBtX2lzSW50ZWw7IH0KLSAgICBib29sIGlzSW1hZ2luYXRpb24oKSBvdmVycmlkZSB7IHJl
dHVybiBtX2lzSW1hZ2luYXRpb247IH0KLSAgICBTdHJpbmcgdmVuZG9yKCkgb3ZlcnJpZGUgeyBy
ZXR1cm4gbV92ZW5kb3I7IH0KLQotICAgIGJvb2wgcmVxdWlyZXNCdWlsdEluRnVuY3Rpb25FbXVs
YXRpb24oKSBvdmVycmlkZSB7IHJldHVybiBtX3JlcXVpcmVzQnVpbHRJbkZ1bmN0aW9uRW11bGF0
aW9uOyB9Ci0gICAgYm9vbCByZXF1aXJlc1Jlc3RyaWN0ZWRNYXhpbXVtVGV4dHVyZVNpemUoKSBv
dmVycmlkZSB7IHJldHVybiBtX3JlcXVpcmVzUmVzdHJpY3RlZE1heGltdW1UZXh0dXJlU2l6ZTsg
fQotCi0gICAgLy8gR0xfQU5HTEVfcm9idXN0X2NsaWVudF9tZW1vcnkKLSAgICB2b2lkIHJlYWRQ
aXhlbHNSb2J1c3RBTkdMRShpbnQgeCwgaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVp
IGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6
ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xzaXplaSAqY29sdW1ucywgR0NHTHNpemVpICpyb3dz
LCB2b2lkICpwaXhlbHMpIG92ZXJyaWRlOwotICAgIHZvaWQgdGV4UGFyYW1ldGVyZnZSb2J1c3RB
TkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwg
Y29uc3QgR0NHTGZsb2F0ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgdGV4UGFyYW1ldGVy
aXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkg
YnVmU2l6ZSwgY29uc3QgR0NHTGludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldFF1
ZXJ5aXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6
ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykgb3ZlcnJpZGU7
Ci0gICAgdm9pZCBnZXRRdWVyeU9iamVjdHVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IGlkLCBHQ0dM
ZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMdWlu
dCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldEJ1ZmZlclBvaW50ZXJ2Um9idXN0QU5H
TEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdD
R0xzaXplaSAqbGVuZ3RoLCB2b2lkICoqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldFZl
cnRleEF0dHJpYklpdlJvYnVzdEFOR0xFKEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwg
R0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpIG92
ZXJyaWRlOwotICAgIHZvaWQgZ2V0VmVydGV4QXR0cmliSXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50
IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVu
Z3RoLCBHQ0dMdWludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldFVuaWZvcm11aXZS
b2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZT
aXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHVpbnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAg
dm9pZCBnZXRCdWZmZXJQYXJhbWV0ZXJpNjR2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dM
aW50NjQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzYW1wbGVyUGFyYW1ldGVyaXZSb2J1
c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNp
emUsIGNvbnN0IEdDR0xpbnQgKnBhcmFtKSBvdmVycmlkZTsKLSAgICB2b2lkIHNhbXBsZXJQYXJh
bWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dM
c2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGZsb2F0ICpwYXJhbSkgb3ZlcnJpZGU7Ci0gICAgdm9p
ZCBnZXRTYW1wbGVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dM
ZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50
ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0U2FtcGxlclBhcmFtZXRlcmZ2Um9idXN0
QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXpl
LCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGZsb2F0ICpwYXJhbXMpIG92ZXJyaWRlOwotCi0gICAg
dm9pZCBnZXRGcmFtZWJ1ZmZlclBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBH
Q0dMaW50ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0UHJvZ3JhbUludGVyZmFjZWl2
Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGVudW0gcHJvZ3JhbUludGVyZmFjZSwg
R0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NH
TGludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldEJvb2xlYW5pX3ZSb2J1c3RBTkdM
RShHQ0dMZW51bSB0YXJnZXQsIEdDR0x1aW50IGluZGV4LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NH
THNpemVpICpsZW5ndGgsIEdDR0xib29sZWFuICpkYXRhKSBvdmVycmlkZTsKLSAgICB2b2lkIGdl
dE11bHRpc2FtcGxlZnZSb2J1c3RBTkdMRShHQ0dMZW51bSBwbmFtZSwgR0NHTHVpbnQgaW5kZXgs
IEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGZsb2F0ICp2YWwpIG92
ZXJyaWRlOwotICAgIHZvaWQgZ2V0VGV4TGV2ZWxQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xl
bnVtIHRhcmdldCwgaW50IGxldmVsLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUs
IEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQg
Z2V0VGV4TGV2ZWxQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgaW50IGxl
dmVsLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3Ro
LCBHQ0dMZmxvYXQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0KLSAgICB2b2lkIGdldFBvaW50ZXJ2Um9i
dXN0QU5HTEVSb2J1c3RBTkdMRShHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdD
R0xzaXplaSAqbGVuZ3RoLCB2b2lkICoqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldG5V
bmlmb3JtZnZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBpbnQgbG9jYXRpb24sIEdDR0xz
aXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGZsb2F0ICpwYXJhbXMpIG92ZXJy
aWRlOwotICAgIHZvaWQgZ2V0blVuaWZvcm1pdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0s
IGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dM
aW50ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0blVuaWZvcm11aXZSb2J1c3RBTkdM
RShHQ0dMdWludCBwcm9ncmFtLCBpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dM
c2l6ZWkgKmxlbmd0aCwgR0NHTHVpbnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCB0ZXhQ
YXJhbWV0ZXJJaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBH
Q0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2
b2lkIHRleFBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVt
IHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTHVpbnQgKnBhcmFtcykgb3ZlcnJp
ZGU7Ci0gICAgdm9pZCBnZXRUZXhQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJn
ZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgs
IEdDR0xpbnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRUZXhQYXJhbWV0ZXJJdWl2
Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1
ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMdWludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAg
ICB2b2lkIHNhbXBsZXJQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBH
Q0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xpbnQgKnBhcmFtKSBv
dmVycmlkZTsKLSAgICB2b2lkIHNhbXBsZXJQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUoR0NHTHVp
bnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dM
dWludCAqcGFyYW0pIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0U2FtcGxlclBhcmFtZXRlcklpdlJv
YnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVm
U2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAg
dm9pZCBnZXRTYW1wbGVyUGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIs
IEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdD
R0x1aW50ICpwYXJhbXMpIG92ZXJyaWRlOwotCi0gICAgdm9pZCBnZXRRdWVyeU9iamVjdGl2Um9i
dXN0QU5HTEUoR0NHTHVpbnQgaWQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwg
R0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBn
ZXRRdWVyeU9iamVjdGk2NHZSb2J1c3RBTkdMRShHQ0dMdWludCBpZCwgR0NHTGVudW0gcG5hbWUs
IEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludDY0ICpwYXJhbXMp
IG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0UXVlcnlPYmplY3R1aTY0dlJvYnVzdEFOR0xFKEdDR0x1
aW50IGlkLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVu
Z3RoLCBHQ0dMdWludDY0ICpwYXJhbXMpIG92ZXJyaWRlOworICAgIHZvaWQgcmVhZG5QaXhlbHNF
WFQoaW50IHgsIGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xl
bnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIHZvaWQgKmRhdGEp
OworICAgIHZvaWQgZ2V0blVuaWZvcm1mdkVYVChHQ0dMdWludCBwcm9ncmFtLCBpbnQgbG9jYXRp
b24sIEdDR0xzaXplaSBidWZTaXplLCBmbG9hdCAqcGFyYW1zKTsKKyAgICB2b2lkIGdldG5Vbmlm
b3JtaXZFWFQoR0NHTHVpbnQgcHJvZ3JhbSwgaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6
ZSwgaW50ICpwYXJhbXMpOworCisgICAgYm9vbCBpc05WSURJQSgpIGNvbnN0IHsgcmV0dXJuIG1f
aXNOVklESUE7IH0KKyAgICBib29sIGlzQU1EKCkgY29uc3QgeyByZXR1cm4gbV9pc0FNRDsgfQor
ICAgIGJvb2wgaXNJbnRlbCgpIGNvbnN0IHsgcmV0dXJuIG1faXNJbnRlbDsgfQorICAgIGJvb2wg
aXNJbWFnaW5hdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1faXNJbWFnaW5hdGlvbjsgfQorICAgIFN0
cmluZyB2ZW5kb3IoKSBjb25zdCB7IHJldHVybiBtX3ZlbmRvcjsgfQorCisgICAgYm9vbCByZXF1
aXJlc0J1aWx0SW5GdW5jdGlvbkVtdWxhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fcmVxdWlyZXNC
dWlsdEluRnVuY3Rpb25FbXVsYXRpb247IH0KKyAgICBib29sIHJlcXVpcmVzUmVzdHJpY3RlZE1h
eGltdW1UZXh0dXJlU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVxdWlyZXNSZXN0cmljdGVkTWF4
aW11bVRleHR1cmVTaXplOyB9CiAKIHByb3RlY3RlZDoKICAgICBmcmllbmQgY2xhc3MgRXh0ZW5z
aW9uc0dMT3BlbkdMRVM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMRVMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVTLmNwcAppbmRleCA4Y2E4
Nzc4ODRlZWFiOGEyY2ExZGRlMmRiMmVjOGQ2YjIxMjJmZGUxLi5iMmUzYzhiOTg0OTM0NWQ1NzM4
ZjdhNWMxMGUxMmRiNTk0ZDJhMDAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMRVMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xFUy5jcHAK
QEAgLTEwMCwxMSArMTAwLDYgQEAgdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xFUzo6cmVuZGVyYnVm
ZmVyU3RvcmFnZU11bHRpc2FtcGxlSU1HKHVuc2lnbmVkIGxvbmcgdGFyZ2UKICAgICAgICAgbV9j
b250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CiB9CiAKLXZv
aWQgRXh0ZW5zaW9uc0dMT3BlbkdMRVM6OmJsaXRGcmFtZWJ1ZmZlckFOR0xFKEdDR0xpbnQsIEdD
R0xpbnQsIEdDR0xpbnQsIEdDR0xpbnQsIEdDR0xpbnQsIEdDR0xpbnQsIEdDR0xpbnQsIEdDR0xp
bnQsIEdDR0xiaXRmaWVsZCwgR0NHTGVudW0pCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0K
LQogdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xFUzo6cmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2Ft
cGxlQU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWkgc2FtcGxlcywgR0NHTGVudW0gaW50
ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkKIHsKICAgICBp
ZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCkBAIC0xMTUsMjEgKzExMCw2IEBA
IHZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMRVM6OnJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBs
ZUFOR0xFKEdDR0xlbnVtIHRhcmdldCwKICAgICAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAot
dm9pZCBFeHRlbnNpb25zR0xPcGVuR0xFUzo6aW5zZXJ0RXZlbnRNYXJrZXJFWFQoY29uc3QgU3Ry
aW5nJikKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9w
ZW5HTEVTOjpwdXNoR3JvdXBNYXJrZXJFWFQoY29uc3QgU3RyaW5nJikKLXsKLSAgICBub3RJbXBs
ZW1lbnRlZCgpOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTEVTOjpwb3BHcm91cE1hcmtl
ckVYVCh2b2lkKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KIFBsYXRmb3JtR0xPYmpl
Y3QgRXh0ZW5zaW9uc0dMT3BlbkdMRVM6OmNyZWF0ZVZlcnRleEFycmF5T0VTKCkKIHsKICAgICBp
ZiAobV9nbEdlblZlcnRleEFycmF5c09FUykgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVTLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMRVMuaApp
bmRleCA1Yzc2MDM3ZmE3YmM2ZThlZWUzZTY3M2Y5OWE3ZGZjMmY3OGZiNGQyLi5hZGQwYmI3NjNm
NGJkYTViNjllNjFiYWI2MDIyYTQwODI0OGFmM2VmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMRVMuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdM
RVMuaApAQCAtMjcsNiArMjcsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJFeHRlbnNp
b25zR0xPcGVuR0xDb21tb24uaCIKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRHTE9wZW5HTC5o
IgogCiAjaWYgVVNFKE9QRU5HTF9FUykKIApAQCAtNzUsMTEgKzc2LDcgQEAgcHVibGljOgogCiAg
ICAgLy8gRXh0ZW5zaW9uM0QgbWV0aG9kcwogICAgIGJvb2wgaXNFbmFibGVkKGNvbnN0IFN0cmlu
ZyYpIG92ZXJyaWRlOwotICAgIHZvaWQgYmxpdEZyYW1lYnVmZmVyQU5HTEUoR0NHTGludCBzcmNY
MCwgR0NHTGludCBzcmNZMCwgR0NHTGludCBzcmNYMSwgR0NHTGludCBzcmNZMSwgR0NHTGludCBk
c3RYMCwgR0NHTGludCBkc3RZMCwgR0NHTGludCBkc3RYMSwgR0NHTGludCBkc3RZMSwgR0NHTGJp
dGZpZWxkIG1hc2ssIEdDR0xlbnVtIGZpbHRlcikgb3ZlcnJpZGU7Ci0gICAgdm9pZCByZW5kZXJi
dWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xzaXplaSBz
YW1wbGVzLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6
ZWkgaGVpZ2h0KSBvdmVycmlkZTsKLSAgICB2b2lkIGluc2VydEV2ZW50TWFya2VyRVhUKGNvbnN0
IFN0cmluZyYpIG92ZXJyaWRlOwotICAgIHZvaWQgcHVzaEdyb3VwTWFya2VyRVhUKGNvbnN0IFN0
cmluZyYpIG92ZXJyaWRlOwotICAgIHZvaWQgcG9wR3JvdXBNYXJrZXJFWFQodm9pZCkgb3ZlcnJp
ZGU7CisgICAgdm9pZCByZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVBTkdMRShHQ0dMZW51
bSB0YXJnZXQsIEdDR0xzaXplaSBzYW1wbGVzLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NH
THNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KTsKIAogICAgIFBsYXRmb3JtR0xPYmplY3Qg
Y3JlYXRlVmVydGV4QXJyYXlPRVMoKSBvdmVycmlkZTsKICAgICB2b2lkIGRlbGV0ZVZlcnRleEFy
cmF5T0VTKFBsYXRmb3JtR0xPYmplY3QpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0wuaAppbmRleCBmNTJiZGQ2NmZkMGM2N2IxMjVkOGI1MTFlMjljZjkyZmMyZmNmNWUw
Li41MzRhNjUzOWY3ZmY0YzJhMjM1NmFiMDEwYzA3NWQ5MDkwZjUxZTY0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0wuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0wuaApAQCAtNDUsNiArNDUsNyBAQAogCiAjaWYgIVVTRShBTkdM
RSkKICNpbmNsdWRlICJBTkdMRVdlYktpdEJyaWRnZS5oIgorI2luY2x1ZGUgIkV4dGVuc2lvbnNH
TE9wZW5HTENvbW1vbi5oIgogI2VuZGlmCiAKIC8vIEZJWE1FOiBGaW5kIGEgYmV0dGVyIHdheSB0
byBhdm9pZCB0aGUgbmFtZSBjb25mbGljdGlvbiBmb3IgTk9fRVJST1IuCkBAIC00OTEsNyArNDky
LDEyIEBAIHB1YmxpYzoKICAgICAvLyBhbGwgbWV0aG9kcyBpdCBjb250YWlucyBtYXkgbmVjZXNz
YXJpbHkgYmUgc3VwcG9ydGVkIG9uIHRoZQogICAgIC8vIGN1cnJlbnQgaGFyZHdhcmUuIE11c3Qg
Y2FsbCBFeHRlbnNpb25zR0w6OnN1cHBvcnRzKCkgdG8KICAgICAvLyBkZXRlcm1pbmUgdGhpcy4K
KyNpZiAhVVNFKEFOR0xFKQorICAgIC8vIFVzZSBjb3ZhcmlhbnQgcmV0dXJuIHR5cGUgZm9yIE9Q
RU5HTC9PUEVOR0xfRVMKKyAgICBFeHRlbnNpb25zR0xPcGVuR0xDb21tb24mIGdldEV4dGVuc2lv
bnMoKSBmaW5hbDsKKyNlbHNlCiAgICAgRXh0ZW5zaW9uc0dMJiBnZXRFeHRlbnNpb25zKCkgZmlu
YWw7CisjZW5kaWYKIAogICAgIHZvaWQgc2V0RmFpbE5leHRHUFVTdGF0dXNDaGVjaygpIGZpbmFs
IHsgbV9mYWlsTmV4dFN0YXR1c0NoZWNrID0gdHJ1ZTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xC
YXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGlj
c0NvbnRleHRHTE9wZW5HTEJhc2UuY3BwCmluZGV4IDI5ZGY3YzkwMTNjYjkxNTkzNGFiYWI4OTRm
YWIyNmM5ZDdmZTc3MGYuLmE1NjJlOGFmMjdiZGI2MjU5YzJlZmNlYjgwNGVmZTM4ZmY5ZDYxZjEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFw
aGljc0NvbnRleHRHTE9wZW5HTEJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEJhc2UuY3BwCkBAIC0xMDYs
NyArMTA2LDcgQEAgYm9vbCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVzaGFwZUZCT3MoY29u
c3QgSW50U2l6ZSYgc2l6ZSkKICAgICAgICAgLy8gV2UgZG9uJ3QgYWxsb3cgdGhlIGxvZ2ljIHdo
ZXJlIHN0ZW5jaWwgaXMgcmVxdWlyZWQgYW5kIGRlcHRoIGlzIG5vdC4KICAgICAgICAgLy8gU2Vl
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2YWxpZGF0ZUF0dHJpYnV0ZXMuCiAKLSAgICAgICAg
RXh0ZW5zaW9uc0dMJiBleHRlbnNpb25zID0gZ2V0RXh0ZW5zaW9ucygpOworICAgICAgICBFeHRl
bnNpb25zR0xPcGVuR0xDb21tb24mIGV4dGVuc2lvbnMgPSBnZXRFeHRlbnNpb25zKCk7CiAgICAg
ICAgIC8vIFVzZSBhIDI0IGJpdCBkZXB0aCBidWZmZXIgd2hlcmUgd2Uga25vdyB3ZSBoYXZlIGl0
LgogICAgICAgICBpZiAoZXh0ZW5zaW9ucy5zdXBwb3J0cygiR0xfRVhUX3BhY2tlZF9kZXB0aF9z
dGVuY2lsIikpCiAgICAgICAgICAgICBpbnRlcm5hbERlcHRoU3RlbmNpbEZvcm1hdCA9IEdMX0RF
UFRIMjRfU1RFTkNJTDhfRVhUOwpAQCAtNDA3LDcgKzQwNyw3IEBAIHZvaWQgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OmNsZWFyRGVwdGgoR0NHTGNsYW1wZiBkZXB0aCkKIH0KIAogI2lmICFQTEFU
Rk9STShHVEspCi1FeHRlbnNpb25zR0wmIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRFeHRl
bnNpb25zKCkKK0V4dGVuc2lvbnNHTE9wZW5HTENvbW1vbiYgR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OmdldEV4dGVuc2lvbnMoKQogewogICAgIGlmICghbV9leHRlbnNpb25zKQogICAgICAgICBt
X2V4dGVuc2lvbnMgPSBtYWtlVW5pcXVlPEV4dGVuc2lvbnNHTE9wZW5HTD4odGhpcywgaXNHTEVT
MkNvbXBsaWFudCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvbW1vbi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb21t
b24uY3BwCmluZGV4IDg4ZjliMjYzNWIxMjQwNjBiZjk0ZjNkYTU0YWM0MGYwNTdkNDIwYWUuLjJi
OWNhNGQyMDUzNjhlYjAxYmM3ZDI3ZGU4ZWFkMzk4YTNhODc4YTUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5H
TENvbW1vbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Blbmds
L0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29tbW9uLmNwcApAQCAtMTE4LDcgKzExOCw3IEBAIHZv
aWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnZhbGlkYXRlRGVwdGhTdGVuY2lsKGNvbnN0IGNo
YXIqIHBhY2tlZERlcHRoU3RlbmNpCiB7CiAgICAgYXV0byBhdHRycyA9IGNvbnRleHRBdHRyaWJ1
dGVzKCk7CiAKLSAgICBFeHRlbnNpb25zR0wmIGV4dGVuc2lvbnMgPSBnZXRFeHRlbnNpb25zKCk7
CisgICAgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uJiBleHRlbnNpb25zID0gZ2V0RXh0ZW5zaW9u
cygpOwogICAgIGlmIChhdHRycy5zdGVuY2lsKSB7CiAgICAgICAgIGlmIChleHRlbnNpb25zLnN1
cHBvcnRzKHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvbikpIHsKICAgICAgICAgICAgIGV4dGVu
c2lvbnMuZW5zdXJlRW5hYmxlZChwYWNrZWREZXB0aFN0ZW5jaWxFeHRlbnNpb24pOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMRVMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Bl
bmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMRVMuY3BwCmluZGV4IGJhYWJkZTA3OTE0NjVmM2Y4
M2U2NmZmMjkwZWExNGVjMTg2YjI3ZDQuLmFkNjU0ZTljOTU2OTRhMzkwODBhNjJhNzgxOWMwMGE3
ZWMxNTE2YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29w
ZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEVTLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xFUy5jcHAKQEAg
LTI2Nyw3ICsyNjcsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjbGVhckRlcHRo
KEdDR0xjbGFtcGYgZGVwdGgpCiB9CiAKICNpZiAhUExBVEZPUk0oR1RLKQotRXh0ZW5zaW9uc0dM
JiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0RXh0ZW5zaW9ucygpCitFeHRlbnNpb25zR0xP
cGVuR0xDb21tb24mIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRFeHRlbnNpb25zKCkKIHsK
ICAgICBpZiAoIW1fZXh0ZW5zaW9ucykKICAgICAgICAgbV9leHRlbnNpb25zID0gbWFrZVVuaXF1
ZTxFeHRlbnNpb25zR0xPcGVuR0xFUz4odGhpcywgaXNHTEVTMkNvbXBsaWFudCgpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0Nv
bnRleHRHTFRleHR1cmVNYXBwZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlci5jcHAKaW5kZXggYzJmNGEy
MzYxYTBhZjcxM2UxZTQ2ZjQwYTQxNmQ0YWNkYzBmNTI5Zi4uN2MzZDIxYjViYTBjOWIyNzI2ZWJj
NTRkMzQwMjI4N2MwZTYzNmE2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dEdM
VGV4dHVyZU1hcHBlci5jcHAKQEAgLTQ1MSw3ICs0NTEsNyBAQCBHQ0dMZW51bSBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6ZHJhd2luZ0J1ZmZlclRleHR1cmVUYXJnZXQoKQogI2VuZGlmCiAKICNp
ZiBQTEFURk9STShHVEspICYmICFVU0UoQU5HTEUpCi1FeHRlbnNpb25zR0wmIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjpnZXRFeHRlbnNpb25zKCkKK0V4dGVuc2lvbnNHTE9wZW5HTENvbW1vbiYg
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEV4dGVuc2lvbnMoKQogewogICAgIGlmICghbV9l
eHRlbnNpb25zKSB7CiAjaWYgVVNFKE9QRU5HTF9FUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5tZXNzYWdlcy5p
biBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRl
eHRHTC5tZXNzYWdlcy5pbgppbmRleCAxOTE1MWJkMGNhMTM5YjU3OTgwYTYzMDZmM2E3NGU2MTgz
ZDExOTdhLi45NzdmNWYxMWM4ZWMxOWQ5YzU3YzdiZGMyOTZhYTVmYmRkYmQ0NTlmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0wubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNz
L1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLm1lc3NhZ2VzLmluCkBAIC0yNzQsMTYgKzI3NCwxMSBA
QCBtZXNzYWdlcyAtPiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTCBOb3RSZWZDb3VudGVkIHsKICAg
ICB2b2lkIFVuaWZvcm1CbG9ja0JpbmRpbmcodWludDMyX3QgcHJvZ3JhbSwgdWludDMyX3QgdW5p
Zm9ybUJsb2NrSW5kZXgsIHVpbnQzMl90IHVuaWZvcm1CbG9ja0JpbmRpbmcpCiAgICAgdm9pZCBH
ZXRBY3RpdmVVbmlmb3JtQmxvY2tpdih1aW50MzJfdCBwcm9ncmFtLCB1aW50MzJfdCB1bmlmb3Jt
QmxvY2tJbmRleCwgdWludDMyX3QgcG5hbWUsIHVpbnQ2NF90IHBhcmFtc1NpemUpIC0+IChJUEM6
OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+IHBhcmFtcykgU3luY2hyb25vdXMKICAgICB2b2lkIEdl
dEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIoKSAtPiAoaW50MzJfdCByZXR1cm5WYWx1ZSkgU3luY2hy
b25vdXMKLSAgICB2b2lkIEJsaXRGcmFtZWJ1ZmZlckFOR0xFKGludDMyX3Qgc3JjWDAsIGludDMy
X3Qgc3JjWTAsIGludDMyX3Qgc3JjWDEsIGludDMyX3Qgc3JjWTEsIGludDMyX3QgZHN0WDAsIGlu
dDMyX3QgZHN0WTAsIGludDMyX3QgZHN0WDEsIGludDMyX3QgZHN0WTEsIHVpbnQzMl90IG1hc2ss
IHVpbnQzMl90IGZpbHRlcikKLSAgICB2b2lkIFJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBs
ZUFOR0xFKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBzYW1wbGVzLCB1aW50MzJfdCBpbnRlcm5h
bGZvcm1hdCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQpCiAgICAgdm9pZCBDcmVhdGVW
ZXJ0ZXhBcnJheU9FUygpIC0+ICh1aW50MzJfdCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKICAg
ICB2b2lkIERlbGV0ZVZlcnRleEFycmF5T0VTKHVpbnQzMl90IGFyZzApCiAgICAgdm9pZCBJc1Zl
cnRleEFycmF5T0VTKHVpbnQzMl90IGFyZzApIC0+IChib29sIHJldHVyblZhbHVlKSBTeW5jaHJv
bm91cwogICAgIHZvaWQgQmluZFZlcnRleEFycmF5T0VTKHVpbnQzMl90IGFyZzApCiAgICAgdm9p
ZCBHZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUodWludDMyX3QgYXJnMCkgLT4gKFN0cmlu
ZyByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKLSAgICB2b2lkIEluc2VydEV2ZW50TWFya2VyRVhU
KFN0cmluZyBhcmcwKQotICAgIHZvaWQgUHVzaEdyb3VwTWFya2VyRVhUKFN0cmluZyBhcmcwKQot
ICAgIHZvaWQgUG9wR3JvdXBNYXJrZXJFWFQoKQogICAgIHZvaWQgRHJhd0J1ZmZlcnNFWFQoSVBD
OjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdD4gYnVmcykKICAgICB2b2lkIERyYXdBcnJheXNJbnN0
YW5jZWRBTkdMRSh1aW50MzJfdCBtb2RlLCBpbnQzMl90IGZpcnN0LCBpbnQzMl90IGNvdW50LCBp
bnQzMl90IHByaW1jb3VudCkKICAgICB2b2lkIERyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKHVp
bnQzMl90IG1vZGUsIGludDMyX3QgY291bnQsIHVpbnQzMl90IHR5cGUsIHVpbnQ2NF90IG9mZnNl
dCwgaW50MzJfdCBwcmltY291bnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xGdW5jdGlvbnNHZW5lcmF0ZWQuaCBi
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRH
TEZ1bmN0aW9uc0dlbmVyYXRlZC5oCmluZGV4IDJlZDBmNTg3Y2UwNmM3M2U2NWY4MGQ0ZjZmNTY3
MDY1N2IxZjNkNjUuLjE3NjQ4NzUzNDg4ZjRiMGIzYTVlNjBlNzkyZmVmZTdhODJiMjFlNTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGlj
c0NvbnRleHRHTEZ1bmN0aW9uc0dlbmVyYXRlZC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTEZ1bmN0aW9uc0dlbmVyYXRlZC5o
CkBAIC0xMTE4LDE0ICsxMTE4LDYgQEAKICAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQt
PmdldEV4dGVuc2lvbnMoKS5nZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJCKCk7CiAgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKHJldHVyblZhbHVlKTsKICAgICB9Ci0gICAgdm9pZCBibGl0RnJhbWVi
dWZmZXJBTkdMRShpbnQzMl90IHNyY1gwLCBpbnQzMl90IHNyY1kwLCBpbnQzMl90IHNyY1gxLCBp
bnQzMl90IHNyY1kxLCBpbnQzMl90IGRzdFgwLCBpbnQzMl90IGRzdFkwLCBpbnQzMl90IGRzdFgx
LCBpbnQzMl90IGRzdFkxLCB1aW50MzJfdCBtYXNrLCB1aW50MzJfdCBmaWx0ZXIpCi0gICAgewot
ICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5ibGl0RnJhbWVidWZmZXJBTkdMRShz
cmNYMCwgc3JjWTAsIHNyY1gxLCBzcmNZMSwgZHN0WDAsIGRzdFkwLCBkc3RYMSwgZHN0WTEsIG1h
c2ssIGZpbHRlcik7Ci0gICAgfQotICAgIHZvaWQgcmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2Ft
cGxlQU5HTEUodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IHNhbXBsZXMsIHVpbnQzMl90IGludGVy
bmFsZm9ybWF0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCkKLSAgICB7Ci0gICAgICAg
IG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBs
ZUFOR0xFKHRhcmdldCwgc2FtcGxlcywgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQpOwot
ICAgIH0KICAgICB2b2lkIGNyZWF0ZVZlcnRleEFycmF5T0VTKENvbXBsZXRpb25IYW5kbGVyPHZv
aWQodWludDMyX3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogICAgIHsKICAgICAgICAgUGxhdGZv
cm1HTE9iamVjdCByZXR1cm5WYWx1ZSA9IHsgfTsKQEAgLTExNTIsMTggKzExNDQsNiBAQAogICAg
ICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmdldFRyYW5zbGF0
ZWRTaGFkZXJTb3VyY2VBTkdMRShhcmcwKTsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RG
TW92ZShyZXR1cm5WYWx1ZSkpOwogICAgIH0KLSAgICB2b2lkIGluc2VydEV2ZW50TWFya2VyRVhU
KFN0cmluZyYmIGFyZzApCi0gICAgewotICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMo
KS5pbnNlcnRFdmVudE1hcmtlckVYVChhcmcwKTsKLSAgICB9Ci0gICAgdm9pZCBwdXNoR3JvdXBN
YXJrZXJFWFQoU3RyaW5nJiYgYXJnMCkKLSAgICB7Ci0gICAgICAgIG1fY29udGV4dC0+Z2V0RXh0
ZW5zaW9ucygpLnB1c2hHcm91cE1hcmtlckVYVChhcmcwKTsKLSAgICB9Ci0gICAgdm9pZCBwb3BH
cm91cE1hcmtlckVYVCgpCi0gICAgewotICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMo
KS5wb3BHcm91cE1hcmtlckVYVCgpOwotICAgIH0KICAgICB2b2lkIGRyYXdCdWZmZXJzRVhUKElQ
Qzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+JiYgYnVmcykKICAgICB7CiAgICAgICAgIG1fY29u
dGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmRyYXdCdWZmZXJzRVhUKG1ha2VHQ0dMU3BhbihyZWludGVy
cHJldF9jYXN0PGNvbnN0IEdDR0xlbnVtKj4oYnVmcy5kYXRhKCkpLCBidWZzLnNpemUoKSkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuaAppbmRleCBhNWE2ZjdmZWMyMDA1
OWM3Mzg1NGMwNmFiNTk1NGU4YmY1YTdjOThhLi5lNTAxYmRiMjExZmM5NzNlNWY1Nzk5MmJhMDBj
ZTliNjExMTdmNzY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuaApA
QCAtMzEzLDU2ICszMTMsMTYgQEAgcHVibGljOgogICAgIHZvaWQgdW5pZm9ybUJsb2NrQmluZGlu
ZyhQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0x1aW50IHVuaWZvcm1CbG9ja0luZGV4LCBH
Q0dMdWludCB1bmlmb3JtQmxvY2tCaW5kaW5nKSBmaW5hbDsKICAgICB2b2lkIGdldEFjdGl2ZVVu
aWZvcm1CbG9ja2l2KEdDR0x1aW50IHByb2dyYW0sIEdDR0x1aW50IHVuaWZvcm1CbG9ja0luZGV4
LCBHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGludD4gcGFyYW1zKSBmaW5hbDsKICAgICBH
Q0dMaW50IGdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIoKSBmaW5hbDsKLSAgICB2b2lkIGJsaXRG
cmFtZWJ1ZmZlckFOR0xFKEdDR0xpbnQgc3JjWDAsIEdDR0xpbnQgc3JjWTAsIEdDR0xpbnQgc3Jj
WDEsIEdDR0xpbnQgc3JjWTEsIEdDR0xpbnQgZHN0WDAsIEdDR0xpbnQgZHN0WTAsIEdDR0xpbnQg
ZHN0WDEsIEdDR0xpbnQgZHN0WTEsIEdDR0xiaXRmaWVsZCBtYXNrLCBHQ0dMZW51bSBmaWx0ZXIp
IGZpbmFsOwotICAgIHZvaWQgcmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5HTEUoR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWkgc2FtcGxlcywgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQs
IEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkgZmluYWw7CiAgICAgUGxhdGZvcm1H
TE9iamVjdCBjcmVhdGVWZXJ0ZXhBcnJheU9FUygpIGZpbmFsOwogICAgIHZvaWQgZGVsZXRlVmVy
dGV4QXJyYXlPRVMoUGxhdGZvcm1HTE9iamVjdCBhcmcwKSBmaW5hbDsKICAgICBHQ0dMYm9vbGVh
biBpc1ZlcnRleEFycmF5T0VTKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkgZmluYWw7CiAgICAgdm9p
ZCBiaW5kVmVydGV4QXJyYXlPRVMoUGxhdGZvcm1HTE9iamVjdCBhcmcwKSBmaW5hbDsKICAgICBT
dHJpbmcgZ2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFKFBsYXRmb3JtR0xPYmplY3QgYXJn
MCkgZmluYWw7Ci0gICAgdm9pZCBpbnNlcnRFdmVudE1hcmtlckVYVChjb25zdCBTdHJpbmcmIGFy
ZzApIGZpbmFsOwotICAgIHZvaWQgcHVzaEdyb3VwTWFya2VyRVhUKGNvbnN0IFN0cmluZyYgYXJn
MCkgZmluYWw7Ci0gICAgdm9pZCBwb3BHcm91cE1hcmtlckVYVCgpIGZpbmFsOwogICAgIHZvaWQg
ZHJhd0J1ZmZlcnNFWFQoR0NHTFNwYW48Y29uc3QgR0NHTGVudW0+IGJ1ZnMpIGZpbmFsOwogICAg
IHZvaWQgZHJhd0FycmF5c0luc3RhbmNlZEFOR0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xpbnQgZmly
c3QsIEdDR0xzaXplaSBjb3VudCwgR0NHTHNpemVpIHByaW1jb3VudCkgZmluYWw7CiAgICAgdm9p
ZCBkcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMc2l6ZWkgY291
bnQsIEdDR0xlbnVtIHR5cGUsIEdDR0x2b2lkcHRyIG9mZnNldCwgR0NHTHNpemVpIHByaW1jb3Vu
dCkgZmluYWw7CiAgICAgdm9pZCB2ZXJ0ZXhBdHRyaWJEaXZpc29yQU5HTEUoR0NHTHVpbnQgaW5k
ZXgsIEdDR0x1aW50IGRpdmlzb3IpIGZpbmFsOwogICAgIHZvaWQgZ2V0SW50ZXJuYWxmb3JtYXRp
dihHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMZW51bSBwbmFt
ZSwgR0NHTFNwYW48R0NHTGludD4gcGFyYW1zKSBmaW5hbDsKLSAgICB2b2lkIHJlYWRQaXhlbHNS
b2J1c3RBTkdMRShHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6
ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZT
aXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHNpemVpKiBjb2x1bW5zLCBHQ0dMc2l6ZWkqIHJv
d3MsIEdDR0x2b2lkKiBwaXhlbHMpIGZpbmFsOwotICAgIHZvaWQgdGV4UGFyYW1ldGVyZnZSb2J1
c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6
ZSwgY29uc3QgR0NHTGZsb2F0KiBwYXJhbXMpIGZpbmFsOwotICAgIHZvaWQgdGV4UGFyYW1ldGVy
aXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkg
YnVmU2l6ZSwgY29uc3QgR0NHTGludCogcGFyYW1zKSBmaW5hbDsKLSAgICB2b2lkIGdldFF1ZXJ5
aXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkg
YnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykgZmluYWw7Ci0gICAg
dm9pZCBnZXRRdWVyeU9iamVjdHVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IGlkLCBHQ0dMZW51bSBw
bmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMdWludCogcGFy
YW1zKSBmaW5hbDsKLSAgICB2b2lkIGdldEJ1ZmZlclBvaW50ZXJ2Um9idXN0QU5HTEUoR0NHTGVu
dW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSog
bGVuZ3RoLCBHQ0dMdm9pZCoqIHBhcmFtcykgZmluYWw7Ci0gICAgdm9pZCBnZXRWZXJ0ZXhBdHRy
aWJJaXZSb2J1c3RBTkdMRShHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXpl
aSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1zKSBmaW5hbDsKLSAg
ICB2b2lkIGdldFZlcnRleEF0dHJpYkl1aXZSb2J1c3RBTkdMRShHQ0dMdWludCBpbmRleCwgR0NH
TGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHVp
bnQqIHBhcmFtcykgZmluYWw7Ci0gICAgdm9pZCBnZXRVbmlmb3JtdWl2Um9idXN0QU5HTEUoR0NH
THVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xz
aXplaSogbGVuZ3RoLCBHQ0dMdWludCogcGFyYW1zKSBmaW5hbDsKLSAgICB2b2lkIGdldEJ1ZmZl
clBhcmFtZXRlcmk2NHZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1l
LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQ2NCogcGFyYW1z
KSBmaW5hbDsKLSAgICB2b2lkIHNhbXBsZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0x1aW50
IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGlu
dCogcGFyYW0pIGZpbmFsOwotICAgIHZvaWQgc2FtcGxlclBhcmFtZXRlcmZ2Um9idXN0QU5HTEUo
R0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25z
dCBHQ0dMZmxvYXQqIHBhcmFtKSBmaW5hbDsKLSAgICB2b2lkIGdldFNhbXBsZXJQYXJhbWV0ZXJp
dlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkg
YnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykgZmluYWw7Ci0gICAg
dm9pZCBnZXRTYW1wbGVyUGFyYW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBH
Q0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dM
ZmxvYXQqIHBhcmFtcykgZmluYWw7Ci0gICAgdm9pZCBnZXRGcmFtZWJ1ZmZlclBhcmFtZXRlcml2
Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1
ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpIGZpbmFsOwotICAgIHZv
aWQgZ2V0UHJvZ3JhbUludGVyZmFjZWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NH
TGVudW0gcHJvZ3JhbUludGVyZmFjZSwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXpl
LCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1zKSBmaW5hbDsKLSAgICB2b2lkIGdl
dEJvb2xlYW5pX3ZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0x1aW50IGluZGV4LCBH
Q0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xib29sZWFuKiBkYXRhKSBm
aW5hbDsgLy8gTk9MSU5UCi0gICAgdm9pZCBnZXRNdWx0aXNhbXBsZWZ2Um9idXN0QU5HTEUoR0NH
TGVudW0gcG5hbWUsIEdDR0x1aW50IGluZGV4LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVp
KiBsZW5ndGgsIEdDR0xmbG9hdCogdmFsKSBmaW5hbDsKLSAgICB2b2lkIGdldFRleExldmVsUGFy
YW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xl
bnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQq
IHBhcmFtcykgZmluYWw7Ci0gICAgdm9pZCBnZXRUZXhMZXZlbFBhcmFtZXRlcmZ2Um9idXN0QU5H
TEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNp
emVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMZmxvYXQqIHBhcmFtcykgZmluYWw7
Ci0gICAgdm9pZCBnZXRQb2ludGVydlJvYnVzdEFOR0xFUm9idXN0QU5HTEUoR0NHTGVudW0gcG5h
bWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHZvaWQqKiBwYXJh
bXMpIGZpbmFsOwotICAgIHZvaWQgZ2V0blVuaWZvcm1mdlJvYnVzdEFOR0xFKEdDR0x1aW50IHBy
b2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxl
bmd0aCwgR0NHTGZsb2F0KiBwYXJhbXMpIGZpbmFsOwotICAgIHZvaWQgZ2V0blVuaWZvcm1pdlJv
YnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBi
dWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1zKSBmaW5hbDsKLSAgICB2
b2lkIGdldG5Vbmlmb3JtdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBs
b2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMdWludCog
cGFyYW1zKSBmaW5hbDsKLSAgICB2b2lkIHRleFBhcmFtZXRlcklpdlJvYnVzdEFOR0xFKEdDR0xl
bnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dM
aW50KiBwYXJhbXMpIGZpbmFsOwotICAgIHZvaWQgdGV4UGFyYW1ldGVySXVpdlJvYnVzdEFOR0xF
KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25z
dCBHQ0dMdWludCogcGFyYW1zKSBmaW5hbDsKLSAgICB2b2lkIGdldFRleFBhcmFtZXRlcklpdlJv
YnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZT
aXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1zKSBmaW5hbDsKLSAgICB2b2lk
IGdldFRleFBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVt
IHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0x1aW50KiBw
YXJhbXMpIGZpbmFsOwotICAgIHZvaWQgc2FtcGxlclBhcmFtZXRlcklpdlJvYnVzdEFOR0xFKEdD
R0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3Qg
R0NHTGludCogcGFyYW0pIGZpbmFsOwotICAgIHZvaWQgc2FtcGxlclBhcmFtZXRlckl1aXZSb2J1
c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNp
emUsIGNvbnN0IEdDR0x1aW50KiBwYXJhbSkgZmluYWw7Ci0gICAgdm9pZCBnZXRTYW1wbGVyUGFy
YW1ldGVySWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdD
R0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1zKSBmaW5h
bDsKLSAgICB2b2lkIGdldFNhbXBsZXJQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQg
c2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxl
bmd0aCwgR0NHTHVpbnQqIHBhcmFtcykgZmluYWw7Ci0gICAgdm9pZCBnZXRRdWVyeU9iamVjdGl2
Um9idXN0QU5HTEUoR0NHTHVpbnQgaWQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6
ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykgZmluYWw7Ci0gICAgdm9pZCBn
ZXRRdWVyeU9iamVjdGk2NHZSb2J1c3RBTkdMRShHQ0dMdWludCBpZCwgR0NHTGVudW0gcG5hbWUs
IEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludDY0KiBwYXJhbXMp
IGZpbmFsOwotICAgIHZvaWQgZ2V0UXVlcnlPYmplY3R1aTY0dlJvYnVzdEFOR0xFKEdDR0x1aW50
IGlkLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3Ro
LCBHQ0dMdWludDY0KiBwYXJhbXMpIGZpbmFsOwogICAgIHZvaWQgbXVsdGlEcmF3QXJyYXlzQU5H
TEUoR0NHTGVudW0gbW9kZSwgR0NHTFNwYW48Y29uc3QgR0NHTGludD4gZmlyc3RzLCBHQ0dMU3Bh
bjxjb25zdCBHQ0dMc2l6ZWk+IGNvdW50cywgR0NHTHNpemVpIGRyYXdjb3VudCkgZmluYWw7CiAg
ICAgdm9pZCBtdWx0aURyYXdBcnJheXNJbnN0YW5jZWRBTkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dM
U3Bhbjxjb25zdCBHQ0dMaW50PiBmaXJzdHMsIEdDR0xTcGFuPGNvbnN0IEdDR0xzaXplaT4gY291
bnRzLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMc2l6ZWk+IGluc3RhbmNlQ291bnRzLCBHQ0dMc2l6ZWkg
ZHJhd2NvdW50KSBmaW5hbDsKICAgICB2b2lkIG11bHRpRHJhd0VsZW1lbnRzQU5HTEUoR0NHTGVu
dW0gbW9kZSwgR0NHTFNwYW48Y29uc3QgR0NHTHNpemVpPiBjb3VudHMsIEdDR0xlbnVtIHR5cGUs
IEdDR0xTcGFuPGNvbnN0IEdDR0xpbnQ+IG9mZnNldHMsIEdDR0xzaXplaSBkcmF3Y291bnQpIGZp
bmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9S
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5RnVuY3Rpb25zR2VuZXJhdGVkLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eUZ1bmN0aW9uc0dlbmVyYXRlZC5jcHAKaW5kZXggODcxNWI0NDc1NDQzODE4ZjI2YWZlNmZi
ZmI1NDc2ODJlOTk3OTJiYy4uNTIzMTU5ODE0Zjg2NWEzNTMyNjBiNGU4MWQzNjU4YTViODRmMGEz
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5RnVuY3Rpb25zR2VuZXJhdGVkLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHlGdW5jdGlvbnNHZW5lcmF0ZWQuY3BwCkBAIC0xMzgwLDE2ICsxMzgwLDYgQEAgR0NHTGlu
dCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJC
KCkKICAgICByZXR1cm4gcmV0dXJuVmFsdWU7CiB9CiAKLXZvaWQgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6YmxpdEZyYW1lYnVmZmVyQU5HTEUoR0NHTGludCBzcmNYMCwgR0NHTGludCBz
cmNZMCwgR0NHTGludCBzcmNYMSwgR0NHTGludCBzcmNZMSwgR0NHTGludCBkc3RYMCwgR0NHTGlu
dCBkc3RZMCwgR0NHTGludCBkc3RYMSwgR0NHTGludCBkc3RZMSwgR0NHTGJpdGZpZWxkIG1hc2ss
IEdDR0xlbnVtIGZpbHRlcikKLXsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6QmxpdEZyYW1lYnVmZmVyQU5HTEUoc3JjWDAsIHNyY1kwLCBzcmNYMSwgc3JjWTEs
IGRzdFgwLCBkc3RZMCwgZHN0WDEsIGRzdFkxLCBtYXNrLCBmaWx0ZXIpLCBtX2dyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllcik7Ci19Ci0KLXZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6cmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMc2l6ZWkgc2FtcGxlcywgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0
aCwgR0NHTHNpemVpIGhlaWdodCkKLXsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6UmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5HTEUodGFyZ2V0LCBz
YW1wbGVzLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCksIG1fZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyKTsKLX0KLQogUGxhdGZvcm1HTE9iamVjdCBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpjcmVhdGVWZXJ0ZXhBcnJheU9FUygpCiB7CiAgICAgdWludDMyX3QgcmV0dXJu
VmFsdWUgPSB7IH07CkBAIC0xNDIxLDIxICsxNDExLDYgQEAgU3RyaW5nIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRShQbGF0Zm9ybUdM
T2IKICAgICByZXR1cm4gcmV0dXJuVmFsdWU7CiB9CiAKLXZvaWQgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6aW5zZXJ0RXZlbnRNYXJrZXJFWFQoY29uc3QgU3RyaW5nJiBhcmcwKQotewot
ICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJbnNlcnRFdmVudE1h
cmtlckVYVChhcmcwKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOwotfQotCi12b2lk
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnB1c2hHcm91cE1hcmtlckVYVChjb25zdCBT
dHJpbmcmIGFyZzApCi17Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OlB1c2hHcm91cE1hcmtlckVYVChhcmcwKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIpOwotfQotCi12b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnBvcEdyb3VwTWFy
a2VyRVhUKCkKLXsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
UG9wR3JvdXBNYXJrZXJFWFQoKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOwotfQot
CiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRyYXdCdWZmZXJzRVhUKEdDR0xT
cGFuPGNvbnN0IEdDR0xlbnVtPiBidWZzKQogewogICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpEcmF3QnVmZmVyc0VYVChJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQz
Ml90PihyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQzMl90Kj4oYnVmcy5kYXRhKSwgYnVmcy5i
dWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKQEAgLTE0ODUsMTgxICsx
NDYwLDYgQEAgdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjptdWx0aURyYXdFbGVt
ZW50c0luc3RhbmNlZEFOR0xFKEdDR0xlbnVtIG1vZGUKICAgICBzZW5kKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6TXVsdGlEcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRShtb2Rl
LCBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgaW50
MzJfdCo+KGNvdW50cy5kYXRhKSwgY291bnRzLmJ1ZlNpemUpLCB0eXBlLCBJUEM6OkFycmF5UmVm
ZXJlbmNlPGludDMyX3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgaW50MzJfdCo+KG9mZnNldHMu
ZGF0YSksIG9mZnNldHMuYnVmU2l6ZSksIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4ocmVp
bnRlcnByZXRfY2FzdDxjb25zdCBpbnQzMl90Kj4oaW5zdGFuY2VDb3VudHMuZGF0YSksIGluc3Rh
bmNlQ291bnRzLmJ1ZlNpemUpLCBkcmF3Y291bnQpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRp
Zmllcik7CiB9CiAKLXZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cmVhZFBpeGVs
c1JvYnVzdEFOR0xFKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xz
aXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1
ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMc2l6ZWkqIGNvbHVtbnMsIEdDR0xzaXplaSog
cm93cywgR0NHTHZvaWQqIHBpeGVscykKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12
b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnRleFBhcmFtZXRlcmZ2Um9idXN0QU5H
TEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNv
bnN0IEdDR0xmbG9hdCogcGFyYW1zKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZv
aWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4UGFyYW1ldGVyaXZSb2J1c3RBTkdM
RShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29u
c3QgR0NHTGludCogcGFyYW1zKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0UXVlcnlpdlJvYnVzdEFOR0xFKEdDR0xl
bnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkq
IGxlbmd0aCwgR0NHTGludCogcGFyYW1zKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0K
LXZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0UXVlcnlPYmplY3R1aXZSb2J1
c3RBTkdMRShHQ0dMdWludCBpZCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBH
Q0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHVpbnQqIHBhcmFtcykKLXsKLSAgICBub3RJbXBsZW1lbnRl
ZCgpOwotfQotCi12b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEJ1ZmZlclBv
aW50ZXJ2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNp
emVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMdm9pZCoqIHBhcmFtcykKLXsKLSAg
ICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OmdldFZlcnRleEF0dHJpYklpdlJvYnVzdEFOR0xFKEdDR0x1aW50IGluZGV4LCBHQ0dMZW51
bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBw
YXJhbXMpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpnZXRWZXJ0ZXhBdHRyaWJJdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQg
aW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5n
dGgsIEdDR0x1aW50KiBwYXJhbXMpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9p
ZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRVbmlmb3JtdWl2Um9idXN0QU5HTEUo
R0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdD
R0xzaXplaSogbGVuZ3RoLCBHQ0dMdWludCogcGFyYW1zKQotewotICAgIG5vdEltcGxlbWVudGVk
KCk7Ci19Ci0KLXZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0QnVmZmVyUGFy
YW1ldGVyaTY0dlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdD
R0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludDY0KiBwYXJhbXMpCi17
Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjpzYW1wbGVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBH
Q0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xpbnQqIHBhcmFtKQot
ewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6c2FtcGxlclBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwg
R0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMZmxvYXQqIHBhcmFt
KQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6Z2V0U2FtcGxlclBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2Ft
cGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0
aCwgR0NHTGludCogcGFyYW1zKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0U2FtcGxlclBhcmFtZXRlcmZ2Um9idXN0
QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXpl
LCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGZsb2F0KiBwYXJhbXMpCi17Ci0gICAgbm90SW1wbGVt
ZW50ZWQoKTsKLX0KLQotdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRGcmFt
ZWJ1ZmZlclBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBw
bmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJh
bXMpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpnZXRQcm9ncmFtSW50ZXJmYWNlaXZSb2J1c3RBTkdMRShHQ0dMdWludCBw
cm9ncmFtLCBHQ0dMZW51bSBwcm9ncmFtSW50ZXJmYWNlLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNp
emVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpCi17Ci0gICAg
bm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpnZXRCb29sZWFuaV92Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMdWludCBpbmRl
eCwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMYm9vbGVhbiogZGF0
YSkgLy8gTk9MSU5UCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRNdWx0aXNhbXBsZWZ2Um9idXN0QU5HTEUoR0NHTGVu
dW0gcG5hbWUsIEdDR0x1aW50IGluZGV4LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBs
ZW5ndGgsIEdDR0xmbG9hdCogdmFsKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZv
aWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VGV4TGV2ZWxQYXJhbWV0ZXJpdlJv
YnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gcG5hbWUs
IEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1zKQot
ewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6Z2V0VGV4TGV2ZWxQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdl
dCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dM
c2l6ZWkqIGxlbmd0aCwgR0NHTGZsb2F0KiBwYXJhbXMpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQo
KTsKLX0KLQotdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRQb2ludGVydlJv
YnVzdEFOR0xFUm9idXN0QU5HTEUoR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBH
Q0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHZvaWQqKiBwYXJhbXMpCi17Ci0gICAgbm90SW1wbGVtZW50
ZWQoKTsKLX0KLQotdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRuVW5pZm9y
bWZ2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNp
emVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMZmxvYXQqIHBhcmFtcykKLXsKLSAg
ICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OmdldG5Vbmlmb3JtaXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMaW50IGxv
Y2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBh
cmFtcykKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmdldG5Vbmlmb3JtdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3Jh
bSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3Ro
LCBHQ0dMdWludCogcGFyYW1zKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4UGFyYW1ldGVySWl2Um9idXN0QU5HTEUo
R0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0
IEdDR0xpbnQqIHBhcmFtcykKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnRleFBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRShH
Q0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3Qg
R0NHTHVpbnQqIHBhcmFtcykKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFRleFBhcmFtZXRlcklpdlJvYnVzdEFOR0xF
KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dM
c2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1zKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7
Ci19Ci0KLXZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VGV4UGFyYW1ldGVy
SXVpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXpl
aSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHVpbnQqIHBhcmFtcykKLXsKLSAgICBu
b3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OnNhbXBsZXJQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51
bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xpbnQqIHBhcmFtKQotewotICAg
IG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6c2FtcGxlclBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dM
ZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0x1aW50KiBwYXJhbSkKLXsK
LSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmdldFNhbXBsZXJQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVy
LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBH
Q0dMaW50KiBwYXJhbXMpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRTYW1wbGVyUGFyYW1ldGVySXVpdlJvYnVzdEFO
R0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwg
R0NHTHNpemVpKiBsZW5ndGgsIEdDR0x1aW50KiBwYXJhbXMpCi17Ci0gICAgbm90SW1wbGVtZW50
ZWQoKTsKLX0KLQotdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRRdWVyeU9i
amVjdGl2Um9idXN0QU5HTEUoR0NHTHVpbnQgaWQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkg
YnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykKLXsKLSAgICBub3RJ
bXBsZW1lbnRlZCgpOwotfQotCi12b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Omdl
dFF1ZXJ5T2JqZWN0aTY0dlJvYnVzdEFOR0xFKEdDR0x1aW50IGlkLCBHQ0dMZW51bSBwbmFtZSwg
R0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50NjQqIHBhcmFtcykK
LXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmdldFF1ZXJ5T2JqZWN0dWk2NHZSb2J1c3RBTkdMRShHQ0dMdWludCBpZCwgR0NH
TGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHVp
bnQ2NCogcGFyYW1zKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KIH0KIAogI2VuZGlm
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>418458</attachid>
            <date>2021-01-26 11:57:45 -0800</date>
            <delta_ts>2021-02-02 10:10:48 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-218896-20210126115741.patch</filename>
            <type>text/plain</type>
            <size>94995</size>
            <attacher name="Rini Patel">rini_patel</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcxODcyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTVjODZjNWYxYTAwZjdi
MDQ3NmIzYTQwYmI4YzA2NjBjNTMyNjczNC4uYWEyNTM2NzMyZmZjM2RmZjc1YTM4MjMyNjI5YzNm
NDFkYTc3NzYxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0MyBAQAorMjAyMS0wMS0yNSAgUmlu
aSBQYXRlbCAgPHJpbmlfcGF0ZWxAYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZSB1bnVzZWQg
ZnVuY3Rpb25zIGZyb20gR3JhcGhpY3NDb250ZXh0R0wgYW5kIEV4dGVuc2lvbnNHTAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE4ODk2CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVtb3ZlIHVudXNlZCBm
dW5jdGlvbnMgZnJvbSBHcmFwaGljc0NvbnRleHRHTCBhbmQgRXh0ZW5zaW9uc0dMCisgICAgICAg
IFRoZXkncmUgZGVhZCBjb2RlIGFuZCBtYWtlIGl0IGhhcmRlciB0byBpbXBsZW1lbnQgdGhlIEdQ
VSBQcm9jZXNzIHZlcnNpb24uCisKKyAgICAgICAgLSBJZiB0aGUgZnVuY3Rpb24gaXMgdW51c2Vk
LCByZW1vdmUgaXQgZnVsbHkKKyAgICAgICAgLSBJZiB0aGUgZnVuY3Rpb24gaXMgdW51c2VkIGlu
IFVTRShBTkdMRSkgV2ViR0wgcGFydCwgcmVtb3ZlIHRoZSBmdW5jdGlvbiBmcm9tIEdyYXBoaWNz
Q29udGV4dEdMIGFuZCBBTkdMRSBHcmFwaGljc0NvbnRleHRHTE9wZW5HTAorCisgICAgICAgICog
aHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL0V4dGVuc2lvbnNHTC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjpnZXRuVW5pZm9ybWl2RVhUKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjppc05WSURJ
QSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5QmFzZTo6aXNBTUQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eUJhc2U6OmlzSW50ZWwpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OmlzSW1hZ2luYXRpb24pOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6
OnZlbmRvcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5QmFzZTo6cmVxdWlyZXNCdWlsdEluRnVuY3Rpb25FbXVsYXRpb24pOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OnJl
cXVpcmVzUmVzdHJpY3RlZE1heGltdW1UZXh0dXJlU2l6ZSk6IERlbGV0ZWQuCisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRlbnNpb25zR0xBTkdMRS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6RXh0ZW5zaW9uc0dMQU5HTEUpOgor
ICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmluaXRpYWxpemVBdmFpbGFibGVF
eHRlbnNpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpibGl0RnJh
bWVidWZmZXJBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xB
TkdMRTo6cmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5HTEUpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6Omluc2VydEV2ZW50TWFya2VyRVhUKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpwdXNoR3JvdXBN
YXJrZXJFWFQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6
OnBvcEdyb3VwTWFya2VyRVhUKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lv
bnNHTEFOR0xFOjpyZWFkUGl4ZWxzUm9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OnRleFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OnRleFBhcmFtZXRlcml2
Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5H
TEU6OmdldFF1ZXJ5aXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpF
eHRlbnNpb25zR0xBTkdMRTo6Z2V0UXVlcnlPYmplY3R1aXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6Z2V0QnVmZmVyUG9pbnRlcnZS
b2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdM
RTo6Z2V0VmVydGV4QXR0cmliSWl2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldFZlcnRleEF0dHJpYkl1aXZSb2J1c3RBTkdMRSk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6Z2V0VW5pZm9y
bXVpdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNH
TEFOR0xFOjpnZXRCdWZmZXJQYXJhbWV0ZXJpNjR2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OnNhbXBsZXJQYXJhbWV0ZXJpdlJvYnVz
dEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpz
YW1wbGVyUGFyYW1ldGVyZnZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpFeHRlbnNpb25zR0xBTkdMRTo6Z2V0U2FtcGxlclBhcmFtZXRlcml2Um9idXN0QU5HTEUpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldFNhbXBsZXJQ
YXJhbWV0ZXJmdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVu
c2lvbnNHTEFOR0xFOjpnZXRGcmFtZWJ1ZmZlclBhcmFtZXRlcml2Um9idXN0QU5HTEUpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldFByb2dyYW1JbnRl
cmZhY2VpdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lv
bnNHTEFOR0xFOjpnZXRCb29sZWFuaV92Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldE11bHRpc2FtcGxlZnZSb2J1c3RBTkdMRSk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6Z2V0VGV4TGV2
ZWxQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4
dGVuc2lvbnNHTEFOR0xFOjpnZXRUZXhMZXZlbFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldFBvaW50ZXJ2Um9i
dXN0QU5HTEVSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNp
b25zR0xBTkdMRTo6Z2V0blVuaWZvcm1mdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpnZXRuVW5pZm9ybWl2Um9idXN0QU5HTEUpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldG5Vbmlmb3Jt
dWl2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dM
QU5HTEU6OnRleFBhcmFtZXRlcklpdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjp0ZXhQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldFRleFBhcmFt
ZXRlcklpdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lv
bnNHTEFOR0xFOjpnZXRUZXhQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OnNhbXBsZXJQYXJhbWV0ZXJJaXZSb2J1
c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6
c2FtcGxlclBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6Z2V0U2FtcGxlclBhcmFtZXRlcklpdlJvYnVzdEFOR0xF
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpnZXRTYW1w
bGVyUGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkV4dGVuc2lvbnNHTEFOR0xFOjpnZXRRdWVyeU9iamVjdGl2Um9idXN0QU5HTEUpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldFF1ZXJ5T2JqZWN0aTY0
dlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFO
R0xFOjpnZXRRdWVyeU9iamVjdHVpNjR2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6bWFya0xheWVyQ29tcG9zaXRl
ZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5H
TC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0w6OmJsaXRGcmFtZWJ1
ZmZlckFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5H
TDo6cmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5HTEUpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMOjppbnNlcnRFdmVudE1hcmtlckVYVCk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0w6OnB1c2hHcm91cE1h
cmtlckVYVCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0w6
OnBvcEdyb3VwTWFya2VyRVhUKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OnJlYWRQaXhlbHNSb2J1c3RBTkdMRSk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OnRleFBhcmFt
ZXRlcmZ2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9u
c0dMT3BlbkdMQ29tbW9uOjp0ZXhQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0UXVlcnlpdlJvYnVz
dEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTENv
bW1vbjo6Z2V0UXVlcnlPYmplY3R1aXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldEJ1ZmZlclBvaW50ZXJ2Um9idXN0
QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29t
bW9uOjpnZXRWZXJ0ZXhBdHRyaWJJaXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFZlcnRleEF0dHJpYkl1aXZSb2J1
c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xD
b21tb246OmdldFVuaWZvcm11aXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldEJ1ZmZlclBhcmFtZXRlcmk2NHZSb2J1
c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xD
b21tb246OnNhbXBsZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6c2FtcGxlclBhcmFtZXRlcmZ2Um9i
dXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdM
Q29tbW9uOjpnZXRTYW1wbGVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFNhbXBsZXJQYXJhbWV0
ZXJmdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNH
TE9wZW5HTENvbW1vbjo6Z2V0RnJhbWVidWZmZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0UHJv
Z3JhbUludGVyZmFjZWl2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRCb29sZWFuaV92Um9idXN0QU5HTEUpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRNdWx0
aXNhbXBsZWZ2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5z
aW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRUZXhMZXZlbFBhcmFtZXRlcml2Um9idXN0QU5HTEUpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRU
ZXhMZXZlbFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRQb2ludGVydlJvYnVzdEFOR0xFUm9idXN0
QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29t
bW9uOjpnZXRuVW5pZm9ybWZ2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRuVW5pZm9ybWl2Um9idXN0QU5HTEUpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRu
VW5pZm9ybXVpdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVu
c2lvbnNHTE9wZW5HTENvbW1vbjo6dGV4UGFyYW1ldGVySWl2Um9idXN0QU5HTEUpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjp0ZXhQYXJhbWV0
ZXJJdWl2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9u
c0dMT3BlbkdMQ29tbW9uOjpnZXRUZXhQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFRleFBhcmFt
ZXRlckl1aXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNp
b25zR0xPcGVuR0xDb21tb246OnNhbXBsZXJQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRSk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OnNhbXBsZXJQ
YXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0
ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRTYW1wbGVyUGFyYW1ldGVySWl2Um9idXN0QU5HTEUp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpn
ZXRTYW1wbGVyUGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0UXVlcnlPYmplY3RpdlJvYnVzdEFO
R0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTENvbW1v
bjo6Z2V0UXVlcnlPYmplY3RpNjR2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRRdWVyeU9iamVjdHVpNjR2Um9idXN0
QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRl
bnNpb25zR0xPcGVuR0xDb21tb24uaDoKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9w
ZW5HTENvbW1vbjo6aXNOVklESUEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9u
c0dMT3BlbkdMQ29tbW9uOjppc0FNRCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNp
b25zR0xPcGVuR0xDb21tb246OmlzSW50ZWwgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RXh0
ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjppc0ltYWdpbmF0aW9uIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6dmVuZG9yIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6cmVxdWlyZXNCdWlsdEluRnVuY3Rp
b25FbXVsYXRpb24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdM
Q29tbW9uOjpyZXF1aXJlc1Jlc3RyaWN0ZWRNYXhpbXVtVGV4dHVyZVNpemUgY29uc3QpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xFUy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xFUzo6YmxpdEZyYW1lYnVmZmVy
QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMRVM6
Omluc2VydEV2ZW50TWFya2VyRVhUKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVu
c2lvbnNHTE9wZW5HTEVTOjpwdXNoR3JvdXBNYXJrZXJFWFQpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMRVM6OnBvcEdyb3VwTWFya2VyRVhUKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdM
RVMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0wuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0xCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjpyZXNoYXBlRkJPcyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6Z2V0RXh0ZW5zaW9ucyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
b3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29tbW9uLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2YWxpZGF0ZURlcHRoU3RlbmNpbCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMRVMu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEV4dGVu
c2lvbnMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0NvbnRl
eHRHTFRleHR1cmVNYXBwZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OmdldEV4dGVuc2lvbnMpOgorCiAyMDIxLTAxLTI1ICBDaHJpcyBEdW1leiAgPGNk
dW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgYWRkIG1pc3NpbmcgaGVhZGVy
IGluY2x1ZGVzIHRvIGFkZHJlc3MgYnVpbGQgaXNzdWVzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBmZTVmNDcwMDg3
MDAxNGYyMWNmZWZlY2U2ZWRiMmMyNDk1NWYzNTcxLi44MGNlYTQxMGQ5OTkyMDgxZGQ1YTkyNGVh
Y2QwMTdlZWUzODM4MzE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDYyIEBACisyMDIxLTAxLTI1ICBS
aW5pIFBhdGVsICA8cmluaV9wYXRlbEBhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3ZlIHVudXNl
ZCBmdW5jdGlvbnMgZnJvbSBHcmFwaGljc0NvbnRleHRHTCBhbmQgRXh0ZW5zaW9uc0dMCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTg4OTYKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEdQVVByb2Nlc3Mv
Z3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wubWVzc2FnZXMuaW46CisgICAgICAgICog
R1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTEZ1bmN0aW9uc0dlbmVy
YXRlZC5oOgorICAgICAgICAoZ2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQik6CisgICAgICAgIChn
ZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUpOgorICAgICAgICAoYmxpdEZyYW1lYnVmZmVy
QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAocmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxl
QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoaW5zZXJ0RXZlbnRNYXJrZXJFWFQpOiBEZWxldGVk
LgorICAgICAgICAocHVzaEdyb3VwTWFya2VyRVhUKTogRGVsZXRlZC4KKyAgICAgICAgKHBvcEdy
b3VwTWFya2VyRVhUKTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGlj
cy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUZ1bmN0aW9uc0dlbmVyYXRl
ZC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJs
aXRGcmFtZWJ1ZmZlckFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6cmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5HTEUp
OiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjppbnNlcnRFdmVudE1hcmtlckVYVCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnB1c2hHcm91cE1hcmtlckVYVCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnBvcEdyb3VwTWFy
a2VyRVhUKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6cmVhZFBpeGVsc1JvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4UGFyYW1ldGVyZnZSb2J1c3RBTkdM
RSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OnRleFBhcmFtZXRlcml2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRRdWVyeWl2Um9idXN0QU5HTEUpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpn
ZXRRdWVyeU9iamVjdHVpdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0QnVmZmVyUG9pbnRlcnZSb2J1c3RBTkdM
RSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OmdldFZlcnRleEF0dHJpYklpdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VmVydGV4QXR0cmliSXVpdlJv
YnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6Z2V0VW5pZm9ybXVpdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0QnVmZmVyUGFyYW1ldGVy
aTY0dlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6c2FtcGxlclBhcmFtZXRlcml2Um9idXN0QU5HTEUpOiBEZWxldGVk
LgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpzYW1wbGVy
UGFyYW1ldGVyZnZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFNhbXBsZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xF
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6Z2V0U2FtcGxlclBhcmFtZXRlcmZ2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRGcmFtZWJ1ZmZlclBhcmFt
ZXRlcml2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpnZXRQcm9ncmFtSW50ZXJmYWNlaXZSb2J1c3RBTkdMRSk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Omdl
dEJvb2xlYW5pX3ZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldE11bHRpc2FtcGxlZnZSb2J1c3RBTkdMRSk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Omdl
dFRleExldmVsUGFyYW1ldGVyaXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFRleExldmVsUGFyYW1ldGVyZnZS
b2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmdldFBvaW50ZXJ2Um9idXN0QU5HTEVSb2J1c3RBTkdMRSk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldG5Vbmlm
b3JtZnZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OmdldG5Vbmlmb3JtaXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldG5Vbmlmb3Jt
dWl2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5Ojp0ZXhQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnRleFBhcmFtZXRl
ckl1aXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OmdldFRleFBhcmFtZXRlcklpdlJvYnVzdEFOR0xFKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VGV4
UGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c2FtcGxlclBhcmFtZXRlcklpdlJvYnVzdEFOR0xF
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6c2FtcGxlclBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFNhbXBsZXJQYXJhbWV0ZXJJ
aXZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmdldFNhbXBsZXJQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRR
dWVyeU9iamVjdGl2Um9idXN0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRRdWVyeU9iamVjdGk2NHZSb2J1c3RBTkdMRSk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmdldFF1ZXJ5T2JqZWN0dWk2NHZSb2J1c3RBTkdMRSk6IERlbGV0ZWQuCisKIDIwMjEtMDEtMjUg
IENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCBh
ZGQgbWlzc2luZyBoZWFkZXIgaW5jbHVkZXMgdG8gYWRkcmVzcyBidWlsZCBpc3N1ZXMuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2UuY3BwCmluZGV4IDU3OGUwMjE4MGM0NmYzZGJjNGZmZmQwYWYwYzM1M2YzOTQ4MjBkYmUu
LjBkMjE3NGNmYzM2ZGYzZGI3NDM4ZjBlOTQyYWY3MmY1MWYzNmRiNTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2Uu
Y3BwCkBAIC03MzUsMTAgKzczNSw2IEBAIHN0ZDo6dW5pcXVlX3B0cjxXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlPiBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpjcmVhdGUoQ2FuCiAgICAgICAg
IHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIGF1dG8mIGV4dGVuc2lvbnMgPSBjb250ZXh0
LT5nZXRFeHRlbnNpb25zKCk7Ci0gICAgaWYgKGV4dGVuc2lvbnMuc3VwcG9ydHMoIkdMX0VYVF9k
ZWJ1Z19tYXJrZXIiX3MpKQotICAgICAgICBleHRlbnNpb25zLnB1c2hHcm91cE1hcmtlckVYVCgi
V2ViR0xSZW5kZXJpbmdDb250ZXh0Il9zKTsKLQogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlPiByZW5kZXJpbmdDb250ZXh0OwogI2lmIEVOQUJMRShXRUJHTDIp
CiAgICAgaWYgKHR5cGUgPT0gV2ViR0xWZXJzaW9uOjpXZWJHTDIpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9FeHRlbnNpb25zR0wuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0V4dGVuc2lvbnNHTC5oCmluZGV4IGQ1MDIxZGQzMzRlZGY5
MWEzNDIzMGJlMDE2ODkyMDc0MjQ5ZWIwZTguLmFjOGM4ODkzMjM0NTY3MmU5ZDA1M2ZjZDk3YTIy
ZGE4ZTk5MDVlOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0V4dGVuc2lvbnNHTC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0V4
dGVuc2lvbnNHTC5oCkBAIC0yODEsMTIgKzI4MSw2IEBAIHB1YmxpYzoKICAgICAvLyBleHRlcm5h
bGx5LgogICAgIHZpcnR1YWwgR0NHTGludCBnZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJCKCkgPSAw
OwogCi0gICAgLy8gR0xfQU5HTEVfZnJhbWVidWZmZXJfYmxpdAotICAgIHZpcnR1YWwgdm9pZCBi
bGl0RnJhbWVidWZmZXJBTkdMRShHQ0dMaW50IHNyY1gwLCBHQ0dMaW50IHNyY1kwLCBHQ0dMaW50
IHNyY1gxLCBHQ0dMaW50IHNyY1kxLCBHQ0dMaW50IGRzdFgwLCBHQ0dMaW50IGRzdFkwLCBHQ0dM
aW50IGRzdFgxLCBHQ0dMaW50IGRzdFkxLCBHQ0dMYml0ZmllbGQgbWFzaywgR0NHTGVudW0gZmls
dGVyKSA9IDA7Ci0KLSAgICAvLyBHTF9BTkdMRV9mcmFtZWJ1ZmZlcl9tdWx0aXNhbXBsZQotICAg
IHZpcnR1YWwgdm9pZCByZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVBTkdMRShHQ0dMZW51
bSB0YXJnZXQsIEdDR0xzaXplaSBzYW1wbGVzLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NH
THNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KSA9IDA7Ci0KICAgICAvLyBHTF9PRVNfdmVy
dGV4X2FycmF5X29iamVjdAogICAgIHZpcnR1YWwgUGxhdGZvcm1HTE9iamVjdCBjcmVhdGVWZXJ0
ZXhBcnJheU9FUygpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlVmVydGV4QXJyYXlPRVMo
UGxhdGZvcm1HTE9iamVjdCkgPSAwOwpAQCAtMjk2LDExICsyOTAsNiBAQCBwdWJsaWM6CiAgICAg
Ly8gR0xfQU5HTEVfdHJhbnNsYXRlZF9zaGFkZXJfc291cmNlCiAgICAgdmlydHVhbCBTdHJpbmcg
Z2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFKFBsYXRmb3JtR0xPYmplY3QpID0gMDsKIAot
ICAgIC8vIEdMX0VYVF9kZWJ1Z19tYXJrZXIKLSAgICB2aXJ0dWFsIHZvaWQgaW5zZXJ0RXZlbnRN
YXJrZXJFWFQoY29uc3QgU3RyaW5nJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBwdXNoR3JvdXBN
YXJrZXJFWFQoY29uc3QgU3RyaW5nJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBwb3BHcm91cE1h
cmtlckVYVCgpID0gMDsKLQogICAgIC8vIEdMX0FSQl9kcmF3X2J1ZmZlcnMgLyBHTF9FWFRfZHJh
d19idWZmZXJzCiAgICAgdmlydHVhbCB2b2lkIGRyYXdCdWZmZXJzRVhUKEdDR0xTcGFuPGNvbnN0
IEdDR0xlbnVtPiBidWZzKSA9IDA7CiAKQEAgLTMwOSw0NyArMjk4LDYgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgdm9pZCBkcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRShHQ0dMZW51bSBtb2RlLCBH
Q0dMc2l6ZWkgY291bnQsIEdDR0xlbnVtIHR5cGUsIEdDR0x2b2lkcHRyIG9mZnNldCwgR0NHTHNp
emVpIHByaW1jb3VudCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB2ZXJ0ZXhBdHRyaWJEaXZpc29y
QU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0x1aW50IGRpdmlzb3IpID0gMDsKIAotICAgIC8vIEdM
X0FOR0xFX3JvYnVzdF9jbGllbnRfbWVtb3J5Ci0gICAgdmlydHVhbCB2b2lkIHJlYWRQaXhlbHNS
b2J1c3RBTkdMRShHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6
ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZT
aXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHNpemVpKiBjb2x1bW5zLCBHQ0dMc2l6ZWkqIHJv
d3MsIEdDR0x2b2lkKiBwaXhlbHMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgdGV4UGFyYW1ldGVy
ZnZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkg
YnVmU2l6ZSwgY29uc3QgR0NHTGZsb2F0KiBwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQg
dGV4UGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1l
LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGludCogcGFyYW1zKSA9IDA7Ci0KLSAgICB2
aXJ0dWFsIHZvaWQgZ2V0UXVlcnlpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVu
dW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCog
cGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldFF1ZXJ5T2JqZWN0dWl2Um9idXN0QU5H
TEUoR0NHTHVpbnQgaWQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNp
emVpKiBsZW5ndGgsIEdDR0x1aW50KiBwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0
QnVmZmVyUG9pbnRlcnZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1l
LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0x2b2lkKiogcGFyYW1z
KSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldFZlcnRleEF0dHJpYklpdlJvYnVzdEFOR0xFKEdD
R0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXpl
aSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0VmVy
dGV4QXR0cmliSXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwg
R0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMdWludCogcGFyYW1zKSA9
IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldFVuaWZvcm11aXZSb2J1c3RBTkdMRShHQ0dMdWludCBw
cm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBs
ZW5ndGgsIEdDR0x1aW50KiBwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0QnVmZmVy
UGFyYW1ldGVyaTY0dlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUs
IEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludDY0KiBwYXJhbXMp
ID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgc2FtcGxlclBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NH
THVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBH
Q0dMaW50KiBwYXJhbSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBzYW1wbGVyUGFyYW1ldGVyZnZS
b2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1
ZlNpemUsIGNvbnN0IEdDR0xmbG9hdCogcGFyYW0pID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0
U2FtcGxlclBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0g
cG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFy
YW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldFNhbXBsZXJQYXJhbWV0ZXJmdlJvYnVzdEFO
R0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwg
R0NHTHNpemVpKiBsZW5ndGgsIEdDR0xmbG9hdCogcGFyYW1zKSA9IDA7Ci0KLSAgICB2aXJ0dWFs
IHZvaWQgZ2V0RnJhbWVidWZmZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdl
dCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwg
R0NHTGludCogcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldFByb2dyYW1JbnRlcmZh
Y2VpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xlbnVtIHByb2dyYW1JbnRlcmZh
Y2UsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgs
IEdDR0xpbnQqIHBhcmFtcykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRCb29sZWFuaV92Um9i
dXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMdWludCBpbmRleCwgR0NHTHNpemVpIGJ1ZlNp
emUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMYm9vbGVhbiogZGF0YSkgPSAwOyAvLyBOT0xJTlQK
LSAgICB2aXJ0dWFsIHZvaWQgZ2V0TXVsdGlzYW1wbGVmdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHBu
YW1lLCBHQ0dMdWludCBpbmRleCwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3Ro
LCBHQ0dMZmxvYXQqIHZhbCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRUZXhMZXZlbFBhcmFt
ZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51
bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBw
YXJhbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0VGV4TGV2ZWxQYXJhbWV0ZXJmdlJvYnVz
dEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gcG5hbWUsIEdD
R0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGZsb2F0KiBwYXJhbXMpID0g
MDsKLQotICAgIHZpcnR1YWwgdm9pZCBnZXRQb2ludGVydlJvYnVzdEFOR0xFUm9idXN0QU5HTEUo
R0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NH
THZvaWQqKiBwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0blVuaWZvcm1mdlJvYnVz
dEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZT
aXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGZsb2F0KiBwYXJhbXMpID0gMDsKLSAgICB2aXJ0
dWFsIHZvaWQgZ2V0blVuaWZvcm1pdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xp
bnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGlu
dCogcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldG5Vbmlmb3JtdWl2Um9idXN0QU5H
TEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUs
IEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMdWludCogcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2
b2lkIHRleFBhcmFtZXRlcklpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0g
cG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMaW50KiBwYXJhbXMpID0gMDsKLSAg
ICB2aXJ0dWFsIHZvaWQgdGV4UGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdl
dCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMdWludCogcGFy
YW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldFRleFBhcmFtZXRlcklpdlJvYnVzdEFOR0xF
KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dM
c2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdl
dFRleFBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBu
YW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0x1aW50KiBwYXJh
bXMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgc2FtcGxlclBhcmFtZXRlcklpdlJvYnVzdEFOR0xF
KEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29u
c3QgR0NHTGludCogcGFyYW0pID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgc2FtcGxlclBhcmFtZXRl
ckl1aXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNp
emVpIGJ1ZlNpemUsIGNvbnN0IEdDR0x1aW50KiBwYXJhbSkgPSAwOwotICAgIHZpcnR1YWwgdm9p
ZCBnZXRTYW1wbGVyUGFyYW1ldGVySWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NH
TGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGlu
dCogcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldFNhbXBsZXJQYXJhbWV0ZXJJdWl2
Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBi
dWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHVpbnQqIHBhcmFtcykgPSAwOwotCi0gICAg
dmlydHVhbCB2b2lkIGdldFF1ZXJ5T2JqZWN0aXZSb2J1c3RBTkdMRShHQ0dMdWludCBpZCwgR0NH
TGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGlu
dCogcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldFF1ZXJ5T2JqZWN0aTY0dlJvYnVz
dEFOR0xFKEdDR0x1aW50IGlkLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdD
R0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50NjQqIHBhcmFtcykgPSAwOwotICAgIHZpcnR1YWwgdm9p
ZCBnZXRRdWVyeU9iamVjdHVpNjR2Um9idXN0QU5HTEUoR0NHTHVpbnQgaWQsIEdDR0xlbnVtIHBu
YW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0x1aW50NjQqIHBh
cmFtcykgPSAwOwotCiAgICAgLy8gT3RoZXIgZnVuY3Rpb25zLgogI2lmICFVU0UoQU5HTEUpCiAg
ICAgLy8gRVhUIFJvYnVzdG5lc3MgLSB1c2VzIGdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIKQEAg
LTM1NywxNiArMzA1LDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBnZXRuVW5pZm9ybWZ2
RVhUKEdDR0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXpl
LCBHQ0dMZmxvYXQqIHBhcmFtcykgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBnZXRuVW5pZm9ybWl2
RVhUKEdDR0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXpl
LCBHQ0dMaW50KiBwYXJhbXMpID0gMDsKIAotICAgIHZpcnR1YWwgYm9vbCBpc05WSURJQSgpID0g
MDsKLSAgICB2aXJ0dWFsIGJvb2wgaXNBTUQoKSA9IDA7Ci0gICAgdmlydHVhbCBib29sIGlzSW50
ZWwoKSA9IDA7Ci0gICAgdmlydHVhbCBib29sIGlzSW1hZ2luYXRpb24oKSA9IDA7Ci0gICAgdmly
dHVhbCBTdHJpbmcgdmVuZG9yKCkgPSAwOwotCi0gICAgLy8gU29tZSBjb25maWd1cmF0aW9ucyBo
YXZlIGJ1Z3MgcmVnYXJkaW5nIGJ1aWx0LWluIGZ1bmN0aW9ucyBpbiB0aGVpciBPcGVuR0wgZHJp
dmVycwotICAgIC8vIHRoYXQgbXVzdCBiZSBhdm9pZGVkLiBQb3J0cyBzaG91bGQgaW1wbGVtZW50
IHRoZXNlIGZsYWdzIG9uIHN1Y2ggY29uZmlndXJhdGlvbnMuCi0gICAgdmlydHVhbCBib29sIHJl
cXVpcmVzQnVpbHRJbkZ1bmN0aW9uRW11bGF0aW9uKCkgPSAwOwotICAgIHZpcnR1YWwgYm9vbCBy
ZXF1aXJlc1Jlc3RyaWN0ZWRNYXhpbXVtVGV4dHVyZVNpemUoKSA9IDA7CiAjZW5kaWYKIAogfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHlCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmNwcAppbmRleCA1NTJkODUzOWI2
OTUwMGNmMTE2OTY4MGQ0YjVjNjI4NTg1OGI3NzM3Li5iMTViYmYwMzUyNjU4MWNhN2QxODc1NzNi
OWYyZThkNjRlOGJjYjNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2Uu
Y3BwCkBAIC0xNjEsNDEgKzE2MSw2IEBAIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eUJhc2U6OmdldG5Vbmlmb3JtZnZFWFQoR0NHTHVpbnQsIEdDR0xpbnQsIEdDR0xzCiB2b2lkIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjpnZXRuVW5pZm9ybWl2RVhUKEdDR0x1aW50
LCBHQ0dMaW50LCBHQ0dMc2l6ZWksIEdDR0xpbnQqKQogewogfQotCi1ib29sIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHlCYXNlOjppc05WSURJQSgpCi17Ci0gICAgcmV0dXJuIGZhbHNlOwot
fQotCi1ib29sIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjppc0FNRCgpCi17Ci0g
ICAgcmV0dXJuIGZhbHNlOwotfQotCi1ib29sIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlC
YXNlOjppc0ludGVsKCkKLXsKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLWJvb2wgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OmlzSW1hZ2luYXRpb24oKQotewotICAgIHJldHVybiBm
YWxzZTsKLX0KLQotU3RyaW5nIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjp2ZW5k
b3IoKQotewotICAgIHJldHVybiB7IH07Ci19Ci0KLWJvb2wgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eUJhc2U6OnJlcXVpcmVzQnVpbHRJbkZ1bmN0aW9uRW11bGF0aW9uKCkKLXsKLSAgICBy
ZXR1cm4gZmFsc2U7Ci19Ci0KLWJvb2wgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6
OnJlcXVpcmVzUmVzdHJpY3RlZE1heGltdW1UZXh0dXJlU2l6ZSgpCi17Ci0gICAgcmV0dXJuIGZh
bHNlOwotfQogI2VuZGlmCiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
QmFzZS5oCmluZGV4IDI0NzFkNGUyNWM5YWEyMDBlYzc0M2IxZmUwYzY0NjhiMGM5YTUwODMuLjVh
M2Y1NzhlODgzODkwMzU1NzVkZWZiZDNmNGFjOTFhMTVjNzUxMjcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlC
YXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eUJhc2UuaApAQCAtODAsMTcgKzgwLDkgQEAgcHVibGljOgogICAgIGJv
b2wgaXNFbmFibGVkKGNvbnN0IFN0cmluZyYpIGZpbmFsOwogCiAjaWYgIVVTRShBTkdMRSkKLSAg
ICAvLyBGSVhNRTogVGhlc2UgYXJlIHN1cHBvc2VkIHRvIGJlIHJlbW92ZWQgaW4gaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxODg5Ni4KICAgICB2b2lkIHJlYWRuUGl4
ZWxzRVhUKEdDR0xpbnQsIEdDR0xpbnQsIEdDR0xzaXplaSwgR0NHTHNpemVpLCBHQ0dMZW51bSwg
R0NHTGVudW0sIEdDR0xzaXplaSwgR0NHTHZvaWQqKSBmaW5hbDsKICAgICB2b2lkIGdldG5Vbmlm
b3JtZnZFWFQoR0NHTHVpbnQsIEdDR0xpbnQsIEdDR0xzaXplaSwgR0NHTGZsb2F0KikgZmluYWw7
CiAgICAgdm9pZCBnZXRuVW5pZm9ybWl2RVhUKEdDR0x1aW50LCBHQ0dMaW50LCBHQ0dMc2l6ZWks
IEdDR0xpbnQqKSBmaW5hbDsKLSAgICBib29sIGlzTlZJRElBKCkgZmluYWw7Ci0gICAgYm9vbCBp
c0FNRCgpIGZpbmFsOwotICAgIGJvb2wgaXNJbnRlbCgpIGZpbmFsOwotICAgIGJvb2wgaXNJbWFn
aW5hdGlvbigpIGZpbmFsOwotICAgIFN0cmluZyB2ZW5kb3IoKSBmaW5hbDsKLSAgICBib29sIHJl
cXVpcmVzQnVpbHRJbkZ1bmN0aW9uRW11bGF0aW9uKCkgZmluYWw7Ci0gICAgYm9vbCByZXF1aXJl
c1Jlc3RyaWN0ZWRNYXhpbXVtVGV4dHVyZVNpemUoKSBmaW5hbDsKICNlbmRpZgogCiBwcm90ZWN0
ZWQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9F
eHRlbnNpb25zR0xBTkdMRS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
bmdsZS9FeHRlbnNpb25zR0xBTkdMRS5jcHAKaW5kZXggOTIwZDkyZjM1Y2FkZDhiYjA4NTIzZDE3
NjU3NTQxMjA5N2Y2Yzk2Zi4uZjU0MGFiM2NhODUwYjFmMjdjYzYyZWU5NjRjZjA0ZTFkODE1ZThh
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvRXh0
ZW5zaW9uc0dMQU5HTEUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmNwcApAQCAtMzMsMTAgKzMzLDkgQEAKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi1FeHRlbnNpb25zR0xBTkdMRTo6RXh0ZW5zaW9uc0dMQU5HTEUoR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0wqIGNvbnRleHQsIGJvb2wgdXNlSW5kZXhlZEdldFN0cmluZykK
K0V4dGVuc2lvbnNHTEFOR0xFOjpFeHRlbnNpb25zR0xBTkdMRShHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTCogY29udGV4dCkKICAgICA6IG1faW5pdGlhbGl6ZWRBdmFpbGFibGVFeHRlbnNpb25zKGZh
bHNlKQogICAgICwgbV9jb250ZXh0KGNvbnRleHQpCi0gICAgLCBtX3VzZUluZGV4ZWRHZXRTdHJp
bmcodXNlSW5kZXhlZEdldFN0cmluZykKIHsKIH0KIApAQCAtOTksNDIgKzk4LDE1IEBAIFN0cmlu
ZyBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFKFBsYXRm
b3JtR0xPYmplY3Qgc2hhZGVyCiAKIHZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmluaXRpYWxpemVB
dmFpbGFibGVFeHRlbnNpb25zKCkKIHsKLSAgICBpZiAobV91c2VJbmRleGVkR2V0U3RyaW5nKSB7
Ci0gICAgICAgIEdMaW50IG51bUV4dGVuc2lvbnMgPSAwOwotICAgICAgICBnbDo6R2V0SW50ZWdl
cnYoR0xfTlVNX0VYVEVOU0lPTlMsICZudW1FeHRlbnNpb25zKTsKLSAgICAgICAgZm9yIChHTGlu
dCBpID0gMDsgaSA8IG51bUV4dGVuc2lvbnM7ICsraSkKLSAgICAgICAgICAgIG1fYXZhaWxhYmxl
RXh0ZW5zaW9ucy5hZGQoZ2w6OkdldFN0cmluZ2koR0xfRVhURU5TSU9OUywgaSkpOwotICAgICAg
ICBnbDo6R2V0SW50ZWdlcnYoR0xfTlVNX1JFUVVFU1RBQkxFX0VYVEVOU0lPTlNfQU5HTEUsICZu
dW1FeHRlbnNpb25zKTsKLSAgICAgICAgZm9yIChHTGludCBpID0gMDsgaSA8IG51bUV4dGVuc2lv
bnM7ICsraSkKLSAgICAgICAgICAgIG1fcmVxdWVzdGFibGVFeHRlbnNpb25zLmFkZChnbDo6R2V0
U3RyaW5naShHTF9SRVFVRVNUQUJMRV9FWFRFTlNJT05TX0FOR0xFLCBpKSk7Ci0gICAgfSBlbHNl
IHsKLSAgICAgICAgU3RyaW5nIGV4dGVuc2lvbnNTdHJpbmcgPSBnZXRFeHRlbnNpb25zKCk7Ci0g
ICAgICAgIGZvciAoYXV0byYgZXh0ZW5zaW9uIDogZXh0ZW5zaW9uc1N0cmluZy5zcGxpdCgnICcp
KQotICAgICAgICAgICAgbV9hdmFpbGFibGVFeHRlbnNpb25zLmFkZChleHRlbnNpb24pOwotICAg
ICAgICBleHRlbnNpb25zU3RyaW5nID0gU3RyaW5nKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hh
cio+KGdsOjpHZXRTdHJpbmcoR0xfUkVRVUVTVEFCTEVfRVhURU5TSU9OU19BTkdMRSkpKTsKLSAg
ICAgICAgZm9yIChhdXRvJiBleHRlbnNpb24gOiBleHRlbnNpb25zU3RyaW5nLnNwbGl0KCcgJykp
Ci0gICAgICAgICAgICBtX3JlcXVlc3RhYmxlRXh0ZW5zaW9ucy5hZGQoZXh0ZW5zaW9uKTsKLSAg
ICB9CisgICAgU3RyaW5nIGV4dGVuc2lvbnNTdHJpbmcgPSBnZXRFeHRlbnNpb25zKCk7CisgICAg
Zm9yIChhdXRvJiBleHRlbnNpb24gOiBleHRlbnNpb25zU3RyaW5nLnNwbGl0KCcgJykpCisgICAg
ICAgIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5hZGQoZXh0ZW5zaW9uKTsKKyAgICBleHRlbnNpb25z
U3RyaW5nID0gU3RyaW5nKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGdsOjpHZXRTdHJp
bmcoR0xfUkVRVUVTVEFCTEVfRVhURU5TSU9OU19BTkdMRSkpKTsKKyAgICBmb3IgKGF1dG8mIGV4
dGVuc2lvbiA6IGV4dGVuc2lvbnNTdHJpbmcuc3BsaXQoJyAnKSkKKyAgICAgICAgbV9yZXF1ZXN0
YWJsZUV4dGVuc2lvbnMuYWRkKGV4dGVuc2lvbik7CiAgICAgbV9pbml0aWFsaXplZEF2YWlsYWJs
ZUV4dGVuc2lvbnMgPSB0cnVlOwogfQogCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpibGl0RnJh
bWVidWZmZXJBTkdMRShHQ0dMaW50IHNyY1gwLCBHQ0dMaW50IHNyY1kwLCBHQ0dMaW50IHNyY1gx
LCBHQ0dMaW50IHNyY1kxLCBHQ0dMaW50IGRzdFgwLCBHQ0dMaW50IGRzdFkwLCBHQ0dMaW50IGRz
dFgxLCBHQ0dMaW50IGRzdFkxLCBHQ0dMYml0ZmllbGQgbWFzaywgR0NHTGVudW0gZmlsdGVyKQot
ewotICAgIC8vIEZJWE1FOiBjb25zaWRlciBhZGRpbmcgc3VwcG9ydCBmb3IgQVBQTEVfZnJhbWVi
dWZmZXJfbXVsdGlzYW1wbGUuCi0gICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVu
dCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6QmxpdEZyYW1lYnVmZmVyQU5HTEUoc3Jj
WDAsIHNyY1kwLCBzcmNYMSwgc3JjWTEsIGRzdFgwLCBkc3RZMCwgZHN0WDEsIGRzdFkxLCBtYXNr
LCBmaWx0ZXIpOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpyZW5kZXJidWZmZXJTdG9y
YWdlTXVsdGlzYW1wbGVBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xzaXplaSBzYW1wbGVzLCBH
Q0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0
KQotewotICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgZ2w6OlJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKHRh
cmdldCwgc2FtcGxlcywgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQpOwotfQotCiBQbGF0
Zm9ybUdMT2JqZWN0IEV4dGVuc2lvbnNHTEFOR0xFOjpjcmVhdGVWZXJ0ZXhBcnJheU9FUygpCiB7
CiAgICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQpAQCAtMTc1LDI0ICsx
NDcsNiBAQCB2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpiaW5kVmVydGV4QXJyYXlPRVMoUGxhdGZv
cm1HTE9iamVjdCBhcnJheSkKICAgICBnbDo6QmluZFZlcnRleEFycmF5T0VTKGFycmF5KTsKIH0K
IAotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6aW5zZXJ0RXZlbnRNYXJrZXJFWFQoY29uc3QgU3Ry
aW5nJikKLXsKLSAgICAvLyBGSVhNRTogaW1wbGVtZW50IHRoaXMgZnVuY3Rpb24gYW5kIGFkZCBH
TF9FWFRfZGVidWdfbWFya2VyIGluIHN1cHBvcnRzKCkuCi0gICAgcmV0dXJuOwotfQotCi12b2lk
IEV4dGVuc2lvbnNHTEFOR0xFOjpwdXNoR3JvdXBNYXJrZXJFWFQoY29uc3QgU3RyaW5nJikKLXsK
LSAgICAvLyBGSVhNRTogaW1wbGVtZW50IHRoaXMgZnVuY3Rpb24gYW5kIGFkZCBHTF9FWFRfZGVi
dWdfbWFya2VyIGluIHN1cHBvcnRzKCkuCi0gICAgcmV0dXJuOwotfQotCi12b2lkIEV4dGVuc2lv
bnNHTEFOR0xFOjpwb3BHcm91cE1hcmtlckVYVCh2b2lkKQotewotICAgIC8vIEZJWE1FOiBpbXBs
ZW1lbnQgdGhpcyBmdW5jdGlvbiBhbmQgYWRkIEdMX0VYVF9kZWJ1Z19tYXJrZXIgaW4gc3VwcG9y
dHMoKS4KLSAgICByZXR1cm47Ci19Ci0KIGJvb2wgRXh0ZW5zaW9uc0dMQU5HTEU6OnN1cHBvcnRz
RXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgbmFtZSkKIHsKICAgICByZXR1cm4gbV9hdmFpbGFibGVF
eHRlbnNpb25zLmNvbnRhaW5zKG5hbWUpIHx8IG1fcmVxdWVzdGFibGVFeHRlbnNpb25zLmNvbnRh
aW5zKG5hbWUpOwpAQCAtMjQ4LDI5MSArMjAyLDYgQEAgR0NHTGVudW0gRXh0ZW5zaW9uc0dMQU5H
TEU6OmFkanVzdFdlYkdMMVRleHR1cmVJbnRlcm5hbEZvcm1hdChHQ0dMZW51bSBpbnRlcm5hbGYK
ICAgICByZXR1cm4gaW50ZXJuYWxmb3JtYXQ7CiB9CiAKLS8vIEdMX0FOR0xFX3JvYnVzdF9jbGll
bnRfbWVtb3J5Ci12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpyZWFkUGl4ZWxzUm9idXN0QU5HTEUo
aW50IHgsIGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVt
IGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVu
Z3RoLCBHQ0dMc2l6ZWkgKmNvbHVtbnMsIEdDR0xzaXplaSAqcm93cywgdm9pZCAqcGl4ZWxzKQot
ewotICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0
dXJuOwotCi0gICAgZ2w6OlJlYWRQaXhlbHNSb2J1c3RBTkdMRSh4LCB5LCB3aWR0aCwgaGVpZ2h0
LCBmb3JtYXQsIHR5cGUsIGJ1ZlNpemUsIGxlbmd0aCwgY29sdW1ucywgcm93cywgcGl4ZWxzKTsK
LX0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6dGV4UGFyYW1ldGVyZnZSb2J1c3RBTkdMRShH
Q0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3Qg
R0NHTGZsb2F0ICpwYXJhbXMpCi17Ci0gICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3Vy
cmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6VGV4UGFyYW1ldGVyZnZSb2J1c3RB
TkdMRSh0YXJnZXQsIHBuYW1lLCBidWZTaXplLCBwYXJhbXMpOwotfQotCi12b2lkIEV4dGVuc2lv
bnNHTEFOR0xFOjp0ZXhQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NH
TGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMaW50ICpwYXJhbXMpCi17
Ci0gICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1
cm47Ci0KLSAgICBnbDo6VGV4UGFyYW1ldGVyaXZSb2J1c3RBTkdMRSh0YXJnZXQsIHBuYW1lLCBi
dWZTaXplLCBwYXJhbXMpOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRRdWVyeWl2
Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1
ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpCi17Ci0gICAgaWYgKCFt
X2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBn
bDo6R2V0UXVlcnlpdlJvYnVzdEFOR0xFKHRhcmdldCwgcG5hbWUsIGJ1ZlNpemUsIGxlbmd0aCwg
cGFyYW1zKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0UXVlcnlPYmplY3R1aXZS
b2J1c3RBTkdMRShHQ0dMdWludCBpZCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXpl
LCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHVpbnQgKnBhcmFtcykKLXsKLSAgICBpZiAoIW1fY29u
dGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpH
ZXRRdWVyeU9iamVjdHVpdlJvYnVzdEFOR0xFKGlkLCBwbmFtZSwgYnVmU2l6ZSwgbGVuZ3RoLCBw
YXJhbXMpOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRCdWZmZXJQb2ludGVydlJv
YnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZT
aXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgdm9pZCAqKnBhcmFtcykKLXsKLSAgICBpZiAoIW1fY29u
dGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpH
ZXRCdWZmZXJQb2ludGVydlJvYnVzdEFOR0xFKHRhcmdldCwgcG5hbWUsIGJ1ZlNpemUsIGxlbmd0
aCwgcGFyYW1zKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0VmVydGV4QXR0cmli
SWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkg
YnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykKLXsKLSAgICBpZiAo
IW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAg
IGdsOjpHZXRWZXJ0ZXhBdHRyaWJJaXZSb2J1c3RBTkdMRShpbmRleCwgcG5hbWUsIGJ1ZlNpemUs
IGxlbmd0aCwgcGFyYW1zKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0VmVydGV4
QXR0cmliSXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NH
THNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMdWludCAqcGFyYW1zKQotewot
ICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJu
OwotCi0gICAgZ2w6OkdldFZlcnRleEF0dHJpYkl1aXZSb2J1c3RBTkdMRShpbmRleCwgcG5hbWUs
IGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1zKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6
Z2V0VW5pZm9ybXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRp
b24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHVpbnQgKnBhcmFt
cykKLXsKLSAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAg
IHJldHVybjsKLQotICAgIGdsOjpHZXRVbmlmb3JtdWl2Um9idXN0QU5HTEUocHJvZ3JhbSwgbG9j
YXRpb24sIGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1zKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xB
TkdMRTo6Z2V0QnVmZmVyUGFyYW1ldGVyaTY0dlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwg
R0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NH
TGludDY0ICpwYXJhbXMpCi17Ci0gICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVu
dCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6R2V0QnVmZmVyUGFyYW1ldGVyaTY0dlJv
YnVzdEFOR0xFKHRhcmdldCwgcG5hbWUsIGJ1ZlNpemUsIGxlbmd0aCwgcmVpbnRlcnByZXRfY2Fz
dDxHTGludDY0Kj4ocGFyYW1zKSk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OnNhbXBs
ZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1l
LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGludCAqcGFyYW0pCi17Ci0gICAgaWYgKCFt
X2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBn
bDo6U2FtcGxlclBhcmFtZXRlcml2Um9idXN0QU5HTEUoc2FtcGxlciwgcG5hbWUsIGJ1ZlNpemUs
IHBhcmFtKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6c2FtcGxlclBhcmFtZXRlcmZ2
Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBi
dWZTaXplLCBjb25zdCBHQ0dMZmxvYXQgKnBhcmFtKQotewotICAgIGlmICghbV9jb250ZXh0LT5t
YWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OlNhbXBsZXJQ
YXJhbWV0ZXJmdlJvYnVzdEFOR0xFKHNhbXBsZXIsIHBuYW1lLCBidWZTaXplLCBwYXJhbSk7Ci19
Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldFNhbXBsZXJQYXJhbWV0ZXJpdlJvYnVzdEFO
R0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwg
R0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykKLXsKLSAgICBpZiAoIW1fY29udGV4
dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpHZXRT
YW1wbGVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShzYW1wbGVyLCBwbmFtZSwgYnVmU2l6ZSwgbGVu
Z3RoLCBwYXJhbXMpOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRTYW1wbGVyUGFy
YW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NH
THNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMZmxvYXQgKnBhcmFtcykKLXsK
LSAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVy
bjsKLQotICAgIGdsOjpHZXRTYW1wbGVyUGFyYW1ldGVyZnZSb2J1c3RBTkdMRShzYW1wbGVyLCBw
bmFtZSwgYnVmU2l6ZSwgbGVuZ3RoLCBwYXJhbXMpOwotfQotCi0KLXZvaWQgRXh0ZW5zaW9uc0dM
QU5HTEU6OmdldEZyYW1lYnVmZmVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJn
ZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgs
IEdDR0xpbnQgKnBhcmFtcykKLXsKLSAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJy
ZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpHZXRGcmFtZWJ1ZmZlclBhcmFtZXRl
cml2Um9idXN0QU5HTEUodGFyZ2V0LCBwbmFtZSwgYnVmU2l6ZSwgbGVuZ3RoLCBwYXJhbXMpOwot
fQotCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRQcm9ncmFtSW50ZXJmYWNlaXZSb2J1c3RB
TkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMZW51bSBwcm9ncmFtSW50ZXJmYWNlLCBHQ0dMZW51
bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpw
YXJhbXMpCi17Ci0gICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAg
ICAgICByZXR1cm47Ci0KLSAgICBnbDo6R2V0UHJvZ3JhbUludGVyZmFjZWl2Um9idXN0QU5HTEUo
cHJvZ3JhbSwgcHJvZ3JhbUludGVyZmFjZSwgcG5hbWUsIGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1z
KTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0Qm9vbGVhbmlfdlJvYnVzdEFOR0xF
KEdDR0xlbnVtIHRhcmdldCwgR0NHTHVpbnQgaW5kZXgsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dM
c2l6ZWkgKmxlbmd0aCwgR0NHTGJvb2xlYW4gKmRhdGEpCi17Ci0gICAgaWYgKCFtX2NvbnRleHQt
Pm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6R2V0Qm9v
bGVhbmlfdlJvYnVzdEFOR0xFKHRhcmdldCwgaW5kZXgsIGJ1ZlNpemUsIGxlbmd0aCwgZGF0YSk7
Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldE11bHRpc2FtcGxlZnZSb2J1c3RBTkdM
RShHQ0dMZW51bSBwbmFtZSwgR0NHTHVpbnQgaW5kZXgsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dM
c2l6ZWkgKmxlbmd0aCwgR0NHTGZsb2F0ICp2YWwpCi17Ci0gICAgaWYgKCFtX2NvbnRleHQtPm1h
a2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6R2V0TXVsdGlz
YW1wbGVmdlJvYnVzdEFOR0xFKHBuYW1lLCBpbmRleCwgYnVmU2l6ZSwgbGVuZ3RoLCB2YWwpOwot
fQotCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRUZXhMZXZlbFBhcmFtZXRlcml2Um9idXN0
QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBwbmFtZSwgR0NH
THNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpCi17Ci0g
ICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47
Ci0KLSAgICBnbDo6R2V0VGV4TGV2ZWxQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKHRhcmdldCwgbGV2
ZWwsIHBuYW1lLCBidWZTaXplLCBsZW5ndGgsIHBhcmFtcyk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9u
c0dMQU5HTEU6OmdldFRleExldmVsUGFyYW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJn
ZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NH
THNpemVpICpsZW5ndGgsIEdDR0xmbG9hdCAqcGFyYW1zKQotewotICAgIGlmICghbV9jb250ZXh0
LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OkdldFRl
eExldmVsUGFyYW1ldGVyZnZSb2J1c3RBTkdMRSh0YXJnZXQsIGxldmVsLCBwbmFtZSwgYnVmU2l6
ZSwgbGVuZ3RoLCBwYXJhbXMpOwotfQotCi0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldFBv
aW50ZXJ2Um9idXN0QU5HTEVSb2J1c3RBTkdMRShHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1
ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCB2b2lkICoqcGFyYW1zKQotewotICAgIGlmICghbV9j
b250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6
OkdldFBvaW50ZXJ2Um9idXN0QU5HTEVSb2J1c3RBTkdMRShwbmFtZSwgYnVmU2l6ZSwgbGVuZ3Ro
LCBwYXJhbXMpOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRuVW5pZm9ybWZ2Um9i
dXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1
ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMZmxvYXQgKnBhcmFtcykKLXsKLSAgICBpZiAo
IW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAg
IGdsOjpHZXRuVW5pZm9ybWZ2Um9idXN0QU5HTEUocHJvZ3JhbSwgbG9jYXRpb24sIGJ1ZlNpemUs
IGxlbmd0aCwgcGFyYW1zKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0blVuaWZv
cm1pdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xz
aXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKQotewotICAg
IGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwot
Ci0gICAgZ2w6OkdldG5Vbmlmb3JtaXZSb2J1c3RBTkdMRShwcm9ncmFtLCBsb2NhdGlvbiwgYnVm
U2l6ZSwgbGVuZ3RoLCBwYXJhbXMpOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRu
VW5pZm9ybXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24s
IEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHVpbnQgKnBhcmFtcykK
LXsKLSAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJl
dHVybjsKLQotICAgIGdsOjpHZXRuVW5pZm9ybXVpdlJvYnVzdEFOR0xFKHByb2dyYW0sIGxvY2F0
aW9uLCBidWZTaXplLCBsZW5ndGgsIHBhcmFtcyk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5H
TEU6OnRleFBhcmFtZXRlcklpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0g
cG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMaW50ICpwYXJhbXMpCi17Ci0gICAg
aWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0K
LSAgICBnbDo6VGV4UGFyYW1ldGVySWl2Um9idXN0QU5HTEUodGFyZ2V0LCBwbmFtZSwgYnVmU2l6
ZSwgcGFyYW1zKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6dGV4UGFyYW1ldGVySXVp
dlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBi
dWZTaXplLCBjb25zdCBHQ0dMdWludCAqcGFyYW1zKQotewotICAgIGlmICghbV9jb250ZXh0LT5t
YWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OlRleFBhcmFt
ZXRlckl1aXZSb2J1c3RBTkdMRSh0YXJnZXQsIHBuYW1lLCBidWZTaXplLCBwYXJhbXMpOwotfQot
Ci12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRUZXhQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRShH
Q0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNp
emVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykKLXsKLSAgICBpZiAoIW1fY29udGV4dC0+bWFr
ZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpHZXRUZXhQYXJh
bWV0ZXJJaXZSb2J1c3RBTkdMRSh0YXJnZXQsIHBuYW1lLCBidWZTaXplLCBsZW5ndGgsIHBhcmFt
cyk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldFRleFBhcmFtZXRlckl1aXZSb2J1
c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6
ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0x1aW50ICpwYXJhbXMpCi17Ci0gICAgaWYgKCFtX2Nv
bnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6
R2V0VGV4UGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFKHRhcmdldCwgcG5hbWUsIGJ1ZlNpemUsIGxl
bmd0aCwgcGFyYW1zKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6c2FtcGxlclBhcmFt
ZXRlcklpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dM
c2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGludCAqcGFyYW0pCi17Ci0gICAgaWYgKCFtX2NvbnRl
eHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6U2Ft
cGxlclBhcmFtZXRlcklpdlJvYnVzdEFOR0xFKHNhbXBsZXIsIHBuYW1lLCBidWZTaXplLCBwYXJh
bSk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OnNhbXBsZXJQYXJhbWV0ZXJJdWl2Um9i
dXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZT
aXplLCBjb25zdCBHQ0dMdWludCAqcGFyYW0pCi17Ci0gICAgaWYgKCFtX2NvbnRleHQtPm1ha2VD
b250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6U2FtcGxlclBhcmFt
ZXRlckl1aXZSb2J1c3RBTkdMRShzYW1wbGVyLCBwbmFtZSwgYnVmU2l6ZSwgcGFyYW0pOwotfQot
Ci12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRTYW1wbGVyUGFyYW1ldGVySWl2Um9idXN0QU5H
TEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBH
Q0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKQotewotICAgIGlmICghbV9jb250ZXh0
LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OkdldFNh
bXBsZXJQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRShzYW1wbGVyLCBwbmFtZSwgYnVmU2l6ZSwgbGVu
Z3RoLCBwYXJhbXMpOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRTYW1wbGVyUGFy
YW1ldGVySXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBH
Q0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0x1aW50ICpwYXJhbXMpCi17
Ci0gICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1
cm47Ci0KLSAgICBnbDo6R2V0U2FtcGxlclBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRShzYW1wbGVy
LCBwbmFtZSwgYnVmU2l6ZSwgbGVuZ3RoLCBwYXJhbXMpOwotfQotCi0KLXZvaWQgRXh0ZW5zaW9u
c0dMQU5HTEU6OmdldFF1ZXJ5T2JqZWN0aXZSb2J1c3RBTkdMRShHQ0dMdWludCBpZCwgR0NHTGVu
dW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAq
cGFyYW1zKQotewotICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAg
ICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OkdldFF1ZXJ5T2JqZWN0aXZSb2J1c3RBTkdMRShpZCwg
cG5hbWUsIGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1zKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xB
TkdMRTo6Z2V0UXVlcnlPYmplY3RpNjR2Um9idXN0QU5HTEUoR0NHTHVpbnQgaWQsIEdDR0xlbnVt
IHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQ2NCAq
cGFyYW1zKQotewotICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAg
ICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OkdldFF1ZXJ5T2JqZWN0aTY0dlJvYnVzdEFOR0xFKGlk
LCBwbmFtZSwgYnVmU2l6ZSwgbGVuZ3RoLCByZWludGVycHJldF9jYXN0PEdMaW50NjQqPihwYXJh
bXMpKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0UXVlcnlPYmplY3R1aTY0dlJv
YnVzdEFOR0xFKEdDR0x1aW50IGlkLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUs
IEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMdWludDY0ICpwYXJhbXMpCi17Ci0gICAgaWYgKCFtX2Nv
bnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6
R2V0UXVlcnlPYmplY3R1aTY0dlJvYnVzdEFOR0xFKGlkLCBwbmFtZSwgYnVmU2l6ZSwgbGVuZ3Ro
LCByZWludGVycHJldF9jYXN0PEdMdWludDY0Kj4ocGFyYW1zKSk7Ci19Ci0KLQogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFdFQkdMKSAmJiBVU0UoQU5HTEUpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRlbnNp
b25zR0xBTkdMRS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvRXh0
ZW5zaW9uc0dMQU5HTEUuaAppbmRleCBiMmQyNzdiOWFjOWQyNzg2MGY1NWFiYWJmOGNmZTU1ZTg0
YjVmNTdlLi44OWVkYzE3OTFjOGUzZTQxNjM2NGI4NTYwYzYzOGM0ODY5ZWIzMzA4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRlbnNpb25zR0xB
TkdMRS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0V4dGVu
c2lvbnNHTEFOR0xFLmgKQEAgLTI3LDE2ICsyNywxOCBAQAogCiAjaW5jbHVkZSAiRXh0ZW5zaW9u
c0dMLmgiCiAKLSNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oIgorI2luY2x1ZGUg
PHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOworCiBjbGFz
cyBFeHRlbnNpb25zR0xBTkdMRSA6IHB1YmxpYyBFeHRlbnNpb25zR0wgewogICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIC8vIFRoaXMgY2xhc3Mgb25seSBuZWVkcyB0
byBiZSBpbnN0YW50aWF0ZWQgYnkgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wgaW1wbGVtZW50YXRp
b25zLgotICAgIEV4dGVuc2lvbnNHTEFOR0xFKEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiwgYm9v
bCB1c2VJbmRleGVkR2V0U3RyaW5nID0gZmFsc2UpOworICAgIGV4cGxpY2l0IEV4dGVuc2lvbnNH
TEFOR0xFKEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKik7CiAgICAgdmlydHVhbCB+RXh0ZW5zaW9u
c0dMQU5HTEUoKTsKIAogICAgIC8vIEV4dGVuc2lvbnNHTCBtZXRob2RzLgpAQCAtNDksNjAgKzUx
LDE0IEBAIHB1YmxpYzoKICAgICB2b2lkIGRlbGV0ZVZlcnRleEFycmF5T0VTKFBsYXRmb3JtR0xP
YmplY3QpIG92ZXJyaWRlOwogICAgIEdDR0xib29sZWFuIGlzVmVydGV4QXJyYXlPRVMoUGxhdGZv
cm1HTE9iamVjdCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBiaW5kVmVydGV4QXJyYXlPRVMoUGxhdGZv
cm1HTE9iamVjdCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBpbnNlcnRFdmVudE1hcmtlckVYVChjb25z
dCBTdHJpbmcmKSBvdmVycmlkZTsKLSAgICB2b2lkIHB1c2hHcm91cE1hcmtlckVYVChjb25zdCBT
dHJpbmcmKSBvdmVycmlkZTsKLSAgICB2b2lkIHBvcEdyb3VwTWFya2VyRVhUKHZvaWQpIG92ZXJy
aWRlOwogICAgIHZvaWQgZHJhd0J1ZmZlcnNFWFQoR0NHTFNwYW48Y29uc3QgR0NHTGVudW0+KSBv
dmVycmlkZTsKIAogICAgIFN0cmluZyBnZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUoUGxh
dGZvcm1HTE9iamVjdCkgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIGJsaXRGcmFtZWJ1ZmZlckFOR0xF
KEdDR0xpbnQgc3JjWDAsIEdDR0xpbnQgc3JjWTAsIEdDR0xpbnQgc3JjWDEsIEdDR0xpbnQgc3Jj
WTEsIEdDR0xpbnQgZHN0WDAsIEdDR0xpbnQgZHN0WTAsIEdDR0xpbnQgZHN0WDEsIEdDR0xpbnQg
ZHN0WTEsIEdDR0xiaXRmaWVsZCBtYXNrLCBHQ0dMZW51bSBmaWx0ZXIpIG92ZXJyaWRlOwotICAg
IHZvaWQgcmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5HTEUoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMc2l6ZWkgc2FtcGxlcywgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3
aWR0aCwgR0NHTHNpemVpIGhlaWdodCkgb3ZlcnJpZGU7Ci0KICAgICB2b2lkIGRyYXdBcnJheXNJ
bnN0YW5jZWRBTkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMaW50IGZpcnN0LCBHQ0dMc2l6ZWkgY291
bnQsIEdDR0xzaXplaSBwcmltY291bnQpIG92ZXJyaWRlOwogICAgIHZvaWQgZHJhd0VsZW1lbnRz
SW5zdGFuY2VkQU5HTEUoR0NHTGVudW0gbW9kZSwgR0NHTHNpemVpIGNvdW50LCBHQ0dMZW51bSB0
eXBlLCBHQ0dMdm9pZHB0ciBvZmZzZXQsIEdDR0xzaXplaSBwcmltY291bnQpIG92ZXJyaWRlOwog
ICAgIHZvaWQgdmVydGV4QXR0cmliRGl2aXNvckFOR0xFKEdDR0x1aW50IGluZGV4LCBHQ0dMdWlu
dCBkaXZpc29yKSBvdmVycmlkZTsKIAotICAgIC8vIEdMX0FOR0xFX3JvYnVzdF9jbGllbnRfbWVt
b3J5Ci0gICAgdm9pZCByZWFkUGl4ZWxzUm9idXN0QU5HTEUoR0NHTGludCB4LCBHQ0dMaW50IHks
IEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dM
ZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xzaXpl
aSAqY29sdW1ucywgR0NHTHNpemVpICpyb3dzLCB2b2lkICpwaXhlbHMpIG92ZXJyaWRlOwotICAg
IHZvaWQgdGV4UGFyYW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVt
IHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGZsb2F0ICpwYXJhbXMpIG92ZXJy
aWRlOwotICAgIHZvaWQgdGV4UGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQs
IEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGludCAqcGFyYW1z
KSBvdmVycmlkZTsKLSAgICB2b2lkIGdldFF1ZXJ5aXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJn
ZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgs
IEdDR0xpbnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRRdWVyeU9iamVjdHVpdlJv
YnVzdEFOR0xFKEdDR0x1aW50IGlkLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUs
IEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMdWludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lk
IGdldEJ1ZmZlclBvaW50ZXJ2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBw
bmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCB2b2lkICoqcGFyYW1z
KSBvdmVycmlkZTsKLSAgICB2b2lkIGdldFZlcnRleEF0dHJpYklpdlJvYnVzdEFOR0xFKEdDR0x1
aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAq
bGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0VmVydGV4QXR0
cmliSXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNp
emVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMdWludCAqcGFyYW1zKSBvdmVycmlk
ZTsKLSAgICB2b2lkIGdldFVuaWZvcm11aXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBH
Q0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdD
R0x1aW50ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0QnVmZmVyUGFyYW1ldGVyaTY0
dlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBi
dWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludDY0ICpwYXJhbXMpIG92ZXJyaWRlOwot
ICAgIHZvaWQgc2FtcGxlclBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwg
R0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMaW50ICpwYXJhbSkg
b3ZlcnJpZGU7Ci0gICAgdm9pZCBzYW1wbGVyUGFyYW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dMdWlu
dCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xm
bG9hdCAqcGFyYW0pIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0U2FtcGxlclBhcmFtZXRlcml2Um9i
dXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZT
aXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2
b2lkIGdldFNhbXBsZXJQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdD
R0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xm
bG9hdCAqcGFyYW1zKSBvdmVycmlkZTsKLQotICAgIHZvaWQgZ2V0RnJhbWVidWZmZXJQYXJhbWV0
ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXpl
aSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVycmlkZTsK
LSAgICB2b2lkIGdldFByb2dyYW1JbnRlcmZhY2VpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dy
YW0sIEdDR0xlbnVtIHByb2dyYW1JbnRlcmZhY2UsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkg
YnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0g
ICAgdm9pZCBnZXRCb29sZWFuaV92Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMdWlu
dCBpbmRleCwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMYm9vbGVh
biAqZGF0YSkgb3ZlcnJpZGU7IC8vIE5PTElOVAotICAgIHZvaWQgZ2V0TXVsdGlzYW1wbGVmdlJv
YnVzdEFOR0xFKEdDR0xlbnVtIHBuYW1lLCBHQ0dMdWludCBpbmRleCwgR0NHTHNpemVpIGJ1ZlNp
emUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMZmxvYXQgKnZhbCkgb3ZlcnJpZGU7Ci0gICAgdm9p
ZCBnZXRUZXhMZXZlbFBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dM
aW50IGxldmVsLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAq
bGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0VGV4TGV2ZWxQ
YXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NH
TGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGZs
b2F0ICpwYXJhbXMpIG92ZXJyaWRlOwotCi0gICAgdm9pZCBnZXRQb2ludGVydlJvYnVzdEFOR0xF
Um9idXN0QU5HTEUoR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkg
Kmxlbmd0aCwgdm9pZCAqKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRuVW5pZm9ybWZ2
Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVp
IGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMZmxvYXQgKnBhcmFtcykgb3ZlcnJpZGU7
Ci0gICAgdm9pZCBnZXRuVW5pZm9ybWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NH
TGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dM
aW50ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0blVuaWZvcm11aXZSb2J1c3RBTkdM
RShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwg
R0NHTHNpemVpICpsZW5ndGgsIEdDR0x1aW50ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQg
dGV4UGFyYW1ldGVySWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFt
ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xpbnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0g
ICAgdm9pZCB0ZXhQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dM
ZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0x1aW50ICpwYXJhbXMpIG92
ZXJyaWRlOwotICAgIHZvaWQgZ2V0VGV4UGFyYW1ldGVySWl2Um9idXN0QU5HTEUoR0NHTGVudW0g
dGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVu
Z3RoLCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0VGV4UGFyYW1ldGVy
SXVpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXpl
aSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHVpbnQgKnBhcmFtcykgb3ZlcnJpZGU7
Ci0gICAgdm9pZCBzYW1wbGVyUGFyYW1ldGVySWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxl
ciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMaW50ICpwYXJh
bSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzYW1wbGVyUGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFKEdD
R0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3Qg
R0NHTHVpbnQgKnBhcmFtKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldFNhbXBsZXJQYXJhbWV0ZXJJ
aXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVp
IGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJyaWRlOwot
ICAgIHZvaWQgZ2V0U2FtcGxlclBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1w
bGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3Ro
LCBHQ0dMdWludCAqcGFyYW1zKSBvdmVycmlkZTsKLQotICAgIHZvaWQgZ2V0UXVlcnlPYmplY3Rp
dlJvYnVzdEFOR0xFKEdDR0x1aW50IGlkLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNp
emUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZv
aWQgZ2V0UXVlcnlPYmplY3RpNjR2Um9idXN0QU5HTEUoR0NHTHVpbnQgaWQsIEdDR0xlbnVtIHBu
YW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQ2NCAqcGFy
YW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldFF1ZXJ5T2JqZWN0dWk2NHZSb2J1c3RBTkdMRShH
Q0dMdWludCBpZCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkg
Kmxlbmd0aCwgR0NHTHVpbnQ2NCAqcGFyYW1zKSBvdmVycmlkZTsKLQogICAgIC8vIE9ubHkgZm9y
IG5vbi1XZWJHTCAyLjAgY29udGV4dHMuCiAgICAgR0NHTGVudW0gYWRqdXN0V2ViR0wxVGV4dHVy
ZUludGVybmFsRm9ybWF0KEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMZW51bSBmb3JtYXQs
IEdDR0xlbnVtIHR5cGUpOwogCkBAIC0xMTksOCArNzUsNiBAQCBwcml2YXRlOgogICAgIC8vIFdl
YWsgcG9pbnRlciBiYWNrIHRvIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMLgogICAgIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMKiBtX2NvbnRleHQ7CiAKLSAgICBib29sIG1fdXNlSW5kZXhlZEdldFN0
cmluZyB7IGZhbHNlIH07Ci0KICAgICAvLyBXaGV0aGVyIHRoZSBXZWJHTCAxLjAtcmVsYXRlZCBm
bG9hdGluZy1wb2ludCByZW5kZXJhYmlsaXR5IGV4dGVuc2lvbnMgaGF2ZSBiZWVuIGVuYWJsZWQu
CiAgICAgYm9vbCBtX3dlYmdsQ29sb3JCdWZmZXJGbG9hdFJHQiB7IGZhbHNlIH07CiAgICAgYm9v
bCBtX3dlYmdsQ29sb3JCdWZmZXJGbG9hdFJHQkEgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdM
RS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0Nv
bnRleHRHTEFOR0xFLmNwcAppbmRleCBlYmM0YWY5YTg3MWQwNDEwM2Y2YTY1MDUyOTQ2NTRmYjY4
ZGRjMmZiLi44NzhkOGRmMTFkYmJkZmZhZDBiMjhhZGMxNzEzNTNhNDJjYjA0ZmQ3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRl
eHRHTEFOR0xFLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmds
ZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUg
IkFOR0xFSGVhZGVycy5oIgogI2luY2x1ZGUgIkV4dGVuc2lvbnNHTEFOR0xFLmgiCiAjaW5jbHVk
ZSAiR3JhcGhpY3NDb250ZXh0R0xBTkdMRVV0aWxpdGllcy5oIgorI2luY2x1ZGUgIkdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMLmgiCiAjaW5jbHVkZSAiSW1hZ2VCdWZmZXIuaCIKICNpbmNsdWRlICJJ
bWFnZURhdGEuaCIKICNpbmNsdWRlICJJbnRSZWN0LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wu
Y3BwCmluZGV4IDg0MjI4NDZiNmY2MmE3NTU0ZThiMmRjZjAyNDdmZjYwNTM5NWQ0NWEuLjg2ZDE5
Y2FhZmI2ZTNmMGUzMjFkZTE3MzIxMmE1NGZjZTYxZjcxZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xP
cGVuR0wuY3BwCkBAIC00OCwyMiArNDgsNiBAQCBFeHRlbnNpb25zR0xPcGVuR0w6OkV4dGVuc2lv
bnNHTE9wZW5HTChHcmFwaGljc0NvbnRleHRHTE9wZW5HTCogY29udGV4dCwgYm9vbCB1cwogRXh0
ZW5zaW9uc0dMT3BlbkdMOjp+RXh0ZW5zaW9uc0dMT3BlbkdMKCkgPSBkZWZhdWx0OwogCiAKLXZv
aWQgRXh0ZW5zaW9uc0dMT3BlbkdMOjpibGl0RnJhbWVidWZmZXJBTkdMRShHQ0dMaW50IHNyY1gw
LCBHQ0dMaW50IHNyY1kwLCBHQ0dMaW50IHNyY1gxLCBHQ0dMaW50IHNyY1kxLCBHQ0dMaW50IGRz
dFgwLCBHQ0dMaW50IGRzdFkwLCBHQ0dMaW50IGRzdFgxLCBHQ0dMaW50IGRzdFkxLCBHQ0dMYml0
ZmllbGQgbWFzaywgR0NHTGVudW0gZmlsdGVyKQotewotICAgIGlmICghbV9jb250ZXh0LT5tYWtl
Q29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgOjpnbEJsaXRGcmFtZWJ1
ZmZlckVYVChzcmNYMCwgc3JjWTAsIHNyY1gxLCBzcmNZMSwgZHN0WDAsIGRzdFkwLCBkc3RYMSwg
ZHN0WTEsIG1hc2ssIGZpbHRlcik7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMOjpyZW5k
ZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xzaXpl
aSBzYW1wbGVzLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dM
c2l6ZWkgaGVpZ2h0KQotewotICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQo
KSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgOjpnbFJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNh
bXBsZUVYVCh0YXJnZXQsIHNhbXBsZXMsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0KTsK
LX0KLQogUGxhdGZvcm1HTE9iamVjdCBFeHRlbnNpb25zR0xPcGVuR0w6OmNyZWF0ZVZlcnRleEFy
cmF5T0VTKCkKIHsKICAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCkBA
IC0xMjcsMjQgKzExMSw2IEBAIHZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMOjpiaW5kVmVydGV4QXJy
YXlPRVMoUGxhdGZvcm1HTE9iamVjdCBhcnJheSkKICNlbmRpZgogfQogCi12b2lkIEV4dGVuc2lv
bnNHTE9wZW5HTDo6aW5zZXJ0RXZlbnRNYXJrZXJFWFQoY29uc3QgU3RyaW5nJikKLXsKLSAgICAv
LyBGSVhNRTogaW1wbGVtZW50IHRoaXMgZnVuY3Rpb24gYW5kIGFkZCBHTF9FWFRfZGVidWdfbWFy
a2VyIGluIHN1cHBvcnRzKCkuCi0gICAgcmV0dXJuOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9w
ZW5HTDo6cHVzaEdyb3VwTWFya2VyRVhUKGNvbnN0IFN0cmluZyYpCi17Ci0gICAgLy8gRklYTUU6
IGltcGxlbWVudCB0aGlzIGZ1bmN0aW9uIGFuZCBhZGQgR0xfRVhUX2RlYnVnX21hcmtlciBpbiBz
dXBwb3J0cygpLgotICAgIHJldHVybjsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0w6OnBv
cEdyb3VwTWFya2VyRVhUKHZvaWQpCi17Ci0gICAgLy8gRklYTUU6IGltcGxlbWVudCB0aGlzIGZ1
bmN0aW9uIGFuZCBhZGQgR0xfRVhUX2RlYnVnX21hcmtlciBpbiBzdXBwb3J0cygpLgotICAgIHJl
dHVybjsKLX0KLQogYm9vbCBFeHRlbnNpb25zR0xPcGVuR0w6OnN1cHBvcnRzRXh0ZW5zaW9uKGNv
bnN0IFN0cmluZyYgbmFtZSkKIHsKICAgICAvLyBHTF9BTkdMRV9mcmFtZWJ1ZmZlcl9ibGl0IGFu
ZCBHTF9BTkdMRV9mcmFtZWJ1ZmZlcl9tdWx0aXNhbXBsZSBhcmUgImZha2UiLiBUaGV5IGFyZSBp
bXBsZW1lbnRlZCB1c2luZyBvdGhlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTC5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTC5oCmluZGV4IDQ3NTAy
MjZlY2VjZWY0NDM5NmU5OTM4Njc2Y2I2MzliZTgzNDM3YjYuLjY0OWY5MzgzY2Y0ZWQ0ODU0NGNh
ZGExNmI0YzY3OGIwYjdmZDExYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMLmgKQEAgLTI3LDEx
ICsyNywxMiBAQAogCiAjaW5jbHVkZSAiRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmgiCiAKLSNp
bmNsdWRlICJHcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0
cmluZ0hhc2guaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDsKKwogY2xhc3MgRXh0ZW5zaW9uc0dMT3BlbkdMIDogcHVibGljIEV4dGVuc2lv
bnNHTE9wZW5HTENvbW1vbiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6
CkBAIC00MCwxNiArNDEsMTAgQEAgcHVibGljOgogICAgIHZpcnR1YWwgfkV4dGVuc2lvbnNHTE9w
ZW5HTCgpOwogCiAgICAgLy8gRXh0ZW5zaW9uc0dMIG1ldGhvZHMuCi0gICAgdm9pZCBibGl0RnJh
bWVidWZmZXJBTkdMRShHQ0dMaW50IHNyY1gwLCBHQ0dMaW50IHNyY1kwLCBHQ0dMaW50IHNyY1gx
LCBHQ0dMaW50IHNyY1kxLCBHQ0dMaW50IGRzdFgwLCBHQ0dMaW50IGRzdFkwLCBHQ0dMaW50IGRz
dFgxLCBHQ0dMaW50IGRzdFkxLCBHQ0dMYml0ZmllbGQgbWFzaywgR0NHTGVudW0gZmlsdGVyKSBv
dmVycmlkZTsKLSAgICB2b2lkIHJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKEdD
R0xlbnVtIHRhcmdldCwgR0NHTHNpemVpIHNhbXBsZXMsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0
LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQpIG92ZXJyaWRlOwotCiAgICAgUGxh
dGZvcm1HTE9iamVjdCBjcmVhdGVWZXJ0ZXhBcnJheU9FUygpIG92ZXJyaWRlOwogICAgIHZvaWQg
ZGVsZXRlVmVydGV4QXJyYXlPRVMoUGxhdGZvcm1HTE9iamVjdCkgb3ZlcnJpZGU7CiAgICAgR0NH
TGJvb2xlYW4gaXNWZXJ0ZXhBcnJheU9FUyhQbGF0Zm9ybUdMT2JqZWN0KSBvdmVycmlkZTsKICAg
ICB2b2lkIGJpbmRWZXJ0ZXhBcnJheU9FUyhQbGF0Zm9ybUdMT2JqZWN0KSBvdmVycmlkZTsKLSAg
ICB2b2lkIGluc2VydEV2ZW50TWFya2VyRVhUKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwotICAg
IHZvaWQgcHVzaEdyb3VwTWFya2VyRVhUKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwotICAgIHZv
aWQgcG9wR3JvdXBNYXJrZXJFWFQodm9pZCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkcmF3QnVmZmVy
c0VYVChHQ0dMU3Bhbjxjb25zdCBHQ0dMZW51bT4pIG92ZXJyaWRlOwogCiAgICAgdm9pZCBkcmF3
QXJyYXlzSW5zdGFuY2VkQU5HTEUoR0NHTGVudW0gbW9kZSwgR0NHTGludCBmaXJzdCwgR0NHTHNp
emVpIGNvdW50LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xD
b21tb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVu
c2lvbnNHTE9wZW5HTENvbW1vbi5jcHAKaW5kZXggYzM0MzhkNTkxYzA3YTM2Y2YxZTA0MjZjMWI5
ZmQ3YjNlOTE3NzlkNS4uMDlkYjg1NDAwMjIxZGY5NzU3ODg4NTlhNGEyODdhYmFhMjRmODI3MSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVu
c2lvbnNHTE9wZW5HTENvbW1vbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5jcHAKQEAgLTI1NCwxODUgKzI1
NCw2IEBAIHZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRuVW5pZm9ybWl2RVhUKEdD
R0x1aW50LCBpbnQsIEdDR0xzaXplaSwgR0NHTGluCiAgICAgbV9jb250ZXh0LT5zeW50aGVzaXpl
R0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CiB9CiAKLXZvaWQgRXh0ZW5zaW9uc0dMT3Bl
bkdMQ29tbW9uOjpyZWFkUGl4ZWxzUm9idXN0QU5HTEUoaW50LCBpbnQsIEdDR0xzaXplaSwgR0NH
THNpemVpLCBHQ0dMZW51bSwgR0NHTGVudW0sIEdDR0xzaXplaSwgR0NHTHNpemVpICosIEdDR0xz
aXplaSAqLCBHQ0dMc2l6ZWkgKiwgdm9pZCAqKQotewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6
ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9w
ZW5HTENvbW1vbjo6dGV4UGFyYW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dMZW51bSwgR0NHTGVudW0s
IEdDR0xzaXplaSwgY29uc3QgR0NHTGZsb2F0ICopCi17Ci0gICAgbV9jb250ZXh0LT5zeW50aGVz
aXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dM
T3BlbkdMQ29tbW9uOjp0ZXhQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtLCBHQ0dMZW51
bSwgR0NHTHNpemVpLCBjb25zdCBHQ0dMaW50ICopCi17Ci0gICAgbV9jb250ZXh0LT5zeW50aGVz
aXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dM
T3BlbkdMQ29tbW9uOjpnZXRRdWVyeWl2Um9idXN0QU5HTEUoR0NHTGVudW0sIEdDR0xlbnVtLCBH
Q0dMc2l6ZWksIEdDR0xzaXplaSAqLCBHQ0dMaW50ICopCi17Ci0gICAgbV9jb250ZXh0LT5zeW50
aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9u
c0dMT3BlbkdMQ29tbW9uOjpnZXRRdWVyeU9iamVjdHVpdlJvYnVzdEFOR0xFKEdDR0x1aW50LCBH
Q0dMZW51bSwgR0NHTHNpemVpLCBHQ0dMc2l6ZWkgKiwgR0NHTHVpbnQgKikKLXsKLSAgICBtX2Nv
bnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLX0KLQotdm9p
ZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldEJ1ZmZlclBvaW50ZXJ2Um9idXN0QU5HTEUo
R0NHTGVudW0sIEdDR0xlbnVtLCBHQ0dMc2l6ZWksIEdDR0xzaXplaSAqLCB2b2lkICoqKQotewot
ICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwot
fQotCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0VmVydGV4QXR0cmliSWl2Um9i
dXN0QU5HTEUoR0NHTHVpbnQsIEdDR0xlbnVtLCBHQ0dMc2l6ZWksIEdDR0xzaXplaSAqLCBHQ0dM
aW50ICopCi17Ci0gICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09Q
RVJBVElPTik7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRWZXJ0ZXhB
dHRyaWJJdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQsIEdDR0xlbnVtLCBHQ0dMc2l6ZWksIEdDR0xz
aXplaSAqLCBHQ0dMdWludCAqKQotewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3Io
R0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1v
bjo6Z2V0VW5pZm9ybXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50LCBpbnQsIEdDR0xzaXplaSwgR0NH
THNpemVpICosIEdDR0x1aW50ICopCi17Ci0gICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJv
cihHTF9JTlZBTElEX09QRVJBVElPTik7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29t
bW9uOjpnZXRCdWZmZXJQYXJhbWV0ZXJpNjR2Um9idXN0QU5HTEUoR0NHTGVudW0sIEdDR0xlbnVt
LCBHQ0dMc2l6ZWksIEdDR0xzaXplaSAqLCBHQ0dMaW50NjQgKikKLXsKLSAgICBtX2NvbnRleHQt
PnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLX0KLQotdm9pZCBFeHRl
bnNpb25zR0xPcGVuR0xDb21tb246OnNhbXBsZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0x1
aW50LCBHQ0dMZW51bSwgR0NHTHNpemVpLCBjb25zdCBHQ0dMaW50ICopCi17Ci0gICAgbV9jb250
ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Ci19Ci0KLXZvaWQg
RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpzYW1wbGVyUGFyYW1ldGVyZnZSb2J1c3RBTkdMRShH
Q0dMdWludCwgR0NHTGVudW0sIEdDR0xzaXplaSwgY29uc3QgR0NHTGZsb2F0ICopCi17Ci0gICAg
bV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Ci19Ci0K
LXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRTYW1wbGVyUGFyYW1ldGVyaXZSb2J1
c3RBTkdMRShHQ0dMdWludCwgR0NHTGVudW0sIEdDR0xzaXplaSwgR0NHTHNpemVpICosIEdDR0xp
bnQgKikKLXsKLSAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BF
UkFUSU9OKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFNhbXBsZXJQ
YXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0x1aW50LCBHQ0dMZW51bSwgR0NHTHNpemVpLCBHQ0dM
c2l6ZWkgKiwgR0NHTGZsb2F0ICopCi17Ci0gICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJv
cihHTF9JTlZBTElEX09QRVJBVElPTik7Ci19Ci0KLQotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xD
b21tb246OmdldEZyYW1lYnVmZmVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51bSwgR0NH
TGVudW0sIEdDR0xzaXplaSwgR0NHTHNpemVpICosIEdDR0xpbnQgKikKLXsKLSAgICBtX2NvbnRl
eHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLX0KLQotdm9pZCBF
eHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFByb2dyYW1JbnRlcmZhY2VpdlJvYnVzdEFOR0xF
KEdDR0x1aW50LCBHQ0dMZW51bSwgR0NHTGVudW0sIEdDR0xzaXplaSwgR0NHTHNpemVpICosIEdD
R0xpbnQgKikKLXsKLSAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURf
T1BFUkFUSU9OKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldEJvb2xl
YW5pX3ZSb2J1c3RBTkdMRShHQ0dMZW51bSwgR0NHTHVpbnQsIEdDR0xzaXplaSwgR0NHTHNpemVp
ICosIEdDR0xib29sZWFuICopCi17Ci0gICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihH
TF9JTlZBTElEX09QRVJBVElPTik7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9u
OjpnZXRNdWx0aXNhbXBsZWZ2Um9idXN0QU5HTEUoR0NHTGVudW0sIEdDR0x1aW50LCBHQ0dMc2l6
ZWksIEdDR0xzaXplaSAqLCBHQ0dMZmxvYXQgKikKLXsKLSAgICBtX2NvbnRleHQtPnN5bnRoZXNp
emVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xP
cGVuR0xDb21tb246OmdldFRleExldmVsUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51bSwg
aW50LCBHQ0dMZW51bSwgR0NHTHNpemVpLCBHQ0dMc2l6ZWkgKiwgR0NHTGludCAqKQotewotICAg
IG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQot
Ci12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0VGV4TGV2ZWxQYXJhbWV0ZXJmdlJv
YnVzdEFOR0xFKEdDR0xlbnVtLCBpbnQsIEdDR0xlbnVtLCBHQ0dMc2l6ZWksIEdDR0xzaXplaSAq
LCBHQ0dMZmxvYXQgKikKLXsKLSAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lO
VkFMSURfT1BFUkFUSU9OKTsKLX0KLQotCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6
Z2V0UG9pbnRlcnZSb2J1c3RBTkdMRVJvYnVzdEFOR0xFKEdDR0xlbnVtLCBHQ0dMc2l6ZWksIEdD
R0xzaXplaSAqLCB2b2lkICoqKQotewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3Io
R0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1v
bjo6Z2V0blVuaWZvcm1mdlJvYnVzdEFOR0xFKEdDR0x1aW50LCBpbnQsIEdDR0xzaXplaSwgR0NH
THNpemVpICosIEdDR0xmbG9hdCAqKQotewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJy
b3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENv
bW1vbjo6Z2V0blVuaWZvcm1pdlJvYnVzdEFOR0xFKEdDR0x1aW50LCBpbnQsIEdDR0xzaXplaSwg
R0NHTHNpemVpICosIEdDR0xpbnQgKikKLXsKLSAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVy
cm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xD
b21tb246OmdldG5Vbmlmb3JtdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQsIGludCwgR0NHTHNpemVp
LCBHQ0dMc2l6ZWkgKiwgR0NHTHVpbnQgKikKLXsKLSAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVH
TEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xPcGVu
R0xDb21tb246OnRleFBhcmFtZXRlcklpdlJvYnVzdEFOR0xFKEdDR0xlbnVtLCBHQ0dMZW51bSwg
R0NHTHNpemVpLCBjb25zdCBHQ0dMaW50ICopCi17Ci0gICAgbV9jb250ZXh0LT5zeW50aGVzaXpl
R0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMT3Bl
bkdMQ29tbW9uOjp0ZXhQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUoR0NHTGVudW0sIEdDR0xlbnVt
LCBHQ0dMc2l6ZWksIGNvbnN0IEdDR0x1aW50ICopCi17Ci0gICAgbV9jb250ZXh0LT5zeW50aGVz
aXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dM
T3BlbkdMQ29tbW9uOjpnZXRUZXhQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRShHQ0dMZW51bSwgR0NH
TGVudW0sIEdDR0xzaXplaSwgR0NHTHNpemVpICosIEdDR0xpbnQgKikKLXsKLSAgICBtX2NvbnRl
eHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLX0KLQotdm9pZCBF
eHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFRleFBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRShH
Q0dMZW51bSwgR0NHTGVudW0sIEdDR0xzaXplaSwgR0NHTHNpemVpICosIEdDR0x1aW50ICopCi17
Ci0gICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7
Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpzYW1wbGVyUGFyYW1ldGVySWl2
Um9idXN0QU5HTEUoR0NHTHVpbnQsIEdDR0xlbnVtLCBHQ0dMc2l6ZWksIGNvbnN0IEdDR0xpbnQg
KikKLXsKLSAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFU
SU9OKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OnNhbXBsZXJQYXJhbWV0
ZXJJdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQsIEdDR0xlbnVtLCBHQ0dMc2l6ZWksIGNvbnN0IEdD
R0x1aW50ICopCi17Ci0gICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElE
X09QRVJBVElPTik7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRTYW1w
bGVyUGFyYW1ldGVySWl2Um9idXN0QU5HTEUoR0NHTHVpbnQsIEdDR0xlbnVtLCBHQ0dMc2l6ZWks
IEdDR0xzaXplaSAqLCBHQ0dMaW50ICopCi17Ci0gICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xF
cnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdM
Q29tbW9uOjpnZXRTYW1wbGVyUGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50LCBHQ0dM
ZW51bSwgR0NHTHNpemVpLCBHQ0dMc2l6ZWkgKiwgR0NHTHVpbnQgKikKLXsKLSAgICBtX2NvbnRl
eHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLX0KLQotCi12b2lk
IEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0UXVlcnlPYmplY3RpdlJvYnVzdEFOR0xFKEdD
R0x1aW50LCBHQ0dMZW51bSwgR0NHTHNpemVpLCBHQ0dMc2l6ZWkgKiwgR0NHTGludCAqKQotewot
ICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwot
fQotCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0UXVlcnlPYmplY3RpNjR2Um9i
dXN0QU5HTEUoR0NHTHVpbnQsIEdDR0xlbnVtLCBHQ0dMc2l6ZWksIEdDR0xzaXplaSAqLCBHQ0dM
aW50NjQgKikKLXsKLSAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURf
T1BFUkFUSU9OKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFF1ZXJ5
T2JqZWN0dWk2NHZSb2J1c3RBTkdMRShHQ0dMdWludCwgR0NHTGVudW0sIEdDR0xzaXplaSwgR0NH
THNpemVpICosIEdDR0x1aW50NjQgKikKLXsKLSAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVy
cm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLX0KLQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CiAKICNlbmRpZiAvLyBFTkFCTEUoV0VCR0wpICYmICFVU0UoQU5HTEUpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdM
Q29tbW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5z
aW9uc0dMT3BlbkdMQ29tbW9uLmgKaW5kZXggM2YxMDQwMTYyZmZhMDdhMmRjMTMwYWJiMjJmYjFi
MWZmYzNmZGYyMC4uM2VkY2FhNTNkNjcwOGExYzIyZjNjZTM3M2U3MGUxMGNhZjk1MDY2NSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lv
bnNHTE9wZW5HTENvbW1vbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uaApAQCAtMjgsMTIgKzI4LDEzIEBACiAK
ICNpbmNsdWRlICJFeHRlbnNpb25zR0wuaCIKIAotI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9T
dHJpbmdIYXNoLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w7CisKIGNsYXNzIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbiA6IHB1YmxpYyBF
eHRlbnNpb25zR0wgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgpAQCAt
NTUsNTggKzU2LDE4IEBAIHB1YmxpYzoKICAgICBTdHJpbmcgZ2V0VHJhbnNsYXRlZFNoYWRlclNv
dXJjZUFOR0xFKFBsYXRmb3JtR0xPYmplY3QpIG92ZXJyaWRlOwogCiAgICAgLy8gRVhUIFJvYnVz
dG5lc3MgLSB1c2VzIGdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIoKQotICAgIHZvaWQgcmVhZG5Q
aXhlbHNFWFQoaW50IHgsIGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQs
IEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIHZvaWQg
KmRhdGEpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0blVuaWZvcm1mdkVYVChHQ0dMdWludCBwcm9n
cmFtLCBpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBmbG9hdCAqcGFyYW1zKSBvdmVy
cmlkZTsKLSAgICB2b2lkIGdldG5Vbmlmb3JtaXZFWFQoR0NHTHVpbnQgcHJvZ3JhbSwgaW50IGxv
Y2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgaW50ICpwYXJhbXMpIG92ZXJyaWRlOwotCi0gICAg
Ym9vbCBpc05WSURJQSgpIG92ZXJyaWRlIHsgcmV0dXJuIG1faXNOVklESUE7IH0KLSAgICBib29s
IGlzQU1EKCkgb3ZlcnJpZGUgeyByZXR1cm4gbV9pc0FNRDsgfQotICAgIGJvb2wgaXNJbnRlbCgp
IG92ZXJyaWRlIHsgcmV0dXJuIG1faXNJbnRlbDsgfQotICAgIGJvb2wgaXNJbWFnaW5hdGlvbigp
IG92ZXJyaWRlIHsgcmV0dXJuIG1faXNJbWFnaW5hdGlvbjsgfQotICAgIFN0cmluZyB2ZW5kb3Io
KSBvdmVycmlkZSB7IHJldHVybiBtX3ZlbmRvcjsgfQotCi0gICAgYm9vbCByZXF1aXJlc0J1aWx0
SW5GdW5jdGlvbkVtdWxhdGlvbigpIG92ZXJyaWRlIHsgcmV0dXJuIG1fcmVxdWlyZXNCdWlsdElu
RnVuY3Rpb25FbXVsYXRpb247IH0KLSAgICBib29sIHJlcXVpcmVzUmVzdHJpY3RlZE1heGltdW1U
ZXh0dXJlU2l6ZSgpIG92ZXJyaWRlIHsgcmV0dXJuIG1fcmVxdWlyZXNSZXN0cmljdGVkTWF4aW11
bVRleHR1cmVTaXplOyB9Ci0KLSAgICAvLyBHTF9BTkdMRV9yb2J1c3RfY2xpZW50X21lbW9yeQot
ICAgIHZvaWQgcmVhZFBpeGVsc1JvYnVzdEFOR0xFKGludCB4LCBpbnQgeSwgR0NHTHNpemVpIHdp
ZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdD
R0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHNpemVpICpjb2x1bW5zLCBH
Q0dMc2l6ZWkgKnJvd3MsIHZvaWQgKnBpeGVscykgb3ZlcnJpZGU7Ci0gICAgdm9pZCB0ZXhQYXJh
bWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xz
aXplaSBidWZTaXplLCBjb25zdCBHQ0dMZmxvYXQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9p
ZCB0ZXhQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5h
bWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJyaWRlOwot
ICAgIHZvaWQgZ2V0UXVlcnlpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0g
cG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFy
YW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldFF1ZXJ5T2JqZWN0dWl2Um9idXN0QU5HTEUoR0NH
THVpbnQgaWQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICps
ZW5ndGgsIEdDR0x1aW50ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0QnVmZmVyUG9p
bnRlcnZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6
ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIHZvaWQgKipwYXJhbXMpIG92ZXJyaWRlOwot
ICAgIHZvaWQgZ2V0VmVydGV4QXR0cmliSWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdD
R0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xp
bnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJJdWl2Um9idXN0
QU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwg
R0NHTHNpemVpICpsZW5ndGgsIEdDR0x1aW50ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQg
Z2V0VW5pZm9ybXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIGludCBsb2NhdGlvbiwg
R0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMdWludCAqcGFyYW1zKSBv
dmVycmlkZTsKLSAgICB2b2lkIGdldEJ1ZmZlclBhcmFtZXRlcmk2NHZSb2J1c3RBTkdMRShHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVp
ICpsZW5ndGgsIEdDR0xpbnQ2NCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIHNhbXBsZXJQ
YXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBH
Q0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGludCAqcGFyYW0pIG92ZXJyaWRlOwotICAgIHZv
aWQgc2FtcGxlclBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVu
dW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMZmxvYXQgKnBhcmFtKSBvdmVy
cmlkZTsKLSAgICB2b2lkIGdldFNhbXBsZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0x1aW50
IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICps
ZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRTYW1wbGVyUGFy
YW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NH
THNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMZmxvYXQgKnBhcmFtcykgb3Zl
cnJpZGU7Ci0KLSAgICB2b2lkIGdldEZyYW1lYnVmZmVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShH
Q0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNp
emVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRQcm9n
cmFtSW50ZXJmYWNlaXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMZW51bSBwcm9n
cmFtSW50ZXJmYWNlLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXpl
aSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0Qm9vbGVh
bmlfdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTHVpbnQgaW5kZXgsIEdDR0xzaXpl
aSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGJvb2xlYW4gKmRhdGEpIG92ZXJyaWRl
OwotICAgIHZvaWQgZ2V0TXVsdGlzYW1wbGVmdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHBuYW1lLCBH
Q0dMdWludCBpbmRleCwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dM
ZmxvYXQgKnZhbCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRUZXhMZXZlbFBhcmFtZXRlcml2Um9i
dXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBpbnQgbGV2ZWwsIEdDR0xlbnVtIHBuYW1lLCBHQ0dM
c2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykgb3ZlcnJp
ZGU7Ci0gICAgdm9pZCBnZXRUZXhMZXZlbFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTGVudW0g
dGFyZ2V0LCBpbnQgbGV2ZWwsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NH
THNpemVpICpsZW5ndGgsIEdDR0xmbG9hdCAqcGFyYW1zKSBvdmVycmlkZTsKLQotICAgIHZvaWQg
Z2V0UG9pbnRlcnZSb2J1c3RBTkdMRVJvYnVzdEFOR0xFKEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6
ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIHZvaWQgKipwYXJhbXMpIG92ZXJyaWRlOwot
ICAgIHZvaWQgZ2V0blVuaWZvcm1mdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIGludCBs
b2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMZmxvYXQg
KnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRuVW5pZm9ybWl2Um9idXN0QU5HTEUoR0NH
THVpbnQgcHJvZ3JhbSwgaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVp
ICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRuVW5pZm9y
bXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIGludCBsb2NhdGlvbiwgR0NHTHNpemVp
IGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMdWludCAqcGFyYW1zKSBvdmVycmlkZTsK
LSAgICB2b2lkIHRleFBhcmFtZXRlcklpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NH
TGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMaW50ICpwYXJhbXMpIG92
ZXJyaWRlOwotICAgIHZvaWQgdGV4UGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRh
cmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMdWludCAq
cGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldFRleFBhcmFtZXRlcklpdlJvYnVzdEFOR0xF
KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dM
c2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldFRl
eFBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1l
LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0x1aW50ICpwYXJhbXMp
IG92ZXJyaWRlOwotICAgIHZvaWQgc2FtcGxlclBhcmFtZXRlcklpdlJvYnVzdEFOR0xFKEdDR0x1
aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NH
TGludCAqcGFyYW0pIG92ZXJyaWRlOwotICAgIHZvaWQgc2FtcGxlclBhcmFtZXRlckl1aXZSb2J1
c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNp
emUsIGNvbnN0IEdDR0x1aW50ICpwYXJhbSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRTYW1wbGVy
UGFyYW1ldGVySWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUs
IEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSBv
dmVycmlkZTsKLSAgICB2b2lkIGdldFNhbXBsZXJQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUoR0NH
THVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6
ZWkgKmxlbmd0aCwgR0NHTHVpbnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0KLSAgICB2b2lkIGdldFF1
ZXJ5T2JqZWN0aXZSb2J1c3RBTkdMRShHQ0dMdWludCBpZCwgR0NHTGVudW0gcG5hbWUsIEdDR0xz
aXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVycmlk
ZTsKLSAgICB2b2lkIGdldFF1ZXJ5T2JqZWN0aTY0dlJvYnVzdEFOR0xFKEdDR0x1aW50IGlkLCBH
Q0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dM
aW50NjQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRRdWVyeU9iamVjdHVpNjR2Um9i
dXN0QU5HTEUoR0NHTHVpbnQgaWQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwg
R0NHTHNpemVpICpsZW5ndGgsIEdDR0x1aW50NjQgKnBhcmFtcykgb3ZlcnJpZGU7CisgICAgdm9p
ZCByZWFkblBpeGVsc0VYVChpbnQgeCwgaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVp
IGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6
ZSwgdm9pZCAqZGF0YSk7CisgICAgdm9pZCBnZXRuVW5pZm9ybWZ2RVhUKEdDR0x1aW50IHByb2dy
YW0sIGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIGZsb2F0ICpwYXJhbXMpOworICAg
IHZvaWQgZ2V0blVuaWZvcm1pdkVYVChHQ0dMdWludCBwcm9ncmFtLCBpbnQgbG9jYXRpb24sIEdD
R0xzaXplaSBidWZTaXplLCBpbnQgKnBhcmFtcyk7CisKKyAgICBib29sIGlzTlZJRElBKCkgY29u
c3QgeyByZXR1cm4gbV9pc05WSURJQTsgfQorICAgIGJvb2wgaXNBTUQoKSBjb25zdCB7IHJldHVy
biBtX2lzQU1EOyB9CisgICAgYm9vbCBpc0ludGVsKCkgY29uc3QgeyByZXR1cm4gbV9pc0ludGVs
OyB9CisgICAgYm9vbCBpc0ltYWdpbmF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9pc0ltYWdpbmF0
aW9uOyB9CisgICAgU3RyaW5nIHZlbmRvcigpIGNvbnN0IHsgcmV0dXJuIG1fdmVuZG9yOyB9CisK
KyAgICBib29sIHJlcXVpcmVzQnVpbHRJbkZ1bmN0aW9uRW11bGF0aW9uKCkgY29uc3QgeyByZXR1
cm4gbV9yZXF1aXJlc0J1aWx0SW5GdW5jdGlvbkVtdWxhdGlvbjsgfQorICAgIGJvb2wgcmVxdWly
ZXNSZXN0cmljdGVkTWF4aW11bVRleHR1cmVTaXplKCkgY29uc3QgeyByZXR1cm4gbV9yZXF1aXJl
c1Jlc3RyaWN0ZWRNYXhpbXVtVGV4dHVyZVNpemU7IH0KIAogcHJvdGVjdGVkOgogICAgIGZyaWVu
ZCBjbGFzcyBFeHRlbnNpb25zR0xPcGVuR0xFUzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xFUy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMRVMu
Y3BwCmluZGV4IDhjYTg3Nzg4NGVlYWI4YTJjYTFkZGUyZGIyZWM4ZDZiMjEyMmZkZTEuLmIyZTNj
OGI5ODQ5MzQ1ZDU3MzhmN2E1YzEwZTEyZGI1OTRkMmEwMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xFUy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNH
TE9wZW5HTEVTLmNwcApAQCAtMTAwLDExICsxMDAsNiBAQCB2b2lkIEV4dGVuc2lvbnNHTE9wZW5H
TEVTOjpyZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVJTUcodW5zaWduZWQgbG9uZyB0YXJn
ZQogICAgICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFU
SU9OKTsKIH0KIAotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xFUzo6YmxpdEZyYW1lYnVmZmVyQU5H
TEUoR0NHTGludCwgR0NHTGludCwgR0NHTGludCwgR0NHTGludCwgR0NHTGludCwgR0NHTGludCwg
R0NHTGludCwgR0NHTGludCwgR0NHTGJpdGZpZWxkLCBHQ0dMZW51bSkKLXsKLSAgICBub3RJbXBs
ZW1lbnRlZCgpOwotfQotCiB2b2lkIEV4dGVuc2lvbnNHTE9wZW5HTEVTOjpyZW5kZXJidWZmZXJT
dG9yYWdlTXVsdGlzYW1wbGVBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xzaXplaSBzYW1wbGVz
LCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVp
Z2h0KQogewogICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKQEAgLTEx
NSwyMSArMTEwLDYgQEAgdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xFUzo6cmVuZGVyYnVmZmVyU3Rv
cmFnZU11bHRpc2FtcGxlQU5HTEUoR0NHTGVudW0gdGFyZ2V0LAogICAgICAgICBub3RJbXBsZW1l
bnRlZCgpOwogfQogCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTEVTOjppbnNlcnRFdmVudE1hcmtl
ckVYVChjb25zdCBTdHJpbmcmKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQg
RXh0ZW5zaW9uc0dMT3BlbkdMRVM6OnB1c2hHcm91cE1hcmtlckVYVChjb25zdCBTdHJpbmcmKQot
ewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMRVM6
OnBvcEdyb3VwTWFya2VyRVhUKHZvaWQpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQog
UGxhdGZvcm1HTE9iamVjdCBFeHRlbnNpb25zR0xPcGVuR0xFUzo6Y3JlYXRlVmVydGV4QXJyYXlP
RVMoKQogewogICAgIGlmIChtX2dsR2VuVmVydGV4QXJyYXlzT0VTKSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdM
RVMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25z
R0xPcGVuR0xFUy5oCmluZGV4IDVjNzYwMzdmYTdiYzZlOGVlZTNlNjczZjk5YTdkZmMyZjc4ZmI0
ZDIuLmI3MDg2YzZiZjlhNjQ0NTUyYjliMmM0ZWQ1NDRlYWZkNzA2NWM0ZjUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVu
R0xFUy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRl
bnNpb25zR0xPcGVuR0xFUy5oCkBAIC02NCw2ICs2NCw4IEBAIHR5cGVkZWYgdm9pZCAoR0xfQVBJ
RU5UUllQIFBGTkdMR0VUTlVOSUZPUk1JVkVYVFBST0MpIChHTHVpbnQgcHJvZ3JhbSwgR0xpbnQg
bG9jCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w7CisKIGNsYXNzIEV4dGVuc2lvbnNHTE9wZW5HTEVTIDogcHVibGljIEV4dGVuc2lvbnNHTE9w
ZW5HTENvbW1vbiB7CiBwdWJsaWM6CiAgICAgLy8gVGhpcyBjbGFzcyBvbmx5IG5lZWRzIHRvIGJl
IGluc3RhbnRpYXRlZCBieSBHcmFwaGljc0NvbnRleHRHTE9wZW5HTCBpbXBsZW1lbnRhdGlvbnMu
CkBAIC03NSwxMSArNzcsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBFeHRlbnNpb24zRCBtZXRob2Rz
CiAgICAgYm9vbCBpc0VuYWJsZWQoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBi
bGl0RnJhbWVidWZmZXJBTkdMRShHQ0dMaW50IHNyY1gwLCBHQ0dMaW50IHNyY1kwLCBHQ0dMaW50
IHNyY1gxLCBHQ0dMaW50IHNyY1kxLCBHQ0dMaW50IGRzdFgwLCBHQ0dMaW50IGRzdFkwLCBHQ0dM
aW50IGRzdFgxLCBHQ0dMaW50IGRzdFkxLCBHQ0dMYml0ZmllbGQgbWFzaywgR0NHTGVudW0gZmls
dGVyKSBvdmVycmlkZTsKLSAgICB2b2lkIHJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFO
R0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVpIHNhbXBsZXMsIEdDR0xlbnVtIGludGVybmFs
Zm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQpIG92ZXJyaWRlOwotICAg
IHZvaWQgaW5zZXJ0RXZlbnRNYXJrZXJFWFQoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7Ci0gICAg
dm9pZCBwdXNoR3JvdXBNYXJrZXJFWFQoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7Ci0gICAgdm9p
ZCBwb3BHcm91cE1hcmtlckVYVCh2b2lkKSBvdmVycmlkZTsKKyAgICB2b2lkIHJlbmRlcmJ1ZmZl
clN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVpIHNhbXBs
ZXMsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBo
ZWlnaHQpOwogCiAgICAgUGxhdGZvcm1HTE9iamVjdCBjcmVhdGVWZXJ0ZXhBcnJheU9FUygpIG92
ZXJyaWRlOwogICAgIHZvaWQgZGVsZXRlVmVydGV4QXJyYXlPRVMoUGxhdGZvcm1HTE9iamVjdCkg
b3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9v
cGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oCmluZGV4IGY1MmJkZDY2
ZmQwYzY3YjEyNWQ4YjUxMWUyOWNmOTJmYzJmY2Y1ZTAuLjUzNGE2NTM5ZjdmZjRjMmEyMzU2YWIw
MTBjMDc1ZDkwOTBmNTFlNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oCkBA
IC00NSw2ICs0NSw3IEBACiAKICNpZiAhVVNFKEFOR0xFKQogI2luY2x1ZGUgIkFOR0xFV2ViS2l0
QnJpZGdlLmgiCisjaW5jbHVkZSAiRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmgiCiAjZW5kaWYK
IAogLy8gRklYTUU6IEZpbmQgYSBiZXR0ZXIgd2F5IHRvIGF2b2lkIHRoZSBuYW1lIGNvbmZsaWN0
aW9uIGZvciBOT19FUlJPUi4KQEAgLTQ5MSw3ICs0OTIsMTIgQEAgcHVibGljOgogICAgIC8vIGFs
bCBtZXRob2RzIGl0IGNvbnRhaW5zIG1heSBuZWNlc3NhcmlseSBiZSBzdXBwb3J0ZWQgb24gdGhl
CiAgICAgLy8gY3VycmVudCBoYXJkd2FyZS4gTXVzdCBjYWxsIEV4dGVuc2lvbnNHTDo6c3VwcG9y
dHMoKSB0bwogICAgIC8vIGRldGVybWluZSB0aGlzLgorI2lmICFVU0UoQU5HTEUpCisgICAgLy8g
VXNlIGNvdmFyaWFudCByZXR1cm4gdHlwZSBmb3IgT1BFTkdML09QRU5HTF9FUworICAgIEV4dGVu
c2lvbnNHTE9wZW5HTENvbW1vbiYgZ2V0RXh0ZW5zaW9ucygpIGZpbmFsOworI2Vsc2UKICAgICBF
eHRlbnNpb25zR0wmIGdldEV4dGVuc2lvbnMoKSBmaW5hbDsKKyNlbmRpZgogCiAgICAgdm9pZCBz
ZXRGYWlsTmV4dEdQVVN0YXR1c0NoZWNrKCkgZmluYWwgeyBtX2ZhaWxOZXh0U3RhdHVzQ2hlY2sg
PSB0cnVlOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQmFzZS5jcHAK
aW5kZXggMjlkZjdjOTAxM2NiOTE1OTM0YWJhYjg5NGZhYjI2YzlkN2ZlNzcwZi4uYTU2MmU4YWYy
N2JkYjYyNTljMmVmY2ViODA0ZWZlMzhmZjlkNjFmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQmFzZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNz
Q29udGV4dEdMT3BlbkdMQmFzZS5jcHAKQEAgLTEwNiw3ICsxMDYsNyBAQCBib29sIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpyZXNoYXBlRkJPcyhjb25zdCBJbnRTaXplJiBzaXplKQogICAgICAg
ICAvLyBXZSBkb24ndCBhbGxvdyB0aGUgbG9naWMgd2hlcmUgc3RlbmNpbCBpcyByZXF1aXJlZCBh
bmQgZGVwdGggaXMgbm90LgogICAgICAgICAvLyBTZWUgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OnZhbGlkYXRlQXR0cmlidXRlcy4KIAotICAgICAgICBFeHRlbnNpb25zR0wmIGV4dGVuc2lvbnMg
PSBnZXRFeHRlbnNpb25zKCk7CisgICAgICAgIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbiYgZXh0
ZW5zaW9ucyA9IGdldEV4dGVuc2lvbnMoKTsKICAgICAgICAgLy8gVXNlIGEgMjQgYml0IGRlcHRo
IGJ1ZmZlciB3aGVyZSB3ZSBrbm93IHdlIGhhdmUgaXQuCiAgICAgICAgIGlmIChleHRlbnNpb25z
LnN1cHBvcnRzKCJHTF9FWFRfcGFja2VkX2RlcHRoX3N0ZW5jaWwiKSkKICAgICAgICAgICAgIGlu
dGVybmFsRGVwdGhTdGVuY2lsRm9ybWF0ID0gR0xfREVQVEgyNF9TVEVOQ0lMOF9FWFQ7CkBAIC00
MDcsNyArNDA3LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y2xlYXJEZXB0aChH
Q0dMY2xhbXBmIGRlcHRoKQogfQogCiAjaWYgIVBMQVRGT1JNKEdUSykKLUV4dGVuc2lvbnNHTCYg
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEV4dGVuc2lvbnMoKQorRXh0ZW5zaW9uc0dMT3Bl
bkdMQ29tbW9uJiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0RXh0ZW5zaW9ucygpCiB7CiAg
ICAgaWYgKCFtX2V4dGVuc2lvbnMpCiAgICAgICAgIG1fZXh0ZW5zaW9ucyA9IG1ha2VVbmlxdWU8
RXh0ZW5zaW9uc0dMT3BlbkdMPih0aGlzLCBpc0dMRVMyQ29tcGxpYW50KCkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4
dEdMT3BlbkdMQ29tbW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29w
ZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvbW1vbi5jcHAKaW5kZXggODhmOWIyNjM1YjEy
NDA2MGJmOTRmM2RhNTRhYzQwZjA1N2Q0MjBhZS4uMmI5Y2E0ZDIwNTM2OGViMDFiYzdkMjdkZThl
YWQzOThhM2E4NzhhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29tbW9uLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xD
b21tb24uY3BwCkBAIC0xMTgsNyArMTE4LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6dmFsaWRhdGVEZXB0aFN0ZW5jaWwoY29uc3QgY2hhciogcGFja2VkRGVwdGhTdGVuY2kKIHsK
ICAgICBhdXRvIGF0dHJzID0gY29udGV4dEF0dHJpYnV0ZXMoKTsKIAotICAgIEV4dGVuc2lvbnNH
TCYgZXh0ZW5zaW9ucyA9IGdldEV4dGVuc2lvbnMoKTsKKyAgICBFeHRlbnNpb25zR0xPcGVuR0xD
b21tb24mIGV4dGVuc2lvbnMgPSBnZXRFeHRlbnNpb25zKCk7CiAgICAgaWYgKGF0dHJzLnN0ZW5j
aWwpIHsKICAgICAgICAgaWYgKGV4dGVuc2lvbnMuc3VwcG9ydHMocGFja2VkRGVwdGhTdGVuY2ls
RXh0ZW5zaW9uKSkgewogICAgICAgICAgICAgZXh0ZW5zaW9ucy5lbnN1cmVFbmFibGVkKHBhY2tl
ZERlcHRoU3RlbmNpbEV4dGVuc2lvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xFUy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0xFUy5jcHAKaW5kZXggYmFhYmRlMDc5MTQ2NWYzZjgzZTY2ZmYyOTBlYTE0ZWMxODZiMjdkNC4u
YWQ2NTRlOWM5NTY5NGEzOTA4MGE2MmE3ODE5YzAwYTdlYzE1MTZjMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMRVMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9H
cmFwaGljc0NvbnRleHRHTE9wZW5HTEVTLmNwcApAQCAtMjY3LDcgKzI2Nyw3IEBAIHZvaWQgR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OmNsZWFyRGVwdGgoR0NHTGNsYW1wZiBkZXB0aCkKIH0KIAog
I2lmICFQTEFURk9STShHVEspCi1FeHRlbnNpb25zR0wmIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjpnZXRFeHRlbnNpb25zKCkKK0V4dGVuc2lvbnNHTE9wZW5HTENvbW1vbiYgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OmdldEV4dGVuc2lvbnMoKQogewogICAgIGlmICghbV9leHRlbnNpb25zKQog
ICAgICAgICBtX2V4dGVuc2lvbnMgPSBtYWtlVW5pcXVlPEV4dGVuc2lvbnNHTE9wZW5HTEVTPih0
aGlzLCBpc0dMRVMyQ29tcGxpYW50KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0
R0xUZXh0dXJlTWFwcGVyLmNwcAppbmRleCBjMmY0YTIzNjFhMGFmNzEzZTFlNDZmNDBhNDE2ZDRh
Y2RjMGY1MjlmLi43YzNkMjFiNWJhMGM5YjI3MjZlYmM1NGQzNDAyMjg3YzBlNjM2YTY1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3ND
b250ZXh0R0xUZXh0dXJlTWFwcGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyLmNwcApAQCAtNDUx
LDcgKzQ1MSw3IEBAIEdDR0xlbnVtIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpkcmF3aW5nQnVm
ZmVyVGV4dHVyZVRhcmdldCgpCiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKEdUSykgJiYgIVVTRShB
TkdMRSkKLUV4dGVuc2lvbnNHTCYgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEV4dGVuc2lv
bnMoKQorRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uJiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
Z2V0RXh0ZW5zaW9ucygpCiB7CiAgICAgaWYgKCFtX2V4dGVuc2lvbnMpIHsKICNpZiBVU0UoT1BF
TkdMX0VTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1Jl
bW90ZUdyYXBoaWNzQ29udGV4dEdMLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLm1lc3NhZ2VzLmluCmluZGV4IDE5
MTUxYmQwY2ExMzliNTc5ODBhNjMwNmYzYTc0ZTYxODNkMTE5N2EuLjk3N2Y1ZjExYzhlYzE5ZDlj
NTdjN2JkYzI5NmFhNWZiZGRiZDQ1OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5tZXNzYWdlcy5pbgorKysgYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wu
bWVzc2FnZXMuaW4KQEAgLTI3NCwxNiArMjc0LDExIEBAIG1lc3NhZ2VzIC0+IFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMIE5vdFJlZkNvdW50ZWQgewogICAgIHZvaWQgVW5pZm9ybUJsb2NrQmluZGlu
Zyh1aW50MzJfdCBwcm9ncmFtLCB1aW50MzJfdCB1bmlmb3JtQmxvY2tJbmRleCwgdWludDMyX3Qg
dW5pZm9ybUJsb2NrQmluZGluZykKICAgICB2b2lkIEdldEFjdGl2ZVVuaWZvcm1CbG9ja2l2KHVp
bnQzMl90IHByb2dyYW0sIHVpbnQzMl90IHVuaWZvcm1CbG9ja0luZGV4LCB1aW50MzJfdCBwbmFt
ZSwgdWludDY0X3QgcGFyYW1zU2l6ZSkgLT4gKElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4g
cGFyYW1zKSBTeW5jaHJvbm91cwogICAgIHZvaWQgR2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQigp
IC0+IChpbnQzMl90IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cwotICAgIHZvaWQgQmxpdEZyYW1l
YnVmZmVyQU5HTEUoaW50MzJfdCBzcmNYMCwgaW50MzJfdCBzcmNZMCwgaW50MzJfdCBzcmNYMSwg
aW50MzJfdCBzcmNZMSwgaW50MzJfdCBkc3RYMCwgaW50MzJfdCBkc3RZMCwgaW50MzJfdCBkc3RY
MSwgaW50MzJfdCBkc3RZMSwgdWludDMyX3QgbWFzaywgdWludDMyX3QgZmlsdGVyKQotICAgIHZv
aWQgUmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5HTEUodWludDMyX3QgdGFyZ2V0LCBp
bnQzMl90IHNhbXBsZXMsIHVpbnQzMl90IGludGVybmFsZm9ybWF0LCBpbnQzMl90IHdpZHRoLCBp
bnQzMl90IGhlaWdodCkKICAgICB2b2lkIENyZWF0ZVZlcnRleEFycmF5T0VTKCkgLT4gKHVpbnQz
Ml90IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cwogICAgIHZvaWQgRGVsZXRlVmVydGV4QXJyYXlP
RVModWludDMyX3QgYXJnMCkKICAgICB2b2lkIElzVmVydGV4QXJyYXlPRVModWludDMyX3QgYXJn
MCkgLT4gKGJvb2wgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCiAgICAgdm9pZCBCaW5kVmVydGV4
QXJyYXlPRVModWludDMyX3QgYXJnMCkKICAgICB2b2lkIEdldFRyYW5zbGF0ZWRTaGFkZXJTb3Vy
Y2VBTkdMRSh1aW50MzJfdCBhcmcwKSAtPiAoU3RyaW5nIHJldHVyblZhbHVlKSBTeW5jaHJvbm91
cwotICAgIHZvaWQgSW5zZXJ0RXZlbnRNYXJrZXJFWFQoU3RyaW5nIGFyZzApCi0gICAgdm9pZCBQ
dXNoR3JvdXBNYXJrZXJFWFQoU3RyaW5nIGFyZzApCi0gICAgdm9pZCBQb3BHcm91cE1hcmtlckVY
VCgpCiAgICAgdm9pZCBEcmF3QnVmZmVyc0VYVChJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90
PiBidWZzKQogICAgIHZvaWQgRHJhd0FycmF5c0luc3RhbmNlZEFOR0xFKHVpbnQzMl90IG1vZGUs
IGludDMyX3QgZmlyc3QsIGludDMyX3QgY291bnQsIGludDMyX3QgcHJpbWNvdW50KQogICAgIHZv
aWQgRHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUodWludDMyX3QgbW9kZSwgaW50MzJfdCBjb3Vu
dCwgdWludDMyX3QgdHlwZSwgdWludDY0X3Qgb2Zmc2V0LCBpbnQzMl90IHByaW1jb3VudCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGlj
c0NvbnRleHRHTEZ1bmN0aW9uc0dlbmVyYXRlZC5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMRnVuY3Rpb25zR2VuZXJhdGVkLmgKaW5k
ZXggMmVkMGY1ODdjZTA2YzczZTY1ZjgwZDRmNmY1NjcwNjU3YjFmM2Q2NS4uMTc2NDg3NTM0ODhm
NGIwYjNhNWU2MGU3OTJmZWZlN2E4MmIyMWU1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMRnVuY3Rpb25zR2VuZXJh
dGVkLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBo
aWNzQ29udGV4dEdMRnVuY3Rpb25zR2VuZXJhdGVkLmgKQEAgLTExMTgsMTQgKzExMTgsNiBAQAog
ICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmdldEdyYXBo
aWNzUmVzZXRTdGF0dXNBUkIoKTsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmV0dXJuVmFs
dWUpOwogICAgIH0KLSAgICB2b2lkIGJsaXRGcmFtZWJ1ZmZlckFOR0xFKGludDMyX3Qgc3JjWDAs
IGludDMyX3Qgc3JjWTAsIGludDMyX3Qgc3JjWDEsIGludDMyX3Qgc3JjWTEsIGludDMyX3QgZHN0
WDAsIGludDMyX3QgZHN0WTAsIGludDMyX3QgZHN0WDEsIGludDMyX3QgZHN0WTEsIHVpbnQzMl90
IG1hc2ssIHVpbnQzMl90IGZpbHRlcikKLSAgICB7Ci0gICAgICAgIG1fY29udGV4dC0+Z2V0RXh0
ZW5zaW9ucygpLmJsaXRGcmFtZWJ1ZmZlckFOR0xFKHNyY1gwLCBzcmNZMCwgc3JjWDEsIHNyY1kx
LCBkc3RYMCwgZHN0WTAsIGRzdFgxLCBkc3RZMSwgbWFzaywgZmlsdGVyKTsKLSAgICB9Ci0gICAg
dm9pZCByZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVBTkdMRSh1aW50MzJfdCB0YXJnZXQs
IGludDMyX3Qgc2FtcGxlcywgdWludDMyX3QgaW50ZXJuYWxmb3JtYXQsIGludDMyX3Qgd2lkdGgs
IGludDMyX3QgaGVpZ2h0KQotICAgIHsKLSAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25z
KCkucmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5HTEUodGFyZ2V0LCBzYW1wbGVzLCBp
bnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCk7Ci0gICAgfQogICAgIHZvaWQgY3JlYXRlVmVy
dGV4QXJyYXlPRVMoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50MzJfdCk+JiYgY29tcGxldGlv
bkhhbmRsZXIpCiAgICAgewogICAgICAgICBQbGF0Zm9ybUdMT2JqZWN0IHJldHVyblZhbHVlID0g
eyB9OwpAQCAtMTE1MiwxOCArMTE0NCw2IEBACiAgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250
ZXh0LT5nZXRFeHRlbnNpb25zKCkuZ2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFKGFyZzAp
OwogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHJldHVyblZhbHVlKSk7CiAgICAg
fQotICAgIHZvaWQgaW5zZXJ0RXZlbnRNYXJrZXJFWFQoU3RyaW5nJiYgYXJnMCkKLSAgICB7Ci0g
ICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmluc2VydEV2ZW50TWFya2VyRVhUKGFy
ZzApOwotICAgIH0KLSAgICB2b2lkIHB1c2hHcm91cE1hcmtlckVYVChTdHJpbmcmJiBhcmcwKQot
ICAgIHsKLSAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkucHVzaEdyb3VwTWFya2Vy
RVhUKGFyZzApOwotICAgIH0KLSAgICB2b2lkIHBvcEdyb3VwTWFya2VyRVhUKCkKLSAgICB7Ci0g
ICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnBvcEdyb3VwTWFya2VyRVhUKCk7Ci0g
ICAgfQogICAgIHZvaWQgZHJhd0J1ZmZlcnNFWFQoSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJf
dD4mJiBidWZzKQogICAgIHsKICAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuZHJh
d0J1ZmZlcnNFWFQobWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTGVudW0q
PihidWZzLmRhdGEoKSksIGJ1ZnMuc2l6ZSgpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuaCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eS5oCmluZGV4IGE1YTZmN2ZlYzIwMDU5YzczODU0YzA2YWI1OTU0ZThiZjVhN2M5
OGEuLmU1MDFiZGIyMTFmYzk3M2U1ZjU3OTkyYmEwMGNlOWI2MTExN2Y3NjcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mv
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5oCkBAIC0zMTMsNTYgKzMxMywxNiBAQCBwdWJs
aWM6CiAgICAgdm9pZCB1bmlmb3JtQmxvY2tCaW5kaW5nKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3Jh
bSwgR0NHTHVpbnQgdW5pZm9ybUJsb2NrSW5kZXgsIEdDR0x1aW50IHVuaWZvcm1CbG9ja0JpbmRp
bmcpIGZpbmFsOwogICAgIHZvaWQgZ2V0QWN0aXZlVW5pZm9ybUJsb2NraXYoR0NHTHVpbnQgcHJv
Z3JhbSwgR0NHTHVpbnQgdW5pZm9ybUJsb2NrSW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3Bh
bjxHQ0dMaW50PiBwYXJhbXMpIGZpbmFsOwogICAgIEdDR0xpbnQgZ2V0R3JhcGhpY3NSZXNldFN0
YXR1c0FSQigpIGZpbmFsOwotICAgIHZvaWQgYmxpdEZyYW1lYnVmZmVyQU5HTEUoR0NHTGludCBz
cmNYMCwgR0NHTGludCBzcmNZMCwgR0NHTGludCBzcmNYMSwgR0NHTGludCBzcmNZMSwgR0NHTGlu
dCBkc3RYMCwgR0NHTGludCBkc3RZMCwgR0NHTGludCBkc3RYMSwgR0NHTGludCBkc3RZMSwgR0NH
TGJpdGZpZWxkIG1hc2ssIEdDR0xlbnVtIGZpbHRlcikgZmluYWw7Ci0gICAgdm9pZCByZW5kZXJi
dWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xzaXplaSBz
YW1wbGVzLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6
ZWkgaGVpZ2h0KSBmaW5hbDsKICAgICBQbGF0Zm9ybUdMT2JqZWN0IGNyZWF0ZVZlcnRleEFycmF5
T0VTKCkgZmluYWw7CiAgICAgdm9pZCBkZWxldGVWZXJ0ZXhBcnJheU9FUyhQbGF0Zm9ybUdMT2Jq
ZWN0IGFyZzApIGZpbmFsOwogICAgIEdDR0xib29sZWFuIGlzVmVydGV4QXJyYXlPRVMoUGxhdGZv
cm1HTE9iamVjdCBhcmcwKSBmaW5hbDsKICAgICB2b2lkIGJpbmRWZXJ0ZXhBcnJheU9FUyhQbGF0
Zm9ybUdMT2JqZWN0IGFyZzApIGZpbmFsOwogICAgIFN0cmluZyBnZXRUcmFuc2xhdGVkU2hhZGVy
U291cmNlQU5HTEUoUGxhdGZvcm1HTE9iamVjdCBhcmcwKSBmaW5hbDsKLSAgICB2b2lkIGluc2Vy
dEV2ZW50TWFya2VyRVhUKGNvbnN0IFN0cmluZyYgYXJnMCkgZmluYWw7Ci0gICAgdm9pZCBwdXNo
R3JvdXBNYXJrZXJFWFQoY29uc3QgU3RyaW5nJiBhcmcwKSBmaW5hbDsKLSAgICB2b2lkIHBvcEdy
b3VwTWFya2VyRVhUKCkgZmluYWw7CiAgICAgdm9pZCBkcmF3QnVmZmVyc0VYVChHQ0dMU3Bhbjxj
b25zdCBHQ0dMZW51bT4gYnVmcykgZmluYWw7CiAgICAgdm9pZCBkcmF3QXJyYXlzSW5zdGFuY2Vk
QU5HTEUoR0NHTGVudW0gbW9kZSwgR0NHTGludCBmaXJzdCwgR0NHTHNpemVpIGNvdW50LCBHQ0dM
c2l6ZWkgcHJpbWNvdW50KSBmaW5hbDsKICAgICB2b2lkIGRyYXdFbGVtZW50c0luc3RhbmNlZEFO
R0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xzaXplaSBjb3VudCwgR0NHTGVudW0gdHlwZSwgR0NHTHZv
aWRwdHIgb2Zmc2V0LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KSBmaW5hbDsKICAgICB2b2lkIHZlcnRl
eEF0dHJpYkRpdmlzb3JBTkdMRShHQ0dMdWludCBpbmRleCwgR0NHTHVpbnQgZGl2aXNvcikgZmlu
YWw7CiAgICAgdm9pZCBnZXRJbnRlcm5hbGZvcm1hdGl2KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVu
dW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3BhbjxHQ0dMaW50PiBwYXJh
bXMpIGZpbmFsOwotICAgIHZvaWQgcmVhZFBpeGVsc1JvYnVzdEFOR0xFKEdDR0xpbnQgeCwgR0NH
TGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1h
dCwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBH
Q0dMc2l6ZWkqIGNvbHVtbnMsIEdDR0xzaXplaSogcm93cywgR0NHTHZvaWQqIHBpeGVscykgZmlu
YWw7Ci0gICAgdm9pZCB0ZXhQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwg
R0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMZmxvYXQqIHBhcmFt
cykgZmluYWw7Ci0gICAgdm9pZCB0ZXhQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRh
cmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMaW50KiBw
YXJhbXMpIGZpbmFsOwotICAgIHZvaWQgZ2V0UXVlcnlpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRh
cmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0
aCwgR0NHTGludCogcGFyYW1zKSBmaW5hbDsKLSAgICB2b2lkIGdldFF1ZXJ5T2JqZWN0dWl2Um9i
dXN0QU5HTEUoR0NHTHVpbnQgaWQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwg
R0NHTHNpemVpKiBsZW5ndGgsIEdDR0x1aW50KiBwYXJhbXMpIGZpbmFsOwotICAgIHZvaWQgZ2V0
QnVmZmVyUG9pbnRlcnZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1l
LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0x2b2lkKiogcGFyYW1z
KSBmaW5hbDsKLSAgICB2b2lkIGdldFZlcnRleEF0dHJpYklpdlJvYnVzdEFOR0xFKEdDR0x1aW50
IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVu
Z3RoLCBHQ0dMaW50KiBwYXJhbXMpIGZpbmFsOwotICAgIHZvaWQgZ2V0VmVydGV4QXR0cmliSXVp
dlJvYnVzdEFOR0xFKEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1
ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMdWludCogcGFyYW1zKSBmaW5hbDsKLSAgICB2
b2lkIGdldFVuaWZvcm11aXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMaW50IGxv
Y2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0x1aW50KiBw
YXJhbXMpIGZpbmFsOwotICAgIHZvaWQgZ2V0QnVmZmVyUGFyYW1ldGVyaTY0dlJvYnVzdEFOR0xF
KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dM
c2l6ZWkqIGxlbmd0aCwgR0NHTGludDY0KiBwYXJhbXMpIGZpbmFsOwotICAgIHZvaWQgc2FtcGxl
clBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUs
IEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMaW50KiBwYXJhbSkgZmluYWw7Ci0gICAgdm9p
ZCBzYW1wbGVyUGFyYW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51
bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xmbG9hdCogcGFyYW0pIGZpbmFs
OwotICAgIHZvaWQgZ2V0U2FtcGxlclBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2Ft
cGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0
aCwgR0NHTGludCogcGFyYW1zKSBmaW5hbDsKLSAgICB2b2lkIGdldFNhbXBsZXJQYXJhbWV0ZXJm
dlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkg
YnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xmbG9hdCogcGFyYW1zKSBmaW5hbDsKLSAg
ICB2b2lkIGdldEZyYW1lYnVmZmVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJn
ZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgs
IEdDR0xpbnQqIHBhcmFtcykgZmluYWw7Ci0gICAgdm9pZCBnZXRQcm9ncmFtSW50ZXJmYWNlaXZS
b2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMZW51bSBwcm9ncmFtSW50ZXJmYWNlLCBH
Q0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dM
aW50KiBwYXJhbXMpIGZpbmFsOwotICAgIHZvaWQgZ2V0Qm9vbGVhbmlfdlJvYnVzdEFOR0xFKEdD
R0xlbnVtIHRhcmdldCwgR0NHTHVpbnQgaW5kZXgsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6
ZWkqIGxlbmd0aCwgR0NHTGJvb2xlYW4qIGRhdGEpIGZpbmFsOyAvLyBOT0xJTlQKLSAgICB2b2lk
IGdldE11bHRpc2FtcGxlZnZSb2J1c3RBTkdMRShHQ0dMZW51bSBwbmFtZSwgR0NHTHVpbnQgaW5k
ZXgsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGZsb2F0KiB2YWwp
IGZpbmFsOwotICAgIHZvaWQgZ2V0VGV4TGV2ZWxQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xl
bnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZT
aXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1zKSBmaW5hbDsKLSAgICB2b2lk
IGdldFRleExldmVsUGFyYW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xp
bnQgbGV2ZWwsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBs
ZW5ndGgsIEdDR0xmbG9hdCogcGFyYW1zKSBmaW5hbDsKLSAgICB2b2lkIGdldFBvaW50ZXJ2Um9i
dXN0QU5HTEVSb2J1c3RBTkdMRShHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdD
R0xzaXplaSogbGVuZ3RoLCBHQ0dMdm9pZCoqIHBhcmFtcykgZmluYWw7Ci0gICAgdm9pZCBnZXRu
VW5pZm9ybWZ2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwg
R0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMZmxvYXQqIHBhcmFtcykg
ZmluYWw7Ci0gICAgdm9pZCBnZXRuVW5pZm9ybWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3Jh
bSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3Ro
LCBHQ0dMaW50KiBwYXJhbXMpIGZpbmFsOwotICAgIHZvaWQgZ2V0blVuaWZvcm11aXZSb2J1c3RB
TkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6
ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0x1aW50KiBwYXJhbXMpIGZpbmFsOwotICAgIHZvaWQg
dGV4UGFyYW1ldGVySWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFt
ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xpbnQqIHBhcmFtcykgZmluYWw7Ci0gICAg
dm9pZCB0ZXhQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51
bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0x1aW50KiBwYXJhbXMpIGZpbmFs
OwotICAgIHZvaWQgZ2V0VGV4UGFyYW1ldGVySWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBH
Q0dMaW50KiBwYXJhbXMpIGZpbmFsOwotICAgIHZvaWQgZ2V0VGV4UGFyYW1ldGVySXVpdlJvYnVz
dEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXpl
LCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHVpbnQqIHBhcmFtcykgZmluYWw7Ci0gICAgdm9pZCBz
YW1wbGVyUGFyYW1ldGVySWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0g
cG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMaW50KiBwYXJhbSkgZmluYWw7Ci0g
ICAgdm9pZCBzYW1wbGVyUGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIs
IEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTHVpbnQqIHBhcmFt
KSBmaW5hbDsKLSAgICB2b2lkIGdldFNhbXBsZXJQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRShHQ0dM
dWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXpl
aSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpIGZpbmFsOwotICAgIHZvaWQgZ2V0U2FtcGxlclBh
cmFtZXRlckl1aXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwg
R0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMdWludCogcGFyYW1zKSBm
aW5hbDsKLSAgICB2b2lkIGdldFF1ZXJ5T2JqZWN0aXZSb2J1c3RBTkdMRShHQ0dMdWludCBpZCwg
R0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NH
TGludCogcGFyYW1zKSBmaW5hbDsKLSAgICB2b2lkIGdldFF1ZXJ5T2JqZWN0aTY0dlJvYnVzdEFO
R0xFKEdDR0x1aW50IGlkLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xz
aXplaSogbGVuZ3RoLCBHQ0dMaW50NjQqIHBhcmFtcykgZmluYWw7Ci0gICAgdm9pZCBnZXRRdWVy
eU9iamVjdHVpNjR2Um9idXN0QU5HTEUoR0NHTHVpbnQgaWQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dM
c2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0x1aW50NjQqIHBhcmFtcykgZmlu
YWw7CiAgICAgdm9pZCBtdWx0aURyYXdBcnJheXNBTkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMU3Bh
bjxjb25zdCBHQ0dMaW50PiBmaXJzdHMsIEdDR0xTcGFuPGNvbnN0IEdDR0xzaXplaT4gY291bnRz
LCBHQ0dMc2l6ZWkgZHJhd2NvdW50KSBmaW5hbDsKICAgICB2b2lkIG11bHRpRHJhd0FycmF5c0lu
c3RhbmNlZEFOR0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xTcGFuPGNvbnN0IEdDR0xpbnQ+IGZpcnN0
cywgR0NHTFNwYW48Y29uc3QgR0NHTHNpemVpPiBjb3VudHMsIEdDR0xTcGFuPGNvbnN0IEdDR0xz
aXplaT4gaW5zdGFuY2VDb3VudHMsIEdDR0xzaXplaSBkcmF3Y291bnQpIGZpbmFsOwogICAgIHZv
aWQgbXVsdGlEcmF3RWxlbWVudHNBTkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMU3Bhbjxjb25zdCBH
Q0dMc2l6ZWk+IGNvdW50cywgR0NHTGVudW0gdHlwZSwgR0NHTFNwYW48Y29uc3QgR0NHTGludD4g
b2Zmc2V0cywgR0NHTHNpemVpIGRyYXdjb3VudCkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHlGdW5jdGlvbnNHZW5lcmF0ZWQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9n
cmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5RnVuY3Rpb25zR2VuZXJhdGVkLmNw
cAppbmRleCA4NzE1YjQ0NzU0NDM4MThmMjZhZmU2ZmJmYjU0NzY4MmU5OTc5MmJjLi41MjMxNTk4
MTRmODY1YTM1MzI2MGI0ZTgxZDM2NThhNWI4NGYwYTM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlG
dW5jdGlvbnNHZW5lcmF0ZWQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
Z3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUZ1bmN0aW9uc0dlbmVyYXRlZC5j
cHAKQEAgLTEzODAsMTYgKzEzODAsNiBAQCBHQ0dMaW50IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIoKQogICAgIHJldHVybiByZXR1cm5WYWx1
ZTsKIH0KIAotdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpibGl0RnJhbWVidWZm
ZXJBTkdMRShHQ0dMaW50IHNyY1gwLCBHQ0dMaW50IHNyY1kwLCBHQ0dMaW50IHNyY1gxLCBHQ0dM
aW50IHNyY1kxLCBHQ0dMaW50IGRzdFgwLCBHQ0dMaW50IGRzdFkwLCBHQ0dMaW50IGRzdFgxLCBH
Q0dMaW50IGRzdFkxLCBHQ0dMYml0ZmllbGQgbWFzaywgR0NHTGVudW0gZmlsdGVyKQotewotICAg
IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpCbGl0RnJhbWVidWZmZXJB
TkdMRShzcmNYMCwgc3JjWTAsIHNyY1gxLCBzcmNZMSwgZHN0WDAsIGRzdFkwLCBkc3RYMSwgZHN0
WTEsIG1hc2ssIGZpbHRlciksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKLX0KLQot
dm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpyZW5kZXJidWZmZXJTdG9yYWdlTXVs
dGlzYW1wbGVBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xzaXplaSBzYW1wbGVzLCBHQ0dMZW51
bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KQotewot
ICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpSZW5kZXJidWZmZXJT
dG9yYWdlTXVsdGlzYW1wbGVBTkdMRSh0YXJnZXQsIHNhbXBsZXMsIGludGVybmFsZm9ybWF0LCB3
aWR0aCwgaGVpZ2h0KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOwotfQotCiBQbGF0
Zm9ybUdMT2JqZWN0IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNyZWF0ZVZlcnRleEFy
cmF5T0VTKCkKIHsKICAgICB1aW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKQEAgLTE0MjEsMjEg
KzE0MTEsNiBAQCBTdHJpbmcgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VHJhbnNs
YXRlZFNoYWRlclNvdXJjZUFOR0xFKFBsYXRmb3JtR0xPYgogICAgIHJldHVybiByZXR1cm5WYWx1
ZTsKIH0KIAotdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjppbnNlcnRFdmVudE1h
cmtlckVYVChjb25zdCBTdHJpbmcmIGFyZzApCi17Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6Okluc2VydEV2ZW50TWFya2VyRVhUKGFyZzApLCBtX2dyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllcik7Ci19Ci0KLXZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6cHVzaEdyb3VwTWFya2VyRVhUKGNvbnN0IFN0cmluZyYgYXJnMCkKLXsKLSAgICBzZW5k
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6UHVzaEdyb3VwTWFya2VyRVhUKGFy
ZzApLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Ci19Ci0KLXZvaWQgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6cG9wR3JvdXBNYXJrZXJFWFQoKQotewotICAgIHNlbmQoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpQb3BHcm91cE1hcmtlckVYVCgpLCBtX2dy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Ci19Ci0KIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6ZHJhd0J1ZmZlcnNFWFQoR0NHTFNwYW48Y29uc3QgR0NHTGVudW0+IGJ1ZnMp
CiB7CiAgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRyYXdCdWZm
ZXJzRVhUKElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgdWludDMyX3QqPihidWZzLmRhdGEpLCBidWZzLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIpOwpAQCAtMTQ4NSwxODEgKzE0NjAsNiBAQCB2b2lkIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6Om11bHRpRHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUoR0NHTGVu
dW0gbW9kZQogICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpNdWx0
aURyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKG1vZGUsIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50
MzJfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBpbnQzMl90Kj4oY291bnRzLmRhdGEpLCBjb3Vu
dHMuYnVmU2l6ZSksIHR5cGUsIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4ocmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBpbnQzMl90Kj4ob2Zmc2V0cy5kYXRhKSwgb2Zmc2V0cy5idWZTaXplKSwg
SVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PihyZWludGVycHJldF9jYXN0PGNvbnN0IGludDMy
X3QqPihpbnN0YW5jZUNvdW50cy5kYXRhKSwgaW5zdGFuY2VDb3VudHMuYnVmU2l6ZSksIGRyYXdj
b3VudCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKIH0KIAotdm9pZCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpyZWFkUGl4ZWxzUm9idXN0QU5HTEUoR0NHTGludCB4LCBH
Q0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9y
bWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgs
IEdDR0xzaXplaSogY29sdW1ucywgR0NHTHNpemVpKiByb3dzLCBHQ0dMdm9pZCogcGl4ZWxzKQot
ewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6dGV4UGFyYW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xl
bnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGZsb2F0KiBwYXJhbXMpCi17
Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5Ojp0ZXhQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVu
dW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMaW50KiBwYXJhbXMpCi17Ci0g
ICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpnZXRRdWVyeWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFt
ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMp
Ci17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpnZXRRdWVyeU9iamVjdHVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IGlkLCBHQ0dM
ZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMdWlu
dCogcGFyYW1zKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0QnVmZmVyUG9pbnRlcnZSb2J1c3RBTkdMRShHQ0dMZW51
bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBs
ZW5ndGgsIEdDR0x2b2lkKiogcGFyYW1zKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0K
LXZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VmVydGV4QXR0cmliSWl2Um9i
dXN0QU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6
ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykKLXsKLSAgICBub3RJbXBsZW1l
bnRlZCgpOwotfQotCi12b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFZlcnRl
eEF0dHJpYkl1aXZSb2J1c3RBTkdMRShHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUsIEdD
R0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHVpbnQqIHBhcmFtcykKLXsK
LSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmdldFVuaWZvcm11aXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMaW50
IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0x1aW50
KiBwYXJhbXMpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpnZXRCdWZmZXJQYXJhbWV0ZXJpNjR2Um9idXN0QU5HTEUoR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXpl
aSogbGVuZ3RoLCBHQ0dMaW50NjQqIHBhcmFtcykKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwot
fQotCi12b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnNhbXBsZXJQYXJhbWV0ZXJp
dlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkg
YnVmU2l6ZSwgY29uc3QgR0NHTGludCogcGFyYW0pCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsK
LX0KLQotdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpzYW1wbGVyUGFyYW1ldGVy
ZnZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVp
IGJ1ZlNpemUsIGNvbnN0IEdDR0xmbG9hdCogcGFyYW0pCi17Ci0gICAgbm90SW1wbGVtZW50ZWQo
KTsKLX0KLQotdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRTYW1wbGVyUGFy
YW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NH
THNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpCi17Ci0g
ICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpnZXRTYW1wbGVyUGFyYW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBH
Q0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dM
ZmxvYXQqIHBhcmFtcykKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEZyYW1lYnVmZmVyUGFyYW1ldGVyaXZSb2J1c3RB
TkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwg
R0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykKLXsKLSAgICBub3RJbXBsZW1lbnRl
ZCgpOwotfQotCi12b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFByb2dyYW1J
bnRlcmZhY2VpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xlbnVtIHByb2dyYW1J
bnRlcmZhY2UsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBs
ZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12
b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEJvb2xlYW5pX3ZSb2J1c3RBTkdM
RShHQ0dMZW51bSB0YXJnZXQsIEdDR0x1aW50IGluZGV4LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NH
THNpemVpKiBsZW5ndGgsIEdDR0xib29sZWFuKiBkYXRhKSAvLyBOT0xJTlQKLXsKLSAgICBub3RJ
bXBsZW1lbnRlZCgpOwotfQotCi12b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Omdl
dE11bHRpc2FtcGxlZnZSb2J1c3RBTkdMRShHQ0dMZW51bSBwbmFtZSwgR0NHTHVpbnQgaW5kZXgs
IEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGZsb2F0KiB2YWwpCi17
Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjpnZXRUZXhMZXZlbFBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xz
aXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsK
LX0KLQotdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRUZXhMZXZlbFBhcmFt
ZXRlcmZ2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51
bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMZmxvYXQq
IHBhcmFtcykKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OmdldFBvaW50ZXJ2Um9idXN0QU5HTEVSb2J1c3RBTkdMRShHQ0dM
ZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMdm9p
ZCoqIHBhcmFtcykKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmdldG5Vbmlmb3JtZnZSb2J1c3RBTkdMRShHQ0dMdWludCBw
cm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBs
ZW5ndGgsIEdDR0xmbG9hdCogcGFyYW1zKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0K
LXZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0blVuaWZvcm1pdlJvYnVzdEFO
R0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXpl
LCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1zKQotewotICAgIG5vdEltcGxlbWVu
dGVkKCk7Ci19Ci0KLXZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0blVuaWZv
cm11aXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dM
c2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0x1aW50KiBwYXJhbXMpCi17Ci0g
ICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5Ojp0ZXhQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVt
IHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGludCogcGFyYW1zKQotewotICAg
IG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6dGV4UGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0g
cG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMdWludCogcGFyYW1zKQotewotICAg
IG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6Z2V0VGV4UGFyYW1ldGVySWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51
bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBw
YXJhbXMpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpnZXRUZXhQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUoR0NHTGVudW0g
dGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVu
Z3RoLCBHQ0dMdWludCogcGFyYW1zKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZv
aWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c2FtcGxlclBhcmFtZXRlcklpdlJvYnVz
dEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6
ZSwgY29uc3QgR0NHTGludCogcGFyYW0pCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQot
dm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpzYW1wbGVyUGFyYW1ldGVySXVpdlJv
YnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVm
U2l6ZSwgY29uc3QgR0NHTHVpbnQqIHBhcmFtKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19
Ci0KLXZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0U2FtcGxlclBhcmFtZXRl
cklpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6
ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykKLXsKLSAgICBu
b3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmdldFNhbXBsZXJQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NH
TGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHVp
bnQqIHBhcmFtcykKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFF1ZXJ5T2JqZWN0aXZSb2J1c3RBTkdMRShHQ0dMdWlu
dCBpZCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0
aCwgR0NHTGludCogcGFyYW1zKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0UXVlcnlPYmplY3RpNjR2Um9idXN0QU5H
TEUoR0NHTHVpbnQgaWQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNp
emVpKiBsZW5ndGgsIEdDR0xpbnQ2NCogcGFyYW1zKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7
Ci19Ci0KLXZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0UXVlcnlPYmplY3R1
aTY0dlJvYnVzdEFOR0xFKEdDR0x1aW50IGlkLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1
ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMdWludDY0KiBwYXJhbXMpCi17Ci0gICAgbm90
SW1wbGVtZW50ZWQoKTsKLX0KLQogfQogCiAjZW5kaWYK
</data>

          </attachment>
      

    </bug>

</bugzilla>