<?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>40316</bug_id>
          
          <creation_ts>2010-06-08 11:52:27 -0700</creation_ts>
          <short_desc>Implement extension entry points and remove EXTENSIONS enum</short_desc>
          <delta_ts>2010-12-16 11:47:06 -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>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>50851</blocked>
    
    <blocked>51202</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Kenneth Russell">kbr</reporter>
          <assigned_to name="Kenneth Russell">kbr</assigned_to>
          <cc>abarth</cc>
    
    <cc>cmarrin</cc>
    
    <cc>dglazkov</cc>
    
    <cc>enne</cc>
    
    <cc>eric</cc>
    
    <cc>fishd</cc>
    
    <cc>jamesr</cc>
    
    <cc>levin</cc>
    
    <cc>oliver</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>zmo</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>235407</commentid>
    <comment_count>0</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2010-06-08 11:52:27 -0700</bug_when>
    <thetext>The extension-related entry points getSupportedExtensions and getExtension must be implemented. The EXTENSIONS enum must be removed; passing it to getParameter must return INVALID_ENUM.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>317204</commentid>
    <comment_count>1</comment_count>
      <attachid>75588</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2010-12-03 18:30:45 -0800</bug_when>
    <thetext>Created attachment 75588
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>317205</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-12-03 18:38:53 -0800</bug_when>
    <thetext>Attachment 75588 did not build on chromium:
Build output: http://queues.webkit.org/results/6738029</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>317212</commentid>
    <comment_count>3</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2010-12-03 19:00:42 -0800</bug_when>
    <thetext>Note: in a full Chromium build, this patch depends on http://codereview.chromium.org/5626008 . I&apos;ll roll forward the Chromium dependencies in WebKit once the other changes are committed. I&apos;ll also submit a revised patch fixing the compile warning.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>317219</commentid>
    <comment_count>4</comment_count>
      <attachid>75592</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2010-12-03 19:46:34 -0800</bug_when>
    <thetext>Created attachment 75592
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>318069</commentid>
    <comment_count>5</comment_count>
      <attachid>75787</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2010-12-06 23:05:08 -0800</bug_when>
    <thetext>Created attachment 75787
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>318070</commentid>
    <comment_count>6</comment_count>
      <attachid>75787</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2010-12-06 23:05:51 -0800</bug_when>
    <thetext>Comment on attachment 75787
Patch

Based on offline feedback from James Robinson, renamed m_availableExtensions to m_enabledExtensions in Chromium implementation to be clearer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>318209</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-12-07 08:34:39 -0800</bug_when>
    <thetext>Attachment 75787 did not pass style-queue:

Failed to run &quot;[u&apos;git&apos;, u&apos;reset&apos;, u&apos;--hard&apos;, u&apos;refs/remotes/trunk&apos;]&quot; exit_code: 128
error: Could not write new index file.
fatal: Could not reset index file to revision &apos;refs/remotes/trunk&apos;.


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>318253</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-12-07 09:35:29 -0800</bug_when>
    <thetext>Attachment 75787 did not pass style-queue:

Failed to run &quot;[u&apos;git&apos;, u&apos;reset&apos;, u&apos;--hard&apos;, u&apos;refs/remotes/trunk&apos;]&quot; exit_code: 128
error: Could not write new index file.
fatal: Could not reset index file to revision &apos;refs/remotes/trunk&apos;.


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>318305</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-12-07 10:36:34 -0800</bug_when>
    <thetext>Attachment 75787 did not pass style-queue:

Failed to run &quot;[u&apos;git&apos;, u&apos;reset&apos;, u&apos;--hard&apos;, u&apos;refs/remotes/trunk&apos;]&quot; exit_code: 128
error: Could not write new index file.
fatal: Could not reset index file to revision &apos;refs/remotes/trunk&apos;.


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>318356</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-12-07 11:37:53 -0800</bug_when>
    <thetext>Attachment 75787 did not pass style-queue:

Failed to run &quot;[u&apos;git&apos;, u&apos;reset&apos;, u&apos;--hard&apos;, u&apos;refs/remotes/trunk&apos;]&quot; exit_code: 128
error: Could not write new index file.
fatal: Could not reset index file to revision &apos;refs/remotes/trunk&apos;.


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>318550</commentid>
    <comment_count>11</comment_count>
      <attachid>75787</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2010-12-07 19:27:49 -0800</bug_when>
    <thetext>Comment on attachment 75787
Patch

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

R- for the bindings issue, but I left a number of other comments.  I&apos;m still not sure whether I completely understand the chromium request/enable extension system so some of my comments may be totally off base.  Please let me know if so :)

&gt; WebCore/bindings/js/JSWebGLRenderingContextCustom.cpp:167
&gt; +static JSValue toJS(ExecState* exec, JSDOMGlobalObject* globalObject, WebGLExtension* extension)

As with the V8 binding you have to create a hidden reference from the context on the extension object.  The JavaScriptCore function is called markDOMObjectWrapper() but I don&apos;t know exactly how it works.

&gt; WebCore/bindings/v8/custom/V8WebGLRenderingContextCustom.cpp:156
&gt; +static v8::Handle&lt;v8::Value&gt; toV8Object(WebGLExtension* extension)

I&apos;m afraid this binding code isn&apos;t quite enough - the WebGL spec requires that all calls to getExtension(&quot;foo&quot;) on the same context return the _same_ object.  That means we have to hold the javascript wrapper object alive for the life of the context or the JS wrapper might get garbage collected and any expandos set on it will be lost.  Example JS:

ctx.getExtension(&quot;foo&quot;).myProperty = 2;
// a bunch of javascript that triggers GC
window.alert(ctx.getExtension(&quot;foo&quot;).myProperty); // should produce &apos;2&apos;

I believe the way to do this is to create a hidden reference from the context to the extension object.  See V8DOMTokenListCustom.cpp for an example of how this works (it uses V8DOMWrapper::setHiddenReference() under the hood).  Could you also add a layout test for this (you can use window.GCController.collect() to force GC in a test, see fast/dom/HTMLElement/class-list-gc.html as an example).  This sort of stuff is historically regression-prone.

&gt; WebCore/html/canvas/WebGLRenderingContext.cpp:3626
&gt; +        if (type == GraphicsContext3D::FLOAT &amp;&amp; m_oesTextureFloat)

seems odd to check &apos;type&apos; in the default: clause of a switch statement on &apos;type&apos;.  maybe:

case GraphicsContext3D::FLOAT:
    if (m_oesTextureFloat)
      break;

instead?

&gt; WebCore/html/canvas/WebGLRenderingContext.cpp:3638
&gt; +            &amp;&amp; type != GraphicsContext3D::FLOAT) {

why doesn&apos;t this function check for the extension being enabled when it checks for ::FLOAT?

&gt; WebCore/html/canvas/WebGLRenderingContext.h:171
&gt; +    Vector&lt;String&gt; getSupportedExtensions();

Creating+returning a new Vector&lt;&gt; by value is not cheap (although it looks like NVRO will save one copy here).  From what I can tell this list will never change for the lifetime of a WebGL context here, so could we cache this list on the WebGLRenderingContext and return a const Vector&lt;String&gt;&amp; here instead.

&gt; WebCore/html/canvas/WebGLRenderingContext.h:466
&gt; +    // Enabled extension objects.
&gt; +    RefPtr&lt;OESTextureFloat&gt; m_oesTextureFloat;

What&apos;s the plan to scale this when we support more extensions?  I wonder if something like a HashMap&lt;String, WebGLExtension&gt; would be a better fit (assuming that each extension is a singleton per context).

&gt; WebCore/platform/graphics/GraphicsContext3D.cpp:1089
&gt; +    default:
&gt; +        ASSERT(false);
&gt; +    }

I know this isn&apos;t your doing, but why does this switch have a default: case?  It&apos;s a switch on an enum and we should handle every case, so it seems like a good time to leave out the default: and let the compiler complain if we miss a case.  Otherwise ASSERT_NOT_REACHED().

&gt; WebCore/platform/graphics/chromium/Extensions3DChromium.h:45
&gt; +    virtual bool ensureEnabled(const String&amp;);

I&apos;m not sure what &quot;ensure&quot; means here - why not just call this enable() and have it return a bool indicating whether the extension was successfully enabled?  &quot;ensure&quot; makes me think that this function promises that the extension is turned on, but this doesn&apos;t.

&gt; WebKit/chromium/public/WebGraphicsContext3D.h:145
&gt; +    virtual void requestExtensionCHROMIUM(const char*) = 0;

It&apos;s unfortunate to use const char* for a string type here.  I think the best type to use would be WebString, or possibly WebCString if we want to ASCII-encode the value before passing it to the API.  WebString would be more consistent with getRequestableExtensionsCHROMIUM().

Also I think getAvailableExtensionsCHROMIUM() would make a bit more sense (see my comment about m_requestableExtensions further down).

&gt; WebKit/chromium/src/GraphicsContext3DChromium.cpp:731
&gt; +bool GraphicsContext3DInternal::ensureExtensionEnabled(const String&amp; name)
&gt; +{
&gt; +    initializeExtensions();
&gt; +
&gt; +    if (m_enabledExtensions.contains(name))
&gt; +        return true;
&gt; +
&gt; +    if (m_requestableExtensions.contains(name)) {
&gt; +        m_impl-&gt;requestExtensionCHROMIUM(name.ascii().data());
&gt; +        m_enabledExtensions.clear();
&gt; +        m_requestableExtensions.clear();
&gt; +        m_initializedAvailableExtensions = false;
&gt; +    }
&gt; +
&gt; +    initializeExtensions();
&gt; +    return m_enabledExtensions.contains(name);

I&apos;m a bit confused - if an extension &quot;foo&quot; is in m_impl-&gt;getRequestableExtensionsCHROMIUM() will a call to m_impl-&gt;requestExtensionCHROMIUM(&quot;foo&quot;) not always actually enable the extension?

&gt; WebKit/chromium/src/GraphicsContext3DInternal.h:290
&gt; -    HashSet&lt;String&gt; m_availableExtensions;
&gt; +    HashSet&lt;String&gt; m_enabledExtensions;
&gt; +    HashSet&lt;String&gt; m_requestableExtensions;

I think m_availableExtensions is a better name than m_requestableExtensions if it is the set of extensions that are available to be enabled.  &quot;requestable&quot; to me implies that a request to enable a extension from this test could be denied, which isn&apos;t the case as I understand it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>318587</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-12-07 21:31:11 -0800</bug_when>
    <thetext>Attachment 75787 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/update-webkit&apos;]&quot; exit_code: 2
Updating OpenSource
Incomplete data: Delta source ended unexpectedly at /usr/lib/git-core/git-svn line 5061

Died at WebKitTools/Scripts/update-webkit line 132.


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>319183</commentid>
    <comment_count>13</comment_count>
      <attachid>76000</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2010-12-08 18:27:19 -0800</bug_when>
    <thetext>Created attachment 76000
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>319187</commentid>
    <comment_count>14</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2010-12-08 18:44:10 -0800</bug_when>
    <thetext>(In reply to comment #11)
&gt; (From update of attachment 75787 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=75787&amp;action=review
&gt; 
&gt; R- for the bindings issue, but I left a number of other comments.  I&apos;m still not sure whether I completely understand the chromium request/enable extension system so some of my comments may be totally off base.  Please let me know if so :)
&gt; 
&gt; &gt; WebCore/bindings/js/JSWebGLRenderingContextCustom.cpp:167
&gt; &gt; +static JSValue toJS(ExecState* exec, JSDOMGlobalObject* globalObject, WebGLExtension* extension)
&gt; 
&gt; As with the V8 binding you have to create a hidden reference from the context on the extension object.  The JavaScriptCore function is called markDOMObjectWrapper() but I don&apos;t know exactly how it works.
&gt; 
&gt; &gt; WebCore/bindings/v8/custom/V8WebGLRenderingContextCustom.cpp:156
&gt; &gt; +static v8::Handle&lt;v8::Value&gt; toV8Object(WebGLExtension* extension)
&gt; 
&gt; I&apos;m afraid this binding code isn&apos;t quite enough - the WebGL spec requires that all calls to getExtension(&quot;foo&quot;) on the same context return the _same_ object.  That means we have to hold the javascript wrapper object alive for the life of the context or the JS wrapper might get garbage collected and any expandos set on it will be lost.  Example JS:
&gt; 
&gt; ctx.getExtension(&quot;foo&quot;).myProperty = 2;
&gt; // a bunch of javascript that triggers GC
&gt; window.alert(ctx.getExtension(&quot;foo&quot;).myProperty); // should produce &apos;2&apos;
&gt; 
&gt; I believe the way to do this is to create a hidden reference from the context to the extension object.  See V8DOMTokenListCustom.cpp for an example of how this works (it uses V8DOMWrapper::setHiddenReference() under the hood).  Could you also add a layout test for this (you can use window.GCController.collect() to force GC in a test, see fast/dom/HTMLElement/class-list-gc.html as an example).  This sort of stuff is historically regression-prone.

Thanks for catching this. I verified that the bindings were buggy as you pointed out and have fixed them in the current patch, verifying in DRT for WebKit using the GCController and in Chromium by allocating enough memory to force a GC. (I haven&apos;t yet implemented OES_texture_float support for Chromium&apos;s in-process WebGL implementation and therefore DRT.)

&gt; &gt; WebCore/html/canvas/WebGLRenderingContext.cpp:3626
&gt; &gt; +        if (type == GraphicsContext3D::FLOAT &amp;&amp; m_oesTextureFloat)
&gt; 
&gt; seems odd to check &apos;type&apos; in the default: clause of a switch statement on &apos;type&apos;.  maybe:
&gt; 
&gt; case GraphicsContext3D::FLOAT:
&gt;     if (m_oesTextureFloat)
&gt;       break;
&gt; 
&gt; instead?

I anticipate adding more types (HALF_FLOAT in particular), so using fall-through doesn&apos;t work. I&apos;ve changed this to just use a switch and duplicated the code which synthesizes INVALID_ENUM (not a big deal).

&gt; &gt; WebCore/html/canvas/WebGLRenderingContext.cpp:3638
&gt; &gt; +            &amp;&amp; type != GraphicsContext3D::FLOAT) {
&gt; 
&gt; why doesn&apos;t this function check for the extension being enabled when it checks for ::FLOAT?

It&apos;s the same function. It&apos;s checked above.

&gt; &gt; WebCore/html/canvas/WebGLRenderingContext.h:171
&gt; &gt; +    Vector&lt;String&gt; getSupportedExtensions();
&gt; 
&gt; Creating+returning a new Vector&lt;&gt; by value is not cheap (although it looks like NVRO will save one copy here).  From what I can tell this list will never change for the lifetime of a WebGL context here, so could we cache this list on the WebGLRenderingContext and return a const Vector&lt;String&gt;&amp; here instead.

This code isn&apos;t performance critical and I think at this point that adding a cache is more trouble than it&apos;s worth. If this turns up hot in some WebGL apps I&apos;ll change it if that&apos;s OK.

&gt; &gt; WebCore/html/canvas/WebGLRenderingContext.h:466
&gt; &gt; +    // Enabled extension objects.
&gt; &gt; +    RefPtr&lt;OESTextureFloat&gt; m_oesTextureFloat;
&gt; 
&gt; What&apos;s the plan to scale this when we support more extensions?  I wonder if something like a HashMap&lt;String, WebGLExtension&gt; would be a better fit (assuming that each extension is a singleton per context).

Not 100% sure yet. As you can see there are cases in the code where we need to test (quickly, and ideally without a HashMap lookup) whether a particular extension has been enabled.

&gt; &gt; WebCore/platform/graphics/GraphicsContext3D.cpp:1089
&gt; &gt; +    default:
&gt; &gt; +        ASSERT(false);
&gt; &gt; +    }
&gt; 
&gt; I know this isn&apos;t your doing, but why does this switch have a default: case?  It&apos;s a switch on an enum and we should handle every case, so it seems like a good time to leave out the default: and let the compiler complain if we miss a case.  Otherwise ASSERT_NOT_REACHED().

I took a shortcut here because this routine handles only a few out of a fairly large set of enums. Based on feedback on the WebGL public mailing list I&apos;m probably going to have to generalize this code anyway to handle all of the cases, but I want to do that in a follow-up patch. I&apos;ve changed it to use ASSERT_NOT_REACHED() for now.

&gt; &gt; WebCore/platform/graphics/chromium/Extensions3DChromium.h:45
&gt; &gt; +    virtual bool ensureEnabled(const String&amp;);
&gt; 
&gt; I&apos;m not sure what &quot;ensure&quot; means here - why not just call this enable() and have it return a bool indicating whether the extension was successfully enabled?  &quot;ensure&quot; makes me think that this function promises that the extension is turned on, but this doesn&apos;t.

The only reason I used &quot;ensure&quot; rather than &quot;enable&quot; is because the extension might already be enabled. I&apos;ve left this alone for now but will change it if you feel strongly.

&gt; &gt; WebKit/chromium/public/WebGraphicsContext3D.h:145
&gt; &gt; +    virtual void requestExtensionCHROMIUM(const char*) = 0;
&gt; 
&gt; It&apos;s unfortunate to use const char* for a string type here.  I think the best type to use would be WebString, or possibly WebCString if we want to ASCII-encode the value before passing it to the API.  WebString would be more consistent with getRequestableExtensionsCHROMIUM().

All of the rest of the entry points on this class that receive (rather than return) strings take const char*, so for consistency I used const char*.

&gt; Also I think getAvailableExtensionsCHROMIUM() would make a bit more sense (see my comment about m_requestableExtensions further down).

I&apos;ve replied to this below.

&gt; &gt; WebKit/chromium/src/GraphicsContext3DChromium.cpp:731
&gt; &gt; +bool GraphicsContext3DInternal::ensureExtensionEnabled(const String&amp; name)
&gt; &gt; +{
&gt; &gt; +    initializeExtensions();
&gt; &gt; +
&gt; &gt; +    if (m_enabledExtensions.contains(name))
&gt; &gt; +        return true;
&gt; &gt; +
&gt; &gt; +    if (m_requestableExtensions.contains(name)) {
&gt; &gt; +        m_impl-&gt;requestExtensionCHROMIUM(name.ascii().data());
&gt; &gt; +        m_enabledExtensions.clear();
&gt; &gt; +        m_requestableExtensions.clear();
&gt; &gt; +        m_initializedAvailableExtensions = false;
&gt; &gt; +    }
&gt; &gt; +
&gt; &gt; +    initializeExtensions();
&gt; &gt; +    return m_enabledExtensions.contains(name);
&gt; 
&gt; I&apos;m a bit confused - if an extension &quot;foo&quot; is in m_impl-&gt;getRequestableExtensionsCHROMIUM() will a call to m_impl-&gt;requestExtensionCHROMIUM(&quot;foo&quot;) not always actually enable the extension?

It *should* unless something has gone wrong. I wanted to admit that possibility rather than (for example) asserting.

&gt; &gt; WebKit/chromium/src/GraphicsContext3DInternal.h:290
&gt; &gt; -    HashSet&lt;String&gt; m_availableExtensions;
&gt; &gt; +    HashSet&lt;String&gt; m_enabledExtensions;
&gt; &gt; +    HashSet&lt;String&gt; m_requestableExtensions;
&gt; 
&gt; I think m_availableExtensions is a better name than m_requestableExtensions if it is the set of extensions that are available to be enabled.  &quot;requestable&quot; to me implies that a request to enable a extension from this test could be denied, which isn&apos;t the case as I understand it.

The Chromium-specific OpenGL extension APIs I added for this functionality (in src/gpu/GLES2/gl2ext.h in a Chromium tree) are glRequestExtensionCHROMIUM and glGetRequestableExtensionsCHROMIUM to have a consistent naming convention. I agreed with your suggestion to rename &quot;available&quot; to &quot;enabled&quot; but think that for consistency it is best to leave m_requestableExtensions named as is. Also, I definitely think that glGetRequestableExtensionsCHROMIUM should not be renamed to glGetAvailableExtensionsCHROMIUM (as your suggested change to WebGraphicsContext3D.h would imply) because then the APIs which request, and which find which extensions can be requested, on the current hardware would be named differently.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>319286</commentid>
    <comment_count>15</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2010-12-08 22:59:05 -0800</bug_when>
    <thetext>I did a bit more reading - turns out I didn&apos;t understanding the WebGL extension mechanism fully.  This is a bit trickier than I thought :).  Please let me know if the following are true:

1) In &quot;normal&quot; OpenGL, a context has an unchanging list of supported extensions.  These can be queried by doing glGetString(GL_EXTENSIONS) and are always &quot;on&quot; (as in available).

2) In WebGL, no equivalent of glGetString(GL_EXTENSIONS) is supported.  Instead, an author can get a list of available extensions and then &quot;turn them on&quot; by calling getExtension().  There is no API to ask a WebGL context which extensions are currently enabled, but it&apos;s safe to call getExtension() multiple times with the same extension name.

3) The WebGL context is required to enforce that any attempt to use an extension before enabling it throws a GL error.

4) An attempt from an author to enable an extension via getExtension() from the list of names returned by getSupportedExtensions() is required to succeed.

Are there any requirements of (3) that cannot be handled purely at the WebGL binding layer?  It&apos;s a bit unclear if the chromium command buffer glRequestExtensionCHROMIUM() notification will change observable behavior.  I.e. will it cause errors to be generated or not generated in some cases?  Can enabling an extension change the set of shaders that are accepted?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>319290</commentid>
    <comment_count>16</comment_count>
      <attachid>76000</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2010-12-08 23:07:08 -0800</bug_when>
    <thetext>Comment on attachment 76000
Patch

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

&gt; WebCore/html/canvas/WebGLRenderingContext.cpp:1475
&gt; +    if (name == &quot;OES_texture_float&quot;
&gt; +        &amp;&amp; m_context-&gt;getExtensions()-&gt;supports(&quot;GL_OES_texture_float&quot;)) {
&gt; +        if (!m_oesTextureFloat) {
&gt; +            if (!m_context-&gt;getExtensions()-&gt;ensureEnabled(&quot;GL_OES_texture_float&quot;))
&gt; +                return 0;
&gt; +            m_oesTextureFloat = OESTextureFloat::create();
&gt; +        }
&gt; +        return m_oesTextureFloat.get();

The WebGL spec for getSupportedExtensions() says &quot;Any string in this list, when passed to getExtension must return a valid object&quot;, which seems inconsistent with the inner check here; if we return &quot;OES_texture_float&quot; in getSupportedExtensions() then a call to getExtension(&quot;OES_texture_float&quot;) must succeed.  Maybe the spec needs to be updated?

&gt; WebCore/platform/graphics/Extensions3D.h:62
&gt; +    // Certain OpenGL and WebGL implementations may support enabling
&gt; +    // extensions lazily. Returns true if the given extension has been
&gt; +    // successfully enabled.
&gt; +    virtual bool ensureEnabled(const String&amp;) = 0;

I don&apos;t think the bool return value here makes sense given WebGL extension semantics (see above).  I think it&apos;s reasonable to ASSERT() if someone calls this function without checking supports() first, since that would be a clear caller error.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>319741</commentid>
    <comment_count>17</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2010-12-09 15:20:36 -0800</bug_when>
    <thetext>(In reply to comment #15)
&gt; I did a bit more reading - turns out I didn&apos;t understanding the WebGL extension mechanism fully.  This is a bit trickier than I thought :).  Please let me know if the following are true:
&gt; 
&gt; 1) In &quot;normal&quot; OpenGL, a context has an unchanging list of supported extensions.  These can be queried by doing glGetString(GL_EXTENSIONS) and are always &quot;on&quot; (as in available).

Correct.

&gt; 2) In WebGL, no equivalent of glGetString(GL_EXTENSIONS) is supported.  Instead, an author can get a list of available extensions and then &quot;turn them on&quot; by calling getExtension().  There is no API to ask a WebGL context which extensions are currently enabled, but it&apos;s safe to call getExtension() multiple times with the same extension name.

Correct.

&gt; 3) The WebGL context is required to enforce that any attempt to use an extension before enabling it throws a GL error.

Correct.

&gt; 4) An attempt from an author to enable an extension via getExtension() from the list of names returned by getSupportedExtensions() is required to succeed.

Correct.

&gt; Are there any requirements of (3) that cannot be handled purely at the WebGL binding layer?  It&apos;s a bit unclear if the chromium command buffer glRequestExtensionCHROMIUM() notification will change observable behavior.  I.e. will it cause errors to be generated or not generated in some cases?  Can enabling an extension change the set of shaders that are accepted?

We want to use the glRequestExtensionCHROMIUM entry point to assist in the implementation of planned WebGL extensions, specifically OES_standard_derivatives. This affects the behavior of the shader validator / translator, and having the ability to dynamically turn on extensions eliminates a duplicate instance of the shader compiler.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>319746</commentid>
    <comment_count>18</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2010-12-09 15:41:05 -0800</bug_when>
    <thetext>(In reply to comment #16)
&gt; (From update of attachment 76000 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=76000&amp;action=review
&gt; 
&gt; &gt; WebCore/html/canvas/WebGLRenderingContext.cpp:1475
&gt; &gt; +    if (name == &quot;OES_texture_float&quot;
&gt; &gt; +        &amp;&amp; m_context-&gt;getExtensions()-&gt;supports(&quot;GL_OES_texture_float&quot;)) {
&gt; &gt; +        if (!m_oesTextureFloat) {
&gt; &gt; +            if (!m_context-&gt;getExtensions()-&gt;ensureEnabled(&quot;GL_OES_texture_float&quot;))
&gt; &gt; +                return 0;
&gt; &gt; +            m_oesTextureFloat = OESTextureFloat::create();
&gt; &gt; +        }
&gt; &gt; +        return m_oesTextureFloat.get();
&gt; 
&gt; The WebGL spec for getSupportedExtensions() says &quot;Any string in this list, when passed to getExtension must return a valid object&quot;, which seems inconsistent with the inner check here; if we return &quot;OES_texture_float&quot; in getSupportedExtensions() then a call to getExtension(&quot;OES_texture_float&quot;) must succeed.  Maybe the spec needs to be updated?

The spec is correct. The implementation here is just being conservative.

&gt; &gt; WebCore/platform/graphics/Extensions3D.h:62
&gt; &gt; +    // Certain OpenGL and WebGL implementations may support enabling
&gt; &gt; +    // extensions lazily. Returns true if the given extension has been
&gt; &gt; +    // successfully enabled.
&gt; &gt; +    virtual bool ensureEnabled(const String&amp;) = 0;
&gt; 
&gt; I don&apos;t think the bool return value here makes sense given WebGL extension semantics (see above).  I think it&apos;s reasonable to ASSERT() if someone calls this function without checking supports() first, since that would be a clear caller error.

After our offline discussion I&apos;ll change this to ASSERT and return void.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>319812</commentid>
    <comment_count>19</comment_count>
      <attachid>76142</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2010-12-09 17:20:11 -0800</bug_when>
    <thetext>Created attachment 76142
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>319823</commentid>
    <comment_count>20</comment_count>
      <attachid>76142</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2010-12-09 17:38:53 -0800</bug_when>
    <thetext>Comment on attachment 76142
Patch

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

R=me, just a few nits.  Thanks for all the explanation of the system, it was very enlightening.

&gt; WebCore/html/canvas/WebGLRenderingContext.cpp:1468
&gt; +    if (name == &quot;OES_texture_float&quot;

the WebGL spec says that extension names are case-insensitive, so this should be a case-insensitive match.  WTFString.h has a handy equalIgnoringCase() utility function.

&gt; WebCore/platform/graphics/Extensions3D.h:62
&gt; +    // Certain OpenGL and WebGL implementations may support enabling
&gt; +    // extensions lazily. This method may only be called with
&gt; +    // extension names for which supports returns true.
&gt; +    virtual void ensureEnabled(const String&amp;) = 0;

Can you file bugs on the GraphicsContext3D(OpenGL|Qt) implementations to add support for this?  Currently it seems that the behavior of WebGL shaders and extensions is subtly different for the Chromium vs other implementations.

&gt; WebKit/chromium/public/WebGraphicsContext3D.h:145
&gt; +    virtual void requestExtensionCHROMIUM(const char*) = 0;

There aren&apos;t many other cases in the WebKit API where we pass string data using const char*, so I&apos;m pretty sure this is just wrong.  I&apos;ll promise to fix the rest of the instances in this header if you fix this one to use a real string type :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>319838</commentid>
    <comment_count>21</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2010-12-09 18:00:17 -0800</bug_when>
    <thetext>(In reply to comment #20)
&gt; (From update of attachment 76142 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=76142&amp;action=review
&gt; 
&gt; R=me, just a few nits.  Thanks for all the explanation of the system, it was very enlightening.
&gt; 
&gt; &gt; WebCore/html/canvas/WebGLRenderingContext.cpp:1468
&gt; &gt; +    if (name == &quot;OES_texture_float&quot;
&gt; 
&gt; the WebGL spec says that extension names are case-insensitive, so this should be a case-insensitive match.  WTFString.h has a handy equalIgnoringCase() utility function.

Thanks, good catch -- will fix upon landing.

&gt; &gt; WebCore/platform/graphics/Extensions3D.h:62
&gt; &gt; +    // Certain OpenGL and WebGL implementations may support enabling
&gt; &gt; +    // extensions lazily. This method may only be called with
&gt; &gt; +    // extension names for which supports returns true.
&gt; &gt; +    virtual void ensureEnabled(const String&amp;) = 0;
&gt; 
&gt; Can you file bugs on the GraphicsContext3D(OpenGL|Qt) implementations to add support for this?  Currently it seems that the behavior of WebGL shaders and extensions is subtly different for the Chromium vs other implementations.

I don&apos;t think this is necessary. The other ports won&apos;t return any extensions in supports() that aren&apos;t already in the extensions string, so ensureEnabled() on those ports is a no-op.

&gt; &gt; WebKit/chromium/public/WebGraphicsContext3D.h:145
&gt; &gt; +    virtual void requestExtensionCHROMIUM(const char*) = 0;
&gt; 
&gt; There aren&apos;t many other cases in the WebKit API where we pass string data using const char*, so I&apos;m pretty sure this is just wrong.  I&apos;ll promise to fix the rest of the instances in this header if you fix this one to use a real string type :)

Per our offline discussion I&apos;ve filed https://bugs.webkit.org/show_bug.cgi?id=50794 to clean up all instances. I don&apos;t want to hold this patch for this cleanup because it requires two-sided changes to Chromium and WebKit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>319852</commentid>
    <comment_count>22</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-12-09 18:24:38 -0800</bug_when>
    <thetext>Attachment 76142 did not build on mac:
Build output: http://queues.webkit.org/results/6986020</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>319858</commentid>
    <comment_count>23</comment_count>
      <attachid>76142</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2010-12-09 18:30:08 -0800</bug_when>
    <thetext>Comment on attachment 76142
Patch

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

&gt; WebCore/platform/graphics/opengl/Extensions3DOpenGL.cpp:90
&gt; +void Extensions3DOpenGL::ensureEnabled(const String&amp; name)
&gt; +{
&gt; +    ASSERT(supports(name));

Looks like this doesn&apos;t compile in release, guess you need an #ifndef NDEBUG UNUSED_PARAM(name) #endif or similar.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>320432</commentid>
    <comment_count>24</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2010-12-10 14:50:23 -0800</bug_when>
    <thetext>Committed r73806: &lt;http://trac.webkit.org/changeset/73806&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>320433</commentid>
    <comment_count>25</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2010-12-10 14:51:42 -0800</bug_when>
    <thetext>(In reply to comment #23)
&gt; (From update of attachment 76142 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=76142&amp;action=review
&gt; 
&gt; &gt; WebCore/platform/graphics/opengl/Extensions3DOpenGL.cpp:90
&gt; &gt; +void Extensions3DOpenGL::ensureEnabled(const String&amp; name)
&gt; &gt; +{
&gt; &gt; +    ASSERT(supports(name));
&gt; 
&gt; Looks like this doesn&apos;t compile in release, guess you need an #ifndef NDEBUG UNUSED_PARAM(name) #endif or similar.

Fixed in landed version.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>320443</commentid>
    <comment_count>26</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-12-10 15:17:32 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/73806 might have broken SnowLeopard Intel Release (Build)</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>75588</attachid>
            <date>2010-12-03 18:30:45 -0800</date>
            <delta_ts>2010-12-03 19:46:31 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-40316-20101203183044.patch</filename>
            <type>text/plain</type>
            <size>89003</size>
            <attacher name="Kenneth Russell">kbr</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3MzMxOSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsODEgQEAKKzIwMTAtMTItMDMgIEtlbm5ldGggUnVzc2VsbCAgPGtickBnb29nbGUu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIElt
cGxlbWVudCBleHRlbnNpb24gZW50cnkgcG9pbnRzIGFuZCByZW1vdmUgRVhURU5TSU9OUyBlbnVt
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MDMxNgor
CisgICAgICAgIEltcGxlbWVudGVkIFdlYkdMUmVuZGVyaW5nQ29udGV4dCdzIGdldFN1cHBvcnRl
ZEV4dGVuc2lvbnMgYW5kCisgICAgICAgIGdldEV4dGVuc2lvbnMgZW50cnkgcG9pbnRzLCBhbmQs
IHRvIHZlcmlmeSB0aGVtLCBhZGRlZCBzdXBwb3J0IGZvcgorICAgICAgICB0aGUgZmlyc3Qgc3Bl
Y2lmaWVkIFdlYkdMIGV4dGVuc2lvbiwgT0VTX3RleHR1cmVfZmxvYXQuIFRoaXMKKyAgICAgICAg
ZXh0ZW5zaW9uIGlzIG5vdyBhZHZlcnRpc2VkIGluIHRoZSBDaHJvbWl1bSBhbmQgV2ViS2l0IHBv
cnRzIHdoZW4KKyAgICAgICAgdGhlIHVuZGVybHlpbmcgaGFyZHdhcmUgc3VwcG9ydHMgaXQuCisK
KyAgICAgICAgVGhlIG5ldyBPRVNfdGV4dHVyZV9mbG9hdCB0ZXN0IGluIHRoZSBXZWJHTCBjb25m
b3JtYW5jZSBzdWl0ZQorICAgICAgICB2ZXJpZmllcyB0aGUgYWxsb2NhdGlvbiBhbmQgcG9wdWxh
dGlvbiBvZiBmbG9hdGluZyBwb2ludCB0ZXh0dXJlcywKKyAgICAgICAgYW5kIHRoZWlyIHVzZSBh
cyByZW5kZXIgdGFyZ2V0cy4gSG93ZXZlciwgYmVjYXVzZSB0aGlzIGV4dGVuc2lvbgorICAgICAg
ICBpcyBvcHRpb25hbCwgaXQgaXMgbm90IGVhc2lseSB0ZXN0YWJsZSB3aXRoIGEgbGF5b3V0IHRl
c3Q7IHRoZXJlCisgICAgICAgIGlzIG9ubHkgb25lIHNldCBvZiBleHBlY3RhdGlvbnMgZm9yIGEg
Z2l2ZW4gdGVzdCwgYW5kIHR3byB3b3VsZCBiZQorICAgICAgICBuZWVkZWQsIG9uZSB3aGVuIHRo
ZSBleHRlbnNpb24gaXMgYXZhaWxhYmxlIGFuZCBvbmUgd2hlbiBpdCBpcyBub3QuCisKKyAgICAg
ICAgVGVzdGVkIHdpdGggdGhlIG9lcy10ZXh0dXJlLWZsb2F0Lmh0bWwgV2ViR0wgY29uZm9ybWFu
Y2UgdGVzdCBpbgorICAgICAgICBDaHJvbWl1bSBhbmQgV2ViS2l0IG9uIE1hYyBPUyBYIG9uIGhh
cmR3YXJlIHRoYXQgc3VwcG9ydHMgdGhlCisgICAgICAgIGV4dGVuc2lvbi4gQWxzbyB2ZXJpZmll
ZCB3aXRoIGEgY29uZmlndXJhdGlvbiB0aGF0IGRvZXMgbm90CisgICAgICAgIGFkdmVydGlzZSB0
aGUgZXh0ZW5zaW9uIHRoYXQgdGhpcyBzYW1lIHRlc3QgcGFzc2VzLgorCisgICAgICAgICogQ01h
a2VMaXN0cy50eHQ6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBH
TlVtYWtlZmlsZS5hbToKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29y
ZS5wcmk6CisgICAgICAgICogV2ViQ29yZS5wcm86CisgICAgICAgICogV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTV2ViR0xSZW5kZXJp
bmdDb250ZXh0Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRvSlMpOgorICAgICAgICAo
V2ViQ29yZTo6SlNXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldEV4dGVuc2lvbik6CisgICAgICAg
IChXZWJDb3JlOjpKU1dlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0U3VwcG9ydGVkRXh0ZW5zaW9u
cyk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4V2ViR0xSZW5kZXJpbmdDb250ZXh0
Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRvVjhPYmplY3QpOgorICAgICAgICAoV2Vi
Q29yZTo6VjhXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldEV4dGVuc2lvbkNhbGxiYWNrKToKKyAg
ICAgICAgKFdlYkNvcmU6OlY4V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRTdXBwb3J0ZWRFeHRl
bnNpb25zQ2FsbGJhY2spOgorICAgICAgICAqIGh0bWwvY2FudmFzL09FU1RleHR1cmVGbG9hdC5j
cHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6T0VTVGV4dHVyZUZsb2F0OjpPRVNUZXh0dXJl
RmxvYXQpOgorICAgICAgICAoV2ViQ29yZTo6T0VTVGV4dHVyZUZsb2F0Ojp+T0VTVGV4dHVyZUZs
b2F0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9FU1RleHR1cmVGbG9hdDo6Z2V0TmFtZSk6CisgICAg
ICAgIChXZWJDb3JlOjpPRVNUZXh0dXJlRmxvYXQ6OmNyZWF0ZSk6CisgICAgICAgICogaHRtbC9j
YW52YXMvT0VTVGV4dHVyZUZsb2F0Lmg6IEFkZGVkLgorICAgICAgICAqIGh0bWwvY2FudmFzL09F
U1RleHR1cmVGbG9hdC5pZGw6IEFkZGVkLgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMRXh0
ZW5zaW9uLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpXZWJHTEV4dGVuc2lvbjo6V2Vi
R0xFeHRlbnNpb24pOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xFeHRlbnNpb246On5XZWJHTEV4
dGVuc2lvbik6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xFeHRlbnNpb24uaDogQWRkZWQu
CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0RXh0ZW5zaW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0U3VwcG9ydGVkRXh0ZW5zaW9u
cyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnZhbGlkYXRlVGV4
RnVuY0Zvcm1hdEFuZFR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250
ZXh0Ojp2YWxpZGF0ZVRleEZ1bmNEYXRhKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFJl
bmRlcmluZ0NvbnRleHQuaDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0Nv
bnRleHQuaWRsOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0V4dGVuc2lvbnMzRC5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpjb21wdXRlRm9ybWF0QW5kVHlwZVBhcmFt
ZXRlcnMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmV4dHJhY3RUZXh0
dXJlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpkb1VucGFja2luZ0FuZFBhY2tpbmcpOgorICAg
ICAgICAoV2ViQ29yZTo6ZG9QYWNraW5nKToKKyAgICAgICAgKFdlYkNvcmU6OmRvRmxvYXRpbmdQ
b2ludFBhY2tpbmcpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnBhY2tQ
aXhlbHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRXh0ZW5zaW9uczNEQ2hyb21p
dW0uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uczNET3Bl
bkdMLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnMzRE9wZW5HTDo6c3VwcG9ydHMp
OgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uczNET3BlbkdMOjplbnN1cmVFbmFibGVkKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uczNET3BlbkdMLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3Bl
bkdMLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjp0ZXhJbWFnZTJE
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9xdC9FeHRlbnNpb25zM0RRdC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zM0RRdDo6ZW5zdXJlRW5hYmxlZCk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvcXQvRXh0ZW5zaW9uczNEUXQuaDoKKwogMjAxMC0xMi0wMyAg
RGltaXRyaSBHbGF6a292ICA8ZGdsYXprb3ZAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmll
d2VkIGJ5IERhcmluIEFkbGVyLgpJbmRleDogV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiA3MzMxOSkKKysrIFdlYkNv
cmUvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTI4Niw2ICsyODYsNyBAQCBTRVQo
V2ViQ29yZV9JRExfRklMRVMKICAgICBodG1sL2NhbnZhcy9JbnQxNkFycmF5LmlkbAogICAgIGh0
bWwvY2FudmFzL0ludDMyQXJyYXkuaWRsCiAgICAgaHRtbC9jYW52YXMvSW50OEFycmF5LmlkbAor
ICAgIGh0bWwvY2FudmFzL09FU1RleHR1cmVGbG9hdC5pZGwKICAgICBodG1sL2NhbnZhcy9VaW50
MTZBcnJheS5pZGwKICAgICBodG1sL2NhbnZhcy9VaW50MzJBcnJheS5pZGwKICAgICBodG1sL2Nh
bnZhcy9VaW50OEFycmF5LmlkbApJbmRleDogV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQkocmV2aXNpb24gNzMzMTkp
CisrKyBXZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UJKHdvcmtpbmcgY29weSkKQEAgLTMwOSw2
ICszMDksNyBAQCBET01fQ0xBU1NFUyA9IFwKICAgICBOb3RhdGlvbiBcCiAgICAgTm90aWZpY2F0
aW9uIFwKICAgICBOb3RpZmljYXRpb25DZW50ZXIgXAorICAgIE9FU1RleHR1cmVGbG9hdCBcCiAg
ICAgT3ZlcmZsb3dFdmVudCBcCiAgICAgUGFnZVRyYW5zaXRpb25FdmVudCBcCiAgICAgUGVyZm9y
bWFuY2UgXApJbmRleDogV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL0dOVW1ha2VmaWxlLmFtCShyZXZpc2lvbiA3MzMxOSkKKysrIFdlYkNvcmUvR05VbWFrZWZp
bGUuYW0JKHdvcmtpbmcgY29weSkKQEAgLTQ3MSw2ICs0NzEsOCBAQCB3ZWJjb3JlX2J1aWx0X3Nv
dXJjZXMgKz0gXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNOb3RpZmljYXRpb25DZW50ZXIu
aCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU05vdGlmaWNhdGlvbi5jcHAgXAogCURlcml2
ZWRTb3VyY2VzL1dlYkNvcmUvSlNOb3RpZmljYXRpb24uaCBcCisJRGVyaXZlZFNvdXJjZXMvV2Vi
Q29yZS9KU09FU1RleHR1cmVGbG9hdC5jcHAgXAorCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNP
RVNUZXh0dXJlRmxvYXQuaCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU092ZXJmbG93RXZl
bnQuY3BwIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTT3ZlcmZsb3dFdmVudC5oIFwKIAlE
ZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTUGFnZVRyYW5zaXRpb25FdmVudC5jcHAgXApAQCAtMTU0
Myw2ICsxNTQ1LDggQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlXZWJDb3JlL2h0bWwvY2FudmFz
L0ludDMyQXJyYXkuaCBcCiAJV2ViQ29yZS9odG1sL2NhbnZhcy9JbnQ4QXJyYXkuY3BwIFwKIAlX
ZWJDb3JlL2h0bWwvY2FudmFzL0ludDhBcnJheS5oIFwKKwlXZWJDb3JlL2h0bWwvY2FudmFzL09F
U1RleHR1cmVGbG9hdC5jcHAgXAorCVdlYkNvcmUvaHRtbC9jYW52YXMvT0VTVGV4dHVyZUZsb2F0
LmggXAogCVdlYkNvcmUvaHRtbC9jYW52YXMvVWludDE2QXJyYXkuY3BwIFwKIAlXZWJDb3JlL2h0
bWwvY2FudmFzL1VpbnQxNkFycmF5LmggXAogCVdlYkNvcmUvaHRtbC9jYW52YXMvVWludDMyQXJy
YXkuY3BwIFwKSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS5neXBpCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvV2ViQ29yZS5neXBpCShyZXZpc2lvbiA3MzMxOSkKKysrIFdlYkNvcmUvV2ViQ29yZS5neXBp
CSh3b3JraW5nIGNvcHkpCkBAIC0yMTIsNiArMjEyLDcgQEAKICAgICAgICAgICAgICdodG1sL2Nh
bnZhcy9JbnQxNkFycmF5LmlkbCcsCiAgICAgICAgICAgICAnaHRtbC9jYW52YXMvSW50MzJBcnJh
eS5pZGwnLAogICAgICAgICAgICAgJ2h0bWwvY2FudmFzL0ludDhBcnJheS5pZGwnLAorICAgICAg
ICAgICAgJ2h0bWwvY2FudmFzL09FU1RleHR1cmVGbG9hdC5pZGwnLAogICAgICAgICAgICAgJ2h0
bWwvY2FudmFzL1VpbnQxNkFycmF5LmlkbCcsCiAgICAgICAgICAgICAnaHRtbC9jYW52YXMvVWlu
dDMyQXJyYXkuaWRsJywKICAgICAgICAgICAgICdodG1sL2NhbnZhcy9VaW50OEFycmF5LmlkbCcs
CkBAIC0xOTA2LDYgKzE5MDcsOCBAQAogICAgICAgICAgICAgJ2h0bWwvY2FudmFzL0ludDhBcnJh
eS5jcHAnLAogICAgICAgICAgICAgJ2h0bWwvY2FudmFzL0ludDhBcnJheS5oJywKICAgICAgICAg
ICAgICdodG1sL2NhbnZhcy9JbnRlZ3JhbFR5cGVkQXJyYXlCYXNlLmgnLAorICAgICAgICAgICAg
J2h0bWwvY2FudmFzL09FU1RleHR1cmVGbG9hdC5jcHAnLAorICAgICAgICAgICAgJ2h0bWwvY2Fu
dmFzL09FU1RleHR1cmVGbG9hdC5oJywKICAgICAgICAgICAgICdodG1sL2NhbnZhcy9UeXBlZEFy
cmF5QmFzZS5oJywKICAgICAgICAgICAgICdodG1sL2NhbnZhcy9VaW50MTZBcnJheS5jcHAnLAog
ICAgICAgICAgICAgJ2h0bWwvY2FudmFzL1VpbnQxNkFycmF5LmgnLApAQCAtMTkxOSw2ICsxOTIy
LDggQEAKICAgICAgICAgICAgICdodG1sL2NhbnZhcy9XZWJHTENvbnRleHRBdHRyaWJ1dGVzLmgn
LAogICAgICAgICAgICAgJ2h0bWwvY2FudmFzL1dlYkdMQ29udGV4dEV2ZW50LmNwcCcsCiAgICAg
ICAgICAgICAnaHRtbC9jYW52YXMvV2ViR0xDb250ZXh0RXZlbnQuaCcsCisgICAgICAgICAgICAn
aHRtbC9jYW52YXMvV2ViR0xFeHRlbnNpb24uY3BwJywKKyAgICAgICAgICAgICdodG1sL2NhbnZh
cy9XZWJHTEV4dGVuc2lvbi5oJywKICAgICAgICAgICAgICdodG1sL2NhbnZhcy9XZWJHTEZyYW1l
YnVmZmVyLmNwcCcsCiAgICAgICAgICAgICAnaHRtbC9jYW52YXMvV2ViR0xGcmFtZWJ1ZmZlci5o
JywKICAgICAgICAgICAgICdodG1sL2NhbnZhcy9XZWJHTEdldEluZm8uY3BwJywKSW5kZXg6IFdl
YkNvcmUvV2ViQ29yZS5wcmkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9XZWJDb3JlLnByaQkocmV2
aXNpb24gNzMzMTkpCisrKyBXZWJDb3JlL1dlYkNvcmUucHJpCSh3b3JraW5nIGNvcHkpCkBAIC0x
OTEsNiArMTkxLDcgQEAgSURMX0JJTkRJTkdTICs9IFwKICAgICBodG1sL2NhbnZhcy9DYW52YXNQ
YXR0ZXJuLmlkbCBcCiAgICAgaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5pZGwg
XAogICAgIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5pZGwgXAorICAgIGh0
bWwvY2FudmFzL09FU1RleHR1cmVGbG9hdC5pZGwgXAogICAgIGh0bWwvY2FudmFzL1dlYkdMQWN0
aXZlSW5mby5pZGwgXAogICAgIGh0bWwvY2FudmFzL1dlYkdMQnVmZmVyLmlkbCBcCiAgICAgaHRt
bC9jYW52YXMvV2ViR0xDb250ZXh0QXR0cmlidXRlcy5pZGwgXApJbmRleDogV2ViQ29yZS9XZWJD
b3JlLnBybwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUucHJvCShyZXZpc2lvbiA3MzMx
OSkKKysrIFdlYkNvcmUvV2ViQ29yZS5wcm8JKHdvcmtpbmcgY29weSkKQEAgLTM3MTYsNiArMzcx
Niw3IEBAIEhFQURFUlMgKz0gXAogICAgICAgICBodG1sL2NhbnZhcy9JbnQ4QXJyYXkuaCBcCiAg
ICAgICAgIGh0bWwvY2FudmFzL1dlYkdMQ29udGV4dEF0dHJpYnV0ZXMuaCBcCiAgICAgICAgIGh0
bWwvY2FudmFzL0Zsb2F0MzJBcnJheS5oIFwKKyAgICAgICAgaHRtbC9jYW52YXMvV2ViR0xFeHRl
bnNpb24uaCBcCiAgICAgICAgIGh0bWwvY2FudmFzL1dlYkdMRnJhbWVidWZmZXIuaCBcCiAgICAg
ICAgIGh0bWwvY2FudmFzL1dlYkdMR2V0SW5mby5oIFwKICAgICAgICAgaHRtbC9jYW52YXMvSW50
MzJBcnJheS5oIFwKQEAgLTM3MjQsNiArMzcyNSw3IEBAIEhFQURFUlMgKz0gXAogICAgICAgICBo
dG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuaCBcCiAgICAgICAgIGh0bWwvY2FudmFz
L1dlYkdMU2hhZGVyLmggXAogICAgICAgICBodG1sL2NhbnZhcy9JbnQxNkFycmF5LmggXAorICAg
ICAgICBodG1sL2NhbnZhcy9PRVNUZXh0dXJlRmxvYXQuaCBcCiAgICAgICAgIGh0bWwvY2FudmFz
L1dlYkdMVGV4dHVyZS5oIFwKICAgICAgICAgaHRtbC9jYW52YXMvV2ViR0xVbmlmb3JtTG9jYXRp
b24uaCBcCiAgICAgICAgIGh0bWwvY2FudmFzL1VpbnQ4QXJyYXkuaCBcCkBAIC0zNzU2LDYgKzM3
NTgsNyBAQCBTT1VSQ0VTICs9IFwKICAgICAgICAgaHRtbC9jYW52YXMvSW50OEFycmF5LmNwcCBc
CiAgICAgICAgIGh0bWwvY2FudmFzL1dlYkdMQ29udGV4dEF0dHJpYnV0ZXMuY3BwIFwKICAgICAg
ICAgaHRtbC9jYW52YXMvRmxvYXQzMkFycmF5LmNwcCBcCisgICAgICAgIGh0bWwvY2FudmFzL1dl
YkdMRXh0ZW5zaW9uLmNwcCBcCiAgICAgICAgIGh0bWwvY2FudmFzL1dlYkdMRnJhbWVidWZmZXIu
Y3BwIFwKICAgICAgICAgaHRtbC9jYW52YXMvV2ViR0xHZXRJbmZvLmNwcCBcCiAgICAgICAgIGh0
bWwvY2FudmFzL0ludDMyQXJyYXkuY3BwIFwKQEAgLTM3NjQsNiArMzc2Nyw3IEBAIFNPVVJDRVMg
Kz0gXAogICAgICAgICBodG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwIFwKICAg
ICAgICAgaHRtbC9jYW52YXMvV2ViR0xTaGFkZXIuY3BwIFwKICAgICAgICAgaHRtbC9jYW52YXMv
SW50MTZBcnJheS5jcHAgXAorICAgICAgICBodG1sL2NhbnZhcy9PRVNUZXh0dXJlRmxvYXQuY3Bw
IFwKICAgICAgICAgaHRtbC9jYW52YXMvV2ViR0xUZXh0dXJlLmNwcCBcCiAgICAgICAgIGh0bWwv
Y2FudmFzL1dlYkdMVW5pZm9ybUxvY2F0aW9uLmNwcCBcCiAgICAgICAgIGh0bWwvY2FudmFzL1Vp
bnQ4QXJyYXkuY3BwIFwKSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCShyZXZpc2lvbiA3MzMxOSkKKysrIFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xNTE0LDYgKzE1MTQsMTIgQEAKIAkJNkU2
N0QyQTkxMjgwRThCRDAwODc1OEY3IC8qIEV4dGVuc2lvbnMzRC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkU2N0QyQTgxMjgwRThCRDAwODc1OEY3IC8q
IEV4dGVuc2lvbnMzRC5oICovOyB9OwogCQk2RTk2QkIxQzExOTg2RUUyMDA3RDk0Q0QgLyogSW50
ZWdyYWxUeXBlZEFycmF5QmFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNkU5NkJCMUExMTk4NkVFMTAwN0Q5NENEIC8qIEludGVncmFsVHlwZWRBcnJh
eUJhc2UuaCAqLzsgfTsKIAkJNkU5NkJCMUQxMTk4NkVFMjAwN0Q5NENEIC8qIFR5cGVkQXJyYXlC
YXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RTk2
QkIxQjExOTg2RUUxMDA3RDk0Q0QgLyogVHlwZWRBcnJheUJhc2UuaCAqLzsgfTsKKwkJNkVCRjBF
NDgxMkE4OTI2MTAwREIxNzA5IC8qIE9FU1RleHR1cmVGbG9hdC5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RUJGMEU0NTEyQTg5MjYxMDBEQjE3MDkg
LyogT0VTVGV4dHVyZUZsb2F0LmNwcCAqLzsgfTsKKwkJNkVCRjBFNDkxMkE4OTI2MTAwREIxNzA5
IC8qIE9FU1RleHR1cmVGbG9hdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNkVCRjBFNDYxMkE4OTI2MTAwREIxNzA5IC8qIE9FU1RleHR1cmVGbG9hdC5o
ICovOyB9OworCQk2RUJGMEU1NDEyQTg5Mjk4MDBEQjE3MDkgLyogV2ViR0xFeHRlbnNpb24uY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkVCRjBFNTIx
MkE4OTI5ODAwREIxNzA5IC8qIFdlYkdMRXh0ZW5zaW9uLmNwcCAqLzsgfTsKKwkJNkVCRjBFNTUx
MkE4OTI5ODAwREIxNzA5IC8qIFdlYkdMRXh0ZW5zaW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RUJGMEU1MzEyQTg5Mjk4MDBEQjE3MDkgLyogV2Vi
R0xFeHRlbnNpb24uaCAqLzsgfTsKKwkJNkVCRjBFNzYxMkE5ODY4ODAwREIxNzA5IC8qIEpTT0VT
VGV4dHVyZUZsb2F0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDZFQkYwRTc0MTJBOTg2ODgwMERCMTcwOSAvKiBKU09FU1RleHR1cmVGbG9hdC5jcHAg
Ki87IH07CisJCTZFQkYwRTc3MTJBOTg2ODgwMERCMTcwOSAvKiBKU09FU1RleHR1cmVGbG9hdC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkVCRjBFNzUx
MkE5ODY4ODAwREIxNzA5IC8qIEpTT0VTVGV4dHVyZUZsb2F0LmggKi87IH07CiAJCTZFRThBNzcy
MTBGODAzRjMwMDVBNEEyNCAvKiBKU1dlYkdMQ29udGV4dEF0dHJpYnV0ZXMuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkVFOEE3NzAxMEY4MDNGMzAw
NUE0QTI0IC8qIEpTV2ViR0xDb250ZXh0QXR0cmlidXRlcy5jcHAgKi87IH07CiAJCTZFRThBNzcz
MTBGODAzRjMwMDVBNEEyNCAvKiBKU1dlYkdMQ29udGV4dEF0dHJpYnV0ZXMuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFRThBNzcxMTBGODAzRjMwMDVB
NEEyNCAvKiBKU1dlYkdMQ29udGV4dEF0dHJpYnV0ZXMuaCAqLzsgfTsKIAkJNzI2MjZFMDIwRUYw
MjJGRTAwQTA3RTIwIC8qIEZvbnRGYXN0UGF0aC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MjYyNkUwMTBFRjAyMkZFMDBBMDdFMjAgLyogRm9udEZh
c3RQYXRoLmNwcCAqLzsgfTsKQEAgLTc2OTMsNiArNzY5OSwxMyBAQAogCQk2RTY3RDJBODEyODBF
OEJEMDA4NzU4RjcgLyogRXh0ZW5zaW9uczNELmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEV4dGVuc2lvbnMzRC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2RTk2
QkIxQTExOTg2RUUxMDA3RDk0Q0QgLyogSW50ZWdyYWxUeXBlZEFycmF5QmFzZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBJbnRlZ3JhbFR5cGVkQXJyYXlCYXNlLmg7IHBhdGgg
PSBjYW52YXMvSW50ZWdyYWxUeXBlZEFycmF5QmFzZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk2RTk2QkIxQjExOTg2RUUxMDA3RDk0Q0QgLyogVHlwZWRBcnJheUJhc2UuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gVHlwZWRBcnJheUJhc2UuaDsgcGF0aCA9IGNh
bnZhcy9UeXBlZEFycmF5QmFzZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk2RUJG
MEU0NTEyQTg5MjYxMDBEQjE3MDkgLyogT0VTVGV4dHVyZUZsb2F0LmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IE9FU1RleHR1cmVGbG9hdC5jcHA7IHBhdGggPSBjYW52
YXMvT0VTVGV4dHVyZUZsb2F0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNkVC
RjBFNDYxMkE4OTI2MTAwREIxNzA5IC8qIE9FU1RleHR1cmVGbG9hdC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBPRVNUZXh0dXJlRmxvYXQuaDsgcGF0aCA9IGNhbnZhcy9PRVNU
ZXh0dXJlRmxvYXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNkVCRjBFNDcxMkE4
OTI2MTAwREIxNzA5IC8qIE9FU1RleHR1cmVGbG9hdC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBuYW1l
ID0gT0VTVGV4dHVyZUZsb2F0LmlkbDsgcGF0aCA9IGNhbnZhcy9PRVNUZXh0dXJlRmxvYXQuaWRs
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk2RUJGMEU1MjEyQTg5Mjk4MDBEQjE3MDkg
LyogV2ViR0xFeHRlbnNpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1l
ID0gV2ViR0xFeHRlbnNpb24uY3BwOyBwYXRoID0gY2FudmFzL1dlYkdMRXh0ZW5zaW9uLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNkVCRjBFNTMxMkE4OTI5ODAwREIxNzA5IC8q
IFdlYkdMRXh0ZW5zaW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdlYkdM
RXh0ZW5zaW9uLmg7IHBhdGggPSBjYW52YXMvV2ViR0xFeHRlbnNpb24uaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJNkVCRjBFNzQxMkE5ODY4ODAwREIxNzA5IC8qIEpTT0VTVGV4dHVy
ZUZsb2F0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTT0VTVGV4
dHVyZUZsb2F0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNkVCRjBFNzUxMkE5
ODY4ODAwREIxNzA5IC8qIEpTT0VTVGV4dHVyZUZsb2F0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEpTT0VTVGV4dHVyZUZsb2F0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTZFRThBNzcwMTBGODAzRjMwMDVBNEEyNCAvKiBKU1dlYkdMQ29udGV4dEF0dHJpYnV0
ZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNXZWJHTENvbnRl
eHRBdHRyaWJ1dGVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNkVFOEE3NzEx
MEY4MDNGMzAwNUE0QTI0IC8qIEpTV2ViR0xDb250ZXh0QXR0cmlidXRlcy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBKU1dlYkdMQ29udGV4dEF0dHJpYnV0ZXMuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzI2MjZFMDEwRUYwMjJGRTAwQTA3RTIwIC8qIEZvbnRG
YXN0UGF0aC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGb250RmFz
dFBhdGguY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTI2NjAsNiArMTI2NzMs
OSBAQAogCQkJCTQ5QzdCOUFDMTA0MkQzMkUwMDA5RDQ0NyAvKiBJbnQ4QXJyYXkuaCAqLywKIAkJ
CQk0OUM3QjlBRDEwNDJEMzJFMDAwOUQ0NDcgLyogSW50OEFycmF5LmlkbCAqLywKIAkJCQk2RTk2
QkIxQTExOTg2RUUxMDA3RDk0Q0QgLyogSW50ZWdyYWxUeXBlZEFycmF5QmFzZS5oICovLAorCQkJ
CTZFQkYwRTQ1MTJBODkyNjEwMERCMTcwOSAvKiBPRVNUZXh0dXJlRmxvYXQuY3BwICovLAorCQkJ
CTZFQkYwRTQ2MTJBODkyNjEwMERCMTcwOSAvKiBPRVNUZXh0dXJlRmxvYXQuaCAqLywKKwkJCQk2
RUJGMEU0NzEyQTg5MjYxMDBEQjE3MDkgLyogT0VTVGV4dHVyZUZsb2F0LmlkbCAqLywKIAkJCQk2
RTk2QkIxQjExOTg2RUUxMDA3RDk0Q0QgLyogVHlwZWRBcnJheUJhc2UuaCAqLywKIAkJCQk0OUVF
Q0REQzEwNTAzQzIzMDAwOTlGQUIgLyogVWludDE2QXJyYXkuY3BwICovLAogCQkJCTQ5RUVDRERE
MTA1MDNDMjQwMDA5OUZBQiAvKiBVaW50MTZBcnJheS5oICovLApAQCAtMTI2ODEsNiArMTI2OTcs
OCBAQAogCQkJCTkzRjZGMUVBMTI3RjcwQjEwMDU1Q0IwNiAvKiBXZWJHTENvbnRleHRFdmVudC5j
cHAgKi8sCiAJCQkJOTNGNkYxRUIxMjdGNzBCMTAwNTVDQjA2IC8qIFdlYkdMQ29udGV4dEV2ZW50
LmggKi8sCiAJCQkJOTNGNkYxRUMxMjdGNzBCMTAwNTVDQjA2IC8qIFdlYkdMQ29udGV4dEV2ZW50
LmlkbCAqLywKKwkJCQk2RUJGMEU1MjEyQTg5Mjk4MDBEQjE3MDkgLyogV2ViR0xFeHRlbnNpb24u
Y3BwICovLAorCQkJCTZFQkYwRTUzMTJBODkyOTgwMERCMTcwOSAvKiBXZWJHTEV4dGVuc2lvbi5o
ICovLAogCQkJCTQ5QzdCOUFFMTA0MkQzMkUwMDA5RDQ0NyAvKiBXZWJHTEZyYW1lYnVmZmVyLmNw
cCAqLywKIAkJCQk0OUM3QjlBRjEwNDJEMzJFMDAwOUQ0NDcgLyogV2ViR0xGcmFtZWJ1ZmZlci5o
ICovLAogCQkJCTQ5QzdCOUIwMTA0MkQzMkUwMDA5RDQ0NyAvKiBXZWJHTEZyYW1lYnVmZmVyLmlk
bCAqLywKQEAgLTE1NTA1LDYgKzE1NTIzLDggQEAKIAkJCQk0OUM3Qjk4MzEwNDJEMkQzMDAwOUQ0
NDcgLyogSlNJbnQ4QXJyYXkuaCAqLywKIAkJCQlFNDQ2MTQxMDBDRDY4MjY5MDBGQURBNzUgLyog
SlNNZWRpYUVycm9yLmNwcCAqLywKIAkJCQlFNDQ2MTQxMTBDRDY4MjY5MDBGQURBNzUgLyogSlNN
ZWRpYUVycm9yLmggKi8sCisJCQkJNkVCRjBFNzQxMkE5ODY4ODAwREIxNzA5IC8qIEpTT0VTVGV4
dHVyZUZsb2F0LmNwcCAqLywKKwkJCQk2RUJGMEU3NTEyQTk4Njg4MDBEQjE3MDkgLyogSlNPRVNU
ZXh0dXJlRmxvYXQuaCAqLywKIAkJCQlCQ0VGNDVGMzBFNjg3QjVDMDAxQzEyODcgLyogSlNUZXh0
TWV0cmljcy5jcHAgKi8sCiAJCQkJQkNFRjQ1RjQwRTY4N0I1QzAwMUMxMjg3IC8qIEpTVGV4dE1l
dHJpY3MuaCAqLywKIAkJCQlFNDQ2MTQxMjBDRDY4MjY5MDBGQURBNzUgLyogSlNUaW1lUmFuZ2Vz
LmNwcCAqLywKQEAgLTIxNDMwLDYgKzIxNDUwLDkgQEAKIAkJCQk5M0YxOTlFRDA4MjQ1RTU5MDAx
RTlBQkMgLyogWFNMVFByb2Nlc3Nvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTFCRTUxMkUwQ0Y2
QzUxMjAwMkVBOTU5IC8qIFhTTFRVbmljb2RlU29ydC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTdE
RDREODcwRkRGNEQ2RTAwRUNGOUE0IC8qIFhTU0F1ZGl0b3IuaCBpbiBIZWFkZXJzICovLAorCQkJ
CTZFQkYwRTQ5MTJBODkyNjEwMERCMTcwOSAvKiBPRVNUZXh0dXJlRmxvYXQuaCBpbiBIZWFkZXJz
ICovLAorCQkJCTZFQkYwRTU1MTJBODkyOTgwMERCMTcwOSAvKiBXZWJHTEV4dGVuc2lvbi5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJNkVCRjBFNzcxMkE5ODY4ODAwREIxNzA5IC8qIEpTT0VTVGV4dHVy
ZUZsb2F0LmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBv
c3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTI0MDA4LDYgKzI0MDMxLDkgQEAKIAkJCQk5M0Yx
OUIwNTA4MjQ1RTU5MDAxRTlBQkMgLyogWFNMVFByb2Nlc3NvckxpYnhzbHQuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJRTFCRTUxMkQwQ0Y2QzUxMjAwMkVBOTU5IC8qIFhTTFRVbmljb2RlU29ydC5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk5N0RENEQ4NjBGREY0RDZFMDBFQ0Y5QTQgLyogWFNTQXVk
aXRvci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk2RUJGMEU0ODEyQTg5MjYxMDBEQjE3MDkgLyog
T0VTVGV4dHVyZUZsb2F0LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTZFQkYwRTU0MTJBODkyOTgw
MERCMTcwOSAvKiBXZWJHTEV4dGVuc2lvbi5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk2RUJGMEU3
NjEyQTk4Njg4MDBEQjE3MDkgLyogSlNPRVNUZXh0dXJlRmxvYXQuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07
CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2ViR0xSZW5kZXJpbmdDb250ZXh0Q3VzdG9t
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2ViR0xSZW5kZXJpbmdD
b250ZXh0Q3VzdG9tLmNwcAkocmV2aXNpb24gNzMzMTkpCisrKyBXZWJDb3JlL2JpbmRpbmdzL2pz
L0pTV2ViR0xSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUs
NiArMzUsNyBAQAogI2luY2x1ZGUgIkpTSFRNTENhbnZhc0VsZW1lbnQuaCIKICNpbmNsdWRlICJK
U0hUTUxJbWFnZUVsZW1lbnQuaCIKICNpbmNsdWRlICJKU0ltYWdlRGF0YS5oIgorI2luY2x1ZGUg
IkpTT0VTVGV4dHVyZUZsb2F0LmgiCiAjaW5jbHVkZSAiSlNXZWJHTEJ1ZmZlci5oIgogI2luY2x1
ZGUgIkpTRmxvYXQzMkFycmF5LmgiCiAjaW5jbHVkZSAiSlNXZWJHTEZyYW1lYnVmZmVyLmgiCkBA
IC00Nyw4ICs0OCwxMCBAQAogI2luY2x1ZGUgIkpTVWludDhBcnJheS5oIgogI2luY2x1ZGUgIkpT
V2ViS2l0Q1NTTWF0cml4LmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKKyNpbmNsdWRl
ICJPRVNUZXh0dXJlRmxvYXQuaCIKICNpbmNsdWRlICJXZWJHTEJ1ZmZlci5oIgogI2luY2x1ZGUg
IkZsb2F0MzJBcnJheS5oIgorI2luY2x1ZGUgIldlYkdMRXh0ZW5zaW9uLmgiCiAjaW5jbHVkZSAi
V2ViR0xGcmFtZWJ1ZmZlci5oIgogI2luY2x1ZGUgIldlYkdMR2V0SW5mby5oIgogI2luY2x1ZGUg
IkludDMyQXJyYXkuaCIKQEAgLTE2MSw2ICsxNjQsMTggQEAgZW51bSBXaGljaFByb2dyYW1DYWxs
IHsKICAgICBrUHJvZ3JhbVBhcmFtZXRlciwga1VuaWZvcm0KIH07CiAKK3N0YXRpYyBKU1ZhbHVl
IHRvSlMoRXhlY1N0YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBX
ZWJHTEV4dGVuc2lvbiogZXh0ZW5zaW9uKQoreworICAgIGlmICghZXh0ZW5zaW9uKQorICAgICAg
ICByZXR1cm4ganNOdWxsKCk7CisgICAgc3dpdGNoIChleHRlbnNpb24tPmdldE5hbWUoKSkgewor
ICAgIGNhc2UgV2ViR0xFeHRlbnNpb246Ok9FU1RleHR1cmVGbG9hdE5hbWU6CisgICAgICAgIHJl
dHVybiB0b0pTKGV4ZWMsIGdsb2JhbE9iamVjdCwgc3RhdGljX2Nhc3Q8T0VTVGV4dHVyZUZsb2F0
Kj4oZXh0ZW5zaW9uKSk7CisgICAgfQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJl
dHVybiBqc051bGwoKTsKK30KKwogSlNWYWx1ZSBKU1dlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0
QXR0YWNoZWRTaGFkZXJzKEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICBpZiAoZXhlYy0+YXJndW1l
bnRDb3VudCgpIDwgMSkKQEAgLTE4Niw2ICsyMDEsMTkgQEAgSlNWYWx1ZSBKU1dlYkdMUmVuZGVy
aW5nQ29udGV4dDo6Z2V0QXR0YQogICAgIHJldHVybiBjb25zdHJ1Y3RBcnJheShleGVjLCBsaXN0
KTsKIH0KIAorSlNWYWx1ZSBKU1dlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0RXh0ZW5zaW9uKEV4
ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpIDwgMSkKKyAg
ICAgICAgcmV0dXJuIHRocm93U3ludGF4RXJyb3IoZXhlYyk7CisKKyAgICBXZWJHTFJlbmRlcmlu
Z0NvbnRleHQqIGNvbnRleHQgPSBzdGF0aWNfY2FzdDxXZWJHTFJlbmRlcmluZ0NvbnRleHQqPihp
bXBsKCkpOworICAgIGNvbnN0IFN0cmluZyYgbmFtZSA9IHVzdHJpbmdUb1N0cmluZyhleGVjLT5h
cmd1bWVudCgwKS50b1N0cmluZyhleGVjKSk7CisgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigp
KQorICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKyAgICBXZWJHTEV4dGVuc2lvbiogZXh0
ZW5zaW9uID0gY29udGV4dC0+Z2V0RXh0ZW5zaW9uKG5hbWUpOworICAgIHJldHVybiB0b0pTKGV4
ZWMsIGdsb2JhbE9iamVjdCgpLCBleHRlbnNpb24pOworfQorCiBKU1ZhbHVlIEpTV2ViR0xSZW5k
ZXJpbmdDb250ZXh0OjpnZXRCdWZmZXJQYXJhbWV0ZXIoRXhlY1N0YXRlKiBleGVjKQogewogICAg
IHJldHVybiBnZXRPYmplY3RQYXJhbWV0ZXIodGhpcywgZXhlYywga0J1ZmZlcik7CkBAIC0yODAs
NiArMzA4LDE2IEBAIEpTVmFsdWUgSlNXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFNoYWQKICAg
ICByZXR1cm4gdG9KUyhleGVjLCBnbG9iYWxPYmplY3QoKSwgaW5mbyk7CiB9CiAKK0pTVmFsdWUg
SlNXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFN1cHBvcnRlZEV4dGVuc2lvbnMoRXhlY1N0YXRl
KiBleGVjKQoreworICAgIFdlYkdMUmVuZGVyaW5nQ29udGV4dCogY29udGV4dCA9IHN0YXRpY19j
YXN0PFdlYkdMUmVuZGVyaW5nQ29udGV4dCo+KGltcGwoKSk7CisgICAgVmVjdG9yPFN0cmluZz4g
dmFsdWUgPSBjb250ZXh0LT5nZXRTdXBwb3J0ZWRFeHRlbnNpb25zKCk7CisgICAgTWFya2VkQXJn
dW1lbnRCdWZmZXIgbGlzdDsKKyAgICBmb3IgKHNpemVfdCBpaSA9IDA7IGlpIDwgdmFsdWUuc2l6
ZSgpOyArK2lpKQorICAgICAgICBsaXN0LmFwcGVuZChqc1N0cmluZyhleGVjLCB2YWx1ZVtpaV0p
KTsKKyAgICByZXR1cm4gY29uc3RydWN0QXJyYXkoZXhlYywgbGlzdCk7Cit9CisKIEpTVmFsdWUg
SlNXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFRleFBhcmFtZXRlcihFeGVjU3RhdGUqIGV4ZWMp
CiB7CiAgICAgcmV0dXJuIGdldE9iamVjdFBhcmFtZXRlcih0aGlzLCBleGVjLCBrVGV4dHVyZSk7
CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFdlYkdMUmVuZGVyaW5nQ29udGV4
dEN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhX
ZWJHTFJlbmRlcmluZ0NvbnRleHRDdXN0b20uY3BwCShyZXZpc2lvbiA3MzMxOSkKKysrIFdlYkNv
cmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4V2ViR0xSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNDEsNiArNDEsNyBAQAogI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9j
Lmg+CiAKICNpbmNsdWRlICJWOEJpbmRpbmcuaCIKKyNpbmNsdWRlICJWOEJpbmRpbmdNYWNyb3Mu
aCIKICNpbmNsdWRlICJWOEFycmF5QnVmZmVyVmlldy5oIgogI2luY2x1ZGUgIlY4V2ViR0xCdWZm
ZXIuaCIKICNpbmNsdWRlICJWOEludDhBcnJheS5oIgpAQCAtNjAsNiArNjEsNyBAQAogI2luY2x1
ZGUgIlY4SFRNTEltYWdlRWxlbWVudC5oIgogI2luY2x1ZGUgIlY4SFRNTFZpZGVvRWxlbWVudC5o
IgogI2luY2x1ZGUgIlY4SW1hZ2VEYXRhLmgiCisjaW5jbHVkZSAiVjhPRVNUZXh0dXJlRmxvYXQu
aCIKICNpbmNsdWRlICJWOFByb3h5LmgiCiAjaW5jbHVkZSAiV2ViR0xSZW5kZXJpbmdDb250ZXh0
LmgiCiAKQEAgLTE1MSw2ICsxNTMsMTggQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0
b1Y4T2JqZWN0KAogICAgIH0KIH0KIAorc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4
T2JqZWN0KFdlYkdMRXh0ZW5zaW9uKiBleHRlbnNpb24pCit7CisgICAgaWYgKCFleHRlbnNpb24p
CisgICAgICAgIHJldHVybiB2ODo6TnVsbCgpOworICAgIHN3aXRjaCAoZXh0ZW5zaW9uLT5nZXRO
YW1lKCkpIHsKKyAgICBjYXNlIFdlYkdMRXh0ZW5zaW9uOjpPRVNUZXh0dXJlRmxvYXROYW1lOgor
ICAgICAgICByZXR1cm4gdG9WOChzdGF0aWNfY2FzdDxPRVNUZXh0dXJlRmxvYXQqPihleHRlbnNp
b24pKTsKKyAgICB9CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIHY4OjpO
dWxsKCk7Cit9CisKIGVudW0gT2JqZWN0VHlwZSB7CiAgICAga0J1ZmZlciwga1JlbmRlcmJ1ZmZl
ciwga1RleHR1cmUsIGtWZXJ0ZXhBdHRyaWIKIH07CkBAIC0yNDMsNiArMjU3LDE5IEBAIHY4OjpI
YW5kbGU8djg6OlZhbHVlPiBWOFdlYkdMUmVuZGVyaW5nQ28KICAgICByZXR1cm4gZ2V0T2JqZWN0
UGFyYW1ldGVyKGFyZ3MsIGtCdWZmZXIpOwogfQogCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhX
ZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldEV4dGVuc2lvbkNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1
bWVudHMmIGFyZ3MpCit7CisgICAgSU5DX1NUQVRTKCJET00uV2ViR0xSZW5kZXJpbmdDb250ZXh0
LmdldEV4dGVuc2lvbkNhbGxiYWNrKCkiKTsKKyAgICBXZWJHTFJlbmRlcmluZ0NvbnRleHQqIGlt
cCA9IFY4V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKKyAg
ICBpZiAoYXJncy5MZW5ndGgoKSA8IDEpIHsKKyAgICAgICAgVjhQcm94eTo6c2V0RE9NRXhjZXB0
aW9uKFNZTlRBWF9FUlIpOworICAgICAgICByZXR1cm4gbm90SGFuZGxlZEJ5SW50ZXJjZXB0b3Io
KTsKKyAgICB9CisgICAgU1RSSU5HX1RPX1Y4UEFSQU1FVEVSX0VYQ0VQVElPTl9CTE9DSyhWOFBh
cmFtZXRlcjw+LCBuYW1lLCBhcmdzWzBdKTsKKyAgICBXZWJHTEV4dGVuc2lvbiogZXh0ZW5zaW9u
ID0gaW1wLT5nZXRFeHRlbnNpb24obmFtZSk7CisgICAgcmV0dXJuIHRvVjhPYmplY3QoZXh0ZW5z
aW9uKTsKK30KKwogdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4V2ViR0xSZW5kZXJpbmdDb250ZXh0
OjpnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJDYWxsYmFjayhjb25zdCB2ODo6QXJn
dW1lbnRzJiBhcmdzKQogewogICAgIElOQ19TVEFUUygiRE9NLldlYkdMUmVuZGVyaW5nQ29udGV4
dC5nZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIoKSIpOwpAQCAtMzQxLDYgKzM2OCwx
NyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhXZWJHTFJlbmRlcmluZ0NvCiAgICAgcmV0dXJu
IHRvVjhPYmplY3QoaW5mbyk7CiB9CiAKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFdlYkdMUmVu
ZGVyaW5nQ29udGV4dDo6Z2V0U3VwcG9ydGVkRXh0ZW5zaW9uc0NhbGxiYWNrKGNvbnN0IHY4OjpB
cmd1bWVudHMmIGFyZ3MpCit7CisgICAgSU5DX1NUQVRTKCJET00uV2ViR0xSZW5kZXJpbmdDb250
ZXh0LmdldFN1cHBvcnRlZEV4dGVuc2lvbnNDYWxsYmFjaygpIik7CisgICAgV2ViR0xSZW5kZXJp
bmdDb250ZXh0KiBpbXAgPSBWOFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dG9OYXRpdmUoYXJncy5I
b2xkZXIoKSk7CisgICAgVmVjdG9yPFN0cmluZz4gdmFsdWUgPSBpbXAtPmdldFN1cHBvcnRlZEV4
dGVuc2lvbnMoKTsKKyAgICB2ODo6TG9jYWw8djg6OkFycmF5PiBhcnJheSA9IHY4OjpBcnJheTo6
TmV3KHZhbHVlLnNpemUoKSk7CisgICAgZm9yIChzaXplX3QgaWkgPSAwOyBpaSA8IHZhbHVlLnNp
emUoKTsgKytpaSkKKyAgICAgICAgYXJyYXktPlNldCh2ODo6SW50ZWdlcjo6TmV3KGlpKSwgdjg6
OlN0cmluZzo6TmV3KGZyb21XZWJDb3JlU3RyaW5nKHZhbHVlW2lpXSksIHZhbHVlW2lpXS5sZW5n
dGgoKSkpOworICAgIHJldHVybiBhcnJheTsKK30KKwogdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4
V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRUZXhQYXJhbWV0ZXJDYWxsYmFjayhjb25zdCB2ODo6
QXJndW1lbnRzJiBhcmdzKQogewogICAgIElOQ19TVEFUUygiRE9NLldlYkdMUmVuZGVyaW5nQ29u
dGV4dC5nZXRUZXhQYXJhbWV0ZXIoKSIpOwpJbmRleDogV2ViQ29yZS9odG1sL2NhbnZhcy9PRVNU
ZXh0dXJlRmxvYXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9jYW52YXMvT0VTVGV4
dHVyZUZsb2F0LmNwcAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvaHRtbC9jYW52YXMvT0VTVGV4
dHVyZUZsb2F0LmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1NCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElU
UyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJ
VFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwor
ICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRSgzRF9DQU5WQVMpCisKKyNpbmNsdWRlICJPRVNU
ZXh0dXJlRmxvYXQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitPRVNUZXh0dXJlRmxvYXQ6
Ok9FU1RleHR1cmVGbG9hdCgpIDogV2ViR0xFeHRlbnNpb24oKQoreworfQorCitPRVNUZXh0dXJl
RmxvYXQ6On5PRVNUZXh0dXJlRmxvYXQoKQoreworfQorCitXZWJHTEV4dGVuc2lvbjo6RXh0ZW5z
aW9uTmFtZSBPRVNUZXh0dXJlRmxvYXQ6OmdldE5hbWUoKSBjb25zdAoreworICAgIHJldHVybiBP
RVNUZXh0dXJlRmxvYXROYW1lOworfQorCitQYXNzUmVmUHRyPE9FU1RleHR1cmVGbG9hdD4gT0VT
VGV4dHVyZUZsb2F0OjpjcmVhdGUoKQoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcgT0VTVGV4
dHVyZUZsb2F0KTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5B
QkxFKDNEX0NBTlZBUykKSW5kZXg6IFdlYkNvcmUvaHRtbC9jYW52YXMvT0VTVGV4dHVyZUZsb2F0
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL2NhbnZhcy9PRVNUZXh0dXJlRmxvYXQuaAko
cmV2aXNpb24gMCkKKysrIFdlYkNvcmUvaHRtbC9jYW52YXMvT0VTVGV4dHVyZUZsb2F0LmgJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsNDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAg
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJB
UyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICog
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIE9FU1RleHR1cmVGbG9h
dF9oCisjZGVmaW5lIE9FU1RleHR1cmVGbG9hdF9oCisKKyNpbmNsdWRlICJXZWJHTEV4dGVuc2lv
bi5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50
ZWQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBPRVNUZXh0dXJlRmxvYXQgOiBw
dWJsaWMgV2ViR0xFeHRlbnNpb24geworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPE9F
U1RleHR1cmVGbG9hdD4gY3JlYXRlKCk7CisKKyAgICB2aXJ0dWFsIH5PRVNUZXh0dXJlRmxvYXQo
KTsKKyAgICB2aXJ0dWFsIEV4dGVuc2lvbk5hbWUgZ2V0TmFtZSgpIGNvbnN0OworCitwcml2YXRl
OgorICAgIE9FU1RleHR1cmVGbG9hdCgpOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQor
CisjZW5kaWYgLy8gT0VTVGV4dHVyZUZsb2F0X2gKSW5kZXg6IFdlYkNvcmUvaHRtbC9jYW52YXMv
T0VTVGV4dHVyZUZsb2F0LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvY2FudmFzL09F
U1RleHR1cmVGbG9hdC5pZGwJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL2h0bWwvY2FudmFzL09F
U1RleHR1cmVGbG9hdC5pZGwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjkgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFO
RCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAor
ICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
T1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitt
b2R1bGUgaHRtbCB7CisgICAgaW50ZXJmYWNlIFtDb25kaXRpb25hbD0zRF9DQU5WQVMsIE9taXRD
b25zdHJ1Y3Rvcl0gT0VTVGV4dHVyZUZsb2F0IHsKKyAgICB9OworfQpJbmRleDogV2ViQ29yZS9o
dG1sL2NhbnZhcy9XZWJHTEV4dGVuc2lvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTEV4dGVuc2lvbi5jcHAJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYkdMRXh0ZW5zaW9uLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0NCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEu
ICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
CisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRSgzRF9DQU5WQVMpCisKKyNp
bmNsdWRlICJXZWJHTEV4dGVuc2lvbi5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1dlYkdM
RXh0ZW5zaW9uOjpXZWJHTEV4dGVuc2lvbigpCit7Cit9CisKK1dlYkdMRXh0ZW5zaW9uOjp+V2Vi
R0xFeHRlbnNpb24oKQoreworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAv
LyBFTkFCTEUoM0RfQ0FOVkFTKQpJbmRleDogV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEV4dGVu
c2lvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xFeHRlbnNpb24u
aAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xFeHRlbnNpb24uaAko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSw0OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
ICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMg
IkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisg
KiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViR0xFeHRlbnNp
b25faAorI2RlZmluZSBXZWJHTEV4dGVuc2lvbl9oCisKKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRl
ZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFdlYkdMRXh0ZW5zaW9uIDogcHVi
bGljIFJlZkNvdW50ZWQ8V2ViR0xFeHRlbnNpb24+IHsKK3B1YmxpYzoKKyAgICAvLyBFeHRlbnNp
b24gbmFtZXMgYXJlIG5lZWRlZCB0byBwcm9wZXJseSB3cmFwIGluc3RhbmNlcyBpbiBKYXZhU2Ny
aXB0IG9iamVjdHMuCisgICAgZW51bSBFeHRlbnNpb25OYW1lIHsKKyAgICAgICAgT0VTVGV4dHVy
ZUZsb2F0TmFtZQorICAgIH07CisKKyAgICB2aXJ0dWFsIH5XZWJHTEV4dGVuc2lvbigpOworICAg
IHZpcnR1YWwgRXh0ZW5zaW9uTmFtZSBnZXROYW1lKCkgY29uc3QgPSAwOworCitwcm90ZWN0ZWQ6
CisgICAgV2ViR0xFeHRlbnNpb24oKTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwor
I2VuZGlmIC8vIFdlYkdMRXh0ZW5zaW9uX2gKSW5kZXg6IFdlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R0xSZW5kZXJpbmdDb250ZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHAJKHJldmlzaW9uIDczMzE5KQorKysgV2ViQ29yZS9o
dG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00
Myw2ICs0Myw3IEBACiAjaW5jbHVkZSAiSW1hZ2VEYXRhLmgiCiAjaW5jbHVkZSAiSW50U2l6ZS5o
IgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCisjaW5jbHVkZSAiT0VTVGV4dHVyZUZsb2F0
LmgiCiAjaW5jbHVkZSAiUmVuZGVyQm94LmgiCiAjaW5jbHVkZSAiUmVuZGVyTGF5ZXIuaCIKICNp
bmNsdWRlICJVaW50MTZBcnJheS5oIgpAQCAtMTQzNiw2ICsxNDM3LDIxIEBAIHVuc2lnbmVkIGxv
bmcgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXQKICAgICByZXR1cm4gbV9jb250ZXh0LT5nZXRF
cnJvcigpOwogfQogCitXZWJHTEV4dGVuc2lvbiogV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRF
eHRlbnNpb24oY29uc3QgU3RyaW5nJiBuYW1lKQoreworICAgIGlmIChuYW1lID09ICJPRVNfdGV4
dHVyZV9mbG9hdCIKKyAgICAgICAgJiYgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCktPnN1cHBv
cnRzKCJHTF9PRVNfdGV4dHVyZV9mbG9hdCIpKSB7CisgICAgICAgIGlmICghbV9vZXNUZXh0dXJl
RmxvYXQpIHsKKyAgICAgICAgICAgIGlmICghbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCktPmVu
c3VyZUVuYWJsZWQoIkdMX09FU190ZXh0dXJlX2Zsb2F0IikpCisgICAgICAgICAgICAgICAgcmV0
dXJuIDA7CisgICAgICAgICAgICBtX29lc1RleHR1cmVGbG9hdCA9IE9FU1RleHR1cmVGbG9hdDo6
Y3JlYXRlKCk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIG1fb2VzVGV4dHVyZUZsb2F0Lmdl
dCgpOworICAgIH0KKworICAgIHJldHVybiAwOworfQorCiBXZWJHTEdldEluZm8gV2ViR0xSZW5k
ZXJpbmdDb250ZXh0OjpnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIodW5zaWduZWQg
bG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgYXR0YWNobWVudCwgdW5zaWduZWQgbG9uZyBwbmFt
ZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgVU5VU0VEX1BBUkFNKGVjKTsKQEAgLTE4Mjks
NiArMTg0NSwxNCBAQCBTdHJpbmcgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRTaGFkZXJTCiAg
ICAgcmV0dXJuIG1fY29udGV4dC0+Z2V0U2hhZGVyU291cmNlKG9iamVjdE9yWmVybyhzaGFkZXIp
KTsKIH0KIAorVmVjdG9yPFN0cmluZz4gV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRTdXBwb3J0
ZWRFeHRlbnNpb25zKCkKK3sKKyAgICBWZWN0b3I8U3RyaW5nPiByZXN1bHQ7CisgICAgaWYgKG1f
Y29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLT5zdXBwb3J0cygiR0xfT0VTX3RleHR1cmVfZmxvYXQi
KSkKKyAgICAgICAgcmVzdWx0LmFwcGVuZCgiT0VTX3RleHR1cmVfZmxvYXQiKTsKKyAgICByZXR1
cm4gcmVzdWx0OworfQorCiBXZWJHTEdldEluZm8gV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRU
ZXhQYXJhbWV0ZXIodW5zaWduZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgcG5hbWUsIEV4
Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIFVOVVNFRF9QQVJBTShlYyk7CkBAIC0zNTcwLDYgKzM1
OTQsOCBAQCBib29sIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dmFsaWRhdGVUZXhGCiAgICAgY2Fz
ZSBHcmFwaGljc0NvbnRleHQzRDo6VU5TSUdORURfU0hPUlRfNV81XzVfMToKICAgICAgICAgYnJl
YWs7CiAgICAgZGVmYXVsdDoKKyAgICAgICAgaWYgKHR5cGUgPT0gR3JhcGhpY3NDb250ZXh0M0Q6
OkZMT0FUICYmIG1fb2VzVGV4dHVyZUZsb2F0KQorICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURf
RU5VTSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CkBAIC0zNTc5LDE0ICszNjA1LDE2
IEBAIGJvb2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp2YWxpZGF0ZVRleEYKICAgICBjYXNlIEdy
YXBoaWNzQ29udGV4dDNEOjpBTFBIQToKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpMVU1J
TkFOQ0U6CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6TFVNSU5BTkNFX0FMUEhBOgotICAg
ICAgICBpZiAodHlwZSAhPSBHcmFwaGljc0NvbnRleHQzRDo6VU5TSUdORURfQllURSkgeworICAg
ICAgICBpZiAodHlwZSAhPSBHcmFwaGljc0NvbnRleHQzRDo6VU5TSUdORURfQllURQorICAgICAg
ICAgICAgJiYgdHlwZSAhPSBHcmFwaGljc0NvbnRleHQzRDo6RkxPQVQpIHsKICAgICAgICAgICAg
IG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURf
T1BFUkFUSU9OKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogICAgICAg
ICBicmVhazsKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpSR0I6CiAgICAgICAgIGlmICh0
eXBlICE9IEdyYXBoaWNzQ29udGV4dDNEOjpVTlNJR05FRF9CWVRFCi0gICAgICAgICAgICAmJiB0
eXBlICE9IEdyYXBoaWNzQ29udGV4dDNEOjpVTlNJR05FRF9TSE9SVF81XzZfNSkgeworICAgICAg
ICAgICAgJiYgdHlwZSAhPSBHcmFwaGljc0NvbnRleHQzRDo6VU5TSUdORURfU0hPUlRfNV82XzUK
KyAgICAgICAgICAgICYmIHR5cGUgIT0gR3JhcGhpY3NDb250ZXh0M0Q6OkZMT0FUKSB7CiAgICAg
ICAgICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJ
TlZBTElEX09QRVJBVElPTik7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0K
QEAgLTM1OTQsNyArMzYyMiw4IEBAIGJvb2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp2YWxpZGF0
ZVRleEYKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpSR0JBOgogICAgICAgICBpZiAodHlw
ZSAhPSBHcmFwaGljc0NvbnRleHQzRDo6VU5TSUdORURfQllURQogICAgICAgICAgICAgJiYgdHlw
ZSAhPSBHcmFwaGljc0NvbnRleHQzRDo6VU5TSUdORURfU0hPUlRfNF80XzRfNAotICAgICAgICAg
ICAgJiYgdHlwZSAhPSBHcmFwaGljc0NvbnRleHQzRDo6VU5TSUdORURfU0hPUlRfNV81XzVfMSkg
eworICAgICAgICAgICAgJiYgdHlwZSAhPSBHcmFwaGljc0NvbnRleHQzRDo6VU5TSUdORURfU0hP
UlRfNV81XzVfMQorICAgICAgICAgICAgJiYgdHlwZSAhPSBHcmFwaGljc0NvbnRleHQzRDo6RkxP
QVQpIHsKICAgICAgICAgICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3ND
b250ZXh0M0Q6OklOVkFMSURfT1BFUkFUSU9OKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICAgICAgfQpAQCAtMzY4Myw2ICszNzEyLDEyIEBAIGJvb2wgV2ViR0xSZW5kZXJpbmdDb250
ZXh0Ojp2YWxpZGF0ZVRleEYKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQog
ICAgICAgICBicmVhazsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpGTE9BVDogLy8gT0VT
X3RleHR1cmVfZmxvYXQKKyAgICAgICAgaWYgKCFwaXhlbHMtPmlzRmxvYXRBcnJheSgpKSB7Cisg
ICAgICAgICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNE
OjpJTlZBTElEX09QRVJBVElPTik7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAg
IH0KKyAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CiAgICAgfQpJbmRleDogV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0Nv
bnRleHQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5n
Q29udGV4dC5oCShyZXZpc2lvbiA3MzMxOSkKKysrIFdlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xS
ZW5kZXJpbmdDb250ZXh0LmgJKHdvcmtpbmcgY29weSkKQEAgLTQyLDYgKzQyLDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogY2xhc3MgV2ViR0xBY3RpdmVJbmZvOwogY2xhc3MgV2ViR0xCdWZmZXI7
CiBjbGFzcyBXZWJHTENvbnRleHRBdHRyaWJ1dGVzOworY2xhc3MgV2ViR0xFeHRlbnNpb247CiBj
bGFzcyBXZWJHTEZyYW1lYnVmZmVyOwogY2xhc3MgV2ViR0xPYmplY3Q7CiBjbGFzcyBXZWJHTFBy
b2dyYW07CkBAIC01NCw2ICs1NSw3IEBAIGNsYXNzIEhUTUxWaWRlb0VsZW1lbnQ7CiBjbGFzcyBJ
bWFnZUJ1ZmZlcjsKIGNsYXNzIEltYWdlRGF0YTsKIGNsYXNzIEludFNpemU7CitjbGFzcyBPRVNU
ZXh0dXJlRmxvYXQ7CiAKIGNsYXNzIFdlYkdMUmVuZGVyaW5nQ29udGV4dCA6IHB1YmxpYyBDYW52
YXNSZW5kZXJpbmdDb250ZXh0IHsKIHB1YmxpYzoKQEAgLTE0NCw2ICsxNDYsOCBAQCBwdWJsaWM6
CiAKICAgICB1bnNpZ25lZCBsb25nIGdldEVycm9yKCk7CiAKKyAgICBXZWJHTEV4dGVuc2lvbiog
Z2V0RXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgbmFtZSk7CisKICAgICBXZWJHTEdldEluZm8gZ2V0
RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyKHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNp
Z25lZCBsb25nIGF0dGFjaG1lbnQsIHVuc2lnbmVkIGxvbmcgcG5hbWUsIEV4Y2VwdGlvbkNvZGUm
KTsKIAogICAgIFdlYkdMR2V0SW5mbyBnZXRQYXJhbWV0ZXIodW5zaWduZWQgbG9uZyBwbmFtZSwg
RXhjZXB0aW9uQ29kZSYpOwpAQCAtMTYzLDYgKzE2Nyw4IEBAIHB1YmxpYzoKIAogICAgIFN0cmlu
ZyBnZXRTaGFkZXJTb3VyY2UoV2ViR0xTaGFkZXIqLCBFeGNlcHRpb25Db2RlJik7CiAKKyAgICBW
ZWN0b3I8U3RyaW5nPiBnZXRTdXBwb3J0ZWRFeHRlbnNpb25zKCk7CisKICAgICBXZWJHTEdldElu
Zm8gZ2V0VGV4UGFyYW1ldGVyKHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25nIHBu
YW1lLCBFeGNlcHRpb25Db2RlJik7CiAKICAgICBXZWJHTEdldEluZm8gZ2V0VW5pZm9ybShXZWJH
TFByb2dyYW0qLCBjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiosIEV4Y2VwdGlvbkNvZGUmKTsK
QEAgLTQ0Myw2ICs0NDksOSBAQCBwdWJsaWM6CiAgICAgYm9vbCBtX2lzUmVzb3VyY2VTYWZlOwog
ICAgIGJvb2wgbV9pc0RlcHRoU3RlbmNpbFN1cHBvcnRlZDsKIAorICAgIC8vIEVuYWJsZWQgZXh0
ZW5zaW9uIG9iamVjdHMuCisgICAgUmVmUHRyPE9FU1RleHR1cmVGbG9hdD4gbV9vZXNUZXh0dXJl
RmxvYXQ7CisKICAgICAvLyBIZWxwZXJzIGZvciBnZXRQYXJhbWV0ZXIgYW5kIG90aGVycwogICAg
IFdlYkdMR2V0SW5mbyBnZXRCb29sZWFuUGFyYW1ldGVyKHVuc2lnbmVkIGxvbmcgcG5hbWUpOwog
ICAgIFdlYkdMR2V0SW5mbyBnZXRCb29sZWFuQXJyYXlQYXJhbWV0ZXIodW5zaWduZWQgbG9uZyBw
bmFtZSk7CkluZGV4OiBXZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5p
ZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRl
eHQuaWRsCShyZXZpc2lvbiA3MzMxOSkKKysrIFdlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5k
ZXJpbmdDb250ZXh0LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjg3LDcgKzI4Nyw2IEBAIG1vZHVs
ZSBodG1sIHsKICAgICAgICAgY29uc3QgdW5zaWduZWQgaW50IFZFTkRPUiAgICAgICAgICAgICAg
ICAgICAgICAgICA9IDB4MUYwMDsKICAgICAgICAgY29uc3QgdW5zaWduZWQgaW50IFJFTkRFUkVS
ICAgICAgICAgICAgICAgICAgICAgICA9IDB4MUYwMTsKICAgICAgICAgY29uc3QgdW5zaWduZWQg
aW50IFZFUlNJT04gICAgICAgICAgICAgICAgICAgICAgICA9IDB4MUYwMjsKLSAgICAgICAgY29u
c3QgdW5zaWduZWQgaW50IEVYVEVOU0lPTlMgICAgICAgICAgICAgICAgICAgICA9IDB4MUYwMzsK
IAogICAgICAgICAvKiBUZXh0dXJlTWFnRmlsdGVyICovCiAgICAgICAgIGNvbnN0IHVuc2lnbmVk
IGludCBORUFSRVNUICAgICAgICAgICAgICAgICAgICAgICAgPSAweDI2MDA7CkBAIC01MzUsNiAr
NTM0LDkgQEAgbW9kdWxlIGh0bWwgewogCiAgICAgICAgIFtTdHJpY3RUeXBlQ2hlY2tpbmddIHVu
c2lnbmVkIGxvbmcgZ2V0RXJyb3IoKTsKIAorICAgICAgICAvLyBvYmplY3QgZ2V0RXh0ZW5zaW9u
KGluIERPTVN0cmluZyBuYW1lKTsKKyAgICAgICAgW1N0cmljdFR5cGVDaGVja2luZywgQ3VzdG9t
XSB2b2lkIGdldEV4dGVuc2lvbihpbiBET01TdHJpbmcgbmFtZSk7CisKICAgICAgICAgLy8gYW55
IGdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcihpbiB1bnNpZ25lZCBsb25nIHRhcmdl
dCwgaW4gdW5zaWduZWQgbG9uZyBhdHRhY2htZW50LCBpbiB1bnNpZ25lZCBsb25nIHBuYW1lKSBy
YWlzZXMoRE9NRXhjZXB0aW9uKTsKICAgICAgICAgW1N0cmljdFR5cGVDaGVja2luZywgQ3VzdG9t
XSB2b2lkIGdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcigpOwogICAgICAgICAvLyBh
bnkgZ2V0UGFyYW1ldGVyKGluIHVuc2lnbmVkIGxvbmcgcG5hbWUpIHJhaXNlcyhET01FeGNlcHRp
b24pOwpAQCAtNTU0LDYgKzU1Niw5IEBAIG1vZHVsZSBodG1sIHsKIAogICAgICAgICBbU3RyaWN0
VHlwZUNoZWNraW5nLCBDb252ZXJ0TnVsbFN0cmluZ1RvPU51bGxdIERPTVN0cmluZyAgICBnZXRT
aGFkZXJTb3VyY2UoaW4gV2ViR0xTaGFkZXIgc2hhZGVyKSByYWlzZXMoRE9NRXhjZXB0aW9uKTsK
IAorICAgICAgICAvLyBET01TdHJpbmdbXSBnZXRTdXBwb3J0ZWRFeHRlbnNpb25zKCkKKyAgICAg
ICAgW1N0cmljdFR5cGVDaGVja2luZywgQ3VzdG9tXSB2b2lkIGdldFN1cHBvcnRlZEV4dGVuc2lv
bnMoKTsKKwogICAgICAgICAvLyBhbnkgZ2V0VGV4UGFyYW1ldGVyKGluIHVuc2lnbmVkIGxvbmcg
dGFyZ2V0LCBpbiB1bnNpZ25lZCBsb25nIHBuYW1lKSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKICAg
ICAgICAgW1N0cmljdFR5cGVDaGVja2luZywgQ3VzdG9tXSB2b2lkIGdldFRleFBhcmFtZXRlcigp
OwogCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0V4dGVuc2lvbnMzRC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRXh0ZW5zaW9uczNELmgJKHJldmlz
aW9uIDczMzE5KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9FeHRlbnNpb25zM0QuaAko
d29ya2luZyBjb3B5KQpAQCAtNTAsMTEgKzUwLDE3IEBAIHB1YmxpYzoKICAgICAvLyAgIEdMX0FS
Ql90ZXh0dXJlX25vbl9wb3dlcl9vZl90d28gLyBHTF9PRVNfdGV4dHVyZV9ucG90CiAgICAgLy8g
ICBHTF9FWFRfcGFja2VkX2RlcHRoX3N0ZW5jaWwgLyBHTF9PRVNfcGFja2VkX2RlcHRoX3N0ZW5j
aWwKICAgICAvLyAgIEdMX0FOR0xFX2ZyYW1lYnVmZmVyX2JsaXQgLyBHTF9BTkdMRV9mcmFtZWJ1
ZmZlcl9tdWx0aXNhbXBsZQorICAgIC8vICAgR0xfT0VTX3RleHR1cmVfZmxvYXQKIAogICAgIC8v
IFRha2VzIGZ1bGwgbmFtZSBvZiBleHRlbnNpb247IGZvciBleGFtcGxlLAogICAgIC8vICJHTF9F
WFRfdGV4dHVyZV9mb3JtYXRfQkdSQTg4ODgiLgogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0cyhj
b25zdCBTdHJpbmcmKSA9IDA7CiAKKyAgICAvLyBDZXJ0YWluIE9wZW5HTCBhbmQgV2ViR0wgaW1w
bGVtZW50YXRpb25zIG1heSBzdXBwb3J0IGVuYWJsaW5nCisgICAgLy8gZXh0ZW5zaW9ucyBsYXpp
bHkuIFJldHVybnMgdHJ1ZSBpZiB0aGUgZ2l2ZW4gZXh0ZW5zaW9uIGhhcyBiZWVuCisgICAgLy8g
c3VjY2Vzc2Z1bGx5IGVuYWJsZWQuCisgICAgdmlydHVhbCBib29sIGVuc3VyZUVuYWJsZWQoY29u
c3QgU3RyaW5nJikgPSAwOworCiAgICAgZW51bSBFeHRlbnNpb25zRW51bVR5cGUgewogICAgICAg
ICAvLyBHTF9FWFRfdGV4dHVyZV9mb3JtYXRfQkdSQTg4ODggZW51bXMKICAgICAgICAgQkdSQV9F
WFQgPSAweDgwRTEsCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29u
dGV4dDNELmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBo
aWNzQ29udGV4dDNELmNwcAkocmV2aXNpb24gNzMzMTkpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmNwcAkod29ya2luZyBjb3B5KQpAQCAtODYsNiArODYs
OSBAQCBib29sIEdyYXBoaWNzQ29udGV4dDNEOjpjb21wdXRlRm9ybWF0QW5kCiAgICAgICAgICpj
b21wb25lbnRzUGVyUGl4ZWwgPSAxOwogICAgICAgICAqYnl0ZXNQZXJDb21wb25lbnQgPSBzaXpl
b2YodW5zaWduZWQgc2hvcnQpOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIEdyYXBoaWNzQ29u
dGV4dDNEOjpGTE9BVDogLy8gT0VTX3RleHR1cmVfZmxvYXQKKyAgICAgICAgKmJ5dGVzUGVyQ29t
cG9uZW50ID0gc2l6ZW9mKGZsb2F0KTsKKyAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KQEAgLTE4OCw2ICsxOTEsMjcgQEAgYm9vbCBHcmFw
aGljc0NvbnRleHQzRDo6ZXh0cmFjdFRleHR1cmVEYQogICAgICAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBGTE9BVDogLy8g
T0VTX3RleHR1cmVfZmxvYXQKKyAgICAgICAgc3dpdGNoIChmb3JtYXQpIHsKKyAgICAgICAgY2Fz
ZSBSR0JBOgorICAgICAgICAgICAgc291cmNlRGF0YUZvcm1hdCA9IFNvdXJjZUZvcm1hdFJHQkEz
MkY7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBSR0I6CisgICAgICAgICAgICBz
b3VyY2VEYXRhRm9ybWF0ID0gU291cmNlRm9ybWF0UkdCMzJGOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIGNhc2UgQUxQSEE6CisgICAgICAgICAgICBzb3VyY2VEYXRhRm9ybWF0ID0gU291
cmNlRm9ybWF0QTMyRjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIExVTUlOQU5D
RToKKyAgICAgICAgICAgIHNvdXJjZURhdGFGb3JtYXQgPSBTb3VyY2VGb3JtYXRSMzJGOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgTFVNSU5BTkNFX0FMUEhBOgorICAgICAgICAg
ICAgc291cmNlRGF0YUZvcm1hdCA9IFNvdXJjZUZvcm1hdFJBMzJGOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
KyAgICAgICAgfQorICAgICAgICBicmVhazsKICAgICBjYXNlIFVOU0lHTkVEX1NIT1JUXzVfNV81
XzE6CiAgICAgICAgIHNvdXJjZURhdGFGb3JtYXQgPSBTb3VyY2VGb3JtYXRSR0JBNTU1MTsKICAg
ICAgICAgYnJlYWs7CkBAIC01MDEsNiArNTI1LDM4IEBAIHZvaWQgdW5wYWNrQTE2QmlnVG9SR0JB
OChjb25zdCB1aW50MTZfdCoKICAgICBkZXN0aW5hdGlvblszXSA9IGNvbnZlcnRDb2xvcjE2Qmln
VG84KHNvdXJjZVswXSk7CiB9CiAKK3ZvaWQgdW5wYWNrUkdCMzJGVG9SR0JBMzJGKGNvbnN0IGZs
b2F0KiBzb3VyY2UsIGZsb2F0KiBkZXN0aW5hdGlvbikKK3sKKyAgICBkZXN0aW5hdGlvblswXSA9
IHNvdXJjZVswXTsKKyAgICBkZXN0aW5hdGlvblsxXSA9IHNvdXJjZVsxXTsKKyAgICBkZXN0aW5h
dGlvblsyXSA9IHNvdXJjZVsyXTsKKyAgICBkZXN0aW5hdGlvblszXSA9IDE7Cit9CisKK3ZvaWQg
dW5wYWNrUjMyRlRvUkdCQTMyRihjb25zdCBmbG9hdCogc291cmNlLCBmbG9hdCogZGVzdGluYXRp
b24pCit7CisgICAgZGVzdGluYXRpb25bMF0gPSBzb3VyY2VbMF07CisgICAgZGVzdGluYXRpb25b
MV0gPSBzb3VyY2VbMF07CisgICAgZGVzdGluYXRpb25bMl0gPSBzb3VyY2VbMF07CisgICAgZGVz
dGluYXRpb25bM10gPSAxOworfQorCit2b2lkIHVucGFja1JBMzJGVG9SR0JBMzJGKGNvbnN0IGZs
b2F0KiBzb3VyY2UsIGZsb2F0KiBkZXN0aW5hdGlvbikKK3sKKyAgICBkZXN0aW5hdGlvblswXSA9
IHNvdXJjZVswXTsKKyAgICBkZXN0aW5hdGlvblsxXSA9IHNvdXJjZVswXTsKKyAgICBkZXN0aW5h
dGlvblsyXSA9IHNvdXJjZVswXTsKKyAgICBkZXN0aW5hdGlvblszXSA9IHNvdXJjZVsxXTsKK30K
Kwordm9pZCB1bnBhY2tBMzJGVG9SR0JBMzJGKGNvbnN0IGZsb2F0KiBzb3VyY2UsIGZsb2F0KiBk
ZXN0aW5hdGlvbikKK3sKKyAgICBkZXN0aW5hdGlvblswXSA9IDA7CisgICAgZGVzdGluYXRpb25b
MV0gPSAwOworICAgIGRlc3RpbmF0aW9uWzJdID0gMDsKKyAgICBkZXN0aW5hdGlvblszXSA9IHNv
dXJjZVswXTsKK30KKwogLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAvLyBQaXhlbCBwYWNraW5nIHJvdXRpbmVz
LgogLy8KQEAgLTcxMywxNCArNzY5LDY4IEBAIHZvaWQgcGFja1JHQkE4VG9VbnNpZ25lZFNob3J0
NTY1VW5tdWx0aXAKICAgICAgICAgICAgICAgICAgICAgfCAoKHNvdXJjZUIgJiAweEY4KSA+PiAz
KSk7CiB9CiAKK3ZvaWQgcGFja1JHQkEzMkZUb1JHQjMyRihjb25zdCBmbG9hdCogc291cmNlLCBm
bG9hdCogZGVzdGluYXRpb24pCit7CisgICAgZGVzdGluYXRpb25bMF0gPSBzb3VyY2VbMF07Cisg
ICAgZGVzdGluYXRpb25bMV0gPSBzb3VyY2VbMV07CisgICAgZGVzdGluYXRpb25bMl0gPSBzb3Vy
Y2VbMl07Cit9CisKK3ZvaWQgcGFja1JHQkEzMkZUb1JHQjMyRlByZW11bHRpcGx5KGNvbnN0IGZs
b2F0KiBzb3VyY2UsIGZsb2F0KiBkZXN0aW5hdGlvbikKK3sKKyAgICBmbG9hdCBzY2FsZUZhY3Rv
ciA9IHNvdXJjZVszXTsKKyAgICBkZXN0aW5hdGlvblswXSA9IHNvdXJjZVswXSAqIHNjYWxlRmFj
dG9yOworICAgIGRlc3RpbmF0aW9uWzFdID0gc291cmNlWzFdICogc2NhbGVGYWN0b3I7CisgICAg
ZGVzdGluYXRpb25bMl0gPSBzb3VyY2VbMl0gKiBzY2FsZUZhY3RvcjsKK30KKwordm9pZCBwYWNr
UkdCQTMyRlRvUkdCQTMyRlByZW11bHRpcGx5KGNvbnN0IGZsb2F0KiBzb3VyY2UsIGZsb2F0KiBk
ZXN0aW5hdGlvbikKK3sKKyAgICBmbG9hdCBzY2FsZUZhY3RvciA9IHNvdXJjZVszXTsKKyAgICBk
ZXN0aW5hdGlvblswXSA9IHNvdXJjZVswXSAqIHNjYWxlRmFjdG9yOworICAgIGRlc3RpbmF0aW9u
WzFdID0gc291cmNlWzFdICogc2NhbGVGYWN0b3I7CisgICAgZGVzdGluYXRpb25bMl0gPSBzb3Vy
Y2VbMl0gKiBzY2FsZUZhY3RvcjsKKyAgICBkZXN0aW5hdGlvblszXSA9IHNvdXJjZVszXTsKK30K
Kwordm9pZCBwYWNrUkdCQTMyRlRvQTMyRihjb25zdCBmbG9hdCogc291cmNlLCBmbG9hdCogZGVz
dGluYXRpb24pCit7CisgICAgZGVzdGluYXRpb25bMF0gPSBzb3VyY2VbM107Cit9CisKK3ZvaWQg
cGFja1JHQkEzMkZUb1IzMkYoY29uc3QgZmxvYXQqIHNvdXJjZSwgZmxvYXQqIGRlc3RpbmF0aW9u
KQoreworICAgIGRlc3RpbmF0aW9uWzBdID0gc291cmNlWzBdOworfQorCit2b2lkIHBhY2tSR0JB
MzJGVG9SMzJGUHJlbXVsdGlwbHkoY29uc3QgZmxvYXQqIHNvdXJjZSwgZmxvYXQqIGRlc3RpbmF0
aW9uKQoreworICAgIGZsb2F0IHNjYWxlRmFjdG9yID0gc291cmNlWzNdOworICAgIGRlc3RpbmF0
aW9uWzBdID0gc291cmNlWzBdICogc2NhbGVGYWN0b3I7Cit9CisKKwordm9pZCBwYWNrUkdCQTMy
RlRvUkEzMkYoY29uc3QgZmxvYXQqIHNvdXJjZSwgZmxvYXQqIGRlc3RpbmF0aW9uKQoreworICAg
IGRlc3RpbmF0aW9uWzBdID0gc291cmNlWzBdOworICAgIGRlc3RpbmF0aW9uWzFdID0gc291cmNl
WzNdOworfQorCit2b2lkIHBhY2tSR0JBMzJGVG9SQTMyRlByZW11bHRpcGx5KGNvbnN0IGZsb2F0
KiBzb3VyY2UsIGZsb2F0KiBkZXN0aW5hdGlvbikKK3sKKyAgICBmbG9hdCBzY2FsZUZhY3RvciA9
IHNvdXJjZVszXTsKKyAgICBkZXN0aW5hdGlvblswXSA9IHNvdXJjZVswXSAqIHNjYWxlRmFjdG9y
OworICAgIGRlc3RpbmF0aW9uWzFdID0gc2NhbGVGYWN0b3I7Cit9CisKIH0gLy8gYW5vbnltb3Vz
IG5hbWVzcGFjZQogCiAvLyBUaGlzIGlzIHVzZWQgd2hlbmV2ZXIgdW5wYWNraW5nIGlzIG5lY2Vz
c2FyeTsgaS5lLiwgdGhlIHNvdXJjZSBkYXRhCi0vLyBpcyBub3QgaW4gUkdCQTggZm9ybWF0LCBv
ciB0aGUgdW5wYWNrIGFsaWdubWVudCBzcGVjaWZpZXMgdGhhdCByb3dzCi0vLyBhcmUgbm90IHRp
Z2h0bHkgcGFja2VkLgotdGVtcGxhdGU8dHlwZW5hbWUgU291cmNlVHlwZSwgdHlwZW5hbWUgRGVz
dFR5cGUsCi0gICAgICAgICB2b2lkIHVucGFja2luZ0Z1bmMoY29uc3QgU291cmNlVHlwZSosIHVp
bnQ4X3QqKSwKLSAgICAgICAgIHZvaWQgcGFja2luZ0Z1bmMoY29uc3QgdWludDhfdCosIERlc3RU
eXBlKik+CisvLyBpcyBub3QgaW4gUkdCQTgvUkdCQTMyRiBmb3JtYXQsIG9yIHRoZSB1bnBhY2sg
YWxpZ25tZW50IHNwZWNpZmllcworLy8gdGhhdCByb3dzIGFyZSBub3QgdGlnaHRseSBwYWNrZWQu
Cit0ZW1wbGF0ZTx0eXBlbmFtZSBTb3VyY2VUeXBlLCB0eXBlbmFtZSBJbnRlcm1lZGlhdGVUeXBl
LCB0eXBlbmFtZSBEZXN0VHlwZSwKKyAgICAgICAgIHZvaWQgdW5wYWNraW5nRnVuYyhjb25zdCBT
b3VyY2VUeXBlKiwgSW50ZXJtZWRpYXRlVHlwZSopLAorICAgICAgICAgdm9pZCBwYWNraW5nRnVu
Yyhjb25zdCBJbnRlcm1lZGlhdGVUeXBlKiwgRGVzdFR5cGUqKT4KIHN0YXRpYyB2b2lkIGRvVW5w
YWNraW5nQW5kUGFja2luZyhjb25zdCBTb3VyY2VUeXBlKiBzb3VyY2VEYXRhLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCB3aWR0aCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgaGVpZ2h0LApAQCAtNzMyLDcgKzg0
Miw3IEBAIHN0YXRpYyB2b2lkIGRvVW5wYWNraW5nQW5kUGFja2luZyhjb25zdCAKICAgICBpZiAo
IXNvdXJjZUVsZW1lbnRzUGVyUm93KSB7CiAgICAgICAgIHVuc2lnbmVkIGludCBudW1FbGVtZW50
cyA9IHdpZHRoICogaGVpZ2h0ICogc291cmNlRWxlbWVudHNQZXJQaXhlbDsKICAgICAgICAgY29u
c3QgU291cmNlVHlwZSogZW5kUG9pbnRlciA9IHNvdXJjZURhdGEgKyBudW1FbGVtZW50czsKLSAg
ICAgICAgdWludDhfdCB0ZW1wb3JhcnlSR0JBRGF0YVs0XTsKKyAgICAgICAgSW50ZXJtZWRpYXRl
VHlwZSB0ZW1wb3JhcnlSR0JBRGF0YVs0XTsKICAgICAgICAgd2hpbGUgKHNvdXJjZURhdGEgPCBl
bmRQb2ludGVyKSB7CiAgICAgICAgICAgICB1bnBhY2tpbmdGdW5jKHNvdXJjZURhdGEsIHRlbXBv
cmFyeVJHQkFEYXRhKTsKICAgICAgICAgICAgIHBhY2tpbmdGdW5jKHRlbXBvcmFyeVJHQkFEYXRh
LCBkZXN0aW5hdGlvbkRhdGEpOwpAQCAtNzQwLDcgKzg1MCw3IEBAIHN0YXRpYyB2b2lkIGRvVW5w
YWNraW5nQW5kUGFja2luZyhjb25zdCAKICAgICAgICAgICAgIGRlc3RpbmF0aW9uRGF0YSArPSBk
ZXN0aW5hdGlvbkVsZW1lbnRzUGVyUGl4ZWw7CiAgICAgICAgIH0KICAgICB9IGVsc2UgewotICAg
ICAgICB1aW50OF90IHRlbXBvcmFyeVJHQkFEYXRhWzRdOworICAgICAgICBJbnRlcm1lZGlhdGVU
eXBlIHRlbXBvcmFyeVJHQkFEYXRhWzRdOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGludCB5ID0g
MDsgeSA8IGhlaWdodDsgKyt5KSB7CiAgICAgICAgICAgICBjb25zdCBTb3VyY2VUeXBlKiBjdXJy
ZW50U291cmNlID0gc291cmNlRGF0YTsKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaW50IHgg
PSAwOyB4IDwgd2lkdGg7ICsreCkgewpAQCAtODAyLDE3NiArOTEyLDIzMyBAQCBzdGF0aWMgdm9p
ZCBkb1BhY2tpbmcoY29uc3Qgdm9pZCogc291cmNlCiAgICAgICAgICAgICAgICAgZGVzdGluYXRp
b25EYXRhICs9IGRlc3RpbmF0aW9uRWxlbWVudHNQZXJQaXhlbDsKICAgICAgICAgICAgIH0KICAg
ICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGRvVW5wYWNraW5nQW5kUGFja2luZzx1aW50OF90
LCBEZXN0VHlwZSwgdW5wYWNrUkdCQThUb1JHQkE4LCBwYWNraW5nRnVuYz4oc3RhdGljX2Nhc3Q8
Y29uc3QgdWludDhfdCo+KHNvdXJjZURhdGEpLCB3aWR0aCwgaGVpZ2h0LCBzb3VyY2VFbGVtZW50
c1BlclBpeGVsLCBzb3VyY2VFbGVtZW50c1BlclJvdywgZGVzdGluYXRpb25EYXRhLCBkZXN0aW5h
dGlvbkVsZW1lbnRzUGVyUGl4ZWwpOworICAgICAgICAgICAgZG9VbnBhY2tpbmdBbmRQYWNraW5n
PHVpbnQ4X3QsIHVpbnQ4X3QsIERlc3RUeXBlLCB1bnBhY2tSR0JBOFRvUkdCQTgsIHBhY2tpbmdG
dW5jPihzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oc291cmNlRGF0YSksIHdpZHRoLCBoZWln
aHQsIHNvdXJjZUVsZW1lbnRzUGVyUGl4ZWwsIHNvdXJjZUVsZW1lbnRzUGVyUm93LCBkZXN0aW5h
dGlvbkRhdGEsIGRlc3RpbmF0aW9uRWxlbWVudHNQZXJQaXhlbCk7CiAgICAgICAgIH0KICAgICAg
ICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlNvdXJjZUZvcm1h
dFJHQkExNkxpdHRsZTogewogICAgICAgICB1bnNpZ25lZCBpbnQgc291cmNlRWxlbWVudHNQZXJQ
aXhlbCwgc291cmNlRWxlbWVudHNQZXJSb3c7CiAgICAgICAgIGNvbXB1dGVJbmNyZW1lbnRQYXJh
bWV0ZXJzPHVpbnQxNl90Pih3aWR0aCwgOCwgc291cmNlVW5wYWNrQWxpZ25tZW50LCAmc291cmNl
RWxlbWVudHNQZXJQaXhlbCwgJnNvdXJjZUVsZW1lbnRzUGVyUm93KTsKLSAgICAgICAgZG9VbnBh
Y2tpbmdBbmRQYWNraW5nPHVpbnQxNl90LCBEZXN0VHlwZSwgdW5wYWNrUkdCQTE2TGl0dGxlVG9S
R0JBOCwgcGFja2luZ0Z1bmM+KHN0YXRpY19jYXN0PGNvbnN0IHVpbnQxNl90Kj4oc291cmNlRGF0
YSksIHdpZHRoLCBoZWlnaHQsIHNvdXJjZUVsZW1lbnRzUGVyUGl4ZWwsIHNvdXJjZUVsZW1lbnRz
UGVyUm93LCBkZXN0aW5hdGlvbkRhdGEsIGRlc3RpbmF0aW9uRWxlbWVudHNQZXJQaXhlbCk7Cisg
ICAgICAgIGRvVW5wYWNraW5nQW5kUGFja2luZzx1aW50MTZfdCwgdWludDhfdCwgRGVzdFR5cGUs
IHVucGFja1JHQkExNkxpdHRsZVRvUkdCQTgsIHBhY2tpbmdGdW5jPihzdGF0aWNfY2FzdDxjb25z
dCB1aW50MTZfdCo+KHNvdXJjZURhdGEpLCB3aWR0aCwgaGVpZ2h0LCBzb3VyY2VFbGVtZW50c1Bl
clBpeGVsLCBzb3VyY2VFbGVtZW50c1BlclJvdywgZGVzdGluYXRpb25EYXRhLCBkZXN0aW5hdGlv
bkVsZW1lbnRzUGVyUGl4ZWwpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBHcmFw
aGljc0NvbnRleHQzRDo6U291cmNlRm9ybWF0UkdCQTE2QmlnOiB7CiAgICAgICAgIHVuc2lnbmVk
IGludCBzb3VyY2VFbGVtZW50c1BlclBpeGVsLCBzb3VyY2VFbGVtZW50c1BlclJvdzsKICAgICAg
ICAgY29tcHV0ZUluY3JlbWVudFBhcmFtZXRlcnM8dWludDE2X3Q+KHdpZHRoLCA4LCBzb3VyY2VV
bnBhY2tBbGlnbm1lbnQsICZzb3VyY2VFbGVtZW50c1BlclBpeGVsLCAmc291cmNlRWxlbWVudHNQ
ZXJSb3cpOwotICAgICAgICBkb1VucGFja2luZ0FuZFBhY2tpbmc8dWludDE2X3QsIERlc3RUeXBl
LCB1bnBhY2tSR0JBMTZCaWdUb1JHQkE4LCBwYWNraW5nRnVuYz4oc3RhdGljX2Nhc3Q8Y29uc3Qg
dWludDE2X3QqPihzb3VyY2VEYXRhKSwgd2lkdGgsIGhlaWdodCwgc291cmNlRWxlbWVudHNQZXJQ
aXhlbCwgc291cmNlRWxlbWVudHNQZXJSb3csIGRlc3RpbmF0aW9uRGF0YSwgZGVzdGluYXRpb25F
bGVtZW50c1BlclBpeGVsKTsKKyAgICAgICAgZG9VbnBhY2tpbmdBbmRQYWNraW5nPHVpbnQxNl90
LCB1aW50OF90LCBEZXN0VHlwZSwgdW5wYWNrUkdCQTE2QmlnVG9SR0JBOCwgcGFja2luZ0Z1bmM+
KHN0YXRpY19jYXN0PGNvbnN0IHVpbnQxNl90Kj4oc291cmNlRGF0YSksIHdpZHRoLCBoZWlnaHQs
IHNvdXJjZUVsZW1lbnRzUGVyUGl4ZWwsIHNvdXJjZUVsZW1lbnRzUGVyUm93LCBkZXN0aW5hdGlv
bkRhdGEsIGRlc3RpbmF0aW9uRWxlbWVudHNQZXJQaXhlbCk7CiAgICAgICAgIGJyZWFrOwogICAg
IH0KICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpTb3VyY2VGb3JtYXRSR0I4OiB7CiAgICAg
ICAgIHVuc2lnbmVkIGludCBzb3VyY2VFbGVtZW50c1BlclBpeGVsLCBzb3VyY2VFbGVtZW50c1Bl
clJvdzsKICAgICAgICAgY29tcHV0ZUluY3JlbWVudFBhcmFtZXRlcnM8dWludDhfdD4od2lkdGgs
IDMsIHNvdXJjZVVucGFja0FsaWdubWVudCwgJnNvdXJjZUVsZW1lbnRzUGVyUGl4ZWwsICZzb3Vy
Y2VFbGVtZW50c1BlclJvdyk7Ci0gICAgICAgIGRvVW5wYWNraW5nQW5kUGFja2luZzx1aW50OF90
LCBEZXN0VHlwZSwgdW5wYWNrUkdCOFRvUkdCQTgsIHBhY2tpbmdGdW5jPihzdGF0aWNfY2FzdDxj
b25zdCB1aW50OF90Kj4oc291cmNlRGF0YSksIHdpZHRoLCBoZWlnaHQsIHNvdXJjZUVsZW1lbnRz
UGVyUGl4ZWwsIHNvdXJjZUVsZW1lbnRzUGVyUm93LCBkZXN0aW5hdGlvbkRhdGEsIGRlc3RpbmF0
aW9uRWxlbWVudHNQZXJQaXhlbCk7CisgICAgICAgIGRvVW5wYWNraW5nQW5kUGFja2luZzx1aW50
OF90LCB1aW50OF90LCBEZXN0VHlwZSwgdW5wYWNrUkdCOFRvUkdCQTgsIHBhY2tpbmdGdW5jPihz
dGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oc291cmNlRGF0YSksIHdpZHRoLCBoZWlnaHQsIHNv
dXJjZUVsZW1lbnRzUGVyUGl4ZWwsIHNvdXJjZUVsZW1lbnRzUGVyUm93LCBkZXN0aW5hdGlvbkRh
dGEsIGRlc3RpbmF0aW9uRWxlbWVudHNQZXJQaXhlbCk7CiAgICAgICAgIGJyZWFrOwogICAgIH0K
ICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpTb3VyY2VGb3JtYXRSR0IxNkxpdHRsZTogewog
ICAgICAgICB1bnNpZ25lZCBpbnQgc291cmNlRWxlbWVudHNQZXJQaXhlbCwgc291cmNlRWxlbWVu
dHNQZXJSb3c7CiAgICAgICAgIGNvbXB1dGVJbmNyZW1lbnRQYXJhbWV0ZXJzPHVpbnQxNl90Pih3
aWR0aCwgNiwgc291cmNlVW5wYWNrQWxpZ25tZW50LCAmc291cmNlRWxlbWVudHNQZXJQaXhlbCwg
JnNvdXJjZUVsZW1lbnRzUGVyUm93KTsKLSAgICAgICAgZG9VbnBhY2tpbmdBbmRQYWNraW5nPHVp
bnQxNl90LCBEZXN0VHlwZSwgdW5wYWNrUkdCMTZMaXR0bGVUb1JHQkE4LCBwYWNraW5nRnVuYz4o
c3RhdGljX2Nhc3Q8Y29uc3QgdWludDE2X3QqPihzb3VyY2VEYXRhKSwgd2lkdGgsIGhlaWdodCwg
c291cmNlRWxlbWVudHNQZXJQaXhlbCwgc291cmNlRWxlbWVudHNQZXJSb3csIGRlc3RpbmF0aW9u
RGF0YSwgZGVzdGluYXRpb25FbGVtZW50c1BlclBpeGVsKTsKKyAgICAgICAgZG9VbnBhY2tpbmdB
bmRQYWNraW5nPHVpbnQxNl90LCB1aW50OF90LCBEZXN0VHlwZSwgdW5wYWNrUkdCMTZMaXR0bGVU
b1JHQkE4LCBwYWNraW5nRnVuYz4oc3RhdGljX2Nhc3Q8Y29uc3QgdWludDE2X3QqPihzb3VyY2VE
YXRhKSwgd2lkdGgsIGhlaWdodCwgc291cmNlRWxlbWVudHNQZXJQaXhlbCwgc291cmNlRWxlbWVu
dHNQZXJSb3csIGRlc3RpbmF0aW9uRGF0YSwgZGVzdGluYXRpb25FbGVtZW50c1BlclBpeGVsKTsK
ICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlNvdXJj
ZUZvcm1hdFJHQjE2QmlnOiB7CiAgICAgICAgIHVuc2lnbmVkIGludCBzb3VyY2VFbGVtZW50c1Bl
clBpeGVsLCBzb3VyY2VFbGVtZW50c1BlclJvdzsKICAgICAgICAgY29tcHV0ZUluY3JlbWVudFBh
cmFtZXRlcnM8dWludDE2X3Q+KHdpZHRoLCA2LCBzb3VyY2VVbnBhY2tBbGlnbm1lbnQsICZzb3Vy
Y2VFbGVtZW50c1BlclBpeGVsLCAmc291cmNlRWxlbWVudHNQZXJSb3cpOwotICAgICAgICBkb1Vu
cGFja2luZ0FuZFBhY2tpbmc8dWludDE2X3QsIERlc3RUeXBlLCB1bnBhY2tSR0IxNkJpZ1RvUkdC
QTgsIHBhY2tpbmdGdW5jPihzdGF0aWNfY2FzdDxjb25zdCB1aW50MTZfdCo+KHNvdXJjZURhdGEp
LCB3aWR0aCwgaGVpZ2h0LCBzb3VyY2VFbGVtZW50c1BlclBpeGVsLCBzb3VyY2VFbGVtZW50c1Bl
clJvdywgZGVzdGluYXRpb25EYXRhLCBkZXN0aW5hdGlvbkVsZW1lbnRzUGVyUGl4ZWwpOworICAg
ICAgICBkb1VucGFja2luZ0FuZFBhY2tpbmc8dWludDE2X3QsIHVpbnQ4X3QsIERlc3RUeXBlLCB1
bnBhY2tSR0IxNkJpZ1RvUkdCQTgsIHBhY2tpbmdGdW5jPihzdGF0aWNfY2FzdDxjb25zdCB1aW50
MTZfdCo+KHNvdXJjZURhdGEpLCB3aWR0aCwgaGVpZ2h0LCBzb3VyY2VFbGVtZW50c1BlclBpeGVs
LCBzb3VyY2VFbGVtZW50c1BlclJvdywgZGVzdGluYXRpb25EYXRhLCBkZXN0aW5hdGlvbkVsZW1l
bnRzUGVyUGl4ZWwpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBHcmFwaGljc0Nv
bnRleHQzRDo6U291cmNlRm9ybWF0QkdSODogewogICAgICAgICB1bnNpZ25lZCBpbnQgc291cmNl
RWxlbWVudHNQZXJQaXhlbCwgc291cmNlRWxlbWVudHNQZXJSb3c7CiAgICAgICAgIGNvbXB1dGVJ
bmNyZW1lbnRQYXJhbWV0ZXJzPHVpbnQ4X3Q+KHdpZHRoLCAzLCBzb3VyY2VVbnBhY2tBbGlnbm1l
bnQsICZzb3VyY2VFbGVtZW50c1BlclBpeGVsLCAmc291cmNlRWxlbWVudHNQZXJSb3cpOwotICAg
ICAgICBkb1VucGFja2luZ0FuZFBhY2tpbmc8dWludDhfdCwgRGVzdFR5cGUsIHVucGFja0JHUjhU
b1JHQkE4LCBwYWNraW5nRnVuYz4oc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KHNvdXJjZURh
dGEpLCB3aWR0aCwgaGVpZ2h0LCBzb3VyY2VFbGVtZW50c1BlclBpeGVsLCBzb3VyY2VFbGVtZW50
c1BlclJvdywgZGVzdGluYXRpb25EYXRhLCBkZXN0aW5hdGlvbkVsZW1lbnRzUGVyUGl4ZWwpOwor
ICAgICAgICBkb1VucGFja2luZ0FuZFBhY2tpbmc8dWludDhfdCwgdWludDhfdCwgRGVzdFR5cGUs
IHVucGFja0JHUjhUb1JHQkE4LCBwYWNraW5nRnVuYz4oc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhf
dCo+KHNvdXJjZURhdGEpLCB3aWR0aCwgaGVpZ2h0LCBzb3VyY2VFbGVtZW50c1BlclBpeGVsLCBz
b3VyY2VFbGVtZW50c1BlclJvdywgZGVzdGluYXRpb25EYXRhLCBkZXN0aW5hdGlvbkVsZW1lbnRz
UGVyUGl4ZWwpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBHcmFwaGljc0NvbnRl
eHQzRDo6U291cmNlRm9ybWF0QVJHQjg6IHsKICAgICAgICAgdW5zaWduZWQgaW50IHNvdXJjZUVs
ZW1lbnRzUGVyUGl4ZWwsIHNvdXJjZUVsZW1lbnRzUGVyUm93OwogICAgICAgICBjb21wdXRlSW5j
cmVtZW50UGFyYW1ldGVyczx1aW50OF90Pih3aWR0aCwgNCwgc291cmNlVW5wYWNrQWxpZ25tZW50
LCAmc291cmNlRWxlbWVudHNQZXJQaXhlbCwgJnNvdXJjZUVsZW1lbnRzUGVyUm93KTsKLSAgICAg
ICAgZG9VbnBhY2tpbmdBbmRQYWNraW5nPHVpbnQ4X3QsIERlc3RUeXBlLCB1bnBhY2tBUkdCOFRv
UkdCQTgsIHBhY2tpbmdGdW5jPihzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oc291cmNlRGF0
YSksIHdpZHRoLCBoZWlnaHQsIHNvdXJjZUVsZW1lbnRzUGVyUGl4ZWwsIHNvdXJjZUVsZW1lbnRz
UGVyUm93LCBkZXN0aW5hdGlvbkRhdGEsIGRlc3RpbmF0aW9uRWxlbWVudHNQZXJQaXhlbCk7Cisg
ICAgICAgIGRvVW5wYWNraW5nQW5kUGFja2luZzx1aW50OF90LCB1aW50OF90LCBEZXN0VHlwZSwg
dW5wYWNrQVJHQjhUb1JHQkE4LCBwYWNraW5nRnVuYz4oc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhf
dCo+KHNvdXJjZURhdGEpLCB3aWR0aCwgaGVpZ2h0LCBzb3VyY2VFbGVtZW50c1BlclBpeGVsLCBz
b3VyY2VFbGVtZW50c1BlclJvdywgZGVzdGluYXRpb25EYXRhLCBkZXN0aW5hdGlvbkVsZW1lbnRz
UGVyUGl4ZWwpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBHcmFwaGljc0NvbnRl
eHQzRDo6U291cmNlRm9ybWF0QVJHQjE2TGl0dGxlOiB7CiAgICAgICAgIHVuc2lnbmVkIGludCBz
b3VyY2VFbGVtZW50c1BlclBpeGVsLCBzb3VyY2VFbGVtZW50c1BlclJvdzsKICAgICAgICAgY29t
cHV0ZUluY3JlbWVudFBhcmFtZXRlcnM8dWludDE2X3Q+KHdpZHRoLCA4LCBzb3VyY2VVbnBhY2tB
bGlnbm1lbnQsICZzb3VyY2VFbGVtZW50c1BlclBpeGVsLCAmc291cmNlRWxlbWVudHNQZXJSb3cp
OwotICAgICAgICBkb1VucGFja2luZ0FuZFBhY2tpbmc8dWludDE2X3QsIERlc3RUeXBlLCB1bnBh
Y2tBUkdCMTZMaXR0bGVUb1JHQkE4LCBwYWNraW5nRnVuYz4oc3RhdGljX2Nhc3Q8Y29uc3QgdWlu
dDE2X3QqPihzb3VyY2VEYXRhKSwgd2lkdGgsIGhlaWdodCwgc291cmNlRWxlbWVudHNQZXJQaXhl
bCwgc291cmNlRWxlbWVudHNQZXJSb3csIGRlc3RpbmF0aW9uRGF0YSwgZGVzdGluYXRpb25FbGVt
ZW50c1BlclBpeGVsKTsKKyAgICAgICAgZG9VbnBhY2tpbmdBbmRQYWNraW5nPHVpbnQxNl90LCB1
aW50OF90LCBEZXN0VHlwZSwgdW5wYWNrQVJHQjE2TGl0dGxlVG9SR0JBOCwgcGFja2luZ0Z1bmM+
KHN0YXRpY19jYXN0PGNvbnN0IHVpbnQxNl90Kj4oc291cmNlRGF0YSksIHdpZHRoLCBoZWlnaHQs
IHNvdXJjZUVsZW1lbnRzUGVyUGl4ZWwsIHNvdXJjZUVsZW1lbnRzUGVyUm93LCBkZXN0aW5hdGlv
bkRhdGEsIGRlc3RpbmF0aW9uRWxlbWVudHNQZXJQaXhlbCk7CiAgICAgICAgIGJyZWFrOwogICAg
IH0KICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpTb3VyY2VGb3JtYXRBUkdCMTZCaWc6IHsK
ICAgICAgICAgdW5zaWduZWQgaW50IHNvdXJjZUVsZW1lbnRzUGVyUGl4ZWwsIHNvdXJjZUVsZW1l
bnRzUGVyUm93OwogICAgICAgICBjb21wdXRlSW5jcmVtZW50UGFyYW1ldGVyczx1aW50MTZfdD4o
d2lkdGgsIDgsIHNvdXJjZVVucGFja0FsaWdubWVudCwgJnNvdXJjZUVsZW1lbnRzUGVyUGl4ZWws
ICZzb3VyY2VFbGVtZW50c1BlclJvdyk7Ci0gICAgICAgIGRvVW5wYWNraW5nQW5kUGFja2luZzx1
aW50MTZfdCwgRGVzdFR5cGUsIHVucGFja0FSR0IxNkJpZ1RvUkdCQTgsIHBhY2tpbmdGdW5jPihz
dGF0aWNfY2FzdDxjb25zdCB1aW50MTZfdCo+KHNvdXJjZURhdGEpLCB3aWR0aCwgaGVpZ2h0LCBz
b3VyY2VFbGVtZW50c1BlclBpeGVsLCBzb3VyY2VFbGVtZW50c1BlclJvdywgZGVzdGluYXRpb25E
YXRhLCBkZXN0aW5hdGlvbkVsZW1lbnRzUGVyUGl4ZWwpOworICAgICAgICBkb1VucGFja2luZ0Fu
ZFBhY2tpbmc8dWludDE2X3QsIHVpbnQ4X3QsIERlc3RUeXBlLCB1bnBhY2tBUkdCMTZCaWdUb1JH
QkE4LCBwYWNraW5nRnVuYz4oc3RhdGljX2Nhc3Q8Y29uc3QgdWludDE2X3QqPihzb3VyY2VEYXRh
KSwgd2lkdGgsIGhlaWdodCwgc291cmNlRWxlbWVudHNQZXJQaXhlbCwgc291cmNlRWxlbWVudHNQ
ZXJSb3csIGRlc3RpbmF0aW9uRGF0YSwgZGVzdGluYXRpb25FbGVtZW50c1BlclBpeGVsKTsKICAg
ICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlNvdXJjZUZv
cm1hdEFCR1I4OiB7CiAgICAgICAgIHVuc2lnbmVkIGludCBzb3VyY2VFbGVtZW50c1BlclBpeGVs
LCBzb3VyY2VFbGVtZW50c1BlclJvdzsKICAgICAgICAgY29tcHV0ZUluY3JlbWVudFBhcmFtZXRl
cnM8dWludDhfdD4od2lkdGgsIDQsIHNvdXJjZVVucGFja0FsaWdubWVudCwgJnNvdXJjZUVsZW1l
bnRzUGVyUGl4ZWwsICZzb3VyY2VFbGVtZW50c1BlclJvdyk7Ci0gICAgICAgIGRvVW5wYWNraW5n
QW5kUGFja2luZzx1aW50OF90LCBEZXN0VHlwZSwgdW5wYWNrQUJHUjhUb1JHQkE4LCBwYWNraW5n
RnVuYz4oc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KHNvdXJjZURhdGEpLCB3aWR0aCwgaGVp
Z2h0LCBzb3VyY2VFbGVtZW50c1BlclBpeGVsLCBzb3VyY2VFbGVtZW50c1BlclJvdywgZGVzdGlu
YXRpb25EYXRhLCBkZXN0aW5hdGlvbkVsZW1lbnRzUGVyUGl4ZWwpOworICAgICAgICBkb1VucGFj
a2luZ0FuZFBhY2tpbmc8dWludDhfdCwgdWludDhfdCwgRGVzdFR5cGUsIHVucGFja0FCR1I4VG9S
R0JBOCwgcGFja2luZ0Z1bmM+KHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihzb3VyY2VEYXRh
KSwgd2lkdGgsIGhlaWdodCwgc291cmNlRWxlbWVudHNQZXJQaXhlbCwgc291cmNlRWxlbWVudHNQ
ZXJSb3csIGRlc3RpbmF0aW9uRGF0YSwgZGVzdGluYXRpb25FbGVtZW50c1BlclBpeGVsKTsKICAg
ICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlNvdXJjZUZv
cm1hdEJHUkE4OiB7CiAgICAgICAgIHVuc2lnbmVkIGludCBzb3VyY2VFbGVtZW50c1BlclBpeGVs
LCBzb3VyY2VFbGVtZW50c1BlclJvdzsKICAgICAgICAgY29tcHV0ZUluY3JlbWVudFBhcmFtZXRl
cnM8dWludDhfdD4od2lkdGgsIDQsIHNvdXJjZVVucGFja0FsaWdubWVudCwgJnNvdXJjZUVsZW1l
bnRzUGVyUGl4ZWwsICZzb3VyY2VFbGVtZW50c1BlclJvdyk7Ci0gICAgICAgIGRvVW5wYWNraW5n
QW5kUGFja2luZzx1aW50OF90LCBEZXN0VHlwZSwgdW5wYWNrQkdSQThUb1JHQkE4LCBwYWNraW5n
RnVuYz4oc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KHNvdXJjZURhdGEpLCB3aWR0aCwgaGVp
Z2h0LCBzb3VyY2VFbGVtZW50c1BlclBpeGVsLCBzb3VyY2VFbGVtZW50c1BlclJvdywgZGVzdGlu
YXRpb25EYXRhLCBkZXN0aW5hdGlvbkVsZW1lbnRzUGVyUGl4ZWwpOworICAgICAgICBkb1VucGFj
a2luZ0FuZFBhY2tpbmc8dWludDhfdCwgdWludDhfdCwgRGVzdFR5cGUsIHVucGFja0JHUkE4VG9S
R0JBOCwgcGFja2luZ0Z1bmM+KHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihzb3VyY2VEYXRh
KSwgd2lkdGgsIGhlaWdodCwgc291cmNlRWxlbWVudHNQZXJQaXhlbCwgc291cmNlRWxlbWVudHNQ
ZXJSb3csIGRlc3RpbmF0aW9uRGF0YSwgZGVzdGluYXRpb25FbGVtZW50c1BlclBpeGVsKTsKICAg
ICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlNvdXJjZUZv
cm1hdEJHUkExNkxpdHRsZTogewogICAgICAgICB1bnNpZ25lZCBpbnQgc291cmNlRWxlbWVudHNQ
ZXJQaXhlbCwgc291cmNlRWxlbWVudHNQZXJSb3c7CiAgICAgICAgIGNvbXB1dGVJbmNyZW1lbnRQ
YXJhbWV0ZXJzPHVpbnQxNl90Pih3aWR0aCwgOCwgc291cmNlVW5wYWNrQWxpZ25tZW50LCAmc291
cmNlRWxlbWVudHNQZXJQaXhlbCwgJnNvdXJjZUVsZW1lbnRzUGVyUm93KTsKLSAgICAgICAgZG9V
bnBhY2tpbmdBbmRQYWNraW5nPHVpbnQxNl90LCBEZXN0VHlwZSwgdW5wYWNrQkdSQTE2TGl0dGxl
VG9SR0JBOCwgcGFja2luZ0Z1bmM+KHN0YXRpY19jYXN0PGNvbnN0IHVpbnQxNl90Kj4oc291cmNl
RGF0YSksIHdpZHRoLCBoZWlnaHQsIHNvdXJjZUVsZW1lbnRzUGVyUGl4ZWwsIHNvdXJjZUVsZW1l
bnRzUGVyUm93LCBkZXN0aW5hdGlvbkRhdGEsIGRlc3RpbmF0aW9uRWxlbWVudHNQZXJQaXhlbCk7
CisgICAgICAgIGRvVW5wYWNraW5nQW5kUGFja2luZzx1aW50MTZfdCwgdWludDhfdCwgRGVzdFR5
cGUsIHVucGFja0JHUkExNkxpdHRsZVRvUkdCQTgsIHBhY2tpbmdGdW5jPihzdGF0aWNfY2FzdDxj
b25zdCB1aW50MTZfdCo+KHNvdXJjZURhdGEpLCB3aWR0aCwgaGVpZ2h0LCBzb3VyY2VFbGVtZW50
c1BlclBpeGVsLCBzb3VyY2VFbGVtZW50c1BlclJvdywgZGVzdGluYXRpb25EYXRhLCBkZXN0aW5h
dGlvbkVsZW1lbnRzUGVyUGl4ZWwpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBH
cmFwaGljc0NvbnRleHQzRDo6U291cmNlRm9ybWF0QkdSQTE2QmlnOiB7CiAgICAgICAgIHVuc2ln
bmVkIGludCBzb3VyY2VFbGVtZW50c1BlclBpeGVsLCBzb3VyY2VFbGVtZW50c1BlclJvdzsKICAg
ICAgICAgY29tcHV0ZUluY3JlbWVudFBhcmFtZXRlcnM8dWludDE2X3Q+KHdpZHRoLCA4LCBzb3Vy
Y2VVbnBhY2tBbGlnbm1lbnQsICZzb3VyY2VFbGVtZW50c1BlclBpeGVsLCAmc291cmNlRWxlbWVu
dHNQZXJSb3cpOwotICAgICAgICBkb1VucGFja2luZ0FuZFBhY2tpbmc8dWludDE2X3QsIERlc3RU
eXBlLCB1bnBhY2tCR1JBMTZCaWdUb1JHQkE4LCBwYWNraW5nRnVuYz4oc3RhdGljX2Nhc3Q8Y29u
c3QgdWludDE2X3QqPihzb3VyY2VEYXRhKSwgd2lkdGgsIGhlaWdodCwgc291cmNlRWxlbWVudHNQ
ZXJQaXhlbCwgc291cmNlRWxlbWVudHNQZXJSb3csIGRlc3RpbmF0aW9uRGF0YSwgZGVzdGluYXRp
b25FbGVtZW50c1BlclBpeGVsKTsKKyAgICAgICAgZG9VbnBhY2tpbmdBbmRQYWNraW5nPHVpbnQx
Nl90LCB1aW50OF90LCBEZXN0VHlwZSwgdW5wYWNrQkdSQTE2QmlnVG9SR0JBOCwgcGFja2luZ0Z1
bmM+KHN0YXRpY19jYXN0PGNvbnN0IHVpbnQxNl90Kj4oc291cmNlRGF0YSksIHdpZHRoLCBoZWln
aHQsIHNvdXJjZUVsZW1lbnRzUGVyUGl4ZWwsIHNvdXJjZUVsZW1lbnRzUGVyUm93LCBkZXN0aW5h
dGlvbkRhdGEsIGRlc3RpbmF0aW9uRWxlbWVudHNQZXJQaXhlbCk7CiAgICAgICAgIGJyZWFrOwog
ICAgIH0KICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpTb3VyY2VGb3JtYXRSR0JBNTU1MTog
ewogICAgICAgICB1bnNpZ25lZCBpbnQgc291cmNlRWxlbWVudHNQZXJQaXhlbCwgc291cmNlRWxl
bWVudHNQZXJSb3c7CiAgICAgICAgIGNvbXB1dGVJbmNyZW1lbnRQYXJhbWV0ZXJzPHVpbnQxNl90
Pih3aWR0aCwgMiwgc291cmNlVW5wYWNrQWxpZ25tZW50LCAmc291cmNlRWxlbWVudHNQZXJQaXhl
bCwgJnNvdXJjZUVsZW1lbnRzUGVyUm93KTsKLSAgICAgICAgZG9VbnBhY2tpbmdBbmRQYWNraW5n
PHVpbnQxNl90LCBEZXN0VHlwZSwgdW5wYWNrUkdCQTU1NTFUb1JHQkE4LCBwYWNraW5nRnVuYz4o
c3RhdGljX2Nhc3Q8Y29uc3QgdWludDE2X3QqPihzb3VyY2VEYXRhKSwgd2lkdGgsIGhlaWdodCwg
c291cmNlRWxlbWVudHNQZXJQaXhlbCwgc291cmNlRWxlbWVudHNQZXJSb3csIGRlc3RpbmF0aW9u
RGF0YSwgZGVzdGluYXRpb25FbGVtZW50c1BlclBpeGVsKTsKKyAgICAgICAgZG9VbnBhY2tpbmdB
bmRQYWNraW5nPHVpbnQxNl90LCB1aW50OF90LCBEZXN0VHlwZSwgdW5wYWNrUkdCQTU1NTFUb1JH
QkE4LCBwYWNraW5nRnVuYz4oc3RhdGljX2Nhc3Q8Y29uc3QgdWludDE2X3QqPihzb3VyY2VEYXRh
KSwgd2lkdGgsIGhlaWdodCwgc291cmNlRWxlbWVudHNQZXJQaXhlbCwgc291cmNlRWxlbWVudHNQ
ZXJSb3csIGRlc3RpbmF0aW9uRGF0YSwgZGVzdGluYXRpb25FbGVtZW50c1BlclBpeGVsKTsKICAg
ICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlNvdXJjZUZv
cm1hdFJHQkE0NDQ0OiB7CiAgICAgICAgIHVuc2lnbmVkIGludCBzb3VyY2VFbGVtZW50c1BlclBp
eGVsLCBzb3VyY2VFbGVtZW50c1BlclJvdzsKICAgICAgICAgY29tcHV0ZUluY3JlbWVudFBhcmFt
ZXRlcnM8dWludDE2X3Q+KHdpZHRoLCAyLCBzb3VyY2VVbnBhY2tBbGlnbm1lbnQsICZzb3VyY2VF
bGVtZW50c1BlclBpeGVsLCAmc291cmNlRWxlbWVudHNQZXJSb3cpOwotICAgICAgICBkb1VucGFj
a2luZ0FuZFBhY2tpbmc8dWludDE2X3QsIERlc3RUeXBlLCB1bnBhY2tSR0JBNDQ0NFRvUkdCQTgs
IHBhY2tpbmdGdW5jPihzdGF0aWNfY2FzdDxjb25zdCB1aW50MTZfdCo+KHNvdXJjZURhdGEpLCB3
aWR0aCwgaGVpZ2h0LCBzb3VyY2VFbGVtZW50c1BlclBpeGVsLCBzb3VyY2VFbGVtZW50c1BlclJv
dywgZGVzdGluYXRpb25EYXRhLCBkZXN0aW5hdGlvbkVsZW1lbnRzUGVyUGl4ZWwpOworICAgICAg
ICBkb1VucGFja2luZ0FuZFBhY2tpbmc8dWludDE2X3QsIHVpbnQ4X3QsIERlc3RUeXBlLCB1bnBh
Y2tSR0JBNDQ0NFRvUkdCQTgsIHBhY2tpbmdGdW5jPihzdGF0aWNfY2FzdDxjb25zdCB1aW50MTZf
dCo+KHNvdXJjZURhdGEpLCB3aWR0aCwgaGVpZ2h0LCBzb3VyY2VFbGVtZW50c1BlclBpeGVsLCBz
b3VyY2VFbGVtZW50c1BlclJvdywgZGVzdGluYXRpb25EYXRhLCBkZXN0aW5hdGlvbkVsZW1lbnRz
UGVyUGl4ZWwpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBHcmFwaGljc0NvbnRl
eHQzRDo6U291cmNlRm9ybWF0UkdCNTY1OiB7CiAgICAgICAgIHVuc2lnbmVkIGludCBzb3VyY2VF
bGVtZW50c1BlclBpeGVsLCBzb3VyY2VFbGVtZW50c1BlclJvdzsKICAgICAgICAgY29tcHV0ZUlu
Y3JlbWVudFBhcmFtZXRlcnM8dWludDE2X3Q+KHdpZHRoLCAyLCBzb3VyY2VVbnBhY2tBbGlnbm1l
bnQsICZzb3VyY2VFbGVtZW50c1BlclBpeGVsLCAmc291cmNlRWxlbWVudHNQZXJSb3cpOwotICAg
ICAgICBkb1VucGFja2luZ0FuZFBhY2tpbmc8dWludDE2X3QsIERlc3RUeXBlLCB1bnBhY2tSR0I1
NjVUb1JHQkE4LCBwYWNraW5nRnVuYz4oc3RhdGljX2Nhc3Q8Y29uc3QgdWludDE2X3QqPihzb3Vy
Y2VEYXRhKSwgd2lkdGgsIGhlaWdodCwgc291cmNlRWxlbWVudHNQZXJQaXhlbCwgc291cmNlRWxl
bWVudHNQZXJSb3csIGRlc3RpbmF0aW9uRGF0YSwgZGVzdGluYXRpb25FbGVtZW50c1BlclBpeGVs
KTsKKyAgICAgICAgZG9VbnBhY2tpbmdBbmRQYWNraW5nPHVpbnQxNl90LCB1aW50OF90LCBEZXN0
VHlwZSwgdW5wYWNrUkdCNTY1VG9SR0JBOCwgcGFja2luZ0Z1bmM+KHN0YXRpY19jYXN0PGNvbnN0
IHVpbnQxNl90Kj4oc291cmNlRGF0YSksIHdpZHRoLCBoZWlnaHQsIHNvdXJjZUVsZW1lbnRzUGVy
UGl4ZWwsIHNvdXJjZUVsZW1lbnRzUGVyUm93LCBkZXN0aW5hdGlvbkRhdGEsIGRlc3RpbmF0aW9u
RWxlbWVudHNQZXJQaXhlbCk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBjYXNlIEdyYXBo
aWNzQ29udGV4dDNEOjpTb3VyY2VGb3JtYXRSODogewogICAgICAgICB1bnNpZ25lZCBpbnQgc291
cmNlRWxlbWVudHNQZXJQaXhlbCwgc291cmNlRWxlbWVudHNQZXJSb3c7CiAgICAgICAgIGNvbXB1
dGVJbmNyZW1lbnRQYXJhbWV0ZXJzPHVpbnQ4X3Q+KHdpZHRoLCAxLCBzb3VyY2VVbnBhY2tBbGln
bm1lbnQsICZzb3VyY2VFbGVtZW50c1BlclBpeGVsLCAmc291cmNlRWxlbWVudHNQZXJSb3cpOwot
ICAgICAgICBkb1VucGFja2luZ0FuZFBhY2tpbmc8dWludDhfdCwgRGVzdFR5cGUsIHVucGFja1I4
VG9SR0JBOCwgcGFja2luZ0Z1bmM+KHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihzb3VyY2VE
YXRhKSwgd2lkdGgsIGhlaWdodCwgc291cmNlRWxlbWVudHNQZXJQaXhlbCwgc291cmNlRWxlbWVu
dHNQZXJSb3csIGRlc3RpbmF0aW9uRGF0YSwgZGVzdGluYXRpb25FbGVtZW50c1BlclBpeGVsKTsK
KyAgICAgICAgZG9VbnBhY2tpbmdBbmRQYWNraW5nPHVpbnQ4X3QsIHVpbnQ4X3QsIERlc3RUeXBl
LCB1bnBhY2tSOFRvUkdCQTgsIHBhY2tpbmdGdW5jPihzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90
Kj4oc291cmNlRGF0YSksIHdpZHRoLCBoZWlnaHQsIHNvdXJjZUVsZW1lbnRzUGVyUGl4ZWwsIHNv
dXJjZUVsZW1lbnRzUGVyUm93LCBkZXN0aW5hdGlvbkRhdGEsIGRlc3RpbmF0aW9uRWxlbWVudHNQ
ZXJQaXhlbCk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBjYXNlIEdyYXBoaWNzQ29udGV4
dDNEOjpTb3VyY2VGb3JtYXRSMTZMaXR0bGU6IHsKICAgICAgICAgdW5zaWduZWQgaW50IHNvdXJj
ZUVsZW1lbnRzUGVyUGl4ZWwsIHNvdXJjZUVsZW1lbnRzUGVyUm93OwogICAgICAgICBjb21wdXRl
SW5jcmVtZW50UGFyYW1ldGVyczx1aW50MTZfdD4od2lkdGgsIDIsIHNvdXJjZVVucGFja0FsaWdu
bWVudCwgJnNvdXJjZUVsZW1lbnRzUGVyUGl4ZWwsICZzb3VyY2VFbGVtZW50c1BlclJvdyk7Ci0g
ICAgICAgIGRvVW5wYWNraW5nQW5kUGFja2luZzx1aW50MTZfdCwgRGVzdFR5cGUsIHVucGFja1Ix
NkxpdHRsZVRvUkdCQTgsIHBhY2tpbmdGdW5jPihzdGF0aWNfY2FzdDxjb25zdCB1aW50MTZfdCo+
KHNvdXJjZURhdGEpLCB3aWR0aCwgaGVpZ2h0LCBzb3VyY2VFbGVtZW50c1BlclBpeGVsLCBzb3Vy
Y2VFbGVtZW50c1BlclJvdywgZGVzdGluYXRpb25EYXRhLCBkZXN0aW5hdGlvbkVsZW1lbnRzUGVy
UGl4ZWwpOworICAgICAgICBkb1VucGFja2luZ0FuZFBhY2tpbmc8dWludDE2X3QsIHVpbnQ4X3Qs
IERlc3RUeXBlLCB1bnBhY2tSMTZMaXR0bGVUb1JHQkE4LCBwYWNraW5nRnVuYz4oc3RhdGljX2Nh
c3Q8Y29uc3QgdWludDE2X3QqPihzb3VyY2VEYXRhKSwgd2lkdGgsIGhlaWdodCwgc291cmNlRWxl
bWVudHNQZXJQaXhlbCwgc291cmNlRWxlbWVudHNQZXJSb3csIGRlc3RpbmF0aW9uRGF0YSwgZGVz
dGluYXRpb25FbGVtZW50c1BlclBpeGVsKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNh
c2UgR3JhcGhpY3NDb250ZXh0M0Q6OlNvdXJjZUZvcm1hdFIxNkJpZzogewogICAgICAgICB1bnNp
Z25lZCBpbnQgc291cmNlRWxlbWVudHNQZXJQaXhlbCwgc291cmNlRWxlbWVudHNQZXJSb3c7CiAg
ICAgICAgIGNvbXB1dGVJbmNyZW1lbnRQYXJhbWV0ZXJzPHVpbnQxNl90Pih3aWR0aCwgMiwgc291
cmNlVW5wYWNrQWxpZ25tZW50LCAmc291cmNlRWxlbWVudHNQZXJQaXhlbCwgJnNvdXJjZUVsZW1l
bnRzUGVyUm93KTsKLSAgICAgICAgZG9VbnBhY2tpbmdBbmRQYWNraW5nPHVpbnQxNl90LCBEZXN0
VHlwZSwgdW5wYWNrUjE2QmlnVG9SR0JBOCwgcGFja2luZ0Z1bmM+KHN0YXRpY19jYXN0PGNvbnN0
IHVpbnQxNl90Kj4oc291cmNlRGF0YSksIHdpZHRoLCBoZWlnaHQsIHNvdXJjZUVsZW1lbnRzUGVy
UGl4ZWwsIHNvdXJjZUVsZW1lbnRzUGVyUm93LCBkZXN0aW5hdGlvbkRhdGEsIGRlc3RpbmF0aW9u
RWxlbWVudHNQZXJQaXhlbCk7CisgICAgICAgIGRvVW5wYWNraW5nQW5kUGFja2luZzx1aW50MTZf
dCwgdWludDhfdCwgRGVzdFR5cGUsIHVucGFja1IxNkJpZ1RvUkdCQTgsIHBhY2tpbmdGdW5jPihz
dGF0aWNfY2FzdDxjb25zdCB1aW50MTZfdCo+KHNvdXJjZURhdGEpLCB3aWR0aCwgaGVpZ2h0LCBz
b3VyY2VFbGVtZW50c1BlclBpeGVsLCBzb3VyY2VFbGVtZW50c1BlclJvdywgZGVzdGluYXRpb25E
YXRhLCBkZXN0aW5hdGlvbkVsZW1lbnRzUGVyUGl4ZWwpOwogICAgICAgICBicmVhazsKICAgICB9
CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6U291cmNlRm9ybWF0UkE4OiB7CiAgICAgICAg
IHVuc2lnbmVkIGludCBzb3VyY2VFbGVtZW50c1BlclBpeGVsLCBzb3VyY2VFbGVtZW50c1BlclJv
dzsKICAgICAgICAgY29tcHV0ZUluY3JlbWVudFBhcmFtZXRlcnM8dWludDhfdD4od2lkdGgsIDIs
IHNvdXJjZVVucGFja0FsaWdubWVudCwgJnNvdXJjZUVsZW1lbnRzUGVyUGl4ZWwsICZzb3VyY2VF
bGVtZW50c1BlclJvdyk7Ci0gICAgICAgIGRvVW5wYWNraW5nQW5kUGFja2luZzx1aW50OF90LCBE
ZXN0VHlwZSwgdW5wYWNrUkE4VG9SR0JBOCwgcGFja2luZ0Z1bmM+KHN0YXRpY19jYXN0PGNvbnN0
IHVpbnQ4X3QqPihzb3VyY2VEYXRhKSwgd2lkdGgsIGhlaWdodCwgc291cmNlRWxlbWVudHNQZXJQ
aXhlbCwgc291cmNlRWxlbWVudHNQZXJSb3csIGRlc3RpbmF0aW9uRGF0YSwgZGVzdGluYXRpb25F
bGVtZW50c1BlclBpeGVsKTsKKyAgICAgICAgZG9VbnBhY2tpbmdBbmRQYWNraW5nPHVpbnQ4X3Qs
IHVpbnQ4X3QsIERlc3RUeXBlLCB1bnBhY2tSQThUb1JHQkE4LCBwYWNraW5nRnVuYz4oc3RhdGlj
X2Nhc3Q8Y29uc3QgdWludDhfdCo+KHNvdXJjZURhdGEpLCB3aWR0aCwgaGVpZ2h0LCBzb3VyY2VF
bGVtZW50c1BlclBpeGVsLCBzb3VyY2VFbGVtZW50c1BlclJvdywgZGVzdGluYXRpb25EYXRhLCBk
ZXN0aW5hdGlvbkVsZW1lbnRzUGVyUGl4ZWwpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAg
Y2FzZSBHcmFwaGljc0NvbnRleHQzRDo6U291cmNlRm9ybWF0UkExNkxpdHRsZTogewogICAgICAg
ICB1bnNpZ25lZCBpbnQgc291cmNlRWxlbWVudHNQZXJQaXhlbCwgc291cmNlRWxlbWVudHNQZXJS
b3c7CiAgICAgICAgIGNvbXB1dGVJbmNyZW1lbnRQYXJhbWV0ZXJzPHVpbnQxNl90Pih3aWR0aCwg
NCwgc291cmNlVW5wYWNrQWxpZ25tZW50LCAmc291cmNlRWxlbWVudHNQZXJQaXhlbCwgJnNvdXJj
ZUVsZW1lbnRzUGVyUm93KTsKLSAgICAgICAgZG9VbnBhY2tpbmdBbmRQYWNraW5nPHVpbnQxNl90
LCBEZXN0VHlwZSwgdW5wYWNrUkExNkxpdHRsZVRvUkdCQTgsIHBhY2tpbmdGdW5jPihzdGF0aWNf
Y2FzdDxjb25zdCB1aW50MTZfdCo+KHNvdXJjZURhdGEpLCB3aWR0aCwgaGVpZ2h0LCBzb3VyY2VF
bGVtZW50c1BlclBpeGVsLCBzb3VyY2VFbGVtZW50c1BlclJvdywgZGVzdGluYXRpb25EYXRhLCBk
ZXN0aW5hdGlvbkVsZW1lbnRzUGVyUGl4ZWwpOworICAgICAgICBkb1VucGFja2luZ0FuZFBhY2tp
bmc8dWludDE2X3QsIHVpbnQ4X3QsIERlc3RUeXBlLCB1bnBhY2tSQTE2TGl0dGxlVG9SR0JBOCwg
cGFja2luZ0Z1bmM+KHN0YXRpY19jYXN0PGNvbnN0IHVpbnQxNl90Kj4oc291cmNlRGF0YSksIHdp
ZHRoLCBoZWlnaHQsIHNvdXJjZUVsZW1lbnRzUGVyUGl4ZWwsIHNvdXJjZUVsZW1lbnRzUGVyUm93
LCBkZXN0aW5hdGlvbkRhdGEsIGRlc3RpbmF0aW9uRWxlbWVudHNQZXJQaXhlbCk7CiAgICAgICAg
IGJyZWFrOwogICAgIH0KICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpTb3VyY2VGb3JtYXRS
QTE2QmlnOiB7CiAgICAgICAgIHVuc2lnbmVkIGludCBzb3VyY2VFbGVtZW50c1BlclBpeGVsLCBz
b3VyY2VFbGVtZW50c1BlclJvdzsKICAgICAgICAgY29tcHV0ZUluY3JlbWVudFBhcmFtZXRlcnM8
dWludDE2X3Q+KHdpZHRoLCA0LCBzb3VyY2VVbnBhY2tBbGlnbm1lbnQsICZzb3VyY2VFbGVtZW50
c1BlclBpeGVsLCAmc291cmNlRWxlbWVudHNQZXJSb3cpOwotICAgICAgICBkb1VucGFja2luZ0Fu
ZFBhY2tpbmc8dWludDE2X3QsIERlc3RUeXBlLCB1bnBhY2tSQTE2QmlnVG9SR0JBOCwgcGFja2lu
Z0Z1bmM+KHN0YXRpY19jYXN0PGNvbnN0IHVpbnQxNl90Kj4oc291cmNlRGF0YSksIHdpZHRoLCBo
ZWlnaHQsIHNvdXJjZUVsZW1lbnRzUGVyUGl4ZWwsIHNvdXJjZUVsZW1lbnRzUGVyUm93LCBkZXN0
aW5hdGlvbkRhdGEsIGRlc3RpbmF0aW9uRWxlbWVudHNQZXJQaXhlbCk7CisgICAgICAgIGRvVW5w
YWNraW5nQW5kUGFja2luZzx1aW50MTZfdCwgdWludDhfdCwgRGVzdFR5cGUsIHVucGFja1JBMTZC
aWdUb1JHQkE4LCBwYWNraW5nRnVuYz4oc3RhdGljX2Nhc3Q8Y29uc3QgdWludDE2X3QqPihzb3Vy
Y2VEYXRhKSwgd2lkdGgsIGhlaWdodCwgc291cmNlRWxlbWVudHNQZXJQaXhlbCwgc291cmNlRWxl
bWVudHNQZXJSb3csIGRlc3RpbmF0aW9uRGF0YSwgZGVzdGluYXRpb25FbGVtZW50c1BlclBpeGVs
KTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlNv
dXJjZUZvcm1hdEFSODogewogICAgICAgICB1bnNpZ25lZCBpbnQgc291cmNlRWxlbWVudHNQZXJQ
aXhlbCwgc291cmNlRWxlbWVudHNQZXJSb3c7CiAgICAgICAgIGNvbXB1dGVJbmNyZW1lbnRQYXJh
bWV0ZXJzPHVpbnQ4X3Q+KHdpZHRoLCAyLCBzb3VyY2VVbnBhY2tBbGlnbm1lbnQsICZzb3VyY2VF
bGVtZW50c1BlclBpeGVsLCAmc291cmNlRWxlbWVudHNQZXJSb3cpOwotICAgICAgICBkb1VucGFj
a2luZ0FuZFBhY2tpbmc8dWludDhfdCwgRGVzdFR5cGUsIHVucGFja0FSOFRvUkdCQTgsIHBhY2tp
bmdGdW5jPihzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oc291cmNlRGF0YSksIHdpZHRoLCBo
ZWlnaHQsIHNvdXJjZUVsZW1lbnRzUGVyUGl4ZWwsIHNvdXJjZUVsZW1lbnRzUGVyUm93LCBkZXN0
aW5hdGlvbkRhdGEsIGRlc3RpbmF0aW9uRWxlbWVudHNQZXJQaXhlbCk7CisgICAgICAgIGRvVW5w
YWNraW5nQW5kUGFja2luZzx1aW50OF90LCB1aW50OF90LCBEZXN0VHlwZSwgdW5wYWNrQVI4VG9S
R0JBOCwgcGFja2luZ0Z1bmM+KHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihzb3VyY2VEYXRh
KSwgd2lkdGgsIGhlaWdodCwgc291cmNlRWxlbWVudHNQZXJQaXhlbCwgc291cmNlRWxlbWVudHNQ
ZXJSb3csIGRlc3RpbmF0aW9uRGF0YSwgZGVzdGluYXRpb25FbGVtZW50c1BlclBpeGVsKTsKICAg
ICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlNvdXJjZUZv
cm1hdEFSMTZMaXR0bGU6IHsKICAgICAgICAgdW5zaWduZWQgaW50IHNvdXJjZUVsZW1lbnRzUGVy
UGl4ZWwsIHNvdXJjZUVsZW1lbnRzUGVyUm93OwogICAgICAgICBjb21wdXRlSW5jcmVtZW50UGFy
YW1ldGVyczx1aW50MTZfdD4od2lkdGgsIDQsIHNvdXJjZVVucGFja0FsaWdubWVudCwgJnNvdXJj
ZUVsZW1lbnRzUGVyUGl4ZWwsICZzb3VyY2VFbGVtZW50c1BlclJvdyk7Ci0gICAgICAgIGRvVW5w
YWNraW5nQW5kUGFja2luZzx1aW50MTZfdCwgRGVzdFR5cGUsIHVucGFja0FSMTZMaXR0bGVUb1JH
QkE4LCBwYWNraW5nRnVuYz4oc3RhdGljX2Nhc3Q8Y29uc3QgdWludDE2X3QqPihzb3VyY2VEYXRh
KSwgd2lkdGgsIGhlaWdodCwgc291cmNlRWxlbWVudHNQZXJQaXhlbCwgc291cmNlRWxlbWVudHNQ
ZXJSb3csIGRlc3RpbmF0aW9uRGF0YSwgZGVzdGluYXRpb25FbGVtZW50c1BlclBpeGVsKTsKKyAg
ICAgICAgZG9VbnBhY2tpbmdBbmRQYWNraW5nPHVpbnQxNl90LCB1aW50OF90LCBEZXN0VHlwZSwg
dW5wYWNrQVIxNkxpdHRsZVRvUkdCQTgsIHBhY2tpbmdGdW5jPihzdGF0aWNfY2FzdDxjb25zdCB1
aW50MTZfdCo+KHNvdXJjZURhdGEpLCB3aWR0aCwgaGVpZ2h0LCBzb3VyY2VFbGVtZW50c1BlclBp
eGVsLCBzb3VyY2VFbGVtZW50c1BlclJvdywgZGVzdGluYXRpb25EYXRhLCBkZXN0aW5hdGlvbkVs
ZW1lbnRzUGVyUGl4ZWwpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBHcmFwaGlj
c0NvbnRleHQzRDo6U291cmNlRm9ybWF0QVIxNkJpZzogewogICAgICAgICB1bnNpZ25lZCBpbnQg
c291cmNlRWxlbWVudHNQZXJQaXhlbCwgc291cmNlRWxlbWVudHNQZXJSb3c7CiAgICAgICAgIGNv
bXB1dGVJbmNyZW1lbnRQYXJhbWV0ZXJzPHVpbnQxNl90Pih3aWR0aCwgNCwgc291cmNlVW5wYWNr
QWxpZ25tZW50LCAmc291cmNlRWxlbWVudHNQZXJQaXhlbCwgJnNvdXJjZUVsZW1lbnRzUGVyUm93
KTsKLSAgICAgICAgZG9VbnBhY2tpbmdBbmRQYWNraW5nPHVpbnQxNl90LCBEZXN0VHlwZSwgdW5w
YWNrQVIxNkJpZ1RvUkdCQTgsIHBhY2tpbmdGdW5jPihzdGF0aWNfY2FzdDxjb25zdCB1aW50MTZf
dCo+KHNvdXJjZURhdGEpLCB3aWR0aCwgaGVpZ2h0LCBzb3VyY2VFbGVtZW50c1BlclBpeGVsLCBz
b3VyY2VFbGVtZW50c1BlclJvdywgZGVzdGluYXRpb25EYXRhLCBkZXN0aW5hdGlvbkVsZW1lbnRz
UGVyUGl4ZWwpOworICAgICAgICBkb1VucGFja2luZ0FuZFBhY2tpbmc8dWludDE2X3QsIHVpbnQ4
X3QsIERlc3RUeXBlLCB1bnBhY2tBUjE2QmlnVG9SR0JBOCwgcGFja2luZ0Z1bmM+KHN0YXRpY19j
YXN0PGNvbnN0IHVpbnQxNl90Kj4oc291cmNlRGF0YSksIHdpZHRoLCBoZWlnaHQsIHNvdXJjZUVs
ZW1lbnRzUGVyUGl4ZWwsIHNvdXJjZUVsZW1lbnRzUGVyUm93LCBkZXN0aW5hdGlvbkRhdGEsIGRl
c3RpbmF0aW9uRWxlbWVudHNQZXJQaXhlbCk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBj
YXNlIEdyYXBoaWNzQ29udGV4dDNEOjpTb3VyY2VGb3JtYXRBODogewogICAgICAgICB1bnNpZ25l
ZCBpbnQgc291cmNlRWxlbWVudHNQZXJQaXhlbCwgc291cmNlRWxlbWVudHNQZXJSb3c7CiAgICAg
ICAgIGNvbXB1dGVJbmNyZW1lbnRQYXJhbWV0ZXJzPHVpbnQ4X3Q+KHdpZHRoLCAxLCBzb3VyY2VV
bnBhY2tBbGlnbm1lbnQsICZzb3VyY2VFbGVtZW50c1BlclBpeGVsLCAmc291cmNlRWxlbWVudHNQ
ZXJSb3cpOwotICAgICAgICBkb1VucGFja2luZ0FuZFBhY2tpbmc8dWludDhfdCwgRGVzdFR5cGUs
IHVucGFja0E4VG9SR0JBOCwgcGFja2luZ0Z1bmM+KHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3Qq
Pihzb3VyY2VEYXRhKSwgd2lkdGgsIGhlaWdodCwgc291cmNlRWxlbWVudHNQZXJQaXhlbCwgc291
cmNlRWxlbWVudHNQZXJSb3csIGRlc3RpbmF0aW9uRGF0YSwgZGVzdGluYXRpb25FbGVtZW50c1Bl
clBpeGVsKTsKKyAgICAgICAgZG9VbnBhY2tpbmdBbmRQYWNraW5nPHVpbnQ4X3QsIHVpbnQ4X3Qs
IERlc3RUeXBlLCB1bnBhY2tBOFRvUkdCQTgsIHBhY2tpbmdGdW5jPihzdGF0aWNfY2FzdDxjb25z
dCB1aW50OF90Kj4oc291cmNlRGF0YSksIHdpZHRoLCBoZWlnaHQsIHNvdXJjZUVsZW1lbnRzUGVy
UGl4ZWwsIHNvdXJjZUVsZW1lbnRzUGVyUm93LCBkZXN0aW5hdGlvbkRhdGEsIGRlc3RpbmF0aW9u
RWxlbWVudHNQZXJQaXhlbCk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBjYXNlIEdyYXBo
aWNzQ29udGV4dDNEOjpTb3VyY2VGb3JtYXRBMTZMaXR0bGU6IHsKICAgICAgICAgdW5zaWduZWQg
aW50IHNvdXJjZUVsZW1lbnRzUGVyUGl4ZWwsIHNvdXJjZUVsZW1lbnRzUGVyUm93OwogICAgICAg
ICBjb21wdXRlSW5jcmVtZW50UGFyYW1ldGVyczx1aW50MTZfdD4od2lkdGgsIDIsIHNvdXJjZVVu
cGFja0FsaWdubWVudCwgJnNvdXJjZUVsZW1lbnRzUGVyUGl4ZWwsICZzb3VyY2VFbGVtZW50c1Bl
clJvdyk7Ci0gICAgICAgIGRvVW5wYWNraW5nQW5kUGFja2luZzx1aW50MTZfdCwgRGVzdFR5cGUs
IHVucGFja0ExNkxpdHRsZVRvUkdCQTgsIHBhY2tpbmdGdW5jPihzdGF0aWNfY2FzdDxjb25zdCB1
aW50MTZfdCo+KHNvdXJjZURhdGEpLCB3aWR0aCwgaGVpZ2h0LCBzb3VyY2VFbGVtZW50c1BlclBp
eGVsLCBzb3VyY2VFbGVtZW50c1BlclJvdywgZGVzdGluYXRpb25EYXRhLCBkZXN0aW5hdGlvbkVs
ZW1lbnRzUGVyUGl4ZWwpOworICAgICAgICBkb1VucGFja2luZ0FuZFBhY2tpbmc8dWludDE2X3Qs
IHVpbnQ4X3QsIERlc3RUeXBlLCB1bnBhY2tBMTZMaXR0bGVUb1JHQkE4LCBwYWNraW5nRnVuYz4o
c3RhdGljX2Nhc3Q8Y29uc3QgdWludDE2X3QqPihzb3VyY2VEYXRhKSwgd2lkdGgsIGhlaWdodCwg
c291cmNlRWxlbWVudHNQZXJQaXhlbCwgc291cmNlRWxlbWVudHNQZXJSb3csIGRlc3RpbmF0aW9u
RGF0YSwgZGVzdGluYXRpb25FbGVtZW50c1BlclBpeGVsKTsKICAgICAgICAgYnJlYWs7CiAgICAg
fQogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlNvdXJjZUZvcm1hdEExNkJpZzogewogICAg
ICAgICB1bnNpZ25lZCBpbnQgc291cmNlRWxlbWVudHNQZXJQaXhlbCwgc291cmNlRWxlbWVudHNQ
ZXJSb3c7CiAgICAgICAgIGNvbXB1dGVJbmNyZW1lbnRQYXJhbWV0ZXJzPHVpbnQxNl90Pih3aWR0
aCwgMiwgc291cmNlVW5wYWNrQWxpZ25tZW50LCAmc291cmNlRWxlbWVudHNQZXJQaXhlbCwgJnNv
dXJjZUVsZW1lbnRzUGVyUm93KTsKLSAgICAgICAgZG9VbnBhY2tpbmdBbmRQYWNraW5nPHVpbnQx
Nl90LCBEZXN0VHlwZSwgdW5wYWNrQTE2QmlnVG9SR0JBOCwgcGFja2luZ0Z1bmM+KHN0YXRpY19j
YXN0PGNvbnN0IHVpbnQxNl90Kj4oc291cmNlRGF0YSksIHdpZHRoLCBoZWlnaHQsIHNvdXJjZUVs
ZW1lbnRzUGVyUGl4ZWwsIHNvdXJjZUVsZW1lbnRzUGVyUm93LCBkZXN0aW5hdGlvbkRhdGEsIGRl
c3RpbmF0aW9uRWxlbWVudHNQZXJQaXhlbCk7CisgICAgICAgIGRvVW5wYWNraW5nQW5kUGFja2lu
Zzx1aW50MTZfdCwgdWludDhfdCwgRGVzdFR5cGUsIHVucGFja0ExNkJpZ1RvUkdCQTgsIHBhY2tp
bmdGdW5jPihzdGF0aWNfY2FzdDxjb25zdCB1aW50MTZfdCo+KHNvdXJjZURhdGEpLCB3aWR0aCwg
aGVpZ2h0LCBzb3VyY2VFbGVtZW50c1BlclBpeGVsLCBzb3VyY2VFbGVtZW50c1BlclJvdywgZGVz
dGluYXRpb25EYXRhLCBkZXN0aW5hdGlvbkVsZW1lbnRzUGVyUGl4ZWwpOworICAgICAgICBicmVh
azsKKyAgICB9CisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJUKGZhbHNlKTsKKyAgICB9Cit9
CisKKy8vIFRoaXMgc3BlY2lhbGl6ZWQgcm91dGluZSBpcyB1c2VkIG9ubHkgZm9yIGZsb2F0aW5n
LXBvaW50IHRleHR1cmUgdXBsb2Fkcy4gSXQKKy8vIGRvZXMgbm90IG5lZWQgdG8gYmUgYXMgZ2Vu
ZXJhbCBhcyBkb1BhY2tpbmcsIGFib3ZlOyBiZWNhdXNlIHRoZXJlIGFyZQorLy8gY3VycmVudGx5
IG5vIG5hdGl2ZSBmbG9hdGluZy1wb2ludCBpbWFnZSBmb3JtYXRzIGluIFdlYktpdCwgdGhlcmUg
YXJlIG9ubHkgYQorLy8gZmV3IHVwbG9hZCBwYXRocy4KK3RlbXBsYXRlPHZvaWQgcGFja2luZ0Z1
bmMoY29uc3QgZmxvYXQqLCBmbG9hdCopPgorc3RhdGljIHZvaWQgZG9GbG9hdGluZ1BvaW50UGFj
a2luZyhjb25zdCB2b2lkKiBzb3VyY2VEYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHcmFwaGljc0NvbnRleHQzRDo6U291cmNlRGF0YUZvcm1hdCBzb3VyY2VEYXRhRm9y
bWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgd2lk
dGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBoZWln
aHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBzb3Vy
Y2VVbnBhY2tBbGlnbm1lbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZs
b2F0KiBkZXN0aW5hdGlvbkRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHVuc2lnbmVkIGludCBkZXN0aW5hdGlvbkVsZW1lbnRzUGVyUGl4ZWwpCit7CisgICAgc3dpdGNo
IChzb3VyY2VEYXRhRm9ybWF0KSB7CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6U291cmNl
Rm9ybWF0UkdCQTg6IHsKKyAgICAgICAgdW5zaWduZWQgaW50IHNvdXJjZUVsZW1lbnRzUGVyUGl4
ZWwsIHNvdXJjZUVsZW1lbnRzUGVyUm93OworICAgICAgICBjb21wdXRlSW5jcmVtZW50UGFyYW1l
dGVyczxmbG9hdD4od2lkdGgsIDQsIHNvdXJjZVVucGFja0FsaWdubWVudCwgJnNvdXJjZUVsZW1l
bnRzUGVyUGl4ZWwsICZzb3VyY2VFbGVtZW50c1BlclJvdyk7CisgICAgICAgIEFTU0VSVCghc291
cmNlRWxlbWVudHNQZXJSb3cpOyAvLyBHdWFyYW50ZWVkIGJlY2F1c2UgZWFjaCBjb2xvciBjaGFu
bmVsIGlzIHNpemVvZihmbG9hdCkgYnl0ZXMuCisgICAgICAgIGNvbnN0IGZsb2F0KiBzb3VyY2Ug
PSBzdGF0aWNfY2FzdDxjb25zdCBmbG9hdCo+KHNvdXJjZURhdGEpOworICAgICAgICB1bnNpZ25l
ZCBpbnQgbnVtRWxlbWVudHMgPSB3aWR0aCAqIGhlaWdodCAqIDQ7CisgICAgICAgIGNvbnN0IGZs
b2F0KiBlbmRQb2ludGVyID0gc291cmNlICsgbnVtRWxlbWVudHM7CisgICAgICAgIHdoaWxlIChz
b3VyY2UgPCBlbmRQb2ludGVyKSB7CisgICAgICAgICAgICBwYWNraW5nRnVuYyhzb3VyY2UsIGRl
c3RpbmF0aW9uRGF0YSk7CisgICAgICAgICAgICBzb3VyY2UgKz0gc291cmNlRWxlbWVudHNQZXJQ
aXhlbDsKKyAgICAgICAgICAgIGRlc3RpbmF0aW9uRGF0YSArPSBkZXN0aW5hdGlvbkVsZW1lbnRz
UGVyUGl4ZWw7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgR3Jh
cGhpY3NDb250ZXh0M0Q6OlNvdXJjZUZvcm1hdFJHQjMyRjogeworICAgICAgICB1bnNpZ25lZCBp
bnQgc291cmNlRWxlbWVudHNQZXJQaXhlbCwgc291cmNlRWxlbWVudHNQZXJSb3c7CisgICAgICAg
IGNvbXB1dGVJbmNyZW1lbnRQYXJhbWV0ZXJzPGZsb2F0Pih3aWR0aCwgMywgc291cmNlVW5wYWNr
QWxpZ25tZW50LCAmc291cmNlRWxlbWVudHNQZXJQaXhlbCwgJnNvdXJjZUVsZW1lbnRzUGVyUm93
KTsKKyAgICAgICAgZG9VbnBhY2tpbmdBbmRQYWNraW5nPGZsb2F0LCBmbG9hdCwgZmxvYXQsIHVu
cGFja1JHQjMyRlRvUkdCQTMyRiwgcGFja2luZ0Z1bmM+KHN0YXRpY19jYXN0PGNvbnN0IGZsb2F0
Kj4oc291cmNlRGF0YSksIHdpZHRoLCBoZWlnaHQsIHNvdXJjZUVsZW1lbnRzUGVyUGl4ZWwsIHNv
dXJjZUVsZW1lbnRzUGVyUm93LCBkZXN0aW5hdGlvbkRhdGEsIGRlc3RpbmF0aW9uRWxlbWVudHNQ
ZXJQaXhlbCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4
dDNEOjpTb3VyY2VGb3JtYXRSMzJGOiB7CisgICAgICAgIHVuc2lnbmVkIGludCBzb3VyY2VFbGVt
ZW50c1BlclBpeGVsLCBzb3VyY2VFbGVtZW50c1BlclJvdzsKKyAgICAgICAgY29tcHV0ZUluY3Jl
bWVudFBhcmFtZXRlcnM8ZmxvYXQ+KHdpZHRoLCAxLCBzb3VyY2VVbnBhY2tBbGlnbm1lbnQsICZz
b3VyY2VFbGVtZW50c1BlclBpeGVsLCAmc291cmNlRWxlbWVudHNQZXJSb3cpOworICAgICAgICBk
b1VucGFja2luZ0FuZFBhY2tpbmc8ZmxvYXQsIGZsb2F0LCBmbG9hdCwgdW5wYWNrUjMyRlRvUkdC
QTMyRiwgcGFja2luZ0Z1bmM+KHN0YXRpY19jYXN0PGNvbnN0IGZsb2F0Kj4oc291cmNlRGF0YSks
IHdpZHRoLCBoZWlnaHQsIHNvdXJjZUVsZW1lbnRzUGVyUGl4ZWwsIHNvdXJjZUVsZW1lbnRzUGVy
Um93LCBkZXN0aW5hdGlvbkRhdGEsIGRlc3RpbmF0aW9uRWxlbWVudHNQZXJQaXhlbCk7CisgICAg
ICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpTb3VyY2VGb3Jt
YXRSQTMyRjogeworICAgICAgICB1bnNpZ25lZCBpbnQgc291cmNlRWxlbWVudHNQZXJQaXhlbCwg
c291cmNlRWxlbWVudHNQZXJSb3c7CisgICAgICAgIGNvbXB1dGVJbmNyZW1lbnRQYXJhbWV0ZXJz
PGZsb2F0Pih3aWR0aCwgMiwgc291cmNlVW5wYWNrQWxpZ25tZW50LCAmc291cmNlRWxlbWVudHNQ
ZXJQaXhlbCwgJnNvdXJjZUVsZW1lbnRzUGVyUm93KTsKKyAgICAgICAgZG9VbnBhY2tpbmdBbmRQ
YWNraW5nPGZsb2F0LCBmbG9hdCwgZmxvYXQsIHVucGFja1JBMzJGVG9SR0JBMzJGLCBwYWNraW5n
RnVuYz4oc3RhdGljX2Nhc3Q8Y29uc3QgZmxvYXQqPihzb3VyY2VEYXRhKSwgd2lkdGgsIGhlaWdo
dCwgc291cmNlRWxlbWVudHNQZXJQaXhlbCwgc291cmNlRWxlbWVudHNQZXJSb3csIGRlc3RpbmF0
aW9uRGF0YSwgZGVzdGluYXRpb25FbGVtZW50c1BlclBpeGVsKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgfQorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlNvdXJjZUZvcm1hdEEzMkY6IHsKKyAg
ICAgICAgdW5zaWduZWQgaW50IHNvdXJjZUVsZW1lbnRzUGVyUGl4ZWwsIHNvdXJjZUVsZW1lbnRz
UGVyUm93OworICAgICAgICBjb21wdXRlSW5jcmVtZW50UGFyYW1ldGVyczxmbG9hdD4od2lkdGgs
IDEsIHNvdXJjZVVucGFja0FsaWdubWVudCwgJnNvdXJjZUVsZW1lbnRzUGVyUGl4ZWwsICZzb3Vy
Y2VFbGVtZW50c1BlclJvdyk7CisgICAgICAgIGRvVW5wYWNraW5nQW5kUGFja2luZzxmbG9hdCwg
ZmxvYXQsIGZsb2F0LCB1bnBhY2tBMzJGVG9SR0JBMzJGLCBwYWNraW5nRnVuYz4oc3RhdGljX2Nh
c3Q8Y29uc3QgZmxvYXQqPihzb3VyY2VEYXRhKSwgd2lkdGgsIGhlaWdodCwgc291cmNlRWxlbWVu
dHNQZXJQaXhlbCwgc291cmNlRWxlbWVudHNQZXJSb3csIGRlc3RpbmF0aW9uRGF0YSwgZGVzdGlu
YXRpb25FbGVtZW50c1BlclBpeGVsKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGRlZmF1
bHQ6CkBAIC0xMTEzLDYgKzEyODAsODcgQEAgYm9vbCBHcmFwaGljc0NvbnRleHQzRDo6cGFja1Bp
eGVscyhjb25zdAogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwogICAgIH0KKyAgICBjYXNlIEZM
T0FUOiB7CisgICAgICAgIC8vIE9wZW5HTCBFUywgYW5kIHRoZXJlZm9yZSBXZWJHTCwgcmVxdWly
ZSB0aGF0IHRoZSBmb3JtYXQgYW5kCisgICAgICAgIC8vIGludGVybmFsZm9ybWF0IGJlIGlkZW50
aWNhbCwgd2hpY2ggaW1wbGllcyB0aGF0IHRoZSBzb3VyY2UgYW5kCisgICAgICAgIC8vIGRlc3Rp
bmF0aW9uIGZvcm1hdHMgd2lsbCBib3RoIGJlIGZsb2F0aW5nLXBvaW50IGluIHRoaXMgYnJhbmNo
IC0tIGF0CisgICAgICAgIC8vIGxlYXN0LCB1bnRpbCBXZWJLaXQgc3VwcG9ydHMgZmxvYXRpbmct
cG9pbnQgaW1hZ2UgZm9ybWF0cyBuYXRpdmVseS4KKyAgICAgICAgQVNTRVJUKHNvdXJjZURhdGFG
b3JtYXQgPT0gU291cmNlRm9ybWF0UkdCQTMyRiB8fCBzb3VyY2VEYXRhRm9ybWF0ID09IFNvdXJj
ZUZvcm1hdFJHQjMyRgorICAgICAgICAgICAgICAgfHwgc291cmNlRGF0YUZvcm1hdCA9PSBTb3Vy
Y2VGb3JtYXRSQTMyRiB8fCBzb3VyY2VEYXRhRm9ybWF0ID09IFNvdXJjZUZvcm1hdFIzMkYKKyAg
ICAgICAgICAgICAgIHx8IHNvdXJjZURhdGFGb3JtYXQgPT0gU291cmNlRm9ybWF0QTMyRik7Cisg
ICAgICAgIC8vIEJlY2F1c2UgV2ViS2l0IGRvZXNuJ3QgdXNlIGZsb2F0aW5nLXBvaW50IGNvbG9y
IGNoYW5uZWxzIGZvciBhbnl0aGluZworICAgICAgICAvLyBpbnRlcm5hbGx5LCB0aGVyZSdzIG5v
IGNoYW5jZSB3ZSBoYXZlIHRvIGRvIGEgKGxvc3N5KSB1bm11bHRpcGx5CisgICAgICAgIC8vIG9w
ZXJhdGlvbi4KKyAgICAgICAgQVNTRVJUKGFscGhhT3AgPT0gQWxwaGFEb05vdGhpbmcgfHwgYWxw
aGFPcCA9PSBBbHBoYURvUHJlbXVsdGlwbHkpOworICAgICAgICAvLyBGb3IgdGhlIHNvdXJjZSBm
b3JtYXRzIHdpdGggYW4gZXZlbiBudW1iZXIgb2YgY2hhbm5lbHMgKFJHQkEzMkYsCisgICAgICAg
IC8vIFJBMzJGKSBpdCBpcyBndWFyYW50ZWVkIHRoYXQgdGhlIHBpeGVsIGRhdGEgaXMgdGlnaHRs
eSBwYWNrZWQgYmVjYXVzZQorICAgICAgICAvLyB1bnBhY2sgYWxpZ25tZW50IDw9IHNpemVvZihm
bG9hdCkgKiBudW1iZXIgb2YgY2hhbm5lbHMuCisgICAgICAgIGZsb2F0KiBkZXN0aW5hdGlvbiA9
IHN0YXRpY19jYXN0PGZsb2F0Kj4oZGVzdGluYXRpb25EYXRhKTsKKyAgICAgICAgaWYgKGFscGhh
T3AgPT0gQWxwaGFEb05vdGhpbmcKKyAgICAgICAgICAgICYmIChzb3VyY2VEYXRhRm9ybWF0ID09
IFNvdXJjZUZvcm1hdFJHQkEzMkYgJiYgZGVzdGluYXRpb25Gb3JtYXQgPT0gUkdCQQorICAgICAg
ICAgICAgICAgIHx8IHNvdXJjZURhdGFGb3JtYXQgPT0gU291cmNlRm9ybWF0UkEzMkYgJiYgZGVz
dGluYXRpb25Gb3JtYXQgPT0gTFVNSU5BTkNFX0FMUEhBKSkgeworICAgICAgICAgICAgLy8gTm8g
Y29udmVyc2lvbiBuZWNlc3NhcnkuCisgICAgICAgICAgICBpbnQgbnVtQ2hhbm5lbHMgPSAoc291
cmNlRGF0YUZvcm1hdCA9PSBTb3VyY2VGb3JtYXRSR0JBMzJGID8gNCA6IDIpOworICAgICAgICAg
ICAgbWVtY3B5KGRlc3RpbmF0aW9uRGF0YSwgc291cmNlRGF0YSwgd2lkdGggKiBoZWlnaHQgKiBu
dW1DaGFubmVscyAqIHNpemVvZihmbG9hdCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IH0KKyAgICAgICAgc3dpdGNoIChkZXN0aW5hdGlvbkZvcm1hdCkgeworICAgICAgICBjYXNlIFJH
QjoKKyAgICAgICAgICAgIHN3aXRjaCAoYWxwaGFPcCkgeworICAgICAgICAgICAgY2FzZSBBbHBo
YURvTm90aGluZzoKKyAgICAgICAgICAgICAgICBkb0Zsb2F0aW5nUG9pbnRQYWNraW5nPHBhY2tS
R0JBMzJGVG9SR0IzMkY+KHNvdXJjZURhdGEsIHNvdXJjZURhdGFGb3JtYXQsIHdpZHRoLCBoZWln
aHQsIHNvdXJjZVVucGFja0FsaWdubWVudCwgZGVzdGluYXRpb24sIDMpOworICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBBbHBoYURvUHJlbXVsdGlwbHk6CisgICAgICAg
ICAgICAgICAgZG9GbG9hdGluZ1BvaW50UGFja2luZzxwYWNrUkdCQTMyRlRvUkdCMzJGUHJlbXVs
dGlwbHk+KHNvdXJjZURhdGEsIHNvdXJjZURhdGFGb3JtYXQsIHdpZHRoLCBoZWlnaHQsIHNvdXJj
ZVVucGFja0FsaWdubWVudCwgZGVzdGluYXRpb24sIDMpOworICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFJH
QkE6CisgICAgICAgICAgICAvLyBBbHBoYURvTm90aGluZyBpcyBoYW5kbGVkIGFib3ZlIHdpdGgg
ZmFzdCBwYXRoLgorICAgICAgICAgICAgQVNTRVJUKGFscGhhT3AgPT0gQWxwaGFEb1ByZW11bHRp
cGx5KTsKKyAgICAgICAgICAgIGRvRmxvYXRpbmdQb2ludFBhY2tpbmc8cGFja1JHQkEzMkZUb1JH
QkEzMkZQcmVtdWx0aXBseT4oc291cmNlRGF0YSwgc291cmNlRGF0YUZvcm1hdCwgd2lkdGgsIGhl
aWdodCwgc291cmNlVW5wYWNrQWxpZ25tZW50LCBkZXN0aW5hdGlvbiwgNCk7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgY2FzZSBBTFBIQToKKyAgICAgICAgICAgIC8vIEZyb20gdGhlIGRl
c2t0b3AgT3BlbkdMIGNvbnZlcnNpb24gcnVsZXMgKE9wZW5HTCAyLjEKKyAgICAgICAgICAgIC8v
IHNwZWNpZmljYXRpb24sIFRhYmxlIDMuMTUpLCB0aGUgYWxwaGEgY2hhbm5lbCBpcyBjaG9zZW4K
KyAgICAgICAgICAgIC8vIGZyb20gdGhlIFJHQkEgZGF0YS4KKyAgICAgICAgICAgIGRvRmxvYXRp
bmdQb2ludFBhY2tpbmc8cGFja1JHQkEzMkZUb0EzMkY+KHNvdXJjZURhdGEsIHNvdXJjZURhdGFG
b3JtYXQsIHdpZHRoLCBoZWlnaHQsIHNvdXJjZVVucGFja0FsaWdubWVudCwgZGVzdGluYXRpb24s
IDEpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgTFVNSU5BTkNFOgorICAgICAg
ICAgICAgLy8gRnJvbSB0aGUgZGVza3RvcCBPcGVuR0wgY29udmVyc2lvbiBydWxlcyAoT3BlbkdM
IDIuMQorICAgICAgICAgICAgLy8gc3BlY2lmaWNhdGlvbiwgVGFibGUgMy4xNSksIHRoZSByZWQg
Y2hhbm5lbCBpcyBjaG9zZW4KKyAgICAgICAgICAgIC8vIGZyb20gdGhlIFJHQkEgZGF0YS4KKyAg
ICAgICAgICAgIHN3aXRjaCAoYWxwaGFPcCkgeworICAgICAgICAgICAgY2FzZSBBbHBoYURvTm90
aGluZzoKKyAgICAgICAgICAgICAgICBkb0Zsb2F0aW5nUG9pbnRQYWNraW5nPHBhY2tSR0JBMzJG
VG9SMzJGPihzb3VyY2VEYXRhLCBzb3VyY2VEYXRhRm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBzb3Vy
Y2VVbnBhY2tBbGlnbm1lbnQsIGRlc3RpbmF0aW9uLCAxKTsKKyAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgIGNhc2UgQWxwaGFEb1ByZW11bHRpcGx5OgorICAgICAgICAgICAgICAg
IGRvRmxvYXRpbmdQb2ludFBhY2tpbmc8cGFja1JHQkEzMkZUb1IzMkZQcmVtdWx0aXBseT4oc291
cmNlRGF0YSwgc291cmNlRGF0YUZvcm1hdCwgd2lkdGgsIGhlaWdodCwgc291cmNlVW5wYWNrQWxp
Z25tZW50LCBkZXN0aW5hdGlvbiwgMSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
ICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgTFVNSU5BTkNFX0FM
UEhBOgorICAgICAgICAgICAgLy8gRnJvbSB0aGUgZGVza3RvcCBPcGVuR0wgY29udmVyc2lvbiBy
dWxlcyAoT3BlbkdMIDIuMQorICAgICAgICAgICAgLy8gc3BlY2lmaWNhdGlvbiwgVGFibGUgMy4x
NSksIHRoZSByZWQgYW5kIGFscGhhIGNoYW5uZWxzCisgICAgICAgICAgICAvLyBhcmUgY2hvc2Vu
IGZyb20gdGhlIFJHQkEgZGF0YS4KKyAgICAgICAgICAgIHN3aXRjaCAoYWxwaGFPcCkgeworICAg
ICAgICAgICAgY2FzZSBBbHBoYURvTm90aGluZzoKKyAgICAgICAgICAgICAgICBkb0Zsb2F0aW5n
UG9pbnRQYWNraW5nPHBhY2tSR0JBMzJGVG9SQTMyRj4oc291cmNlRGF0YSwgc291cmNlRGF0YUZv
cm1hdCwgd2lkdGgsIGhlaWdodCwgc291cmNlVW5wYWNrQWxpZ25tZW50LCBkZXN0aW5hdGlvbiwg
Mik7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIEFscGhhRG9QcmVt
dWx0aXBseToKKyAgICAgICAgICAgICAgICBkb0Zsb2F0aW5nUG9pbnRQYWNraW5nPHBhY2tSR0JB
MzJGVG9SQTMyRlByZW11bHRpcGx5Pihzb3VyY2VEYXRhLCBzb3VyY2VEYXRhRm9ybWF0LCB3aWR0
aCwgaGVpZ2h0LCBzb3VyY2VVbnBhY2tBbGlnbm1lbnQsIGRlc3RpbmF0aW9uLCAyKTsKKyAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgfQorICAgICAgICBicmVhazsKKyAgICB9CiAgICAgfQogICAgIHJldHVybiB0cnVl
OwogfQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0
M0QuaAkocmV2aXNpb24gNzMzMTkpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBo
aWNzQ29udGV4dDNELmgJKHdvcmtpbmcgY29weSkKQEAgLTUzNiw5ICs1MzYsMTEgQEAgcHVibGlj
OgogICAgICAgICBTb3VyY2VGb3JtYXRSR0JBOCA9IDAsCiAgICAgICAgIFNvdXJjZUZvcm1hdFJH
QkExNkxpdHRsZSwKICAgICAgICAgU291cmNlRm9ybWF0UkdCQTE2QmlnLAorICAgICAgICBTb3Vy
Y2VGb3JtYXRSR0JBMzJGLAogICAgICAgICBTb3VyY2VGb3JtYXRSR0I4LAogICAgICAgICBTb3Vy
Y2VGb3JtYXRSR0IxNkxpdHRsZSwKICAgICAgICAgU291cmNlRm9ybWF0UkdCMTZCaWcsCisgICAg
ICAgIFNvdXJjZUZvcm1hdFJHQjMyRiwKICAgICAgICAgU291cmNlRm9ybWF0QkdSOCwKICAgICAg
ICAgU291cmNlRm9ybWF0QkdSQTgsCiAgICAgICAgIFNvdXJjZUZvcm1hdEJHUkExNkxpdHRsZSwK
QEAgLTU1MywxNSArNTU1LDE4IEBAIHB1YmxpYzoKICAgICAgICAgU291cmNlRm9ybWF0UjgsCiAg
ICAgICAgIFNvdXJjZUZvcm1hdFIxNkxpdHRsZSwKICAgICAgICAgU291cmNlRm9ybWF0UjE2Qmln
LAorICAgICAgICBTb3VyY2VGb3JtYXRSMzJGLAogICAgICAgICBTb3VyY2VGb3JtYXRSQTgsCiAg
ICAgICAgIFNvdXJjZUZvcm1hdFJBMTZMaXR0bGUsCiAgICAgICAgIFNvdXJjZUZvcm1hdFJBMTZC
aWcsCisgICAgICAgIFNvdXJjZUZvcm1hdFJBMzJGLAogICAgICAgICBTb3VyY2VGb3JtYXRBUjgs
CiAgICAgICAgIFNvdXJjZUZvcm1hdEFSMTZMaXR0bGUsCiAgICAgICAgIFNvdXJjZUZvcm1hdEFS
MTZCaWcsCiAgICAgICAgIFNvdXJjZUZvcm1hdEE4LAogICAgICAgICBTb3VyY2VGb3JtYXRBMTZM
aXR0bGUsCiAgICAgICAgIFNvdXJjZUZvcm1hdEExNkJpZywKKyAgICAgICAgU291cmNlRm9ybWF0
QTMyRiwKICAgICAgICAgU291cmNlRm9ybWF0TnVtRm9ybWF0cwogICAgIH07CiAKSW5kZXg6IFdl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRXh0ZW5zaW9uczNEQ2hyb21pdW0uaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0V4dGVuc2lv
bnMzRENocm9taXVtLmgJKHJldmlzaW9uIDczMzE5KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9FeHRlbnNpb25zM0RDaHJvbWl1bS5oCSh3b3JraW5nIGNvcHkpCkBAIC00
Miw2ICs0Miw3IEBAIHB1YmxpYzoKIAogICAgIC8vIEV4dGVuc2lvbnMzRCBtZXRob2RzLgogICAg
IHZpcnR1YWwgYm9vbCBzdXBwb3J0cyhjb25zdCBTdHJpbmcmKTsKKyAgICB2aXJ0dWFsIGJvb2wg
ZW5zdXJlRW5hYmxlZChjb25zdCBTdHJpbmcmKTsKICAgICB2aXJ0dWFsIGludCBnZXRHcmFwaGlj
c1Jlc2V0U3RhdHVzQVJCKCk7CiAgICAgdmlydHVhbCB2b2lkIGJsaXRGcmFtZWJ1ZmZlcihsb25n
IHNyY1gwLCBsb25nIHNyY1kwLCBsb25nIHNyY1gxLCBsb25nIHNyY1kxLCBsb25nIGRzdFgwLCBs
b25nIGRzdFkwLCBsb25nIGRzdFgxLCBsb25nIGRzdFkxLCB1bnNpZ25lZCBsb25nIG1hc2ssIHVu
c2lnbmVkIGxvbmcgZmlsdGVyKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgcmVuZGVyYnVmZmVyU3Rv
cmFnZU11bHRpc2FtcGxlKHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25nIHNhbXBs
ZXMsIHVuc2lnbmVkIGxvbmcgaW50ZXJuYWxmb3JtYXQsIHVuc2lnbmVkIGxvbmcgd2lkdGgsIHVu
c2lnbmVkIGxvbmcgaGVpZ2h0KSB7IH0KSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
b3BlbmdsL0V4dGVuc2lvbnMzRE9wZW5HTC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uczNET3BlbkdMLmNwcAkocmV2aXNpb24gNzMz
MTkpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zM0RPcGVu
R0wuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NiwxMCArNzYsMjAgQEAgYm9vbCBFeHRlbnNpb25z
M0RPcGVuR0w6OnN1cHBvcnRzKGNvbnN0IAogICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRl
bnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfZnJhbWVidWZmZXJfYmxpdCIpOwogICAgIGlmIChuYW1l
ID09ICJHTF9BTkdMRV9mcmFtZWJ1ZmZlcl9tdWx0aXNhbXBsZSIpCiAgICAgICAgIHJldHVybiBt
X2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0VYVF9mcmFtZWJ1ZmZlcl9tdWx0aXNh
bXBsZSIpOwotICAgICAgICAKKworICAgIC8vIElmIEdMX0FSQl90ZXh0dXJlX2Zsb2F0IGlzIGF2
YWlsYWJsZSB0aGVuIHdlIHJlcG9ydCBHTF9PRVNfdGV4dHVyZV9mbG9hdCBhbmQKKyAgICAvLyBH
TF9PRVNfdGV4dHVyZV9oYWxmX2Zsb2F0IGFzIGF2YWlsYWJsZS4KKyAgICBpZiAobmFtZSA9PSAi
R0xfT0VTX3RleHR1cmVfZmxvYXQiIHx8IG5hbWUgPT0gIkdMX09FU190ZXh0dXJlX2hhbGZfZmxv
YXQiKQorICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9B
UkJfdGV4dHVyZV9mbG9hdCIpOworCiAgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5j
b250YWlucyhuYW1lKTsKIH0KIAorYm9vbCBFeHRlbnNpb25zM0RPcGVuR0w6OmVuc3VyZUVuYWJs
ZWQoY29uc3QgU3RyaW5nJiBuYW1lKQoreworICAgIHJldHVybiBzdXBwb3J0cyhuYW1lKTsKK30K
KwogaW50IEV4dGVuc2lvbnMzRE9wZW5HTDo6Z2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQigpCiB7
CiAgICAgcmV0dXJuIEdyYXBoaWNzQ29udGV4dDNEOjpOT19FUlJPUjsKSW5kZXg6IFdlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnMzRE9wZW5HTC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnMzRE9wZW5HTC5o
CShyZXZpc2lvbiA3MzMxOSkKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4
dGVuc2lvbnMzRE9wZW5HTC5oCSh3b3JraW5nIGNvcHkpCkBAIC00MCw2ICs0MCw3IEBAIHB1Ymxp
YzoKIAogICAgIC8vIEV4dGVuc2lvbnMzRCBtZXRob2RzLgogICAgIHZpcnR1YWwgYm9vbCBzdXBw
b3J0cyhjb25zdCBTdHJpbmcmKTsKKyAgICB2aXJ0dWFsIGJvb2wgZW5zdXJlRW5hYmxlZChjb25z
dCBTdHJpbmcmKTsKICAgICB2aXJ0dWFsIGludCBnZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJCKCk7
CiAgICAgdmlydHVhbCB2b2lkIGJsaXRGcmFtZWJ1ZmZlcihsb25nIHNyY1gwLCBsb25nIHNyY1kw
LCBsb25nIHNyY1gxLCBsb25nIHNyY1kxLCBsb25nIGRzdFgwLCBsb25nIGRzdFkwLCBsb25nIGRz
dFgxLCBsb25nIGRzdFkxLCB1bnNpZ25lZCBsb25nIG1hc2ssIHVuc2lnbmVkIGxvbmcgZmlsdGVy
KTsKICAgICB2aXJ0dWFsIHZvaWQgcmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlKHVuc2ln
bmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25nIHNhbXBsZXMsIHVuc2lnbmVkIGxvbmcgaW50
ZXJuYWxmb3JtYXQsIHVuc2lnbmVkIGxvbmcgd2lkdGgsIHVuc2lnbmVkIGxvbmcgaGVpZ2h0KTsg
ICAgCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRl
eHQzRE9wZW5HTC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9v
cGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0wuY3BwCShyZXZpc2lvbiA3MzMxOSkKKysrIFdl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTMyNiw3ICsxMzI2LDE1IEBAIGludCBHcmFwaGljc0NvbnRl
eHQzRDo6dGV4SW1hZ2UyRCh1bnNpZ24KIHsKICAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKIAot
ICAgIDo6Z2xUZXhJbWFnZTJEKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwg
aGVpZ2h0LCBib3JkZXIsIGZvcm1hdCwgdHlwZSwgcGl4ZWxzKTsKKyAgICB1bnNpZ25lZCBvcGVu
R0xJbnRlcm5hbEZvcm1hdCA9IGludGVybmFsZm9ybWF0OworICAgIGlmICh0eXBlID09IEdMX0ZM
T0FUKSB7CisgICAgICAgIGlmIChmb3JtYXQgPT0gR0xfUkdCQSkKKyAgICAgICAgICAgIG9wZW5H
TEludGVybmFsRm9ybWF0ID0gR0xfUkdCQTMyRl9BUkI7CisgICAgICAgIGVsc2UgaWYgKGZvcm1h
dCA9PSBHTF9SR0IpCisgICAgICAgICAgICBvcGVuR0xJbnRlcm5hbEZvcm1hdCA9IEdMX1JHQjMy
Rl9BUkI7CisgICAgfQorCisgICAgOjpnbFRleEltYWdlMkQodGFyZ2V0LCBsZXZlbCwgb3BlbkdM
SW50ZXJuYWxGb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGJvcmRlciwgZm9ybWF0LCB0eXBlLCBwaXhl
bHMpOwogICAgIHJldHVybiAwOwogfQogCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3F0L0V4dGVuc2lvbnMzRFF0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3F0L0V4dGVuc2lvbnMzRFF0LmNwcAkocmV2aXNpb24gNzMzMTkpCisrKyBXZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3F0L0V4dGVuc2lvbnMzRFF0LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNDYsNiArNDYsMTEgQEAgYm9vbCBFeHRlbnNpb25zM0RRdDo6c3VwcG9ydHMoY29uc3QgU3Ry
aQogICAgIHJldHVybiBmYWxzZTsKIH0KIAorYm9vbCBFeHRlbnNpb25zM0RRdDo6ZW5zdXJlRW5h
YmxlZChjb25zdCBTdHJpbmcmIG5hbWUpCit7CisgICAgcmV0dXJuIHN1cHBvcnRzKG5hbWUpOwor
fQorCiBpbnQgRXh0ZW5zaW9uczNEUXQ6OmdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIoKQogewog
ICAgIHJldHVybiBHcmFwaGljc0NvbnRleHQzRDo6Tk9fRVJST1I7CkluZGV4OiBXZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3F0L0V4dGVuc2lvbnMzRFF0LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9FeHRlbnNpb25zM0RRdC5oCShyZXZpc2lvbiA3MzMxOSkK
KysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvRXh0ZW5zaW9uczNEUXQuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzYsNiArMzYsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBFeHRlbnNpb25zM0Qg
bWV0aG9kcy4KICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHMoY29uc3QgU3RyaW5nJik7CisgICAg
dmlydHVhbCBib29sIGVuc3VyZUVuYWJsZWQoY29uc3QgU3RyaW5nJik7CiAgICAgdmlydHVhbCBp
bnQgZ2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQigpOwogCiBwcml2YXRlOgpJbmRleDogV2ViS2l0
L2Nocm9taXVtL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vQ2hhbmdl
TG9nCShyZXZpc2lvbiA3MzMxOSkKKysrIFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHdvcmtp
bmcgY29weSkKQEAgLTEsMyArMSwyNiBAQAorMjAxMC0xMi0wMyAgS2VubmV0aCBSdXNzZWxsICA8
a2JyQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgSW1wbGVtZW50IGV4dGVuc2lvbiBlbnRyeSBwb2ludHMgYW5kIHJlbW92ZSBFWFRF
TlNJT05TIGVudW0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTQwMzE2CisKKyAgICAgICAgQWRkZWQgc3VwcG9ydCBmb3IgZW5zdXJpbmcgdGhhdCBhIHBh
cnRpY3VsYXIgT3BlbkdMIGV4dGVuc2lvbiBpcworICAgICAgICBlbmFibGVkLgorCisgICAgICAg
ICogcHVibGljL1dlYkdyYXBoaWNzQ29udGV4dDNELmg6CisgICAgICAgICogc3JjL0V4dGVuc2lv
bnMzRENocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnMzRENocm9taXVt
OjplbnN1cmVFbmFibGVkKToKKyAgICAgICAgKiBzcmMvR3JhcGhpY3NDb250ZXh0M0RDaHJvbWl1
bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzREludGVybmFsOjppbml0
aWFsaXplRXh0ZW5zaW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRElu
dGVybmFsOjpzdXBwb3J0c0V4dGVuc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQzREludGVybmFsOjplbnN1cmVFeHRlbnNpb25FbmFibGVkKToKKyAgICAgICAgKiBzcmMv
R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbC5oOgorICAgICAgICAqIHNyYy9XZWJHcmFwaGljc0Nv
bnRleHQzRERlZmF1bHRJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViR3JhcGhpY3NDb250
ZXh0M0REZWZhdWx0SW1wbDo6Z2V0UmVxdWVzdGFibGVFeHRlbnNpb25zQ0hST01JVU0pOgorICAg
ICAgICAoV2ViS2l0OjpXZWJHcmFwaGljc0NvbnRleHQzRERlZmF1bHRJbXBsOjpyZXF1ZXN0RXh0
ZW5zaW9uQ0hST01JVU0pOgorICAgICAgICAqIHNyYy9XZWJHcmFwaGljc0NvbnRleHQzRERlZmF1
bHRJbXBsLmg6CisKIDIwMTAtMTItMDMgIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RA
Z21haWwuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHI3MzMwMi4KSW5k
ZXg6IFdlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViR3JhcGhpY3NDb250ZXh0M0QuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkdyYXBoaWNzQ29udGV4dDNELmgJKHJl
dmlzaW9uIDczMzE5KQorKysgV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJHcmFwaGljc0NvbnRl
eHQzRC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDAsNiArMTQwLDEwIEBAIHB1YmxpYzoKICAgICAv
LyBHTF9DSFJPTUlVTV9jb3B5X3RleHR1cmVfdG9fcGFyZW50X3RleHR1cmUKICAgICB2aXJ0dWFs
IHZvaWQgY29weVRleHR1cmVUb1BhcmVudFRleHR1cmVDSFJPTUlVTSh1bnNpZ25lZCB0ZXh0dXJl
LCB1bnNpZ25lZCBwYXJlbnRUZXh0dXJlKSA9IDA7CiAKKyAgICAvLyBHTF9DSFJPTUlVTV9yZXF1
ZXN0X2V4dGVuc2lvbgorICAgIHZpcnR1YWwgV2ViU3RyaW5nIGdldFJlcXVlc3RhYmxlRXh0ZW5z
aW9uc0NIUk9NSVVNKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0RXh0ZW5zaW9uQ0hS
T01JVU0oY29uc3QgY2hhciopID0gMDsKKwogICAgIC8vIFRoZSBlbnRyeSBwb2ludHMgYmVsb3cg
bWFwIGRpcmVjdGx5IHRvIHRoZSBPcGVuR0wgRVMgMi4wIEFQSS4KICAgICAvLyBTZWU6IGh0dHA6
Ly93d3cua2hyb25vcy5vcmcvcmVnaXN0cnkvZ2xlcy8KICAgICAvLyBhbmQ6IGh0dHA6Ly93d3cu
a2hyb25vcy5vcmcvb3BlbmdsZXMvc2RrL2RvY3MvbWFuLwpJbmRleDogV2ViS2l0L2Nocm9taXVt
L3NyYy9FeHRlbnNpb25zM0RDaHJvbWl1bS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2Nocm9t
aXVtL3NyYy9FeHRlbnNpb25zM0RDaHJvbWl1bS5jcHAJKHJldmlzaW9uIDczMzE5KQorKysgV2Vi
S2l0L2Nocm9taXVtL3NyYy9FeHRlbnNpb25zM0RDaHJvbWl1bS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTQ4LDYgKzQ4LDExIEBAIGJvb2wgRXh0ZW5zaW9uczNEQ2hyb21pdW06OnN1cHBvcnRzKGNv
bnMKICAgICByZXR1cm4gbV9pbnRlcm5hbC0+c3VwcG9ydHNFeHRlbnNpb24obmFtZSk7CiB9CiAK
K2Jvb2wgRXh0ZW5zaW9uczNEQ2hyb21pdW06OmVuc3VyZUVuYWJsZWQoY29uc3QgU3RyaW5nJiBu
YW1lKQoreworICAgIHJldHVybiBtX2ludGVybmFsLT5lbnN1cmVFeHRlbnNpb25FbmFibGVkKG5h
bWUpOworfQorCiBpbnQgRXh0ZW5zaW9uczNEQ2hyb21pdW06OmdldEdyYXBoaWNzUmVzZXRTdGF0
dXNBUkIoKQogewogICAgIHJldHVybiBtX2ludGVybmFsLT5pc0NvbnRleHRMb3N0KCkgPyBzdGF0
aWNfY2FzdDxpbnQ+KEV4dGVuc2lvbnMzRDo6VU5LTk9XTl9DT05URVhUX1JFU0VUX0FSQikgOiBz
dGF0aWNfY2FzdDxpbnQ+KEdyYXBoaWNzQ29udGV4dDNEOjpOT19FUlJPUik7CkluZGV4OiBXZWJL
aXQvY2hyb21pdW0vc3JjL0dyYXBoaWNzQ29udGV4dDNEQ2hyb21pdW0uY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYktpdC9jaHJvbWl1bS9zcmMvR3JhcGhpY3NDb250ZXh0M0RDaHJvbWl1bS5jcHAJKHJl
dmlzaW9uIDczMzE5KQorKysgV2ViS2l0L2Nocm9taXVtL3NyYy9HcmFwaGljc0NvbnRleHQzRENo
cm9taXVtLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjgxLDE2ICs2ODEsNTMgQEAgRXh0ZW5zaW9u
czNEKiBHcmFwaGljc0NvbnRleHQzREludGVybmFsOgogICAgIHJldHVybiBtX2V4dGVuc2lvbnMu
Z2V0KCk7CiB9CiAKLWJvb2wgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6c3VwcG9ydHNFeHRl
bnNpb24oY29uc3QgU3RyaW5nJiBuYW1lKQorbmFtZXNwYWNlIHsKKwordm9pZCBzcGxpdFN0cmlu
Z0hlbHBlcihjb25zdCBTdHJpbmcmIHN0ciwgSGFzaFNldDxTdHJpbmc+JiBzZXQpCit7CisgICAg
VmVjdG9yPFN0cmluZz4gc3Vic3RyaW5nczsKKyAgICBzdHIuc3BsaXQoIiAiLCBzdWJzdHJpbmdz
KTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHN1YnN0cmluZ3Muc2l6ZSgpOyArK2kpCisg
ICAgICAgIHNldC5hZGQoc3Vic3RyaW5nc1tpXSk7Cit9CisKK30gLy8gYW5vbnltb3VzIG5hbWVz
cGFjZQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmluaXRpYWxpemVFeHRlbnNp
b25zKCkKIHsKICAgICBpZiAoIW1faW5pdGlhbGl6ZWRBdmFpbGFibGVFeHRlbnNpb25zKSB7CiAg
ICAgICAgIFN0cmluZyBleHRlbnNpb25zU3RyaW5nID0gZ2V0U3RyaW5nKEdyYXBoaWNzQ29udGV4
dDNEOjpFWFRFTlNJT05TKTsKLSAgICAgICAgVmVjdG9yPFN0cmluZz4gYXZhaWxhYmxlRXh0ZW5z
aW9uczsKLSAgICAgICAgZXh0ZW5zaW9uc1N0cmluZy5zcGxpdCgiICIsIGF2YWlsYWJsZUV4dGVu
c2lvbnMpOwotICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGF2YWlsYWJsZUV4dGVuc2lv
bnMuc2l6ZSgpOyArK2kpCi0gICAgICAgICAgICBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuYWRkKGF2
YWlsYWJsZUV4dGVuc2lvbnNbaV0pOworICAgICAgICBzcGxpdFN0cmluZ0hlbHBlcihleHRlbnNp
b25zU3RyaW5nLCBtX2F2YWlsYWJsZUV4dGVuc2lvbnMpOworCisgICAgICAgIFN0cmluZyByZXF1
ZXN0YWJsZUV4dGVuc2lvbnNTdHJpbmcgPSBtX2ltcGwtPmdldFJlcXVlc3RhYmxlRXh0ZW5zaW9u
c0NIUk9NSVVNKCk7CisgICAgICAgIHNwbGl0U3RyaW5nSGVscGVyKHJlcXVlc3RhYmxlRXh0ZW5z
aW9uc1N0cmluZywgbV9yZXF1ZXN0YWJsZUV4dGVuc2lvbnMpOworCiAgICAgICAgIG1faW5pdGlh
bGl6ZWRBdmFpbGFibGVFeHRlbnNpb25zID0gdHJ1ZTsKICAgICB9Cit9CisKKworYm9vbCBHcmFw
aGljc0NvbnRleHQzREludGVybmFsOjpzdXBwb3J0c0V4dGVuc2lvbihjb25zdCBTdHJpbmcmIG5h
bWUpCit7CisgICAgaW5pdGlhbGl6ZUV4dGVuc2lvbnMoKTsKKyAgICByZXR1cm4gbV9hdmFpbGFi
bGVFeHRlbnNpb25zLmNvbnRhaW5zKG5hbWUpIHx8IG1fcmVxdWVzdGFibGVFeHRlbnNpb25zLmNv
bnRhaW5zKG5hbWUpOworfQorCitib29sIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmVuc3Vy
ZUV4dGVuc2lvbkVuYWJsZWQoY29uc3QgU3RyaW5nJiBuYW1lKQoreworICAgIGluaXRpYWxpemVF
eHRlbnNpb25zKCk7CisKKyAgICBpZiAobV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKG5h
bWUpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIGlmIChtX3JlcXVlc3RhYmxlRXh0ZW5z
aW9ucy5jb250YWlucyhuYW1lKSkgeworICAgICAgICBtX2ltcGwtPnJlcXVlc3RFeHRlbnNpb25D
SFJPTUlVTShuYW1lLmFzY2lpKCkuZGF0YSgpKTsKKyAgICAgICAgbV9hdmFpbGFibGVFeHRlbnNp
b25zLmNsZWFyKCk7CisgICAgICAgIG1fcmVxdWVzdGFibGVFeHRlbnNpb25zLmNsZWFyKCk7Cisg
ICAgICAgIG1faW5pdGlhbGl6ZWRBdmFpbGFibGVFeHRlbnNpb25zID0gZmFsc2U7CisgICAgfQor
CisgICAgaW5pdGlhbGl6ZUV4dGVuc2lvbnMoKTsKICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRl
bnNpb25zLmNvbnRhaW5zKG5hbWUpOwogfQogCkluZGV4OiBXZWJLaXQvY2hyb21pdW0vc3JjL0dy
YXBoaWNzQ29udGV4dDNESW50ZXJuYWwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0v
c3JjL0dyYXBoaWNzQ29udGV4dDNESW50ZXJuYWwuaAkocmV2aXNpb24gNzMzMTkpCisrKyBXZWJL
aXQvY2hyb21pdW0vc3JjL0dyYXBoaWNzQ29udGV4dDNESW50ZXJuYWwuaAkod29ya2luZyBjb3B5
KQpAQCAtMjY1LDYgKzI2NSw3IEBAIHB1YmxpYzoKICAgICAvLyBFeHRlbnNpb25zM0Qgc3VwcG9y
dC4KICAgICBFeHRlbnNpb25zM0QqIGdldEV4dGVuc2lvbnMoKTsKICAgICBib29sIHN1cHBvcnRz
RXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgbmFtZSk7CisgICAgYm9vbCBlbnN1cmVFeHRlbnNpb25F
bmFibGVkKGNvbnN0IFN0cmluZyYgbmFtZSk7CiAKICAgICAvLyBFWFRfdGV4dHVyZV9mb3JtYXRf
QkdSQTg4ODgKICAgICBib29sIHN1cHBvcnRzQkdSQSgpOwpAQCAtMjg2LDYgKzI4Nyw3IEBAIHBy
aXZhdGU6CiAgICAgV2ViS2l0OjpXZWJWaWV3SW1wbCogbV93ZWJWaWV3SW1wbDsKICAgICBib29s
IG1faW5pdGlhbGl6ZWRBdmFpbGFibGVFeHRlbnNpb25zOwogICAgIEhhc2hTZXQ8U3RyaW5nPiBt
X2F2YWlsYWJsZUV4dGVuc2lvbnM7CisgICAgSGFzaFNldDxTdHJpbmc+IG1fcmVxdWVzdGFibGVF
eHRlbnNpb25zOwogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKICAgICBSZWZQdHI8
V2ViR0xMYXllckNocm9taXVtPiBtX2NvbXBvc2l0aW5nTGF5ZXI7CiAjZW5kaWYKQEAgLTMwMSw2
ICszMDMsOCBAQCBwcml2YXRlOgogI2lmIFBMQVRGT1JNKENHKQogICAgIHVuc2lnbmVkIGNoYXIq
IG1fcmVuZGVyT3V0cHV0OwogI2VuZGlmCisKKyAgICB2b2lkIGluaXRpYWxpemVFeHRlbnNpb25z
KCk7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJLaXQvY2hyb21pdW0v
c3JjL1dlYkdyYXBoaWNzQ29udGV4dDNERGVmYXVsdEltcGwuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YktpdC9jaHJvbWl1bS9zcmMvV2ViR3JhcGhpY3NDb250ZXh0M0REZWZhdWx0SW1wbC5jcHAJKHJl
dmlzaW9uIDczMzE5KQorKysgV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJHcmFwaGljc0NvbnRleHQz
RERlZmF1bHRJbXBsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjI0LDYgKzYyNCwxNSBAQCB2b2lk
IFdlYkdyYXBoaWNzQ29udGV4dDNERGVmYXVsdEltcGw6OmNvCiAgICAgZ2xCaW5kRnJhbWVidWZm
ZXJFWFQoR0xfRlJBTUVCVUZGRVJfRVhULCBtX2JvdW5kRkJPKTsKIH0KIAorV2ViU3RyaW5nIFdl
YkdyYXBoaWNzQ29udGV4dDNERGVmYXVsdEltcGw6OmdldFJlcXVlc3RhYmxlRXh0ZW5zaW9uc0NI
Uk9NSVVNKCkKK3sKKyAgICByZXR1cm4gV2ViU3RyaW5nKCk7Cit9CisKK3ZvaWQgV2ViR3JhcGhp
Y3NDb250ZXh0M0REZWZhdWx0SW1wbDo6cmVxdWVzdEV4dGVuc2lvbkNIUk9NSVVNKGNvbnN0IGNo
YXIqKQoreworfQorCiAvLyBIZWxwZXIgbWFjcm9zIHRvIHJlZHVjZSB0aGUgYW1vdW50IG9mIGNv
ZGUuCiAKICNkZWZpbmUgREVMRUdBVEVfVE9fR0wobmFtZSwgZ2xuYW1lKSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCkluZGV4OiBXZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYkdyYXBoaWNzQ29udGV4dDNERGVmYXVsdEltcGwuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYkdyYXBoaWNzQ29udGV4dDNERGVmYXVsdEltcGwuaAkocmV2aXNpb24g
NzMzMTkpCisrKyBXZWJLaXQvY2hyb21pdW0vc3JjL1dlYkdyYXBoaWNzQ29udGV4dDNERGVmYXVs
dEltcGwuaAkod29ya2luZyBjb3B5KQpAQCAtODUsNiArODUsOSBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCB2b2lkIHVubWFwVGV4U3ViSW1hZ2UyRENIUk9NSVVNKGNvbnN0IHZvaWQqKTsKICAgICB2
aXJ0dWFsIHZvaWQgY29weVRleHR1cmVUb1BhcmVudFRleHR1cmVDSFJPTUlVTSh1bnNpZ25lZCB0
ZXh0dXJlLCB1bnNpZ25lZCBwYXJlbnRUZXh0dXJlKTsKIAorICAgIHZpcnR1YWwgV2ViU3RyaW5n
IGdldFJlcXVlc3RhYmxlRXh0ZW5zaW9uc0NIUk9NSVVNKCk7CisgICAgdmlydHVhbCB2b2lkIHJl
cXVlc3RFeHRlbnNpb25DSFJPTUlVTShjb25zdCBjaGFyKik7CisKICAgICB2aXJ0dWFsIHZvaWQg
YWN0aXZlVGV4dHVyZSh1bnNpZ25lZCBsb25nIHRleHR1cmUpOwogICAgIHZpcnR1YWwgdm9pZCBh
dHRhY2hTaGFkZXIoV2ViR0xJZCBwcm9ncmFtLCBXZWJHTElkIHNoYWRlcik7CiAgICAgdmlydHVh
bCB2b2lkIGJpbmRBdHRyaWJMb2NhdGlvbihXZWJHTElkIHByb2dyYW0sIHVuc2lnbmVkIGxvbmcg
aW5kZXgsIGNvbnN0IGNoYXIqIG5hbWUpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>75592</attachid>
            <date>2010-12-03 19:46:34 -0800</date>
            <delta_ts>2010-12-06 23:05:04 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-40316-20101203194633.patch</filename>
            <type>text/plain</type>
            <size>89007</size>
            <attacher name="Kenneth Russell">kbr</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3MzMxOSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsODEgQEAKKzIwMTAtMTItMDMgIEtlbm5ldGggUnVzc2VsbCAgPGtickBnb29nbGUu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIElt
cGxlbWVudCBleHRlbnNpb24gZW50cnkgcG9pbnRzIGFuZCByZW1vdmUgRVhURU5TSU9OUyBlbnVt
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MDMxNgor
CisgICAgICAgIEltcGxlbWVudGVkIFdlYkdMUmVuZGVyaW5nQ29udGV4dCdzIGdldFN1cHBvcnRl
ZEV4dGVuc2lvbnMgYW5kCisgICAgICAgIGdldEV4dGVuc2lvbnMgZW50cnkgcG9pbnRzLCBhbmQs
IHRvIHZlcmlmeSB0aGVtLCBhZGRlZCBzdXBwb3J0IGZvcgorICAgICAgICB0aGUgZmlyc3Qgc3Bl
Y2lmaWVkIFdlYkdMIGV4dGVuc2lvbiwgT0VTX3RleHR1cmVfZmxvYXQuIFRoaXMKKyAgICAgICAg
ZXh0ZW5zaW9uIGlzIG5vdyBhZHZlcnRpc2VkIGluIHRoZSBDaHJvbWl1bSBhbmQgV2ViS2l0IHBv
cnRzIHdoZW4KKyAgICAgICAgdGhlIHVuZGVybHlpbmcgaGFyZHdhcmUgc3VwcG9ydHMgaXQuCisK
KyAgICAgICAgVGhlIG5ldyBPRVNfdGV4dHVyZV9mbG9hdCB0ZXN0IGluIHRoZSBXZWJHTCBjb25m
b3JtYW5jZSBzdWl0ZQorICAgICAgICB2ZXJpZmllcyB0aGUgYWxsb2NhdGlvbiBhbmQgcG9wdWxh
dGlvbiBvZiBmbG9hdGluZyBwb2ludCB0ZXh0dXJlcywKKyAgICAgICAgYW5kIHRoZWlyIHVzZSBh
cyByZW5kZXIgdGFyZ2V0cy4gSG93ZXZlciwgYmVjYXVzZSB0aGlzIGV4dGVuc2lvbgorICAgICAg
ICBpcyBvcHRpb25hbCwgaXQgaXMgbm90IGVhc2lseSB0ZXN0YWJsZSB3aXRoIGEgbGF5b3V0IHRl
c3Q7IHRoZXJlCisgICAgICAgIGlzIG9ubHkgb25lIHNldCBvZiBleHBlY3RhdGlvbnMgZm9yIGEg
Z2l2ZW4gdGVzdCwgYW5kIHR3byB3b3VsZCBiZQorICAgICAgICBuZWVkZWQsIG9uZSB3aGVuIHRo
ZSBleHRlbnNpb24gaXMgYXZhaWxhYmxlIGFuZCBvbmUgd2hlbiBpdCBpcyBub3QuCisKKyAgICAg
ICAgVGVzdGVkIHdpdGggdGhlIG9lcy10ZXh0dXJlLWZsb2F0Lmh0bWwgV2ViR0wgY29uZm9ybWFu
Y2UgdGVzdCBpbgorICAgICAgICBDaHJvbWl1bSBhbmQgV2ViS2l0IG9uIE1hYyBPUyBYIG9uIGhh
cmR3YXJlIHRoYXQgc3VwcG9ydHMgdGhlCisgICAgICAgIGV4dGVuc2lvbi4gQWxzbyB2ZXJpZmll
ZCB3aXRoIGEgY29uZmlndXJhdGlvbiB0aGF0IGRvZXMgbm90CisgICAgICAgIGFkdmVydGlzZSB0
aGUgZXh0ZW5zaW9uIHRoYXQgdGhpcyBzYW1lIHRlc3QgcGFzc2VzLgorCisgICAgICAgICogQ01h
a2VMaXN0cy50eHQ6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBH
TlVtYWtlZmlsZS5hbToKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29y
ZS5wcmk6CisgICAgICAgICogV2ViQ29yZS5wcm86CisgICAgICAgICogV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTV2ViR0xSZW5kZXJp
bmdDb250ZXh0Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRvSlMpOgorICAgICAgICAo
V2ViQ29yZTo6SlNXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldEV4dGVuc2lvbik6CisgICAgICAg
IChXZWJDb3JlOjpKU1dlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0U3VwcG9ydGVkRXh0ZW5zaW9u
cyk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4V2ViR0xSZW5kZXJpbmdDb250ZXh0
Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRvVjhPYmplY3QpOgorICAgICAgICAoV2Vi
Q29yZTo6VjhXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldEV4dGVuc2lvbkNhbGxiYWNrKToKKyAg
ICAgICAgKFdlYkNvcmU6OlY4V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRTdXBwb3J0ZWRFeHRl
bnNpb25zQ2FsbGJhY2spOgorICAgICAgICAqIGh0bWwvY2FudmFzL09FU1RleHR1cmVGbG9hdC5j
cHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6T0VTVGV4dHVyZUZsb2F0OjpPRVNUZXh0dXJl
RmxvYXQpOgorICAgICAgICAoV2ViQ29yZTo6T0VTVGV4dHVyZUZsb2F0Ojp+T0VTVGV4dHVyZUZs
b2F0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9FU1RleHR1cmVGbG9hdDo6Z2V0TmFtZSk6CisgICAg
ICAgIChXZWJDb3JlOjpPRVNUZXh0dXJlRmxvYXQ6OmNyZWF0ZSk6CisgICAgICAgICogaHRtbC9j
YW52YXMvT0VTVGV4dHVyZUZsb2F0Lmg6IEFkZGVkLgorICAgICAgICAqIGh0bWwvY2FudmFzL09F
U1RleHR1cmVGbG9hdC5pZGw6IEFkZGVkLgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMRXh0
ZW5zaW9uLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpXZWJHTEV4dGVuc2lvbjo6V2Vi
R0xFeHRlbnNpb24pOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xFeHRlbnNpb246On5XZWJHTEV4
dGVuc2lvbik6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xFeHRlbnNpb24uaDogQWRkZWQu
CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0RXh0ZW5zaW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0U3VwcG9ydGVkRXh0ZW5zaW9u
cyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnZhbGlkYXRlVGV4
RnVuY0Zvcm1hdEFuZFR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250
ZXh0Ojp2YWxpZGF0ZVRleEZ1bmNEYXRhKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFJl
bmRlcmluZ0NvbnRleHQuaDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0Nv
bnRleHQuaWRsOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0V4dGVuc2lvbnMzRC5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpjb21wdXRlRm9ybWF0QW5kVHlwZVBhcmFt
ZXRlcnMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmV4dHJhY3RUZXh0
dXJlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpkb1VucGFja2luZ0FuZFBhY2tpbmcpOgorICAg
ICAgICAoV2ViQ29yZTo6ZG9QYWNraW5nKToKKyAgICAgICAgKFdlYkNvcmU6OmRvRmxvYXRpbmdQ
b2ludFBhY2tpbmcpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnBhY2tQ
aXhlbHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRXh0ZW5zaW9uczNEQ2hyb21p
dW0uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uczNET3Bl
bkdMLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnMzRE9wZW5HTDo6c3VwcG9ydHMp
OgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uczNET3BlbkdMOjplbnN1cmVFbmFibGVkKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uczNET3BlbkdMLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3Bl
bkdMLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjp0ZXhJbWFnZTJE
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9xdC9FeHRlbnNpb25zM0RRdC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zM0RRdDo6ZW5zdXJlRW5hYmxlZCk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvcXQvRXh0ZW5zaW9uczNEUXQuaDoKKwogMjAxMC0xMi0wMyAg
RGltaXRyaSBHbGF6a292ICA8ZGdsYXprb3ZAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmll
d2VkIGJ5IERhcmluIEFkbGVyLgpJbmRleDogV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiA3MzMxOSkKKysrIFdlYkNv
cmUvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTI4Niw2ICsyODYsNyBAQCBTRVQo
V2ViQ29yZV9JRExfRklMRVMKICAgICBodG1sL2NhbnZhcy9JbnQxNkFycmF5LmlkbAogICAgIGh0
bWwvY2FudmFzL0ludDMyQXJyYXkuaWRsCiAgICAgaHRtbC9jYW52YXMvSW50OEFycmF5LmlkbAor
ICAgIGh0bWwvY2FudmFzL09FU1RleHR1cmVGbG9hdC5pZGwKICAgICBodG1sL2NhbnZhcy9VaW50
MTZBcnJheS5pZGwKICAgICBodG1sL2NhbnZhcy9VaW50MzJBcnJheS5pZGwKICAgICBodG1sL2Nh
bnZhcy9VaW50OEFycmF5LmlkbApJbmRleDogV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQkocmV2aXNpb24gNzMzMTkp
CisrKyBXZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UJKHdvcmtpbmcgY29weSkKQEAgLTMwOSw2
ICszMDksNyBAQCBET01fQ0xBU1NFUyA9IFwKICAgICBOb3RhdGlvbiBcCiAgICAgTm90aWZpY2F0
aW9uIFwKICAgICBOb3RpZmljYXRpb25DZW50ZXIgXAorICAgIE9FU1RleHR1cmVGbG9hdCBcCiAg
ICAgT3ZlcmZsb3dFdmVudCBcCiAgICAgUGFnZVRyYW5zaXRpb25FdmVudCBcCiAgICAgUGVyZm9y
bWFuY2UgXApJbmRleDogV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL0dOVW1ha2VmaWxlLmFtCShyZXZpc2lvbiA3MzMxOSkKKysrIFdlYkNvcmUvR05VbWFrZWZp
bGUuYW0JKHdvcmtpbmcgY29weSkKQEAgLTQ3MSw2ICs0NzEsOCBAQCB3ZWJjb3JlX2J1aWx0X3Nv
dXJjZXMgKz0gXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNOb3RpZmljYXRpb25DZW50ZXIu
aCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU05vdGlmaWNhdGlvbi5jcHAgXAogCURlcml2
ZWRTb3VyY2VzL1dlYkNvcmUvSlNOb3RpZmljYXRpb24uaCBcCisJRGVyaXZlZFNvdXJjZXMvV2Vi
Q29yZS9KU09FU1RleHR1cmVGbG9hdC5jcHAgXAorCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNP
RVNUZXh0dXJlRmxvYXQuaCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU092ZXJmbG93RXZl
bnQuY3BwIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTT3ZlcmZsb3dFdmVudC5oIFwKIAlE
ZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTUGFnZVRyYW5zaXRpb25FdmVudC5jcHAgXApAQCAtMTU0
Myw2ICsxNTQ1LDggQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlXZWJDb3JlL2h0bWwvY2FudmFz
L0ludDMyQXJyYXkuaCBcCiAJV2ViQ29yZS9odG1sL2NhbnZhcy9JbnQ4QXJyYXkuY3BwIFwKIAlX
ZWJDb3JlL2h0bWwvY2FudmFzL0ludDhBcnJheS5oIFwKKwlXZWJDb3JlL2h0bWwvY2FudmFzL09F
U1RleHR1cmVGbG9hdC5jcHAgXAorCVdlYkNvcmUvaHRtbC9jYW52YXMvT0VTVGV4dHVyZUZsb2F0
LmggXAogCVdlYkNvcmUvaHRtbC9jYW52YXMvVWludDE2QXJyYXkuY3BwIFwKIAlXZWJDb3JlL2h0
bWwvY2FudmFzL1VpbnQxNkFycmF5LmggXAogCVdlYkNvcmUvaHRtbC9jYW52YXMvVWludDMyQXJy
YXkuY3BwIFwKSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS5neXBpCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvV2ViQ29yZS5neXBpCShyZXZpc2lvbiA3MzMxOSkKKysrIFdlYkNvcmUvV2ViQ29yZS5neXBp
CSh3b3JraW5nIGNvcHkpCkBAIC0yMTIsNiArMjEyLDcgQEAKICAgICAgICAgICAgICdodG1sL2Nh
bnZhcy9JbnQxNkFycmF5LmlkbCcsCiAgICAgICAgICAgICAnaHRtbC9jYW52YXMvSW50MzJBcnJh
eS5pZGwnLAogICAgICAgICAgICAgJ2h0bWwvY2FudmFzL0ludDhBcnJheS5pZGwnLAorICAgICAg
ICAgICAgJ2h0bWwvY2FudmFzL09FU1RleHR1cmVGbG9hdC5pZGwnLAogICAgICAgICAgICAgJ2h0
bWwvY2FudmFzL1VpbnQxNkFycmF5LmlkbCcsCiAgICAgICAgICAgICAnaHRtbC9jYW52YXMvVWlu
dDMyQXJyYXkuaWRsJywKICAgICAgICAgICAgICdodG1sL2NhbnZhcy9VaW50OEFycmF5LmlkbCcs
CkBAIC0xOTA2LDYgKzE5MDcsOCBAQAogICAgICAgICAgICAgJ2h0bWwvY2FudmFzL0ludDhBcnJh
eS5jcHAnLAogICAgICAgICAgICAgJ2h0bWwvY2FudmFzL0ludDhBcnJheS5oJywKICAgICAgICAg
ICAgICdodG1sL2NhbnZhcy9JbnRlZ3JhbFR5cGVkQXJyYXlCYXNlLmgnLAorICAgICAgICAgICAg
J2h0bWwvY2FudmFzL09FU1RleHR1cmVGbG9hdC5jcHAnLAorICAgICAgICAgICAgJ2h0bWwvY2Fu
dmFzL09FU1RleHR1cmVGbG9hdC5oJywKICAgICAgICAgICAgICdodG1sL2NhbnZhcy9UeXBlZEFy
cmF5QmFzZS5oJywKICAgICAgICAgICAgICdodG1sL2NhbnZhcy9VaW50MTZBcnJheS5jcHAnLAog
ICAgICAgICAgICAgJ2h0bWwvY2FudmFzL1VpbnQxNkFycmF5LmgnLApAQCAtMTkxOSw2ICsxOTIy
LDggQEAKICAgICAgICAgICAgICdodG1sL2NhbnZhcy9XZWJHTENvbnRleHRBdHRyaWJ1dGVzLmgn
LAogICAgICAgICAgICAgJ2h0bWwvY2FudmFzL1dlYkdMQ29udGV4dEV2ZW50LmNwcCcsCiAgICAg
ICAgICAgICAnaHRtbC9jYW52YXMvV2ViR0xDb250ZXh0RXZlbnQuaCcsCisgICAgICAgICAgICAn
aHRtbC9jYW52YXMvV2ViR0xFeHRlbnNpb24uY3BwJywKKyAgICAgICAgICAgICdodG1sL2NhbnZh
cy9XZWJHTEV4dGVuc2lvbi5oJywKICAgICAgICAgICAgICdodG1sL2NhbnZhcy9XZWJHTEZyYW1l
YnVmZmVyLmNwcCcsCiAgICAgICAgICAgICAnaHRtbC9jYW52YXMvV2ViR0xGcmFtZWJ1ZmZlci5o
JywKICAgICAgICAgICAgICdodG1sL2NhbnZhcy9XZWJHTEdldEluZm8uY3BwJywKSW5kZXg6IFdl
YkNvcmUvV2ViQ29yZS5wcmkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9XZWJDb3JlLnByaQkocmV2
aXNpb24gNzMzMTkpCisrKyBXZWJDb3JlL1dlYkNvcmUucHJpCSh3b3JraW5nIGNvcHkpCkBAIC0x
OTEsNiArMTkxLDcgQEAgSURMX0JJTkRJTkdTICs9IFwKICAgICBodG1sL2NhbnZhcy9DYW52YXNQ
YXR0ZXJuLmlkbCBcCiAgICAgaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5pZGwg
XAogICAgIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5pZGwgXAorICAgIGh0
bWwvY2FudmFzL09FU1RleHR1cmVGbG9hdC5pZGwgXAogICAgIGh0bWwvY2FudmFzL1dlYkdMQWN0
aXZlSW5mby5pZGwgXAogICAgIGh0bWwvY2FudmFzL1dlYkdMQnVmZmVyLmlkbCBcCiAgICAgaHRt
bC9jYW52YXMvV2ViR0xDb250ZXh0QXR0cmlidXRlcy5pZGwgXApJbmRleDogV2ViQ29yZS9XZWJD
b3JlLnBybwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUucHJvCShyZXZpc2lvbiA3MzMx
OSkKKysrIFdlYkNvcmUvV2ViQ29yZS5wcm8JKHdvcmtpbmcgY29weSkKQEAgLTM3MTYsNiArMzcx
Niw3IEBAIEhFQURFUlMgKz0gXAogICAgICAgICBodG1sL2NhbnZhcy9JbnQ4QXJyYXkuaCBcCiAg
ICAgICAgIGh0bWwvY2FudmFzL1dlYkdMQ29udGV4dEF0dHJpYnV0ZXMuaCBcCiAgICAgICAgIGh0
bWwvY2FudmFzL0Zsb2F0MzJBcnJheS5oIFwKKyAgICAgICAgaHRtbC9jYW52YXMvV2ViR0xFeHRl
bnNpb24uaCBcCiAgICAgICAgIGh0bWwvY2FudmFzL1dlYkdMRnJhbWVidWZmZXIuaCBcCiAgICAg
ICAgIGh0bWwvY2FudmFzL1dlYkdMR2V0SW5mby5oIFwKICAgICAgICAgaHRtbC9jYW52YXMvSW50
MzJBcnJheS5oIFwKQEAgLTM3MjQsNiArMzcyNSw3IEBAIEhFQURFUlMgKz0gXAogICAgICAgICBo
dG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuaCBcCiAgICAgICAgIGh0bWwvY2FudmFz
L1dlYkdMU2hhZGVyLmggXAogICAgICAgICBodG1sL2NhbnZhcy9JbnQxNkFycmF5LmggXAorICAg
ICAgICBodG1sL2NhbnZhcy9PRVNUZXh0dXJlRmxvYXQuaCBcCiAgICAgICAgIGh0bWwvY2FudmFz
L1dlYkdMVGV4dHVyZS5oIFwKICAgICAgICAgaHRtbC9jYW52YXMvV2ViR0xVbmlmb3JtTG9jYXRp
b24uaCBcCiAgICAgICAgIGh0bWwvY2FudmFzL1VpbnQ4QXJyYXkuaCBcCkBAIC0zNzU2LDYgKzM3
NTgsNyBAQCBTT1VSQ0VTICs9IFwKICAgICAgICAgaHRtbC9jYW52YXMvSW50OEFycmF5LmNwcCBc
CiAgICAgICAgIGh0bWwvY2FudmFzL1dlYkdMQ29udGV4dEF0dHJpYnV0ZXMuY3BwIFwKICAgICAg
ICAgaHRtbC9jYW52YXMvRmxvYXQzMkFycmF5LmNwcCBcCisgICAgICAgIGh0bWwvY2FudmFzL1dl
YkdMRXh0ZW5zaW9uLmNwcCBcCiAgICAgICAgIGh0bWwvY2FudmFzL1dlYkdMRnJhbWVidWZmZXIu
Y3BwIFwKICAgICAgICAgaHRtbC9jYW52YXMvV2ViR0xHZXRJbmZvLmNwcCBcCiAgICAgICAgIGh0
bWwvY2FudmFzL0ludDMyQXJyYXkuY3BwIFwKQEAgLTM3NjQsNiArMzc2Nyw3IEBAIFNPVVJDRVMg
Kz0gXAogICAgICAgICBodG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwIFwKICAg
ICAgICAgaHRtbC9jYW52YXMvV2ViR0xTaGFkZXIuY3BwIFwKICAgICAgICAgaHRtbC9jYW52YXMv
SW50MTZBcnJheS5jcHAgXAorICAgICAgICBodG1sL2NhbnZhcy9PRVNUZXh0dXJlRmxvYXQuY3Bw
IFwKICAgICAgICAgaHRtbC9jYW52YXMvV2ViR0xUZXh0dXJlLmNwcCBcCiAgICAgICAgIGh0bWwv
Y2FudmFzL1dlYkdMVW5pZm9ybUxvY2F0aW9uLmNwcCBcCiAgICAgICAgIGh0bWwvY2FudmFzL1Vp
bnQ4QXJyYXkuY3BwIFwKSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCShyZXZpc2lvbiA3MzMxOSkKKysrIFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xNTE0LDYgKzE1MTQsMTIgQEAKIAkJNkU2
N0QyQTkxMjgwRThCRDAwODc1OEY3IC8qIEV4dGVuc2lvbnMzRC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkU2N0QyQTgxMjgwRThCRDAwODc1OEY3IC8q
IEV4dGVuc2lvbnMzRC5oICovOyB9OwogCQk2RTk2QkIxQzExOTg2RUUyMDA3RDk0Q0QgLyogSW50
ZWdyYWxUeXBlZEFycmF5QmFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNkU5NkJCMUExMTk4NkVFMTAwN0Q5NENEIC8qIEludGVncmFsVHlwZWRBcnJh
eUJhc2UuaCAqLzsgfTsKIAkJNkU5NkJCMUQxMTk4NkVFMjAwN0Q5NENEIC8qIFR5cGVkQXJyYXlC
YXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RTk2
QkIxQjExOTg2RUUxMDA3RDk0Q0QgLyogVHlwZWRBcnJheUJhc2UuaCAqLzsgfTsKKwkJNkVCRjBF
NDgxMkE4OTI2MTAwREIxNzA5IC8qIE9FU1RleHR1cmVGbG9hdC5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RUJGMEU0NTEyQTg5MjYxMDBEQjE3MDkg
LyogT0VTVGV4dHVyZUZsb2F0LmNwcCAqLzsgfTsKKwkJNkVCRjBFNDkxMkE4OTI2MTAwREIxNzA5
IC8qIE9FU1RleHR1cmVGbG9hdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNkVCRjBFNDYxMkE4OTI2MTAwREIxNzA5IC8qIE9FU1RleHR1cmVGbG9hdC5o
ICovOyB9OworCQk2RUJGMEU1NDEyQTg5Mjk4MDBEQjE3MDkgLyogV2ViR0xFeHRlbnNpb24uY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkVCRjBFNTIx
MkE4OTI5ODAwREIxNzA5IC8qIFdlYkdMRXh0ZW5zaW9uLmNwcCAqLzsgfTsKKwkJNkVCRjBFNTUx
MkE4OTI5ODAwREIxNzA5IC8qIFdlYkdMRXh0ZW5zaW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RUJGMEU1MzEyQTg5Mjk4MDBEQjE3MDkgLyogV2Vi
R0xFeHRlbnNpb24uaCAqLzsgfTsKKwkJNkVCRjBFNzYxMkE5ODY4ODAwREIxNzA5IC8qIEpTT0VT
VGV4dHVyZUZsb2F0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDZFQkYwRTc0MTJBOTg2ODgwMERCMTcwOSAvKiBKU09FU1RleHR1cmVGbG9hdC5jcHAg
Ki87IH07CisJCTZFQkYwRTc3MTJBOTg2ODgwMERCMTcwOSAvKiBKU09FU1RleHR1cmVGbG9hdC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkVCRjBFNzUx
MkE5ODY4ODAwREIxNzA5IC8qIEpTT0VTVGV4dHVyZUZsb2F0LmggKi87IH07CiAJCTZFRThBNzcy
MTBGODAzRjMwMDVBNEEyNCAvKiBKU1dlYkdMQ29udGV4dEF0dHJpYnV0ZXMuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkVFOEE3NzAxMEY4MDNGMzAw
NUE0QTI0IC8qIEpTV2ViR0xDb250ZXh0QXR0cmlidXRlcy5jcHAgKi87IH07CiAJCTZFRThBNzcz
MTBGODAzRjMwMDVBNEEyNCAvKiBKU1dlYkdMQ29udGV4dEF0dHJpYnV0ZXMuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFRThBNzcxMTBGODAzRjMwMDVB
NEEyNCAvKiBKU1dlYkdMQ29udGV4dEF0dHJpYnV0ZXMuaCAqLzsgfTsKIAkJNzI2MjZFMDIwRUYw
MjJGRTAwQTA3RTIwIC8qIEZvbnRGYXN0UGF0aC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MjYyNkUwMTBFRjAyMkZFMDBBMDdFMjAgLyogRm9udEZh
c3RQYXRoLmNwcCAqLzsgfTsKQEAgLTc2OTMsNiArNzY5OSwxMyBAQAogCQk2RTY3RDJBODEyODBF
OEJEMDA4NzU4RjcgLyogRXh0ZW5zaW9uczNELmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEV4dGVuc2lvbnMzRC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2RTk2
QkIxQTExOTg2RUUxMDA3RDk0Q0QgLyogSW50ZWdyYWxUeXBlZEFycmF5QmFzZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBJbnRlZ3JhbFR5cGVkQXJyYXlCYXNlLmg7IHBhdGgg
PSBjYW52YXMvSW50ZWdyYWxUeXBlZEFycmF5QmFzZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk2RTk2QkIxQjExOTg2RUUxMDA3RDk0Q0QgLyogVHlwZWRBcnJheUJhc2UuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gVHlwZWRBcnJheUJhc2UuaDsgcGF0aCA9IGNh
bnZhcy9UeXBlZEFycmF5QmFzZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk2RUJG
MEU0NTEyQTg5MjYxMDBEQjE3MDkgLyogT0VTVGV4dHVyZUZsb2F0LmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IE9FU1RleHR1cmVGbG9hdC5jcHA7IHBhdGggPSBjYW52
YXMvT0VTVGV4dHVyZUZsb2F0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNkVC
RjBFNDYxMkE4OTI2MTAwREIxNzA5IC8qIE9FU1RleHR1cmVGbG9hdC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBPRVNUZXh0dXJlRmxvYXQuaDsgcGF0aCA9IGNhbnZhcy9PRVNU
ZXh0dXJlRmxvYXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNkVCRjBFNDcxMkE4
OTI2MTAwREIxNzA5IC8qIE9FU1RleHR1cmVGbG9hdC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBuYW1l
ID0gT0VTVGV4dHVyZUZsb2F0LmlkbDsgcGF0aCA9IGNhbnZhcy9PRVNUZXh0dXJlRmxvYXQuaWRs
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk2RUJGMEU1MjEyQTg5Mjk4MDBEQjE3MDkg
LyogV2ViR0xFeHRlbnNpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1l
ID0gV2ViR0xFeHRlbnNpb24uY3BwOyBwYXRoID0gY2FudmFzL1dlYkdMRXh0ZW5zaW9uLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNkVCRjBFNTMxMkE4OTI5ODAwREIxNzA5IC8q
IFdlYkdMRXh0ZW5zaW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdlYkdM
RXh0ZW5zaW9uLmg7IHBhdGggPSBjYW52YXMvV2ViR0xFeHRlbnNpb24uaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJNkVCRjBFNzQxMkE5ODY4ODAwREIxNzA5IC8qIEpTT0VTVGV4dHVy
ZUZsb2F0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTT0VTVGV4
dHVyZUZsb2F0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNkVCRjBFNzUxMkE5
ODY4ODAwREIxNzA5IC8qIEpTT0VTVGV4dHVyZUZsb2F0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEpTT0VTVGV4dHVyZUZsb2F0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTZFRThBNzcwMTBGODAzRjMwMDVBNEEyNCAvKiBKU1dlYkdMQ29udGV4dEF0dHJpYnV0
ZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNXZWJHTENvbnRl
eHRBdHRyaWJ1dGVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNkVFOEE3NzEx
MEY4MDNGMzAwNUE0QTI0IC8qIEpTV2ViR0xDb250ZXh0QXR0cmlidXRlcy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBKU1dlYkdMQ29udGV4dEF0dHJpYnV0ZXMuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzI2MjZFMDEwRUYwMjJGRTAwQTA3RTIwIC8qIEZvbnRG
YXN0UGF0aC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGb250RmFz
dFBhdGguY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTI2NjAsNiArMTI2NzMs
OSBAQAogCQkJCTQ5QzdCOUFDMTA0MkQzMkUwMDA5RDQ0NyAvKiBJbnQ4QXJyYXkuaCAqLywKIAkJ
CQk0OUM3QjlBRDEwNDJEMzJFMDAwOUQ0NDcgLyogSW50OEFycmF5LmlkbCAqLywKIAkJCQk2RTk2
QkIxQTExOTg2RUUxMDA3RDk0Q0QgLyogSW50ZWdyYWxUeXBlZEFycmF5QmFzZS5oICovLAorCQkJ
CTZFQkYwRTQ1MTJBODkyNjEwMERCMTcwOSAvKiBPRVNUZXh0dXJlRmxvYXQuY3BwICovLAorCQkJ
CTZFQkYwRTQ2MTJBODkyNjEwMERCMTcwOSAvKiBPRVNUZXh0dXJlRmxvYXQuaCAqLywKKwkJCQk2
RUJGMEU0NzEyQTg5MjYxMDBEQjE3MDkgLyogT0VTVGV4dHVyZUZsb2F0LmlkbCAqLywKIAkJCQk2
RTk2QkIxQjExOTg2RUUxMDA3RDk0Q0QgLyogVHlwZWRBcnJheUJhc2UuaCAqLywKIAkJCQk0OUVF
Q0REQzEwNTAzQzIzMDAwOTlGQUIgLyogVWludDE2QXJyYXkuY3BwICovLAogCQkJCTQ5RUVDRERE
MTA1MDNDMjQwMDA5OUZBQiAvKiBVaW50MTZBcnJheS5oICovLApAQCAtMTI2ODEsNiArMTI2OTcs
OCBAQAogCQkJCTkzRjZGMUVBMTI3RjcwQjEwMDU1Q0IwNiAvKiBXZWJHTENvbnRleHRFdmVudC5j
cHAgKi8sCiAJCQkJOTNGNkYxRUIxMjdGNzBCMTAwNTVDQjA2IC8qIFdlYkdMQ29udGV4dEV2ZW50
LmggKi8sCiAJCQkJOTNGNkYxRUMxMjdGNzBCMTAwNTVDQjA2IC8qIFdlYkdMQ29udGV4dEV2ZW50
LmlkbCAqLywKKwkJCQk2RUJGMEU1MjEyQTg5Mjk4MDBEQjE3MDkgLyogV2ViR0xFeHRlbnNpb24u
Y3BwICovLAorCQkJCTZFQkYwRTUzMTJBODkyOTgwMERCMTcwOSAvKiBXZWJHTEV4dGVuc2lvbi5o
ICovLAogCQkJCTQ5QzdCOUFFMTA0MkQzMkUwMDA5RDQ0NyAvKiBXZWJHTEZyYW1lYnVmZmVyLmNw
cCAqLywKIAkJCQk0OUM3QjlBRjEwNDJEMzJFMDAwOUQ0NDcgLyogV2ViR0xGcmFtZWJ1ZmZlci5o
ICovLAogCQkJCTQ5QzdCOUIwMTA0MkQzMkUwMDA5RDQ0NyAvKiBXZWJHTEZyYW1lYnVmZmVyLmlk
bCAqLywKQEAgLTE1NTA1LDYgKzE1NTIzLDggQEAKIAkJCQk0OUM3Qjk4MzEwNDJEMkQzMDAwOUQ0
NDcgLyogSlNJbnQ4QXJyYXkuaCAqLywKIAkJCQlFNDQ2MTQxMDBDRDY4MjY5MDBGQURBNzUgLyog
SlNNZWRpYUVycm9yLmNwcCAqLywKIAkJCQlFNDQ2MTQxMTBDRDY4MjY5MDBGQURBNzUgLyogSlNN
ZWRpYUVycm9yLmggKi8sCisJCQkJNkVCRjBFNzQxMkE5ODY4ODAwREIxNzA5IC8qIEpTT0VTVGV4
dHVyZUZsb2F0LmNwcCAqLywKKwkJCQk2RUJGMEU3NTEyQTk4Njg4MDBEQjE3MDkgLyogSlNPRVNU
ZXh0dXJlRmxvYXQuaCAqLywKIAkJCQlCQ0VGNDVGMzBFNjg3QjVDMDAxQzEyODcgLyogSlNUZXh0
TWV0cmljcy5jcHAgKi8sCiAJCQkJQkNFRjQ1RjQwRTY4N0I1QzAwMUMxMjg3IC8qIEpTVGV4dE1l
dHJpY3MuaCAqLywKIAkJCQlFNDQ2MTQxMjBDRDY4MjY5MDBGQURBNzUgLyogSlNUaW1lUmFuZ2Vz
LmNwcCAqLywKQEAgLTIxNDMwLDYgKzIxNDUwLDkgQEAKIAkJCQk5M0YxOTlFRDA4MjQ1RTU5MDAx
RTlBQkMgLyogWFNMVFByb2Nlc3Nvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTFCRTUxMkUwQ0Y2
QzUxMjAwMkVBOTU5IC8qIFhTTFRVbmljb2RlU29ydC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTdE
RDREODcwRkRGNEQ2RTAwRUNGOUE0IC8qIFhTU0F1ZGl0b3IuaCBpbiBIZWFkZXJzICovLAorCQkJ
CTZFQkYwRTQ5MTJBODkyNjEwMERCMTcwOSAvKiBPRVNUZXh0dXJlRmxvYXQuaCBpbiBIZWFkZXJz
ICovLAorCQkJCTZFQkYwRTU1MTJBODkyOTgwMERCMTcwOSAvKiBXZWJHTEV4dGVuc2lvbi5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJNkVCRjBFNzcxMkE5ODY4ODAwREIxNzA5IC8qIEpTT0VTVGV4dHVy
ZUZsb2F0LmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBv
c3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTI0MDA4LDYgKzI0MDMxLDkgQEAKIAkJCQk5M0Yx
OUIwNTA4MjQ1RTU5MDAxRTlBQkMgLyogWFNMVFByb2Nlc3NvckxpYnhzbHQuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJRTFCRTUxMkQwQ0Y2QzUxMjAwMkVBOTU5IC8qIFhTTFRVbmljb2RlU29ydC5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk5N0RENEQ4NjBGREY0RDZFMDBFQ0Y5QTQgLyogWFNTQXVk
aXRvci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk2RUJGMEU0ODEyQTg5MjYxMDBEQjE3MDkgLyog
T0VTVGV4dHVyZUZsb2F0LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTZFQkYwRTU0MTJBODkyOTgw
MERCMTcwOSAvKiBXZWJHTEV4dGVuc2lvbi5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk2RUJGMEU3
NjEyQTk4Njg4MDBEQjE3MDkgLyogSlNPRVNUZXh0dXJlRmxvYXQuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07
CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2ViR0xSZW5kZXJpbmdDb250ZXh0Q3VzdG9t
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2ViR0xSZW5kZXJpbmdD
b250ZXh0Q3VzdG9tLmNwcAkocmV2aXNpb24gNzMzMTkpCisrKyBXZWJDb3JlL2JpbmRpbmdzL2pz
L0pTV2ViR0xSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUs
NiArMzUsNyBAQAogI2luY2x1ZGUgIkpTSFRNTENhbnZhc0VsZW1lbnQuaCIKICNpbmNsdWRlICJK
U0hUTUxJbWFnZUVsZW1lbnQuaCIKICNpbmNsdWRlICJKU0ltYWdlRGF0YS5oIgorI2luY2x1ZGUg
IkpTT0VTVGV4dHVyZUZsb2F0LmgiCiAjaW5jbHVkZSAiSlNXZWJHTEJ1ZmZlci5oIgogI2luY2x1
ZGUgIkpTRmxvYXQzMkFycmF5LmgiCiAjaW5jbHVkZSAiSlNXZWJHTEZyYW1lYnVmZmVyLmgiCkBA
IC00Nyw4ICs0OCwxMCBAQAogI2luY2x1ZGUgIkpTVWludDhBcnJheS5oIgogI2luY2x1ZGUgIkpT
V2ViS2l0Q1NTTWF0cml4LmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKKyNpbmNsdWRl
ICJPRVNUZXh0dXJlRmxvYXQuaCIKICNpbmNsdWRlICJXZWJHTEJ1ZmZlci5oIgogI2luY2x1ZGUg
IkZsb2F0MzJBcnJheS5oIgorI2luY2x1ZGUgIldlYkdMRXh0ZW5zaW9uLmgiCiAjaW5jbHVkZSAi
V2ViR0xGcmFtZWJ1ZmZlci5oIgogI2luY2x1ZGUgIldlYkdMR2V0SW5mby5oIgogI2luY2x1ZGUg
IkludDMyQXJyYXkuaCIKQEAgLTE2MSw2ICsxNjQsMTggQEAgZW51bSBXaGljaFByb2dyYW1DYWxs
IHsKICAgICBrUHJvZ3JhbVBhcmFtZXRlciwga1VuaWZvcm0KIH07CiAKK3N0YXRpYyBKU1ZhbHVl
IHRvSlMoRXhlY1N0YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBX
ZWJHTEV4dGVuc2lvbiogZXh0ZW5zaW9uKQoreworICAgIGlmICghZXh0ZW5zaW9uKQorICAgICAg
ICByZXR1cm4ganNOdWxsKCk7CisgICAgc3dpdGNoIChleHRlbnNpb24tPmdldE5hbWUoKSkgewor
ICAgIGNhc2UgV2ViR0xFeHRlbnNpb246Ok9FU1RleHR1cmVGbG9hdE5hbWU6CisgICAgICAgIHJl
dHVybiB0b0pTKGV4ZWMsIGdsb2JhbE9iamVjdCwgc3RhdGljX2Nhc3Q8T0VTVGV4dHVyZUZsb2F0
Kj4oZXh0ZW5zaW9uKSk7CisgICAgfQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJl
dHVybiBqc051bGwoKTsKK30KKwogSlNWYWx1ZSBKU1dlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0
QXR0YWNoZWRTaGFkZXJzKEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICBpZiAoZXhlYy0+YXJndW1l
bnRDb3VudCgpIDwgMSkKQEAgLTE4Niw2ICsyMDEsMTkgQEAgSlNWYWx1ZSBKU1dlYkdMUmVuZGVy
aW5nQ29udGV4dDo6Z2V0QXR0YQogICAgIHJldHVybiBjb25zdHJ1Y3RBcnJheShleGVjLCBsaXN0
KTsKIH0KIAorSlNWYWx1ZSBKU1dlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0RXh0ZW5zaW9uKEV4
ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpIDwgMSkKKyAg
ICAgICAgcmV0dXJuIHRocm93U3ludGF4RXJyb3IoZXhlYyk7CisKKyAgICBXZWJHTFJlbmRlcmlu
Z0NvbnRleHQqIGNvbnRleHQgPSBzdGF0aWNfY2FzdDxXZWJHTFJlbmRlcmluZ0NvbnRleHQqPihp
bXBsKCkpOworICAgIGNvbnN0IFN0cmluZyYgbmFtZSA9IHVzdHJpbmdUb1N0cmluZyhleGVjLT5h
cmd1bWVudCgwKS50b1N0cmluZyhleGVjKSk7CisgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigp
KQorICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKyAgICBXZWJHTEV4dGVuc2lvbiogZXh0
ZW5zaW9uID0gY29udGV4dC0+Z2V0RXh0ZW5zaW9uKG5hbWUpOworICAgIHJldHVybiB0b0pTKGV4
ZWMsIGdsb2JhbE9iamVjdCgpLCBleHRlbnNpb24pOworfQorCiBKU1ZhbHVlIEpTV2ViR0xSZW5k
ZXJpbmdDb250ZXh0OjpnZXRCdWZmZXJQYXJhbWV0ZXIoRXhlY1N0YXRlKiBleGVjKQogewogICAg
IHJldHVybiBnZXRPYmplY3RQYXJhbWV0ZXIodGhpcywgZXhlYywga0J1ZmZlcik7CkBAIC0yODAs
NiArMzA4LDE2IEBAIEpTVmFsdWUgSlNXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFNoYWQKICAg
ICByZXR1cm4gdG9KUyhleGVjLCBnbG9iYWxPYmplY3QoKSwgaW5mbyk7CiB9CiAKK0pTVmFsdWUg
SlNXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFN1cHBvcnRlZEV4dGVuc2lvbnMoRXhlY1N0YXRl
KiBleGVjKQoreworICAgIFdlYkdMUmVuZGVyaW5nQ29udGV4dCogY29udGV4dCA9IHN0YXRpY19j
YXN0PFdlYkdMUmVuZGVyaW5nQ29udGV4dCo+KGltcGwoKSk7CisgICAgVmVjdG9yPFN0cmluZz4g
dmFsdWUgPSBjb250ZXh0LT5nZXRTdXBwb3J0ZWRFeHRlbnNpb25zKCk7CisgICAgTWFya2VkQXJn
dW1lbnRCdWZmZXIgbGlzdDsKKyAgICBmb3IgKHNpemVfdCBpaSA9IDA7IGlpIDwgdmFsdWUuc2l6
ZSgpOyArK2lpKQorICAgICAgICBsaXN0LmFwcGVuZChqc1N0cmluZyhleGVjLCB2YWx1ZVtpaV0p
KTsKKyAgICByZXR1cm4gY29uc3RydWN0QXJyYXkoZXhlYywgbGlzdCk7Cit9CisKIEpTVmFsdWUg
SlNXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFRleFBhcmFtZXRlcihFeGVjU3RhdGUqIGV4ZWMp
CiB7CiAgICAgcmV0dXJuIGdldE9iamVjdFBhcmFtZXRlcih0aGlzLCBleGVjLCBrVGV4dHVyZSk7
CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFdlYkdMUmVuZGVyaW5nQ29udGV4
dEN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhX
ZWJHTFJlbmRlcmluZ0NvbnRleHRDdXN0b20uY3BwCShyZXZpc2lvbiA3MzMxOSkKKysrIFdlYkNv
cmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4V2ViR0xSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNDEsNiArNDEsNyBAQAogI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9j
Lmg+CiAKICNpbmNsdWRlICJWOEJpbmRpbmcuaCIKKyNpbmNsdWRlICJWOEJpbmRpbmdNYWNyb3Mu
aCIKICNpbmNsdWRlICJWOEFycmF5QnVmZmVyVmlldy5oIgogI2luY2x1ZGUgIlY4V2ViR0xCdWZm
ZXIuaCIKICNpbmNsdWRlICJWOEludDhBcnJheS5oIgpAQCAtNjAsNiArNjEsNyBAQAogI2luY2x1
ZGUgIlY4SFRNTEltYWdlRWxlbWVudC5oIgogI2luY2x1ZGUgIlY4SFRNTFZpZGVvRWxlbWVudC5o
IgogI2luY2x1ZGUgIlY4SW1hZ2VEYXRhLmgiCisjaW5jbHVkZSAiVjhPRVNUZXh0dXJlRmxvYXQu
aCIKICNpbmNsdWRlICJWOFByb3h5LmgiCiAjaW5jbHVkZSAiV2ViR0xSZW5kZXJpbmdDb250ZXh0
LmgiCiAKQEAgLTE1MSw2ICsxNTMsMTggQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0
b1Y4T2JqZWN0KAogICAgIH0KIH0KIAorc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4
T2JqZWN0KFdlYkdMRXh0ZW5zaW9uKiBleHRlbnNpb24pCit7CisgICAgaWYgKCFleHRlbnNpb24p
CisgICAgICAgIHJldHVybiB2ODo6TnVsbCgpOworICAgIHN3aXRjaCAoZXh0ZW5zaW9uLT5nZXRO
YW1lKCkpIHsKKyAgICBjYXNlIFdlYkdMRXh0ZW5zaW9uOjpPRVNUZXh0dXJlRmxvYXROYW1lOgor
ICAgICAgICByZXR1cm4gdG9WOChzdGF0aWNfY2FzdDxPRVNUZXh0dXJlRmxvYXQqPihleHRlbnNp
b24pKTsKKyAgICB9CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIHY4OjpO
dWxsKCk7Cit9CisKIGVudW0gT2JqZWN0VHlwZSB7CiAgICAga0J1ZmZlciwga1JlbmRlcmJ1ZmZl
ciwga1RleHR1cmUsIGtWZXJ0ZXhBdHRyaWIKIH07CkBAIC0yNDMsNiArMjU3LDE5IEBAIHY4OjpI
YW5kbGU8djg6OlZhbHVlPiBWOFdlYkdMUmVuZGVyaW5nQ28KICAgICByZXR1cm4gZ2V0T2JqZWN0
UGFyYW1ldGVyKGFyZ3MsIGtCdWZmZXIpOwogfQogCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhX
ZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldEV4dGVuc2lvbkNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1
bWVudHMmIGFyZ3MpCit7CisgICAgSU5DX1NUQVRTKCJET00uV2ViR0xSZW5kZXJpbmdDb250ZXh0
LmdldEV4dGVuc2lvbkNhbGxiYWNrKCkiKTsKKyAgICBXZWJHTFJlbmRlcmluZ0NvbnRleHQqIGlt
cCA9IFY4V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKKyAg
ICBpZiAoYXJncy5MZW5ndGgoKSA8IDEpIHsKKyAgICAgICAgVjhQcm94eTo6c2V0RE9NRXhjZXB0
aW9uKFNZTlRBWF9FUlIpOworICAgICAgICByZXR1cm4gbm90SGFuZGxlZEJ5SW50ZXJjZXB0b3Io
KTsKKyAgICB9CisgICAgU1RSSU5HX1RPX1Y4UEFSQU1FVEVSX0VYQ0VQVElPTl9CTE9DSyhWOFBh
cmFtZXRlcjw+LCBuYW1lLCBhcmdzWzBdKTsKKyAgICBXZWJHTEV4dGVuc2lvbiogZXh0ZW5zaW9u
ID0gaW1wLT5nZXRFeHRlbnNpb24obmFtZSk7CisgICAgcmV0dXJuIHRvVjhPYmplY3QoZXh0ZW5z
aW9uKTsKK30KKwogdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4V2ViR0xSZW5kZXJpbmdDb250ZXh0
OjpnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJDYWxsYmFjayhjb25zdCB2ODo6QXJn
dW1lbnRzJiBhcmdzKQogewogICAgIElOQ19TVEFUUygiRE9NLldlYkdMUmVuZGVyaW5nQ29udGV4
dC5nZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIoKSIpOwpAQCAtMzQxLDYgKzM2OCwx
NyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhXZWJHTFJlbmRlcmluZ0NvCiAgICAgcmV0dXJu
IHRvVjhPYmplY3QoaW5mbyk7CiB9CiAKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFdlYkdMUmVu
ZGVyaW5nQ29udGV4dDo6Z2V0U3VwcG9ydGVkRXh0ZW5zaW9uc0NhbGxiYWNrKGNvbnN0IHY4OjpB
cmd1bWVudHMmIGFyZ3MpCit7CisgICAgSU5DX1NUQVRTKCJET00uV2ViR0xSZW5kZXJpbmdDb250
ZXh0LmdldFN1cHBvcnRlZEV4dGVuc2lvbnNDYWxsYmFjaygpIik7CisgICAgV2ViR0xSZW5kZXJp
bmdDb250ZXh0KiBpbXAgPSBWOFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dG9OYXRpdmUoYXJncy5I
b2xkZXIoKSk7CisgICAgVmVjdG9yPFN0cmluZz4gdmFsdWUgPSBpbXAtPmdldFN1cHBvcnRlZEV4
dGVuc2lvbnMoKTsKKyAgICB2ODo6TG9jYWw8djg6OkFycmF5PiBhcnJheSA9IHY4OjpBcnJheTo6
TmV3KHZhbHVlLnNpemUoKSk7CisgICAgZm9yIChzaXplX3QgaWkgPSAwOyBpaSA8IHZhbHVlLnNp
emUoKTsgKytpaSkKKyAgICAgICAgYXJyYXktPlNldCh2ODo6SW50ZWdlcjo6TmV3KGlpKSwgdjg6
OlN0cmluZzo6TmV3KGZyb21XZWJDb3JlU3RyaW5nKHZhbHVlW2lpXSksIHZhbHVlW2lpXS5sZW5n
dGgoKSkpOworICAgIHJldHVybiBhcnJheTsKK30KKwogdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4
V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRUZXhQYXJhbWV0ZXJDYWxsYmFjayhjb25zdCB2ODo6
QXJndW1lbnRzJiBhcmdzKQogewogICAgIElOQ19TVEFUUygiRE9NLldlYkdMUmVuZGVyaW5nQ29u
dGV4dC5nZXRUZXhQYXJhbWV0ZXIoKSIpOwpJbmRleDogV2ViQ29yZS9odG1sL2NhbnZhcy9PRVNU
ZXh0dXJlRmxvYXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9jYW52YXMvT0VTVGV4
dHVyZUZsb2F0LmNwcAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvaHRtbC9jYW52YXMvT0VTVGV4
dHVyZUZsb2F0LmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1NCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElU
UyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJ
VFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwor
ICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRSgzRF9DQU5WQVMpCisKKyNpbmNsdWRlICJPRVNU
ZXh0dXJlRmxvYXQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitPRVNUZXh0dXJlRmxvYXQ6
Ok9FU1RleHR1cmVGbG9hdCgpIDogV2ViR0xFeHRlbnNpb24oKQoreworfQorCitPRVNUZXh0dXJl
RmxvYXQ6On5PRVNUZXh0dXJlRmxvYXQoKQoreworfQorCitXZWJHTEV4dGVuc2lvbjo6RXh0ZW5z
aW9uTmFtZSBPRVNUZXh0dXJlRmxvYXQ6OmdldE5hbWUoKSBjb25zdAoreworICAgIHJldHVybiBP
RVNUZXh0dXJlRmxvYXROYW1lOworfQorCitQYXNzUmVmUHRyPE9FU1RleHR1cmVGbG9hdD4gT0VT
VGV4dHVyZUZsb2F0OjpjcmVhdGUoKQoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcgT0VTVGV4
dHVyZUZsb2F0KTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5B
QkxFKDNEX0NBTlZBUykKSW5kZXg6IFdlYkNvcmUvaHRtbC9jYW52YXMvT0VTVGV4dHVyZUZsb2F0
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL2NhbnZhcy9PRVNUZXh0dXJlRmxvYXQuaAko
cmV2aXNpb24gMCkKKysrIFdlYkNvcmUvaHRtbC9jYW52YXMvT0VTVGV4dHVyZUZsb2F0LmgJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsNDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAg
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJB
UyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICog
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIE9FU1RleHR1cmVGbG9h
dF9oCisjZGVmaW5lIE9FU1RleHR1cmVGbG9hdF9oCisKKyNpbmNsdWRlICJXZWJHTEV4dGVuc2lv
bi5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50
ZWQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBPRVNUZXh0dXJlRmxvYXQgOiBw
dWJsaWMgV2ViR0xFeHRlbnNpb24geworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPE9F
U1RleHR1cmVGbG9hdD4gY3JlYXRlKCk7CisKKyAgICB2aXJ0dWFsIH5PRVNUZXh0dXJlRmxvYXQo
KTsKKyAgICB2aXJ0dWFsIEV4dGVuc2lvbk5hbWUgZ2V0TmFtZSgpIGNvbnN0OworCitwcml2YXRl
OgorICAgIE9FU1RleHR1cmVGbG9hdCgpOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQor
CisjZW5kaWYgLy8gT0VTVGV4dHVyZUZsb2F0X2gKSW5kZXg6IFdlYkNvcmUvaHRtbC9jYW52YXMv
T0VTVGV4dHVyZUZsb2F0LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvY2FudmFzL09F
U1RleHR1cmVGbG9hdC5pZGwJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL2h0bWwvY2FudmFzL09F
U1RleHR1cmVGbG9hdC5pZGwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjkgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFO
RCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAor
ICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
T1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitt
b2R1bGUgaHRtbCB7CisgICAgaW50ZXJmYWNlIFtDb25kaXRpb25hbD0zRF9DQU5WQVMsIE9taXRD
b25zdHJ1Y3Rvcl0gT0VTVGV4dHVyZUZsb2F0IHsKKyAgICB9OworfQpJbmRleDogV2ViQ29yZS9o
dG1sL2NhbnZhcy9XZWJHTEV4dGVuc2lvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTEV4dGVuc2lvbi5jcHAJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYkdMRXh0ZW5zaW9uLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0NCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEu
ICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
CisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRSgzRF9DQU5WQVMpCisKKyNp
bmNsdWRlICJXZWJHTEV4dGVuc2lvbi5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1dlYkdM
RXh0ZW5zaW9uOjpXZWJHTEV4dGVuc2lvbigpCit7Cit9CisKK1dlYkdMRXh0ZW5zaW9uOjp+V2Vi
R0xFeHRlbnNpb24oKQoreworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAv
LyBFTkFCTEUoM0RfQ0FOVkFTKQpJbmRleDogV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEV4dGVu
c2lvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xFeHRlbnNpb24u
aAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xFeHRlbnNpb24uaAko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSw0OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
ICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMg
IkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisg
KiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViR0xFeHRlbnNp
b25faAorI2RlZmluZSBXZWJHTEV4dGVuc2lvbl9oCisKKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRl
ZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFdlYkdMRXh0ZW5zaW9uIDogcHVi
bGljIFJlZkNvdW50ZWQ8V2ViR0xFeHRlbnNpb24+IHsKK3B1YmxpYzoKKyAgICAvLyBFeHRlbnNp
b24gbmFtZXMgYXJlIG5lZWRlZCB0byBwcm9wZXJseSB3cmFwIGluc3RhbmNlcyBpbiBKYXZhU2Ny
aXB0IG9iamVjdHMuCisgICAgZW51bSBFeHRlbnNpb25OYW1lIHsKKyAgICAgICAgT0VTVGV4dHVy
ZUZsb2F0TmFtZQorICAgIH07CisKKyAgICB2aXJ0dWFsIH5XZWJHTEV4dGVuc2lvbigpOworICAg
IHZpcnR1YWwgRXh0ZW5zaW9uTmFtZSBnZXROYW1lKCkgY29uc3QgPSAwOworCitwcm90ZWN0ZWQ6
CisgICAgV2ViR0xFeHRlbnNpb24oKTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwor
I2VuZGlmIC8vIFdlYkdMRXh0ZW5zaW9uX2gKSW5kZXg6IFdlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R0xSZW5kZXJpbmdDb250ZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHAJKHJldmlzaW9uIDczMzE5KQorKysgV2ViQ29yZS9o
dG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00
Myw2ICs0Myw3IEBACiAjaW5jbHVkZSAiSW1hZ2VEYXRhLmgiCiAjaW5jbHVkZSAiSW50U2l6ZS5o
IgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCisjaW5jbHVkZSAiT0VTVGV4dHVyZUZsb2F0
LmgiCiAjaW5jbHVkZSAiUmVuZGVyQm94LmgiCiAjaW5jbHVkZSAiUmVuZGVyTGF5ZXIuaCIKICNp
bmNsdWRlICJVaW50MTZBcnJheS5oIgpAQCAtMTQzNiw2ICsxNDM3LDIxIEBAIHVuc2lnbmVkIGxv
bmcgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXQKICAgICByZXR1cm4gbV9jb250ZXh0LT5nZXRF
cnJvcigpOwogfQogCitXZWJHTEV4dGVuc2lvbiogV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRF
eHRlbnNpb24oY29uc3QgU3RyaW5nJiBuYW1lKQoreworICAgIGlmIChuYW1lID09ICJPRVNfdGV4
dHVyZV9mbG9hdCIKKyAgICAgICAgJiYgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCktPnN1cHBv
cnRzKCJHTF9PRVNfdGV4dHVyZV9mbG9hdCIpKSB7CisgICAgICAgIGlmICghbV9vZXNUZXh0dXJl
RmxvYXQpIHsKKyAgICAgICAgICAgIGlmICghbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCktPmVu
c3VyZUVuYWJsZWQoIkdMX09FU190ZXh0dXJlX2Zsb2F0IikpCisgICAgICAgICAgICAgICAgcmV0
dXJuIDA7CisgICAgICAgICAgICBtX29lc1RleHR1cmVGbG9hdCA9IE9FU1RleHR1cmVGbG9hdDo6
Y3JlYXRlKCk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIG1fb2VzVGV4dHVyZUZsb2F0Lmdl
dCgpOworICAgIH0KKworICAgIHJldHVybiAwOworfQorCiBXZWJHTEdldEluZm8gV2ViR0xSZW5k
ZXJpbmdDb250ZXh0OjpnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIodW5zaWduZWQg
bG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgYXR0YWNobWVudCwgdW5zaWduZWQgbG9uZyBwbmFt
ZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgVU5VU0VEX1BBUkFNKGVjKTsKQEAgLTE4Mjks
NiArMTg0NSwxNCBAQCBTdHJpbmcgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRTaGFkZXJTCiAg
ICAgcmV0dXJuIG1fY29udGV4dC0+Z2V0U2hhZGVyU291cmNlKG9iamVjdE9yWmVybyhzaGFkZXIp
KTsKIH0KIAorVmVjdG9yPFN0cmluZz4gV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRTdXBwb3J0
ZWRFeHRlbnNpb25zKCkKK3sKKyAgICBWZWN0b3I8U3RyaW5nPiByZXN1bHQ7CisgICAgaWYgKG1f
Y29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLT5zdXBwb3J0cygiR0xfT0VTX3RleHR1cmVfZmxvYXQi
KSkKKyAgICAgICAgcmVzdWx0LmFwcGVuZCgiT0VTX3RleHR1cmVfZmxvYXQiKTsKKyAgICByZXR1
cm4gcmVzdWx0OworfQorCiBXZWJHTEdldEluZm8gV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRU
ZXhQYXJhbWV0ZXIodW5zaWduZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgcG5hbWUsIEV4
Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIFVOVVNFRF9QQVJBTShlYyk7CkBAIC0zNTcwLDYgKzM1
OTQsOCBAQCBib29sIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dmFsaWRhdGVUZXhGCiAgICAgY2Fz
ZSBHcmFwaGljc0NvbnRleHQzRDo6VU5TSUdORURfU0hPUlRfNV81XzVfMToKICAgICAgICAgYnJl
YWs7CiAgICAgZGVmYXVsdDoKKyAgICAgICAgaWYgKHR5cGUgPT0gR3JhcGhpY3NDb250ZXh0M0Q6
OkZMT0FUICYmIG1fb2VzVGV4dHVyZUZsb2F0KQorICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURf
RU5VTSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CkBAIC0zNTc5LDE0ICszNjA1LDE2
IEBAIGJvb2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp2YWxpZGF0ZVRleEYKICAgICBjYXNlIEdy
YXBoaWNzQ29udGV4dDNEOjpBTFBIQToKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpMVU1J
TkFOQ0U6CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6TFVNSU5BTkNFX0FMUEhBOgotICAg
ICAgICBpZiAodHlwZSAhPSBHcmFwaGljc0NvbnRleHQzRDo6VU5TSUdORURfQllURSkgeworICAg
ICAgICBpZiAodHlwZSAhPSBHcmFwaGljc0NvbnRleHQzRDo6VU5TSUdORURfQllURQorICAgICAg
ICAgICAgJiYgdHlwZSAhPSBHcmFwaGljc0NvbnRleHQzRDo6RkxPQVQpIHsKICAgICAgICAgICAg
IG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURf
T1BFUkFUSU9OKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogICAgICAg
ICBicmVhazsKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpSR0I6CiAgICAgICAgIGlmICh0
eXBlICE9IEdyYXBoaWNzQ29udGV4dDNEOjpVTlNJR05FRF9CWVRFCi0gICAgICAgICAgICAmJiB0
eXBlICE9IEdyYXBoaWNzQ29udGV4dDNEOjpVTlNJR05FRF9TSE9SVF81XzZfNSkgeworICAgICAg
ICAgICAgJiYgdHlwZSAhPSBHcmFwaGljc0NvbnRleHQzRDo6VU5TSUdORURfU0hPUlRfNV82XzUK
KyAgICAgICAgICAgICYmIHR5cGUgIT0gR3JhcGhpY3NDb250ZXh0M0Q6OkZMT0FUKSB7CiAgICAg
ICAgICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJ
TlZBTElEX09QRVJBVElPTik7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0K
QEAgLTM1OTQsNyArMzYyMiw4IEBAIGJvb2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp2YWxpZGF0
ZVRleEYKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpSR0JBOgogICAgICAgICBpZiAodHlw
ZSAhPSBHcmFwaGljc0NvbnRleHQzRDo6VU5TSUdORURfQllURQogICAgICAgICAgICAgJiYgdHlw
ZSAhPSBHcmFwaGljc0NvbnRleHQzRDo6VU5TSUdORURfU0hPUlRfNF80XzRfNAotICAgICAgICAg
ICAgJiYgdHlwZSAhPSBHcmFwaGljc0NvbnRleHQzRDo6VU5TSUdORURfU0hPUlRfNV81XzVfMSkg
eworICAgICAgICAgICAgJiYgdHlwZSAhPSBHcmFwaGljc0NvbnRleHQzRDo6VU5TSUdORURfU0hP
UlRfNV81XzVfMQorICAgICAgICAgICAgJiYgdHlwZSAhPSBHcmFwaGljc0NvbnRleHQzRDo6RkxP
QVQpIHsKICAgICAgICAgICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3ND
b250ZXh0M0Q6OklOVkFMSURfT1BFUkFUSU9OKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICAgICAgfQpAQCAtMzY4Myw2ICszNzEyLDEyIEBAIGJvb2wgV2ViR0xSZW5kZXJpbmdDb250
ZXh0Ojp2YWxpZGF0ZVRleEYKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQog
ICAgICAgICBicmVhazsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpGTE9BVDogLy8gT0VT
X3RleHR1cmVfZmxvYXQKKyAgICAgICAgaWYgKCFwaXhlbHMtPmlzRmxvYXRBcnJheSgpKSB7Cisg
ICAgICAgICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNE
OjpJTlZBTElEX09QRVJBVElPTik7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAg
IH0KKyAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CiAgICAgfQpJbmRleDogV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0Nv
bnRleHQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5n
Q29udGV4dC5oCShyZXZpc2lvbiA3MzMxOSkKKysrIFdlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xS
ZW5kZXJpbmdDb250ZXh0LmgJKHdvcmtpbmcgY29weSkKQEAgLTQyLDYgKzQyLDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogY2xhc3MgV2ViR0xBY3RpdmVJbmZvOwogY2xhc3MgV2ViR0xCdWZmZXI7
CiBjbGFzcyBXZWJHTENvbnRleHRBdHRyaWJ1dGVzOworY2xhc3MgV2ViR0xFeHRlbnNpb247CiBj
bGFzcyBXZWJHTEZyYW1lYnVmZmVyOwogY2xhc3MgV2ViR0xPYmplY3Q7CiBjbGFzcyBXZWJHTFBy
b2dyYW07CkBAIC01NCw2ICs1NSw3IEBAIGNsYXNzIEhUTUxWaWRlb0VsZW1lbnQ7CiBjbGFzcyBJ
bWFnZUJ1ZmZlcjsKIGNsYXNzIEltYWdlRGF0YTsKIGNsYXNzIEludFNpemU7CitjbGFzcyBPRVNU
ZXh0dXJlRmxvYXQ7CiAKIGNsYXNzIFdlYkdMUmVuZGVyaW5nQ29udGV4dCA6IHB1YmxpYyBDYW52
YXNSZW5kZXJpbmdDb250ZXh0IHsKIHB1YmxpYzoKQEAgLTE0NCw2ICsxNDYsOCBAQCBwdWJsaWM6
CiAKICAgICB1bnNpZ25lZCBsb25nIGdldEVycm9yKCk7CiAKKyAgICBXZWJHTEV4dGVuc2lvbiog
Z2V0RXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgbmFtZSk7CisKICAgICBXZWJHTEdldEluZm8gZ2V0
RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyKHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNp
Z25lZCBsb25nIGF0dGFjaG1lbnQsIHVuc2lnbmVkIGxvbmcgcG5hbWUsIEV4Y2VwdGlvbkNvZGUm
KTsKIAogICAgIFdlYkdMR2V0SW5mbyBnZXRQYXJhbWV0ZXIodW5zaWduZWQgbG9uZyBwbmFtZSwg
RXhjZXB0aW9uQ29kZSYpOwpAQCAtMTYzLDYgKzE2Nyw4IEBAIHB1YmxpYzoKIAogICAgIFN0cmlu
ZyBnZXRTaGFkZXJTb3VyY2UoV2ViR0xTaGFkZXIqLCBFeGNlcHRpb25Db2RlJik7CiAKKyAgICBW
ZWN0b3I8U3RyaW5nPiBnZXRTdXBwb3J0ZWRFeHRlbnNpb25zKCk7CisKICAgICBXZWJHTEdldElu
Zm8gZ2V0VGV4UGFyYW1ldGVyKHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25nIHBu
YW1lLCBFeGNlcHRpb25Db2RlJik7CiAKICAgICBXZWJHTEdldEluZm8gZ2V0VW5pZm9ybShXZWJH
TFByb2dyYW0qLCBjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiosIEV4Y2VwdGlvbkNvZGUmKTsK
QEAgLTQ0Myw2ICs0NDksOSBAQCBwdWJsaWM6CiAgICAgYm9vbCBtX2lzUmVzb3VyY2VTYWZlOwog
ICAgIGJvb2wgbV9pc0RlcHRoU3RlbmNpbFN1cHBvcnRlZDsKIAorICAgIC8vIEVuYWJsZWQgZXh0
ZW5zaW9uIG9iamVjdHMuCisgICAgUmVmUHRyPE9FU1RleHR1cmVGbG9hdD4gbV9vZXNUZXh0dXJl
RmxvYXQ7CisKICAgICAvLyBIZWxwZXJzIGZvciBnZXRQYXJhbWV0ZXIgYW5kIG90aGVycwogICAg
IFdlYkdMR2V0SW5mbyBnZXRCb29sZWFuUGFyYW1ldGVyKHVuc2lnbmVkIGxvbmcgcG5hbWUpOwog
ICAgIFdlYkdMR2V0SW5mbyBnZXRCb29sZWFuQXJyYXlQYXJhbWV0ZXIodW5zaWduZWQgbG9uZyBw
bmFtZSk7CkluZGV4OiBXZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5p
ZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRl
eHQuaWRsCShyZXZpc2lvbiA3MzMxOSkKKysrIFdlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5k
ZXJpbmdDb250ZXh0LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjg3LDcgKzI4Nyw2IEBAIG1vZHVs
ZSBodG1sIHsKICAgICAgICAgY29uc3QgdW5zaWduZWQgaW50IFZFTkRPUiAgICAgICAgICAgICAg
ICAgICAgICAgICA9IDB4MUYwMDsKICAgICAgICAgY29uc3QgdW5zaWduZWQgaW50IFJFTkRFUkVS
ICAgICAgICAgICAgICAgICAgICAgICA9IDB4MUYwMTsKICAgICAgICAgY29uc3QgdW5zaWduZWQg
aW50IFZFUlNJT04gICAgICAgICAgICAgICAgICAgICAgICA9IDB4MUYwMjsKLSAgICAgICAgY29u
c3QgdW5zaWduZWQgaW50IEVYVEVOU0lPTlMgICAgICAgICAgICAgICAgICAgICA9IDB4MUYwMzsK
IAogICAgICAgICAvKiBUZXh0dXJlTWFnRmlsdGVyICovCiAgICAgICAgIGNvbnN0IHVuc2lnbmVk
IGludCBORUFSRVNUICAgICAgICAgICAgICAgICAgICAgICAgPSAweDI2MDA7CkBAIC01MzUsNiAr
NTM0LDkgQEAgbW9kdWxlIGh0bWwgewogCiAgICAgICAgIFtTdHJpY3RUeXBlQ2hlY2tpbmddIHVu
c2lnbmVkIGxvbmcgZ2V0RXJyb3IoKTsKIAorICAgICAgICAvLyBvYmplY3QgZ2V0RXh0ZW5zaW9u
KGluIERPTVN0cmluZyBuYW1lKTsKKyAgICAgICAgW1N0cmljdFR5cGVDaGVja2luZywgQ3VzdG9t
XSB2b2lkIGdldEV4dGVuc2lvbihpbiBET01TdHJpbmcgbmFtZSk7CisKICAgICAgICAgLy8gYW55
IGdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcihpbiB1bnNpZ25lZCBsb25nIHRhcmdl
dCwgaW4gdW5zaWduZWQgbG9uZyBhdHRhY2htZW50LCBpbiB1bnNpZ25lZCBsb25nIHBuYW1lKSBy
YWlzZXMoRE9NRXhjZXB0aW9uKTsKICAgICAgICAgW1N0cmljdFR5cGVDaGVja2luZywgQ3VzdG9t
XSB2b2lkIGdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcigpOwogICAgICAgICAvLyBh
bnkgZ2V0UGFyYW1ldGVyKGluIHVuc2lnbmVkIGxvbmcgcG5hbWUpIHJhaXNlcyhET01FeGNlcHRp
b24pOwpAQCAtNTU0LDYgKzU1Niw5IEBAIG1vZHVsZSBodG1sIHsKIAogICAgICAgICBbU3RyaWN0
VHlwZUNoZWNraW5nLCBDb252ZXJ0TnVsbFN0cmluZ1RvPU51bGxdIERPTVN0cmluZyAgICBnZXRT
aGFkZXJTb3VyY2UoaW4gV2ViR0xTaGFkZXIgc2hhZGVyKSByYWlzZXMoRE9NRXhjZXB0aW9uKTsK
IAorICAgICAgICAvLyBET01TdHJpbmdbXSBnZXRTdXBwb3J0ZWRFeHRlbnNpb25zKCkKKyAgICAg
ICAgW1N0cmljdFR5cGVDaGVja2luZywgQ3VzdG9tXSB2b2lkIGdldFN1cHBvcnRlZEV4dGVuc2lv
bnMoKTsKKwogICAgICAgICAvLyBhbnkgZ2V0VGV4UGFyYW1ldGVyKGluIHVuc2lnbmVkIGxvbmcg
dGFyZ2V0LCBpbiB1bnNpZ25lZCBsb25nIHBuYW1lKSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKICAg
ICAgICAgW1N0cmljdFR5cGVDaGVja2luZywgQ3VzdG9tXSB2b2lkIGdldFRleFBhcmFtZXRlcigp
OwogCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0V4dGVuc2lvbnMzRC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRXh0ZW5zaW9uczNELmgJKHJldmlz
aW9uIDczMzE5KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9FeHRlbnNpb25zM0QuaAko
d29ya2luZyBjb3B5KQpAQCAtNTAsMTEgKzUwLDE3IEBAIHB1YmxpYzoKICAgICAvLyAgIEdMX0FS
Ql90ZXh0dXJlX25vbl9wb3dlcl9vZl90d28gLyBHTF9PRVNfdGV4dHVyZV9ucG90CiAgICAgLy8g
ICBHTF9FWFRfcGFja2VkX2RlcHRoX3N0ZW5jaWwgLyBHTF9PRVNfcGFja2VkX2RlcHRoX3N0ZW5j
aWwKICAgICAvLyAgIEdMX0FOR0xFX2ZyYW1lYnVmZmVyX2JsaXQgLyBHTF9BTkdMRV9mcmFtZWJ1
ZmZlcl9tdWx0aXNhbXBsZQorICAgIC8vICAgR0xfT0VTX3RleHR1cmVfZmxvYXQKIAogICAgIC8v
IFRha2VzIGZ1bGwgbmFtZSBvZiBleHRlbnNpb247IGZvciBleGFtcGxlLAogICAgIC8vICJHTF9F
WFRfdGV4dHVyZV9mb3JtYXRfQkdSQTg4ODgiLgogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0cyhj
b25zdCBTdHJpbmcmKSA9IDA7CiAKKyAgICAvLyBDZXJ0YWluIE9wZW5HTCBhbmQgV2ViR0wgaW1w
bGVtZW50YXRpb25zIG1heSBzdXBwb3J0IGVuYWJsaW5nCisgICAgLy8gZXh0ZW5zaW9ucyBsYXpp
bHkuIFJldHVybnMgdHJ1ZSBpZiB0aGUgZ2l2ZW4gZXh0ZW5zaW9uIGhhcyBiZWVuCisgICAgLy8g
c3VjY2Vzc2Z1bGx5IGVuYWJsZWQuCisgICAgdmlydHVhbCBib29sIGVuc3VyZUVuYWJsZWQoY29u
c3QgU3RyaW5nJikgPSAwOworCiAgICAgZW51bSBFeHRlbnNpb25zRW51bVR5cGUgewogICAgICAg
ICAvLyBHTF9FWFRfdGV4dHVyZV9mb3JtYXRfQkdSQTg4ODggZW51bXMKICAgICAgICAgQkdSQV9F
WFQgPSAweDgwRTEsCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29u
dGV4dDNELmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBo
aWNzQ29udGV4dDNELmNwcAkocmV2aXNpb24gNzMzMTkpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmNwcAkod29ya2luZyBjb3B5KQpAQCAtODYsNiArODYs
OSBAQCBib29sIEdyYXBoaWNzQ29udGV4dDNEOjpjb21wdXRlRm9ybWF0QW5kCiAgICAgICAgICpj
b21wb25lbnRzUGVyUGl4ZWwgPSAxOwogICAgICAgICAqYnl0ZXNQZXJDb21wb25lbnQgPSBzaXpl
b2YodW5zaWduZWQgc2hvcnQpOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIEdyYXBoaWNzQ29u
dGV4dDNEOjpGTE9BVDogLy8gT0VTX3RleHR1cmVfZmxvYXQKKyAgICAgICAgKmJ5dGVzUGVyQ29t
cG9uZW50ID0gc2l6ZW9mKGZsb2F0KTsKKyAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KQEAgLTE4OCw2ICsxOTEsMjcgQEAgYm9vbCBHcmFw
aGljc0NvbnRleHQzRDo6ZXh0cmFjdFRleHR1cmVEYQogICAgICAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBGTE9BVDogLy8g
T0VTX3RleHR1cmVfZmxvYXQKKyAgICAgICAgc3dpdGNoIChmb3JtYXQpIHsKKyAgICAgICAgY2Fz
ZSBSR0JBOgorICAgICAgICAgICAgc291cmNlRGF0YUZvcm1hdCA9IFNvdXJjZUZvcm1hdFJHQkEz
MkY7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBSR0I6CisgICAgICAgICAgICBz
b3VyY2VEYXRhRm9ybWF0ID0gU291cmNlRm9ybWF0UkdCMzJGOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIGNhc2UgQUxQSEE6CisgICAgICAgICAgICBzb3VyY2VEYXRhRm9ybWF0ID0gU291
cmNlRm9ybWF0QTMyRjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIExVTUlOQU5D
RToKKyAgICAgICAgICAgIHNvdXJjZURhdGFGb3JtYXQgPSBTb3VyY2VGb3JtYXRSMzJGOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgTFVNSU5BTkNFX0FMUEhBOgorICAgICAgICAg
ICAgc291cmNlRGF0YUZvcm1hdCA9IFNvdXJjZUZvcm1hdFJBMzJGOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
KyAgICAgICAgfQorICAgICAgICBicmVhazsKICAgICBjYXNlIFVOU0lHTkVEX1NIT1JUXzVfNV81
XzE6CiAgICAgICAgIHNvdXJjZURhdGFGb3JtYXQgPSBTb3VyY2VGb3JtYXRSR0JBNTU1MTsKICAg
ICAgICAgYnJlYWs7CkBAIC01MDEsNiArNTI1LDM4IEBAIHZvaWQgdW5wYWNrQTE2QmlnVG9SR0JB
OChjb25zdCB1aW50MTZfdCoKICAgICBkZXN0aW5hdGlvblszXSA9IGNvbnZlcnRDb2xvcjE2Qmln
VG84KHNvdXJjZVswXSk7CiB9CiAKK3ZvaWQgdW5wYWNrUkdCMzJGVG9SR0JBMzJGKGNvbnN0IGZs
b2F0KiBzb3VyY2UsIGZsb2F0KiBkZXN0aW5hdGlvbikKK3sKKyAgICBkZXN0aW5hdGlvblswXSA9
IHNvdXJjZVswXTsKKyAgICBkZXN0aW5hdGlvblsxXSA9IHNvdXJjZVsxXTsKKyAgICBkZXN0aW5h
dGlvblsyXSA9IHNvdXJjZVsyXTsKKyAgICBkZXN0aW5hdGlvblszXSA9IDE7Cit9CisKK3ZvaWQg
dW5wYWNrUjMyRlRvUkdCQTMyRihjb25zdCBmbG9hdCogc291cmNlLCBmbG9hdCogZGVzdGluYXRp
b24pCit7CisgICAgZGVzdGluYXRpb25bMF0gPSBzb3VyY2VbMF07CisgICAgZGVzdGluYXRpb25b
MV0gPSBzb3VyY2VbMF07CisgICAgZGVzdGluYXRpb25bMl0gPSBzb3VyY2VbMF07CisgICAgZGVz
dGluYXRpb25bM10gPSAxOworfQorCit2b2lkIHVucGFja1JBMzJGVG9SR0JBMzJGKGNvbnN0IGZs
b2F0KiBzb3VyY2UsIGZsb2F0KiBkZXN0aW5hdGlvbikKK3sKKyAgICBkZXN0aW5hdGlvblswXSA9
IHNvdXJjZVswXTsKKyAgICBkZXN0aW5hdGlvblsxXSA9IHNvdXJjZVswXTsKKyAgICBkZXN0aW5h
dGlvblsyXSA9IHNvdXJjZVswXTsKKyAgICBkZXN0aW5hdGlvblszXSA9IHNvdXJjZVsxXTsKK30K
Kwordm9pZCB1bnBhY2tBMzJGVG9SR0JBMzJGKGNvbnN0IGZsb2F0KiBzb3VyY2UsIGZsb2F0KiBk
ZXN0aW5hdGlvbikKK3sKKyAgICBkZXN0aW5hdGlvblswXSA9IDA7CisgICAgZGVzdGluYXRpb25b
MV0gPSAwOworICAgIGRlc3RpbmF0aW9uWzJdID0gMDsKKyAgICBkZXN0aW5hdGlvblszXSA9IHNv
dXJjZVswXTsKK30KKwogLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAvLyBQaXhlbCBwYWNraW5nIHJvdXRpbmVz
LgogLy8KQEAgLTcxMywxNCArNzY5LDY4IEBAIHZvaWQgcGFja1JHQkE4VG9VbnNpZ25lZFNob3J0
NTY1VW5tdWx0aXAKICAgICAgICAgICAgICAgICAgICAgfCAoKHNvdXJjZUIgJiAweEY4KSA+PiAz
KSk7CiB9CiAKK3ZvaWQgcGFja1JHQkEzMkZUb1JHQjMyRihjb25zdCBmbG9hdCogc291cmNlLCBm
bG9hdCogZGVzdGluYXRpb24pCit7CisgICAgZGVzdGluYXRpb25bMF0gPSBzb3VyY2VbMF07Cisg
ICAgZGVzdGluYXRpb25bMV0gPSBzb3VyY2VbMV07CisgICAgZGVzdGluYXRpb25bMl0gPSBzb3Vy
Y2VbMl07Cit9CisKK3ZvaWQgcGFja1JHQkEzMkZUb1JHQjMyRlByZW11bHRpcGx5KGNvbnN0IGZs
b2F0KiBzb3VyY2UsIGZsb2F0KiBkZXN0aW5hdGlvbikKK3sKKyAgICBmbG9hdCBzY2FsZUZhY3Rv
ciA9IHNvdXJjZVszXTsKKyAgICBkZXN0aW5hdGlvblswXSA9IHNvdXJjZVswXSAqIHNjYWxlRmFj
dG9yOworICAgIGRlc3RpbmF0aW9uWzFdID0gc291cmNlWzFdICogc2NhbGVGYWN0b3I7CisgICAg
ZGVzdGluYXRpb25bMl0gPSBzb3VyY2VbMl0gKiBzY2FsZUZhY3RvcjsKK30KKwordm9pZCBwYWNr
UkdCQTMyRlRvUkdCQTMyRlByZW11bHRpcGx5KGNvbnN0IGZsb2F0KiBzb3VyY2UsIGZsb2F0KiBk
ZXN0aW5hdGlvbikKK3sKKyAgICBmbG9hdCBzY2FsZUZhY3RvciA9IHNvdXJjZVszXTsKKyAgICBk
ZXN0aW5hdGlvblswXSA9IHNvdXJjZVswXSAqIHNjYWxlRmFjdG9yOworICAgIGRlc3RpbmF0aW9u
WzFdID0gc291cmNlWzFdICogc2NhbGVGYWN0b3I7CisgICAgZGVzdGluYXRpb25bMl0gPSBzb3Vy
Y2VbMl0gKiBzY2FsZUZhY3RvcjsKKyAgICBkZXN0aW5hdGlvblszXSA9IHNvdXJjZVszXTsKK30K
Kwordm9pZCBwYWNrUkdCQTMyRlRvQTMyRihjb25zdCBmbG9hdCogc291cmNlLCBmbG9hdCogZGVz
dGluYXRpb24pCit7CisgICAgZGVzdGluYXRpb25bMF0gPSBzb3VyY2VbM107Cit9CisKK3ZvaWQg
cGFja1JHQkEzMkZUb1IzMkYoY29uc3QgZmxvYXQqIHNvdXJjZSwgZmxvYXQqIGRlc3RpbmF0aW9u
KQoreworICAgIGRlc3RpbmF0aW9uWzBdID0gc291cmNlWzBdOworfQorCit2b2lkIHBhY2tSR0JB
MzJGVG9SMzJGUHJlbXVsdGlwbHkoY29uc3QgZmxvYXQqIHNvdXJjZSwgZmxvYXQqIGRlc3RpbmF0
aW9uKQoreworICAgIGZsb2F0IHNjYWxlRmFjdG9yID0gc291cmNlWzNdOworICAgIGRlc3RpbmF0
aW9uWzBdID0gc291cmNlWzBdICogc2NhbGVGYWN0b3I7Cit9CisKKwordm9pZCBwYWNrUkdCQTMy
RlRvUkEzMkYoY29uc3QgZmxvYXQqIHNvdXJjZSwgZmxvYXQqIGRlc3RpbmF0aW9uKQoreworICAg
IGRlc3RpbmF0aW9uWzBdID0gc291cmNlWzBdOworICAgIGRlc3RpbmF0aW9uWzFdID0gc291cmNl
WzNdOworfQorCit2b2lkIHBhY2tSR0JBMzJGVG9SQTMyRlByZW11bHRpcGx5KGNvbnN0IGZsb2F0
KiBzb3VyY2UsIGZsb2F0KiBkZXN0aW5hdGlvbikKK3sKKyAgICBmbG9hdCBzY2FsZUZhY3RvciA9
IHNvdXJjZVszXTsKKyAgICBkZXN0aW5hdGlvblswXSA9IHNvdXJjZVswXSAqIHNjYWxlRmFjdG9y
OworICAgIGRlc3RpbmF0aW9uWzFdID0gc2NhbGVGYWN0b3I7Cit9CisKIH0gLy8gYW5vbnltb3Vz
IG5hbWVzcGFjZQogCiAvLyBUaGlzIGlzIHVzZWQgd2hlbmV2ZXIgdW5wYWNraW5nIGlzIG5lY2Vz
c2FyeTsgaS5lLiwgdGhlIHNvdXJjZSBkYXRhCi0vLyBpcyBub3QgaW4gUkdCQTggZm9ybWF0LCBv
ciB0aGUgdW5wYWNrIGFsaWdubWVudCBzcGVjaWZpZXMgdGhhdCByb3dzCi0vLyBhcmUgbm90IHRp
Z2h0bHkgcGFja2VkLgotdGVtcGxhdGU8dHlwZW5hbWUgU291cmNlVHlwZSwgdHlwZW5hbWUgRGVz
dFR5cGUsCi0gICAgICAgICB2b2lkIHVucGFja2luZ0Z1bmMoY29uc3QgU291cmNlVHlwZSosIHVp
bnQ4X3QqKSwKLSAgICAgICAgIHZvaWQgcGFja2luZ0Z1bmMoY29uc3QgdWludDhfdCosIERlc3RU
eXBlKik+CisvLyBpcyBub3QgaW4gUkdCQTgvUkdCQTMyRiBmb3JtYXQsIG9yIHRoZSB1bnBhY2sg
YWxpZ25tZW50IHNwZWNpZmllcworLy8gdGhhdCByb3dzIGFyZSBub3QgdGlnaHRseSBwYWNrZWQu
Cit0ZW1wbGF0ZTx0eXBlbmFtZSBTb3VyY2VUeXBlLCB0eXBlbmFtZSBJbnRlcm1lZGlhdGVUeXBl
LCB0eXBlbmFtZSBEZXN0VHlwZSwKKyAgICAgICAgIHZvaWQgdW5wYWNraW5nRnVuYyhjb25zdCBT
b3VyY2VUeXBlKiwgSW50ZXJtZWRpYXRlVHlwZSopLAorICAgICAgICAgdm9pZCBwYWNraW5nRnVu
Yyhjb25zdCBJbnRlcm1lZGlhdGVUeXBlKiwgRGVzdFR5cGUqKT4KIHN0YXRpYyB2b2lkIGRvVW5w
YWNraW5nQW5kUGFja2luZyhjb25zdCBTb3VyY2VUeXBlKiBzb3VyY2VEYXRhLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCB3aWR0aCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgaGVpZ2h0LApAQCAtNzMyLDcgKzg0
Miw3IEBAIHN0YXRpYyB2b2lkIGRvVW5wYWNraW5nQW5kUGFja2luZyhjb25zdCAKICAgICBpZiAo
IXNvdXJjZUVsZW1lbnRzUGVyUm93KSB7CiAgICAgICAgIHVuc2lnbmVkIGludCBudW1FbGVtZW50
cyA9IHdpZHRoICogaGVpZ2h0ICogc291cmNlRWxlbWVudHNQZXJQaXhlbDsKICAgICAgICAgY29u
c3QgU291cmNlVHlwZSogZW5kUG9pbnRlciA9IHNvdXJjZURhdGEgKyBudW1FbGVtZW50czsKLSAg
ICAgICAgdWludDhfdCB0ZW1wb3JhcnlSR0JBRGF0YVs0XTsKKyAgICAgICAgSW50ZXJtZWRpYXRl
VHlwZSB0ZW1wb3JhcnlSR0JBRGF0YVs0XTsKICAgICAgICAgd2hpbGUgKHNvdXJjZURhdGEgPCBl
bmRQb2ludGVyKSB7CiAgICAgICAgICAgICB1bnBhY2tpbmdGdW5jKHNvdXJjZURhdGEsIHRlbXBv
cmFyeVJHQkFEYXRhKTsKICAgICAgICAgICAgIHBhY2tpbmdGdW5jKHRlbXBvcmFyeVJHQkFEYXRh
LCBkZXN0aW5hdGlvbkRhdGEpOwpAQCAtNzQwLDcgKzg1MCw3IEBAIHN0YXRpYyB2b2lkIGRvVW5w
YWNraW5nQW5kUGFja2luZyhjb25zdCAKICAgICAgICAgICAgIGRlc3RpbmF0aW9uRGF0YSArPSBk
ZXN0aW5hdGlvbkVsZW1lbnRzUGVyUGl4ZWw7CiAgICAgICAgIH0KICAgICB9IGVsc2UgewotICAg
ICAgICB1aW50OF90IHRlbXBvcmFyeVJHQkFEYXRhWzRdOworICAgICAgICBJbnRlcm1lZGlhdGVU
eXBlIHRlbXBvcmFyeVJHQkFEYXRhWzRdOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGludCB5ID0g
MDsgeSA8IGhlaWdodDsgKyt5KSB7CiAgICAgICAgICAgICBjb25zdCBTb3VyY2VUeXBlKiBjdXJy
ZW50U291cmNlID0gc291cmNlRGF0YTsKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaW50IHgg
PSAwOyB4IDwgd2lkdGg7ICsreCkgewpAQCAtODAyLDE3NiArOTEyLDIzMyBAQCBzdGF0aWMgdm9p
ZCBkb1BhY2tpbmcoY29uc3Qgdm9pZCogc291cmNlCiAgICAgICAgICAgICAgICAgZGVzdGluYXRp
b25EYXRhICs9IGRlc3RpbmF0aW9uRWxlbWVudHNQZXJQaXhlbDsKICAgICAgICAgICAgIH0KICAg
ICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGRvVW5wYWNraW5nQW5kUGFja2luZzx1aW50OF90
LCBEZXN0VHlwZSwgdW5wYWNrUkdCQThUb1JHQkE4LCBwYWNraW5nRnVuYz4oc3RhdGljX2Nhc3Q8
Y29uc3QgdWludDhfdCo+KHNvdXJjZURhdGEpLCB3aWR0aCwgaGVpZ2h0LCBzb3VyY2VFbGVtZW50
c1BlclBpeGVsLCBzb3VyY2VFbGVtZW50c1BlclJvdywgZGVzdGluYXRpb25EYXRhLCBkZXN0aW5h
dGlvbkVsZW1lbnRzUGVyUGl4ZWwpOworICAgICAgICAgICAgZG9VbnBhY2tpbmdBbmRQYWNraW5n
PHVpbnQ4X3QsIHVpbnQ4X3QsIERlc3RUeXBlLCB1bnBhY2tSR0JBOFRvUkdCQTgsIHBhY2tpbmdG
dW5jPihzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oc291cmNlRGF0YSksIHdpZHRoLCBoZWln
aHQsIHNvdXJjZUVsZW1lbnRzUGVyUGl4ZWwsIHNvdXJjZUVsZW1lbnRzUGVyUm93LCBkZXN0aW5h
dGlvbkRhdGEsIGRlc3RpbmF0aW9uRWxlbWVudHNQZXJQaXhlbCk7CiAgICAgICAgIH0KICAgICAg
ICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlNvdXJjZUZvcm1h
dFJHQkExNkxpdHRsZTogewogICAgICAgICB1bnNpZ25lZCBpbnQgc291cmNlRWxlbWVudHNQZXJQ
aXhlbCwgc291cmNlRWxlbWVudHNQZXJSb3c7CiAgICAgICAgIGNvbXB1dGVJbmNyZW1lbnRQYXJh
bWV0ZXJzPHVpbnQxNl90Pih3aWR0aCwgOCwgc291cmNlVW5wYWNrQWxpZ25tZW50LCAmc291cmNl
RWxlbWVudHNQZXJQaXhlbCwgJnNvdXJjZUVsZW1lbnRzUGVyUm93KTsKLSAgICAgICAgZG9VbnBh
Y2tpbmdBbmRQYWNraW5nPHVpbnQxNl90LCBEZXN0VHlwZSwgdW5wYWNrUkdCQTE2TGl0dGxlVG9S
R0JBOCwgcGFja2luZ0Z1bmM+KHN0YXRpY19jYXN0PGNvbnN0IHVpbnQxNl90Kj4oc291cmNlRGF0
YSksIHdpZHRoLCBoZWlnaHQsIHNvdXJjZUVsZW1lbnRzUGVyUGl4ZWwsIHNvdXJjZUVsZW1lbnRz
UGVyUm93LCBkZXN0aW5hdGlvbkRhdGEsIGRlc3RpbmF0aW9uRWxlbWVudHNQZXJQaXhlbCk7Cisg
ICAgICAgIGRvVW5wYWNraW5nQW5kUGFja2luZzx1aW50MTZfdCwgdWludDhfdCwgRGVzdFR5cGUs
IHVucGFja1JHQkExNkxpdHRsZVRvUkdCQTgsIHBhY2tpbmdGdW5jPihzdGF0aWNfY2FzdDxjb25z
dCB1aW50MTZfdCo+KHNvdXJjZURhdGEpLCB3aWR0aCwgaGVpZ2h0LCBzb3VyY2VFbGVtZW50c1Bl
clBpeGVsLCBzb3VyY2VFbGVtZW50c1BlclJvdywgZGVzdGluYXRpb25EYXRhLCBkZXN0aW5hdGlv
bkVsZW1lbnRzUGVyUGl4ZWwpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBHcmFw
aGljc0NvbnRleHQzRDo6U291cmNlRm9ybWF0UkdCQTE2QmlnOiB7CiAgICAgICAgIHVuc2lnbmVk
IGludCBzb3VyY2VFbGVtZW50c1BlclBpeGVsLCBzb3VyY2VFbGVtZW50c1BlclJvdzsKICAgICAg
ICAgY29tcHV0ZUluY3JlbWVudFBhcmFtZXRlcnM8dWludDE2X3Q+KHdpZHRoLCA4LCBzb3VyY2VV
bnBhY2tBbGlnbm1lbnQsICZzb3VyY2VFbGVtZW50c1BlclBpeGVsLCAmc291cmNlRWxlbWVudHNQ
ZXJSb3cpOwotICAgICAgICBkb1VucGFja2luZ0FuZFBhY2tpbmc8dWludDE2X3QsIERlc3RUeXBl
LCB1bnBhY2tSR0JBMTZCaWdUb1JHQkE4LCBwYWNraW5nRnVuYz4oc3RhdGljX2Nhc3Q8Y29uc3Qg
dWludDE2X3QqPihzb3VyY2VEYXRhKSwgd2lkdGgsIGhlaWdodCwgc291cmNlRWxlbWVudHNQZXJQ
aXhlbCwgc291cmNlRWxlbWVudHNQZXJSb3csIGRlc3RpbmF0aW9uRGF0YSwgZGVzdGluYXRpb25F
bGVtZW50c1BlclBpeGVsKTsKKyAgICAgICAgZG9VbnBhY2tpbmdBbmRQYWNraW5nPHVpbnQxNl90
LCB1aW50OF90LCBEZXN0VHlwZSwgdW5wYWNrUkdCQTE2QmlnVG9SR0JBOCwgcGFja2luZ0Z1bmM+
KHN0YXRpY19jYXN0PGNvbnN0IHVpbnQxNl90Kj4oc291cmNlRGF0YSksIHdpZHRoLCBoZWlnaHQs
IHNvdXJjZUVsZW1lbnRzUGVyUGl4ZWwsIHNvdXJjZUVsZW1lbnRzUGVyUm93LCBkZXN0aW5hdGlv
bkRhdGEsIGRlc3RpbmF0aW9uRWxlbWVudHNQZXJQaXhlbCk7CiAgICAgICAgIGJyZWFrOwogICAg
IH0KICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpTb3VyY2VGb3JtYXRSR0I4OiB7CiAgICAg
ICAgIHVuc2lnbmVkIGludCBzb3VyY2VFbGVtZW50c1BlclBpeGVsLCBzb3VyY2VFbGVtZW50c1Bl
clJvdzsKICAgICAgICAgY29tcHV0ZUluY3JlbWVudFBhcmFtZXRlcnM8dWludDhfdD4od2lkdGgs
IDMsIHNvdXJjZVVucGFja0FsaWdubWVudCwgJnNvdXJjZUVsZW1lbnRzUGVyUGl4ZWwsICZzb3Vy
Y2VFbGVtZW50c1BlclJvdyk7Ci0gICAgICAgIGRvVW5wYWNraW5nQW5kUGFja2luZzx1aW50OF90
LCBEZXN0VHlwZSwgdW5wYWNrUkdCOFRvUkdCQTgsIHBhY2tpbmdGdW5jPihzdGF0aWNfY2FzdDxj
b25zdCB1aW50OF90Kj4oc291cmNlRGF0YSksIHdpZHRoLCBoZWlnaHQsIHNvdXJjZUVsZW1lbnRz
UGVyUGl4ZWwsIHNvdXJjZUVsZW1lbnRzUGVyUm93LCBkZXN0aW5hdGlvbkRhdGEsIGRlc3RpbmF0
aW9uRWxlbWVudHNQZXJQaXhlbCk7CisgICAgICAgIGRvVW5wYWNraW5nQW5kUGFja2luZzx1aW50
OF90LCB1aW50OF90LCBEZXN0VHlwZSwgdW5wYWNrUkdCOFRvUkdCQTgsIHBhY2tpbmdGdW5jPihz
dGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oc291cmNlRGF0YSksIHdpZHRoLCBoZWlnaHQsIHNv
dXJjZUVsZW1lbnRzUGVyUGl4ZWwsIHNvdXJjZUVsZW1lbnRzUGVyUm93LCBkZXN0aW5hdGlvbkRh
dGEsIGRlc3RpbmF0aW9uRWxlbWVudHNQZXJQaXhlbCk7CiAgICAgICAgIGJyZWFrOwogICAgIH0K
ICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpTb3VyY2VGb3JtYXRSR0IxNkxpdHRsZTogewog
ICAgICAgICB1bnNpZ25lZCBpbnQgc291cmNlRWxlbWVudHNQZXJQaXhlbCwgc291cmNlRWxlbWVu
dHNQZXJSb3c7CiAgICAgICAgIGNvbXB1dGVJbmNyZW1lbnRQYXJhbWV0ZXJzPHVpbnQxNl90Pih3
aWR0aCwgNiwgc291cmNlVW5wYWNrQWxpZ25tZW50LCAmc291cmNlRWxlbWVudHNQZXJQaXhlbCwg
JnNvdXJjZUVsZW1lbnRzUGVyUm93KTsKLSAgICAgICAgZG9VbnBhY2tpbmdBbmRQYWNraW5nPHVp
bnQxNl90LCBEZXN0VHlwZSwgdW5wYWNrUkdCMTZMaXR0bGVUb1JHQkE4LCBwYWNraW5nRnVuYz4o
c3RhdGljX2Nhc3Q8Y29uc3QgdWludDE2X3QqPihzb3VyY2VEYXRhKSwgd2lkdGgsIGhlaWdodCwg
c291cmNlRWxlbWVudHNQZXJQaXhlbCwgc291cmNlRWxlbWVudHNQZXJSb3csIGRlc3RpbmF0aW9u
RGF0YSwgZGVzdGluYXRpb25FbGVtZW50c1BlclBpeGVsKTsKKyAgICAgICAgZG9VbnBhY2tpbmdB
bmRQYWNraW5nPHVpbnQxNl90LCB1aW50OF90LCBEZXN0VHlwZSwgdW5wYWNrUkdCMTZMaXR0bGVU
b1JHQkE4LCBwYWNraW5nRnVuYz4oc3RhdGljX2Nhc3Q8Y29uc3QgdWludDE2X3QqPihzb3VyY2VE
YXRhKSwgd2lkdGgsIGhlaWdodCwgc291cmNlRWxlbWVudHNQZXJQaXhlbCwgc291cmNlRWxlbWVu
dHNQZXJSb3csIGRlc3RpbmF0aW9uRGF0YSwgZGVzdGluYXRpb25FbGVtZW50c1BlclBpeGVsKTsK
ICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlNvdXJj
ZUZvcm1hdFJHQjE2QmlnOiB7CiAgICAgICAgIHVuc2lnbmVkIGludCBzb3VyY2VFbGVtZW50c1Bl
clBpeGVsLCBzb3VyY2VFbGVtZW50c1BlclJvdzsKICAgICAgICAgY29tcHV0ZUluY3JlbWVudFBh
cmFtZXRlcnM8dWludDE2X3Q+KHdpZHRoLCA2LCBzb3VyY2VVbnBhY2tBbGlnbm1lbnQsICZzb3Vy
Y2VFbGVtZW50c1BlclBpeGVsLCAmc291cmNlRWxlbWVudHNQZXJSb3cpOwotICAgICAgICBkb1Vu
cGFja2luZ0FuZFBhY2tpbmc8dWludDE2X3QsIERlc3RUeXBlLCB1bnBhY2tSR0IxNkJpZ1RvUkdC
QTgsIHBhY2tpbmdGdW5jPihzdGF0aWNfY2FzdDxjb25zdCB1aW50MTZfdCo+KHNvdXJjZURhdGEp
LCB3aWR0aCwgaGVpZ2h0LCBzb3VyY2VFbGVtZW50c1BlclBpeGVsLCBzb3VyY2VFbGVtZW50c1Bl
clJvdywgZGVzdGluYXRpb25EYXRhLCBkZXN0aW5hdGlvbkVsZW1lbnRzUGVyUGl4ZWwpOworICAg
ICAgICBkb1VucGFja2luZ0FuZFBhY2tpbmc8dWludDE2X3QsIHVpbnQ4X3QsIERlc3RUeXBlLCB1
bnBhY2tSR0IxNkJpZ1RvUkdCQTgsIHBhY2tpbmdGdW5jPihzdGF0aWNfY2FzdDxjb25zdCB1aW50
MTZfdCo+KHNvdXJjZURhdGEpLCB3aWR0aCwgaGVpZ2h0LCBzb3VyY2VFbGVtZW50c1BlclBpeGVs
LCBzb3VyY2VFbGVtZW50c1BlclJvdywgZGVzdGluYXRpb25EYXRhLCBkZXN0aW5hdGlvbkVsZW1l
bnRzUGVyUGl4ZWwpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBHcmFwaGljc0Nv
bnRleHQzRDo6U291cmNlRm9ybWF0QkdSODogewogICAgICAgICB1bnNpZ25lZCBpbnQgc291cmNl
RWxlbWVudHNQZXJQaXhlbCwgc291cmNlRWxlbWVudHNQZXJSb3c7CiAgICAgICAgIGNvbXB1dGVJ
bmNyZW1lbnRQYXJhbWV0ZXJzPHVpbnQ4X3Q+KHdpZHRoLCAzLCBzb3VyY2VVbnBhY2tBbGlnbm1l
bnQsICZzb3VyY2VFbGVtZW50c1BlclBpeGVsLCAmc291cmNlRWxlbWVudHNQZXJSb3cpOwotICAg
ICAgICBkb1VucGFja2luZ0FuZFBhY2tpbmc8dWludDhfdCwgRGVzdFR5cGUsIHVucGFja0JHUjhU
b1JHQkE4LCBwYWNraW5nRnVuYz4oc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KHNvdXJjZURh
dGEpLCB3aWR0aCwgaGVpZ2h0LCBzb3VyY2VFbGVtZW50c1BlclBpeGVsLCBzb3VyY2VFbGVtZW50
c1BlclJvdywgZGVzdGluYXRpb25EYXRhLCBkZXN0aW5hdGlvbkVsZW1lbnRzUGVyUGl4ZWwpOwor
ICAgICAgICBkb1VucGFja2luZ0FuZFBhY2tpbmc8dWludDhfdCwgdWludDhfdCwgRGVzdFR5cGUs
IHVucGFja0JHUjhUb1JHQkE4LCBwYWNraW5nRnVuYz4oc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhf
dCo+KHNvdXJjZURhdGEpLCB3aWR0aCwgaGVpZ2h0LCBzb3VyY2VFbGVtZW50c1BlclBpeGVsLCBz
b3VyY2VFbGVtZW50c1BlclJvdywgZGVzdGluYXRpb25EYXRhLCBkZXN0aW5hdGlvbkVsZW1lbnRz
UGVyUGl4ZWwpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBHcmFwaGljc0NvbnRl
eHQzRDo6U291cmNlRm9ybWF0QVJHQjg6IHsKICAgICAgICAgdW5zaWduZWQgaW50IHNvdXJjZUVs
ZW1lbnRzUGVyUGl4ZWwsIHNvdXJjZUVsZW1lbnRzUGVyUm93OwogICAgICAgICBjb21wdXRlSW5j
cmVtZW50UGFyYW1ldGVyczx1aW50OF90Pih3aWR0aCwgNCwgc291cmNlVW5wYWNrQWxpZ25tZW50
LCAmc291cmNlRWxlbWVudHNQZXJQaXhlbCwgJnNvdXJjZUVsZW1lbnRzUGVyUm93KTsKLSAgICAg
ICAgZG9VbnBhY2tpbmdBbmRQYWNraW5nPHVpbnQ4X3QsIERlc3RUeXBlLCB1bnBhY2tBUkdCOFRv
UkdCQTgsIHBhY2tpbmdGdW5jPihzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oc291cmNlRGF0
YSksIHdpZHRoLCBoZWlnaHQsIHNvdXJjZUVsZW1lbnRzUGVyUGl4ZWwsIHNvdXJjZUVsZW1lbnRz
UGVyUm93LCBkZXN0aW5hdGlvbkRhdGEsIGRlc3RpbmF0aW9uRWxlbWVudHNQZXJQaXhlbCk7Cisg
ICAgICAgIGRvVW5wYWNraW5nQW5kUGFja2luZzx1aW50OF90LCB1aW50OF90LCBEZXN0VHlwZSwg
dW5wYWNrQVJHQjhUb1JHQkE4LCBwYWNraW5nRnVuYz4oc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhf
dCo+KHNvdXJjZURhdGEpLCB3aWR0aCwgaGVpZ2h0LCBzb3VyY2VFbGVtZW50c1BlclBpeGVsLCBz
b3VyY2VFbGVtZW50c1BlclJvdywgZGVzdGluYXRpb25EYXRhLCBkZXN0aW5hdGlvbkVsZW1lbnRz
UGVyUGl4ZWwpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBHcmFwaGljc0NvbnRl
eHQzRDo6U291cmNlRm9ybWF0QVJHQjE2TGl0dGxlOiB7CiAgICAgICAgIHVuc2lnbmVkIGludCBz
b3VyY2VFbGVtZW50c1BlclBpeGVsLCBzb3VyY2VFbGVtZW50c1BlclJvdzsKICAgICAgICAgY29t
cHV0ZUluY3JlbWVudFBhcmFtZXRlcnM8dWludDE2X3Q+KHdpZHRoLCA4LCBzb3VyY2VVbnBhY2tB
bGlnbm1lbnQsICZzb3VyY2VFbGVtZW50c1BlclBpeGVsLCAmc291cmNlRWxlbWVudHNQZXJSb3cp
OwotICAgICAgICBkb1VucGFja2luZ0FuZFBhY2tpbmc8dWludDE2X3QsIERlc3RUeXBlLCB1bnBh
Y2tBUkdCMTZMaXR0bGVUb1JHQkE4LCBwYWNraW5nRnVuYz4oc3RhdGljX2Nhc3Q8Y29uc3QgdWlu
dDE2X3QqPihzb3VyY2VEYXRhKSwgd2lkdGgsIGhlaWdodCwgc291cmNlRWxlbWVudHNQZXJQaXhl
bCwgc291cmNlRWxlbWVudHNQZXJSb3csIGRlc3RpbmF0aW9uRGF0YSwgZGVzdGluYXRpb25FbGVt
ZW50c1BlclBpeGVsKTsKKyAgICAgICAgZG9VbnBhY2tpbmdBbmRQYWNraW5nPHVpbnQxNl90LCB1
aW50OF90LCBEZXN0VHlwZSwgdW5wYWNrQVJHQjE2TGl0dGxlVG9SR0JBOCwgcGFja2luZ0Z1bmM+
KHN0YXRpY19jYXN0PGNvbnN0IHVpbnQxNl90Kj4oc291cmNlRGF0YSksIHdpZHRoLCBoZWlnaHQs
IHNvdXJjZUVsZW1lbnRzUGVyUGl4ZWwsIHNvdXJjZUVsZW1lbnRzUGVyUm93LCBkZXN0aW5hdGlv
bkRhdGEsIGRlc3RpbmF0aW9uRWxlbWVudHNQZXJQaXhlbCk7CiAgICAgICAgIGJyZWFrOwogICAg
IH0KICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpTb3VyY2VGb3JtYXRBUkdCMTZCaWc6IHsK
ICAgICAgICAgdW5zaWduZWQgaW50IHNvdXJjZUVsZW1lbnRzUGVyUGl4ZWwsIHNvdXJjZUVsZW1l
bnRzUGVyUm93OwogICAgICAgICBjb21wdXRlSW5jcmVtZW50UGFyYW1ldGVyczx1aW50MTZfdD4o
d2lkdGgsIDgsIHNvdXJjZVVucGFja0FsaWdubWVudCwgJnNvdXJjZUVsZW1lbnRzUGVyUGl4ZWws
ICZzb3VyY2VFbGVtZW50c1BlclJvdyk7Ci0gICAgICAgIGRvVW5wYWNraW5nQW5kUGFja2luZzx1
aW50MTZfdCwgRGVzdFR5cGUsIHVucGFja0FSR0IxNkJpZ1RvUkdCQTgsIHBhY2tpbmdGdW5jPihz
dGF0aWNfY2FzdDxjb25zdCB1aW50MTZfdCo+KHNvdXJjZURhdGEpLCB3aWR0aCwgaGVpZ2h0LCBz
b3VyY2VFbGVtZW50c1BlclBpeGVsLCBzb3VyY2VFbGVtZW50c1BlclJvdywgZGVzdGluYXRpb25E
YXRhLCBkZXN0aW5hdGlvbkVsZW1lbnRzUGVyUGl4ZWwpOworICAgICAgICBkb1VucGFja2luZ0Fu
ZFBhY2tpbmc8dWludDE2X3QsIHVpbnQ4X3QsIERlc3RUeXBlLCB1bnBhY2tBUkdCMTZCaWdUb1JH
QkE4LCBwYWNraW5nRnVuYz4oc3RhdGljX2Nhc3Q8Y29uc3QgdWludDE2X3QqPihzb3VyY2VEYXRh
KSwgd2lkdGgsIGhlaWdodCwgc291cmNlRWxlbWVudHNQZXJQaXhlbCwgc291cmNlRWxlbWVudHNQ
ZXJSb3csIGRlc3RpbmF0aW9uRGF0YSwgZGVzdGluYXRpb25FbGVtZW50c1BlclBpeGVsKTsKICAg
ICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlNvdXJjZUZv
cm1hdEFCR1I4OiB7CiAgICAgICAgIHVuc2lnbmVkIGludCBzb3VyY2VFbGVtZW50c1BlclBpeGVs
LCBzb3VyY2VFbGVtZW50c1BlclJvdzsKICAgICAgICAgY29tcHV0ZUluY3JlbWVudFBhcmFtZXRl
cnM8dWludDhfdD4od2lkdGgsIDQsIHNvdXJjZVVucGFja0FsaWdubWVudCwgJnNvdXJjZUVsZW1l
bnRzUGVyUGl4ZWwsICZzb3VyY2VFbGVtZW50c1BlclJvdyk7Ci0gICAgICAgIGRvVW5wYWNraW5n
QW5kUGFja2luZzx1aW50OF90LCBEZXN0VHlwZSwgdW5wYWNrQUJHUjhUb1JHQkE4LCBwYWNraW5n
RnVuYz4oc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KHNvdXJjZURhdGEpLCB3aWR0aCwgaGVp
Z2h0LCBzb3VyY2VFbGVtZW50c1BlclBpeGVsLCBzb3VyY2VFbGVtZW50c1BlclJvdywgZGVzdGlu
YXRpb25EYXRhLCBkZXN0aW5hdGlvbkVsZW1lbnRzUGVyUGl4ZWwpOworICAgICAgICBkb1VucGFj
a2luZ0FuZFBhY2tpbmc8dWludDhfdCwgdWludDhfdCwgRGVzdFR5cGUsIHVucGFja0FCR1I4VG9S
R0JBOCwgcGFja2luZ0Z1bmM+KHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihzb3VyY2VEYXRh
KSwgd2lkdGgsIGhlaWdodCwgc291cmNlRWxlbWVudHNQZXJQaXhlbCwgc291cmNlRWxlbWVudHNQ
ZXJSb3csIGRlc3RpbmF0aW9uRGF0YSwgZGVzdGluYXRpb25FbGVtZW50c1BlclBpeGVsKTsKICAg
ICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlNvdXJjZUZv
cm1hdEJHUkE4OiB7CiAgICAgICAgIHVuc2lnbmVkIGludCBzb3VyY2VFbGVtZW50c1BlclBpeGVs
LCBzb3VyY2VFbGVtZW50c1BlclJvdzsKICAgICAgICAgY29tcHV0ZUluY3JlbWVudFBhcmFtZXRl
cnM8dWludDhfdD4od2lkdGgsIDQsIHNvdXJjZVVucGFja0FsaWdubWVudCwgJnNvdXJjZUVsZW1l
bnRzUGVyUGl4ZWwsICZzb3VyY2VFbGVtZW50c1BlclJvdyk7Ci0gICAgICAgIGRvVW5wYWNraW5n
QW5kUGFja2luZzx1aW50OF90LCBEZXN0VHlwZSwgdW5wYWNrQkdSQThUb1JHQkE4LCBwYWNraW5n
RnVuYz4oc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KHNvdXJjZURhdGEpLCB3aWR0aCwgaGVp
Z2h0LCBzb3VyY2VFbGVtZW50c1BlclBpeGVsLCBzb3VyY2VFbGVtZW50c1BlclJvdywgZGVzdGlu
YXRpb25EYXRhLCBkZXN0aW5hdGlvbkVsZW1lbnRzUGVyUGl4ZWwpOworICAgICAgICBkb1VucGFj
a2luZ0FuZFBhY2tpbmc8dWludDhfdCwgdWludDhfdCwgRGVzdFR5cGUsIHVucGFja0JHUkE4VG9S
R0JBOCwgcGFja2luZ0Z1bmM+KHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihzb3VyY2VEYXRh
KSwgd2lkdGgsIGhlaWdodCwgc291cmNlRWxlbWVudHNQZXJQaXhlbCwgc291cmNlRWxlbWVudHNQ
ZXJSb3csIGRlc3RpbmF0aW9uRGF0YSwgZGVzdGluYXRpb25FbGVtZW50c1BlclBpeGVsKTsKICAg
ICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlNvdXJjZUZv
cm1hdEJHUkExNkxpdHRsZTogewogICAgICAgICB1bnNpZ25lZCBpbnQgc291cmNlRWxlbWVudHNQ
ZXJQaXhlbCwgc291cmNlRWxlbWVudHNQZXJSb3c7CiAgICAgICAgIGNvbXB1dGVJbmNyZW1lbnRQ
YXJhbWV0ZXJzPHVpbnQxNl90Pih3aWR0aCwgOCwgc291cmNlVW5wYWNrQWxpZ25tZW50LCAmc291
cmNlRWxlbWVudHNQZXJQaXhlbCwgJnNvdXJjZUVsZW1lbnRzUGVyUm93KTsKLSAgICAgICAgZG9V
bnBhY2tpbmdBbmRQYWNraW5nPHVpbnQxNl90LCBEZXN0VHlwZSwgdW5wYWNrQkdSQTE2TGl0dGxl
VG9SR0JBOCwgcGFja2luZ0Z1bmM+KHN0YXRpY19jYXN0PGNvbnN0IHVpbnQxNl90Kj4oc291cmNl
RGF0YSksIHdpZHRoLCBoZWlnaHQsIHNvdXJjZUVsZW1lbnRzUGVyUGl4ZWwsIHNvdXJjZUVsZW1l
bnRzUGVyUm93LCBkZXN0aW5hdGlvbkRhdGEsIGRlc3RpbmF0aW9uRWxlbWVudHNQZXJQaXhlbCk7
CisgICAgICAgIGRvVW5wYWNraW5nQW5kUGFja2luZzx1aW50MTZfdCwgdWludDhfdCwgRGVzdFR5
cGUsIHVucGFja0JHUkExNkxpdHRsZVRvUkdCQTgsIHBhY2tpbmdGdW5jPihzdGF0aWNfY2FzdDxj
b25zdCB1aW50MTZfdCo+KHNvdXJjZURhdGEpLCB3aWR0aCwgaGVpZ2h0LCBzb3VyY2VFbGVtZW50
c1BlclBpeGVsLCBzb3VyY2VFbGVtZW50c1BlclJvdywgZGVzdGluYXRpb25EYXRhLCBkZXN0aW5h
dGlvbkVsZW1lbnRzUGVyUGl4ZWwpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBH
cmFwaGljc0NvbnRleHQzRDo6U291cmNlRm9ybWF0QkdSQTE2QmlnOiB7CiAgICAgICAgIHVuc2ln
bmVkIGludCBzb3VyY2VFbGVtZW50c1BlclBpeGVsLCBzb3VyY2VFbGVtZW50c1BlclJvdzsKICAg
ICAgICAgY29tcHV0ZUluY3JlbWVudFBhcmFtZXRlcnM8dWludDE2X3Q+KHdpZHRoLCA4LCBzb3Vy
Y2VVbnBhY2tBbGlnbm1lbnQsICZzb3VyY2VFbGVtZW50c1BlclBpeGVsLCAmc291cmNlRWxlbWVu
dHNQZXJSb3cpOwotICAgICAgICBkb1VucGFja2luZ0FuZFBhY2tpbmc8dWludDE2X3QsIERlc3RU
eXBlLCB1bnBhY2tCR1JBMTZCaWdUb1JHQkE4LCBwYWNraW5nRnVuYz4oc3RhdGljX2Nhc3Q8Y29u
c3QgdWludDE2X3QqPihzb3VyY2VEYXRhKSwgd2lkdGgsIGhlaWdodCwgc291cmNlRWxlbWVudHNQ
ZXJQaXhlbCwgc291cmNlRWxlbWVudHNQZXJSb3csIGRlc3RpbmF0aW9uRGF0YSwgZGVzdGluYXRp
b25FbGVtZW50c1BlclBpeGVsKTsKKyAgICAgICAgZG9VbnBhY2tpbmdBbmRQYWNraW5nPHVpbnQx
Nl90LCB1aW50OF90LCBEZXN0VHlwZSwgdW5wYWNrQkdSQTE2QmlnVG9SR0JBOCwgcGFja2luZ0Z1
bmM+KHN0YXRpY19jYXN0PGNvbnN0IHVpbnQxNl90Kj4oc291cmNlRGF0YSksIHdpZHRoLCBoZWln
aHQsIHNvdXJjZUVsZW1lbnRzUGVyUGl4ZWwsIHNvdXJjZUVsZW1lbnRzUGVyUm93LCBkZXN0aW5h
dGlvbkRhdGEsIGRlc3RpbmF0aW9uRWxlbWVudHNQZXJQaXhlbCk7CiAgICAgICAgIGJyZWFrOwog
ICAgIH0KICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpTb3VyY2VGb3JtYXRSR0JBNTU1MTog
ewogICAgICAgICB1bnNpZ25lZCBpbnQgc291cmNlRWxlbWVudHNQZXJQaXhlbCwgc291cmNlRWxl
bWVudHNQZXJSb3c7CiAgICAgICAgIGNvbXB1dGVJbmNyZW1lbnRQYXJhbWV0ZXJzPHVpbnQxNl90
Pih3aWR0aCwgMiwgc291cmNlVW5wYWNrQWxpZ25tZW50LCAmc291cmNlRWxlbWVudHNQZXJQaXhl
bCwgJnNvdXJjZUVsZW1lbnRzUGVyUm93KTsKLSAgICAgICAgZG9VbnBhY2tpbmdBbmRQYWNraW5n
PHVpbnQxNl90LCBEZXN0VHlwZSwgdW5wYWNrUkdCQTU1NTFUb1JHQkE4LCBwYWNraW5nRnVuYz4o
c3RhdGljX2Nhc3Q8Y29uc3QgdWludDE2X3QqPihzb3VyY2VEYXRhKSwgd2lkdGgsIGhlaWdodCwg
c291cmNlRWxlbWVudHNQZXJQaXhlbCwgc291cmNlRWxlbWVudHNQZXJSb3csIGRlc3RpbmF0aW9u
RGF0YSwgZGVzdGluYXRpb25FbGVtZW50c1BlclBpeGVsKTsKKyAgICAgICAgZG9VbnBhY2tpbmdB
bmRQYWNraW5nPHVpbnQxNl90LCB1aW50OF90LCBEZXN0VHlwZSwgdW5wYWNrUkdCQTU1NTFUb1JH
QkE4LCBwYWNraW5nRnVuYz4oc3RhdGljX2Nhc3Q8Y29uc3QgdWludDE2X3QqPihzb3VyY2VEYXRh
KSwgd2lkdGgsIGhlaWdodCwgc291cmNlRWxlbWVudHNQZXJQaXhlbCwgc291cmNlRWxlbWVudHNQ
ZXJSb3csIGRlc3RpbmF0aW9uRGF0YSwgZGVzdGluYXRpb25FbGVtZW50c1BlclBpeGVsKTsKICAg
ICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlNvdXJjZUZv
cm1hdFJHQkE0NDQ0OiB7CiAgICAgICAgIHVuc2lnbmVkIGludCBzb3VyY2VFbGVtZW50c1BlclBp
eGVsLCBzb3VyY2VFbGVtZW50c1BlclJvdzsKICAgICAgICAgY29tcHV0ZUluY3JlbWVudFBhcmFt
ZXRlcnM8dWludDE2X3Q+KHdpZHRoLCAyLCBzb3VyY2VVbnBhY2tBbGlnbm1lbnQsICZzb3VyY2VF
bGVtZW50c1BlclBpeGVsLCAmc291cmNlRWxlbWVudHNQZXJSb3cpOwotICAgICAgICBkb1VucGFj
a2luZ0FuZFBhY2tpbmc8dWludDE2X3QsIERlc3RUeXBlLCB1bnBhY2tSR0JBNDQ0NFRvUkdCQTgs
IHBhY2tpbmdGdW5jPihzdGF0aWNfY2FzdDxjb25zdCB1aW50MTZfdCo+KHNvdXJjZURhdGEpLCB3
aWR0aCwgaGVpZ2h0LCBzb3VyY2VFbGVtZW50c1BlclBpeGVsLCBzb3VyY2VFbGVtZW50c1BlclJv
dywgZGVzdGluYXRpb25EYXRhLCBkZXN0aW5hdGlvbkVsZW1lbnRzUGVyUGl4ZWwpOworICAgICAg
ICBkb1VucGFja2luZ0FuZFBhY2tpbmc8dWludDE2X3QsIHVpbnQ4X3QsIERlc3RUeXBlLCB1bnBh
Y2tSR0JBNDQ0NFRvUkdCQTgsIHBhY2tpbmdGdW5jPihzdGF0aWNfY2FzdDxjb25zdCB1aW50MTZf
dCo+KHNvdXJjZURhdGEpLCB3aWR0aCwgaGVpZ2h0LCBzb3VyY2VFbGVtZW50c1BlclBpeGVsLCBz
b3VyY2VFbGVtZW50c1BlclJvdywgZGVzdGluYXRpb25EYXRhLCBkZXN0aW5hdGlvbkVsZW1lbnRz
UGVyUGl4ZWwpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBHcmFwaGljc0NvbnRl
eHQzRDo6U291cmNlRm9ybWF0UkdCNTY1OiB7CiAgICAgICAgIHVuc2lnbmVkIGludCBzb3VyY2VF
bGVtZW50c1BlclBpeGVsLCBzb3VyY2VFbGVtZW50c1BlclJvdzsKICAgICAgICAgY29tcHV0ZUlu
Y3JlbWVudFBhcmFtZXRlcnM8dWludDE2X3Q+KHdpZHRoLCAyLCBzb3VyY2VVbnBhY2tBbGlnbm1l
bnQsICZzb3VyY2VFbGVtZW50c1BlclBpeGVsLCAmc291cmNlRWxlbWVudHNQZXJSb3cpOwotICAg
ICAgICBkb1VucGFja2luZ0FuZFBhY2tpbmc8dWludDE2X3QsIERlc3RUeXBlLCB1bnBhY2tSR0I1
NjVUb1JHQkE4LCBwYWNraW5nRnVuYz4oc3RhdGljX2Nhc3Q8Y29uc3QgdWludDE2X3QqPihzb3Vy
Y2VEYXRhKSwgd2lkdGgsIGhlaWdodCwgc291cmNlRWxlbWVudHNQZXJQaXhlbCwgc291cmNlRWxl
bWVudHNQZXJSb3csIGRlc3RpbmF0aW9uRGF0YSwgZGVzdGluYXRpb25FbGVtZW50c1BlclBpeGVs
KTsKKyAgICAgICAgZG9VbnBhY2tpbmdBbmRQYWNraW5nPHVpbnQxNl90LCB1aW50OF90LCBEZXN0
VHlwZSwgdW5wYWNrUkdCNTY1VG9SR0JBOCwgcGFja2luZ0Z1bmM+KHN0YXRpY19jYXN0PGNvbnN0
IHVpbnQxNl90Kj4oc291cmNlRGF0YSksIHdpZHRoLCBoZWlnaHQsIHNvdXJjZUVsZW1lbnRzUGVy
UGl4ZWwsIHNvdXJjZUVsZW1lbnRzUGVyUm93LCBkZXN0aW5hdGlvbkRhdGEsIGRlc3RpbmF0aW9u
RWxlbWVudHNQZXJQaXhlbCk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBjYXNlIEdyYXBo
aWNzQ29udGV4dDNEOjpTb3VyY2VGb3JtYXRSODogewogICAgICAgICB1bnNpZ25lZCBpbnQgc291
cmNlRWxlbWVudHNQZXJQaXhlbCwgc291cmNlRWxlbWVudHNQZXJSb3c7CiAgICAgICAgIGNvbXB1
dGVJbmNyZW1lbnRQYXJhbWV0ZXJzPHVpbnQ4X3Q+KHdpZHRoLCAxLCBzb3VyY2VVbnBhY2tBbGln
bm1lbnQsICZzb3VyY2VFbGVtZW50c1BlclBpeGVsLCAmc291cmNlRWxlbWVudHNQZXJSb3cpOwot
ICAgICAgICBkb1VucGFja2luZ0FuZFBhY2tpbmc8dWludDhfdCwgRGVzdFR5cGUsIHVucGFja1I4
VG9SR0JBOCwgcGFja2luZ0Z1bmM+KHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihzb3VyY2VE
YXRhKSwgd2lkdGgsIGhlaWdodCwgc291cmNlRWxlbWVudHNQZXJQaXhlbCwgc291cmNlRWxlbWVu
dHNQZXJSb3csIGRlc3RpbmF0aW9uRGF0YSwgZGVzdGluYXRpb25FbGVtZW50c1BlclBpeGVsKTsK
KyAgICAgICAgZG9VbnBhY2tpbmdBbmRQYWNraW5nPHVpbnQ4X3QsIHVpbnQ4X3QsIERlc3RUeXBl
LCB1bnBhY2tSOFRvUkdCQTgsIHBhY2tpbmdGdW5jPihzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90
Kj4oc291cmNlRGF0YSksIHdpZHRoLCBoZWlnaHQsIHNvdXJjZUVsZW1lbnRzUGVyUGl4ZWwsIHNv
dXJjZUVsZW1lbnRzUGVyUm93LCBkZXN0aW5hdGlvbkRhdGEsIGRlc3RpbmF0aW9uRWxlbWVudHNQ
ZXJQaXhlbCk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBjYXNlIEdyYXBoaWNzQ29udGV4
dDNEOjpTb3VyY2VGb3JtYXRSMTZMaXR0bGU6IHsKICAgICAgICAgdW5zaWduZWQgaW50IHNvdXJj
ZUVsZW1lbnRzUGVyUGl4ZWwsIHNvdXJjZUVsZW1lbnRzUGVyUm93OwogICAgICAgICBjb21wdXRl
SW5jcmVtZW50UGFyYW1ldGVyczx1aW50MTZfdD4od2lkdGgsIDIsIHNvdXJjZVVucGFja0FsaWdu
bWVudCwgJnNvdXJjZUVsZW1lbnRzUGVyUGl4ZWwsICZzb3VyY2VFbGVtZW50c1BlclJvdyk7Ci0g
ICAgICAgIGRvVW5wYWNraW5nQW5kUGFja2luZzx1aW50MTZfdCwgRGVzdFR5cGUsIHVucGFja1Ix
NkxpdHRsZVRvUkdCQTgsIHBhY2tpbmdGdW5jPihzdGF0aWNfY2FzdDxjb25zdCB1aW50MTZfdCo+
KHNvdXJjZURhdGEpLCB3aWR0aCwgaGVpZ2h0LCBzb3VyY2VFbGVtZW50c1BlclBpeGVsLCBzb3Vy
Y2VFbGVtZW50c1BlclJvdywgZGVzdGluYXRpb25EYXRhLCBkZXN0aW5hdGlvbkVsZW1lbnRzUGVy
UGl4ZWwpOworICAgICAgICBkb1VucGFja2luZ0FuZFBhY2tpbmc8dWludDE2X3QsIHVpbnQ4X3Qs
IERlc3RUeXBlLCB1bnBhY2tSMTZMaXR0bGVUb1JHQkE4LCBwYWNraW5nRnVuYz4oc3RhdGljX2Nh
c3Q8Y29uc3QgdWludDE2X3QqPihzb3VyY2VEYXRhKSwgd2lkdGgsIGhlaWdodCwgc291cmNlRWxl
bWVudHNQZXJQaXhlbCwgc291cmNlRWxlbWVudHNQZXJSb3csIGRlc3RpbmF0aW9uRGF0YSwgZGVz
dGluYXRpb25FbGVtZW50c1BlclBpeGVsKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNh
c2UgR3JhcGhpY3NDb250ZXh0M0Q6OlNvdXJjZUZvcm1hdFIxNkJpZzogewogICAgICAgICB1bnNp
Z25lZCBpbnQgc291cmNlRWxlbWVudHNQZXJQaXhlbCwgc291cmNlRWxlbWVudHNQZXJSb3c7CiAg
ICAgICAgIGNvbXB1dGVJbmNyZW1lbnRQYXJhbWV0ZXJzPHVpbnQxNl90Pih3aWR0aCwgMiwgc291
cmNlVW5wYWNrQWxpZ25tZW50LCAmc291cmNlRWxlbWVudHNQZXJQaXhlbCwgJnNvdXJjZUVsZW1l
bnRzUGVyUm93KTsKLSAgICAgICAgZG9VbnBhY2tpbmdBbmRQYWNraW5nPHVpbnQxNl90LCBEZXN0
VHlwZSwgdW5wYWNrUjE2QmlnVG9SR0JBOCwgcGFja2luZ0Z1bmM+KHN0YXRpY19jYXN0PGNvbnN0
IHVpbnQxNl90Kj4oc291cmNlRGF0YSksIHdpZHRoLCBoZWlnaHQsIHNvdXJjZUVsZW1lbnRzUGVy
UGl4ZWwsIHNvdXJjZUVsZW1lbnRzUGVyUm93LCBkZXN0aW5hdGlvbkRhdGEsIGRlc3RpbmF0aW9u
RWxlbWVudHNQZXJQaXhlbCk7CisgICAgICAgIGRvVW5wYWNraW5nQW5kUGFja2luZzx1aW50MTZf
dCwgdWludDhfdCwgRGVzdFR5cGUsIHVucGFja1IxNkJpZ1RvUkdCQTgsIHBhY2tpbmdGdW5jPihz
dGF0aWNfY2FzdDxjb25zdCB1aW50MTZfdCo+KHNvdXJjZURhdGEpLCB3aWR0aCwgaGVpZ2h0LCBz
b3VyY2VFbGVtZW50c1BlclBpeGVsLCBzb3VyY2VFbGVtZW50c1BlclJvdywgZGVzdGluYXRpb25E
YXRhLCBkZXN0aW5hdGlvbkVsZW1lbnRzUGVyUGl4ZWwpOwogICAgICAgICBicmVhazsKICAgICB9
CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6U291cmNlRm9ybWF0UkE4OiB7CiAgICAgICAg
IHVuc2lnbmVkIGludCBzb3VyY2VFbGVtZW50c1BlclBpeGVsLCBzb3VyY2VFbGVtZW50c1BlclJv
dzsKICAgICAgICAgY29tcHV0ZUluY3JlbWVudFBhcmFtZXRlcnM8dWludDhfdD4od2lkdGgsIDIs
IHNvdXJjZVVucGFja0FsaWdubWVudCwgJnNvdXJjZUVsZW1lbnRzUGVyUGl4ZWwsICZzb3VyY2VF
bGVtZW50c1BlclJvdyk7Ci0gICAgICAgIGRvVW5wYWNraW5nQW5kUGFja2luZzx1aW50OF90LCBE
ZXN0VHlwZSwgdW5wYWNrUkE4VG9SR0JBOCwgcGFja2luZ0Z1bmM+KHN0YXRpY19jYXN0PGNvbnN0
IHVpbnQ4X3QqPihzb3VyY2VEYXRhKSwgd2lkdGgsIGhlaWdodCwgc291cmNlRWxlbWVudHNQZXJQ
aXhlbCwgc291cmNlRWxlbWVudHNQZXJSb3csIGRlc3RpbmF0aW9uRGF0YSwgZGVzdGluYXRpb25F
bGVtZW50c1BlclBpeGVsKTsKKyAgICAgICAgZG9VbnBhY2tpbmdBbmRQYWNraW5nPHVpbnQ4X3Qs
IHVpbnQ4X3QsIERlc3RUeXBlLCB1bnBhY2tSQThUb1JHQkE4LCBwYWNraW5nRnVuYz4oc3RhdGlj
X2Nhc3Q8Y29uc3QgdWludDhfdCo+KHNvdXJjZURhdGEpLCB3aWR0aCwgaGVpZ2h0LCBzb3VyY2VF
bGVtZW50c1BlclBpeGVsLCBzb3VyY2VFbGVtZW50c1BlclJvdywgZGVzdGluYXRpb25EYXRhLCBk
ZXN0aW5hdGlvbkVsZW1lbnRzUGVyUGl4ZWwpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAg
Y2FzZSBHcmFwaGljc0NvbnRleHQzRDo6U291cmNlRm9ybWF0UkExNkxpdHRsZTogewogICAgICAg
ICB1bnNpZ25lZCBpbnQgc291cmNlRWxlbWVudHNQZXJQaXhlbCwgc291cmNlRWxlbWVudHNQZXJS
b3c7CiAgICAgICAgIGNvbXB1dGVJbmNyZW1lbnRQYXJhbWV0ZXJzPHVpbnQxNl90Pih3aWR0aCwg
NCwgc291cmNlVW5wYWNrQWxpZ25tZW50LCAmc291cmNlRWxlbWVudHNQZXJQaXhlbCwgJnNvdXJj
ZUVsZW1lbnRzUGVyUm93KTsKLSAgICAgICAgZG9VbnBhY2tpbmdBbmRQYWNraW5nPHVpbnQxNl90
LCBEZXN0VHlwZSwgdW5wYWNrUkExNkxpdHRsZVRvUkdCQTgsIHBhY2tpbmdGdW5jPihzdGF0aWNf
Y2FzdDxjb25zdCB1aW50MTZfdCo+KHNvdXJjZURhdGEpLCB3aWR0aCwgaGVpZ2h0LCBzb3VyY2VF
bGVtZW50c1BlclBpeGVsLCBzb3VyY2VFbGVtZW50c1BlclJvdywgZGVzdGluYXRpb25EYXRhLCBk
ZXN0aW5hdGlvbkVsZW1lbnRzUGVyUGl4ZWwpOworICAgICAgICBkb1VucGFja2luZ0FuZFBhY2tp
bmc8dWludDE2X3QsIHVpbnQ4X3QsIERlc3RUeXBlLCB1bnBhY2tSQTE2TGl0dGxlVG9SR0JBOCwg
cGFja2luZ0Z1bmM+KHN0YXRpY19jYXN0PGNvbnN0IHVpbnQxNl90Kj4oc291cmNlRGF0YSksIHdp
ZHRoLCBoZWlnaHQsIHNvdXJjZUVsZW1lbnRzUGVyUGl4ZWwsIHNvdXJjZUVsZW1lbnRzUGVyUm93
LCBkZXN0aW5hdGlvbkRhdGEsIGRlc3RpbmF0aW9uRWxlbWVudHNQZXJQaXhlbCk7CiAgICAgICAg
IGJyZWFrOwogICAgIH0KICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpTb3VyY2VGb3JtYXRS
QTE2QmlnOiB7CiAgICAgICAgIHVuc2lnbmVkIGludCBzb3VyY2VFbGVtZW50c1BlclBpeGVsLCBz
b3VyY2VFbGVtZW50c1BlclJvdzsKICAgICAgICAgY29tcHV0ZUluY3JlbWVudFBhcmFtZXRlcnM8
dWludDE2X3Q+KHdpZHRoLCA0LCBzb3VyY2VVbnBhY2tBbGlnbm1lbnQsICZzb3VyY2VFbGVtZW50
c1BlclBpeGVsLCAmc291cmNlRWxlbWVudHNQZXJSb3cpOwotICAgICAgICBkb1VucGFja2luZ0Fu
ZFBhY2tpbmc8dWludDE2X3QsIERlc3RUeXBlLCB1bnBhY2tSQTE2QmlnVG9SR0JBOCwgcGFja2lu
Z0Z1bmM+KHN0YXRpY19jYXN0PGNvbnN0IHVpbnQxNl90Kj4oc291cmNlRGF0YSksIHdpZHRoLCBo
ZWlnaHQsIHNvdXJjZUVsZW1lbnRzUGVyUGl4ZWwsIHNvdXJjZUVsZW1lbnRzUGVyUm93LCBkZXN0
aW5hdGlvbkRhdGEsIGRlc3RpbmF0aW9uRWxlbWVudHNQZXJQaXhlbCk7CisgICAgICAgIGRvVW5w
YWNraW5nQW5kUGFja2luZzx1aW50MTZfdCwgdWludDhfdCwgRGVzdFR5cGUsIHVucGFja1JBMTZC
aWdUb1JHQkE4LCBwYWNraW5nRnVuYz4oc3RhdGljX2Nhc3Q8Y29uc3QgdWludDE2X3QqPihzb3Vy
Y2VEYXRhKSwgd2lkdGgsIGhlaWdodCwgc291cmNlRWxlbWVudHNQZXJQaXhlbCwgc291cmNlRWxl
bWVudHNQZXJSb3csIGRlc3RpbmF0aW9uRGF0YSwgZGVzdGluYXRpb25FbGVtZW50c1BlclBpeGVs
KTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlNv
dXJjZUZvcm1hdEFSODogewogICAgICAgICB1bnNpZ25lZCBpbnQgc291cmNlRWxlbWVudHNQZXJQ
aXhlbCwgc291cmNlRWxlbWVudHNQZXJSb3c7CiAgICAgICAgIGNvbXB1dGVJbmNyZW1lbnRQYXJh
bWV0ZXJzPHVpbnQ4X3Q+KHdpZHRoLCAyLCBzb3VyY2VVbnBhY2tBbGlnbm1lbnQsICZzb3VyY2VF
bGVtZW50c1BlclBpeGVsLCAmc291cmNlRWxlbWVudHNQZXJSb3cpOwotICAgICAgICBkb1VucGFj
a2luZ0FuZFBhY2tpbmc8dWludDhfdCwgRGVzdFR5cGUsIHVucGFja0FSOFRvUkdCQTgsIHBhY2tp
bmdGdW5jPihzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oc291cmNlRGF0YSksIHdpZHRoLCBo
ZWlnaHQsIHNvdXJjZUVsZW1lbnRzUGVyUGl4ZWwsIHNvdXJjZUVsZW1lbnRzUGVyUm93LCBkZXN0
aW5hdGlvbkRhdGEsIGRlc3RpbmF0aW9uRWxlbWVudHNQZXJQaXhlbCk7CisgICAgICAgIGRvVW5w
YWNraW5nQW5kUGFja2luZzx1aW50OF90LCB1aW50OF90LCBEZXN0VHlwZSwgdW5wYWNrQVI4VG9S
R0JBOCwgcGFja2luZ0Z1bmM+KHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihzb3VyY2VEYXRh
KSwgd2lkdGgsIGhlaWdodCwgc291cmNlRWxlbWVudHNQZXJQaXhlbCwgc291cmNlRWxlbWVudHNQ
ZXJSb3csIGRlc3RpbmF0aW9uRGF0YSwgZGVzdGluYXRpb25FbGVtZW50c1BlclBpeGVsKTsKICAg
ICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlNvdXJjZUZv
cm1hdEFSMTZMaXR0bGU6IHsKICAgICAgICAgdW5zaWduZWQgaW50IHNvdXJjZUVsZW1lbnRzUGVy
UGl4ZWwsIHNvdXJjZUVsZW1lbnRzUGVyUm93OwogICAgICAgICBjb21wdXRlSW5jcmVtZW50UGFy
YW1ldGVyczx1aW50MTZfdD4od2lkdGgsIDQsIHNvdXJjZVVucGFja0FsaWdubWVudCwgJnNvdXJj
ZUVsZW1lbnRzUGVyUGl4ZWwsICZzb3VyY2VFbGVtZW50c1BlclJvdyk7Ci0gICAgICAgIGRvVW5w
YWNraW5nQW5kUGFja2luZzx1aW50MTZfdCwgRGVzdFR5cGUsIHVucGFja0FSMTZMaXR0bGVUb1JH
QkE4LCBwYWNraW5nRnVuYz4oc3RhdGljX2Nhc3Q8Y29uc3QgdWludDE2X3QqPihzb3VyY2VEYXRh
KSwgd2lkdGgsIGhlaWdodCwgc291cmNlRWxlbWVudHNQZXJQaXhlbCwgc291cmNlRWxlbWVudHNQ
ZXJSb3csIGRlc3RpbmF0aW9uRGF0YSwgZGVzdGluYXRpb25FbGVtZW50c1BlclBpeGVsKTsKKyAg
ICAgICAgZG9VbnBhY2tpbmdBbmRQYWNraW5nPHVpbnQxNl90LCB1aW50OF90LCBEZXN0VHlwZSwg
dW5wYWNrQVIxNkxpdHRsZVRvUkdCQTgsIHBhY2tpbmdGdW5jPihzdGF0aWNfY2FzdDxjb25zdCB1
aW50MTZfdCo+KHNvdXJjZURhdGEpLCB3aWR0aCwgaGVpZ2h0LCBzb3VyY2VFbGVtZW50c1BlclBp
eGVsLCBzb3VyY2VFbGVtZW50c1BlclJvdywgZGVzdGluYXRpb25EYXRhLCBkZXN0aW5hdGlvbkVs
ZW1lbnRzUGVyUGl4ZWwpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBHcmFwaGlj
c0NvbnRleHQzRDo6U291cmNlRm9ybWF0QVIxNkJpZzogewogICAgICAgICB1bnNpZ25lZCBpbnQg
c291cmNlRWxlbWVudHNQZXJQaXhlbCwgc291cmNlRWxlbWVudHNQZXJSb3c7CiAgICAgICAgIGNv
bXB1dGVJbmNyZW1lbnRQYXJhbWV0ZXJzPHVpbnQxNl90Pih3aWR0aCwgNCwgc291cmNlVW5wYWNr
QWxpZ25tZW50LCAmc291cmNlRWxlbWVudHNQZXJQaXhlbCwgJnNvdXJjZUVsZW1lbnRzUGVyUm93
KTsKLSAgICAgICAgZG9VbnBhY2tpbmdBbmRQYWNraW5nPHVpbnQxNl90LCBEZXN0VHlwZSwgdW5w
YWNrQVIxNkJpZ1RvUkdCQTgsIHBhY2tpbmdGdW5jPihzdGF0aWNfY2FzdDxjb25zdCB1aW50MTZf
dCo+KHNvdXJjZURhdGEpLCB3aWR0aCwgaGVpZ2h0LCBzb3VyY2VFbGVtZW50c1BlclBpeGVsLCBz
b3VyY2VFbGVtZW50c1BlclJvdywgZGVzdGluYXRpb25EYXRhLCBkZXN0aW5hdGlvbkVsZW1lbnRz
UGVyUGl4ZWwpOworICAgICAgICBkb1VucGFja2luZ0FuZFBhY2tpbmc8dWludDE2X3QsIHVpbnQ4
X3QsIERlc3RUeXBlLCB1bnBhY2tBUjE2QmlnVG9SR0JBOCwgcGFja2luZ0Z1bmM+KHN0YXRpY19j
YXN0PGNvbnN0IHVpbnQxNl90Kj4oc291cmNlRGF0YSksIHdpZHRoLCBoZWlnaHQsIHNvdXJjZUVs
ZW1lbnRzUGVyUGl4ZWwsIHNvdXJjZUVsZW1lbnRzUGVyUm93LCBkZXN0aW5hdGlvbkRhdGEsIGRl
c3RpbmF0aW9uRWxlbWVudHNQZXJQaXhlbCk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBj
YXNlIEdyYXBoaWNzQ29udGV4dDNEOjpTb3VyY2VGb3JtYXRBODogewogICAgICAgICB1bnNpZ25l
ZCBpbnQgc291cmNlRWxlbWVudHNQZXJQaXhlbCwgc291cmNlRWxlbWVudHNQZXJSb3c7CiAgICAg
ICAgIGNvbXB1dGVJbmNyZW1lbnRQYXJhbWV0ZXJzPHVpbnQ4X3Q+KHdpZHRoLCAxLCBzb3VyY2VV
bnBhY2tBbGlnbm1lbnQsICZzb3VyY2VFbGVtZW50c1BlclBpeGVsLCAmc291cmNlRWxlbWVudHNQ
ZXJSb3cpOwotICAgICAgICBkb1VucGFja2luZ0FuZFBhY2tpbmc8dWludDhfdCwgRGVzdFR5cGUs
IHVucGFja0E4VG9SR0JBOCwgcGFja2luZ0Z1bmM+KHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3Qq
Pihzb3VyY2VEYXRhKSwgd2lkdGgsIGhlaWdodCwgc291cmNlRWxlbWVudHNQZXJQaXhlbCwgc291
cmNlRWxlbWVudHNQZXJSb3csIGRlc3RpbmF0aW9uRGF0YSwgZGVzdGluYXRpb25FbGVtZW50c1Bl
clBpeGVsKTsKKyAgICAgICAgZG9VbnBhY2tpbmdBbmRQYWNraW5nPHVpbnQ4X3QsIHVpbnQ4X3Qs
IERlc3RUeXBlLCB1bnBhY2tBOFRvUkdCQTgsIHBhY2tpbmdGdW5jPihzdGF0aWNfY2FzdDxjb25z
dCB1aW50OF90Kj4oc291cmNlRGF0YSksIHdpZHRoLCBoZWlnaHQsIHNvdXJjZUVsZW1lbnRzUGVy
UGl4ZWwsIHNvdXJjZUVsZW1lbnRzUGVyUm93LCBkZXN0aW5hdGlvbkRhdGEsIGRlc3RpbmF0aW9u
RWxlbWVudHNQZXJQaXhlbCk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBjYXNlIEdyYXBo
aWNzQ29udGV4dDNEOjpTb3VyY2VGb3JtYXRBMTZMaXR0bGU6IHsKICAgICAgICAgdW5zaWduZWQg
aW50IHNvdXJjZUVsZW1lbnRzUGVyUGl4ZWwsIHNvdXJjZUVsZW1lbnRzUGVyUm93OwogICAgICAg
ICBjb21wdXRlSW5jcmVtZW50UGFyYW1ldGVyczx1aW50MTZfdD4od2lkdGgsIDIsIHNvdXJjZVVu
cGFja0FsaWdubWVudCwgJnNvdXJjZUVsZW1lbnRzUGVyUGl4ZWwsICZzb3VyY2VFbGVtZW50c1Bl
clJvdyk7Ci0gICAgICAgIGRvVW5wYWNraW5nQW5kUGFja2luZzx1aW50MTZfdCwgRGVzdFR5cGUs
IHVucGFja0ExNkxpdHRsZVRvUkdCQTgsIHBhY2tpbmdGdW5jPihzdGF0aWNfY2FzdDxjb25zdCB1
aW50MTZfdCo+KHNvdXJjZURhdGEpLCB3aWR0aCwgaGVpZ2h0LCBzb3VyY2VFbGVtZW50c1BlclBp
eGVsLCBzb3VyY2VFbGVtZW50c1BlclJvdywgZGVzdGluYXRpb25EYXRhLCBkZXN0aW5hdGlvbkVs
ZW1lbnRzUGVyUGl4ZWwpOworICAgICAgICBkb1VucGFja2luZ0FuZFBhY2tpbmc8dWludDE2X3Qs
IHVpbnQ4X3QsIERlc3RUeXBlLCB1bnBhY2tBMTZMaXR0bGVUb1JHQkE4LCBwYWNraW5nRnVuYz4o
c3RhdGljX2Nhc3Q8Y29uc3QgdWludDE2X3QqPihzb3VyY2VEYXRhKSwgd2lkdGgsIGhlaWdodCwg
c291cmNlRWxlbWVudHNQZXJQaXhlbCwgc291cmNlRWxlbWVudHNQZXJSb3csIGRlc3RpbmF0aW9u
RGF0YSwgZGVzdGluYXRpb25FbGVtZW50c1BlclBpeGVsKTsKICAgICAgICAgYnJlYWs7CiAgICAg
fQogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlNvdXJjZUZvcm1hdEExNkJpZzogewogICAg
ICAgICB1bnNpZ25lZCBpbnQgc291cmNlRWxlbWVudHNQZXJQaXhlbCwgc291cmNlRWxlbWVudHNQ
ZXJSb3c7CiAgICAgICAgIGNvbXB1dGVJbmNyZW1lbnRQYXJhbWV0ZXJzPHVpbnQxNl90Pih3aWR0
aCwgMiwgc291cmNlVW5wYWNrQWxpZ25tZW50LCAmc291cmNlRWxlbWVudHNQZXJQaXhlbCwgJnNv
dXJjZUVsZW1lbnRzUGVyUm93KTsKLSAgICAgICAgZG9VbnBhY2tpbmdBbmRQYWNraW5nPHVpbnQx
Nl90LCBEZXN0VHlwZSwgdW5wYWNrQTE2QmlnVG9SR0JBOCwgcGFja2luZ0Z1bmM+KHN0YXRpY19j
YXN0PGNvbnN0IHVpbnQxNl90Kj4oc291cmNlRGF0YSksIHdpZHRoLCBoZWlnaHQsIHNvdXJjZUVs
ZW1lbnRzUGVyUGl4ZWwsIHNvdXJjZUVsZW1lbnRzUGVyUm93LCBkZXN0aW5hdGlvbkRhdGEsIGRl
c3RpbmF0aW9uRWxlbWVudHNQZXJQaXhlbCk7CisgICAgICAgIGRvVW5wYWNraW5nQW5kUGFja2lu
Zzx1aW50MTZfdCwgdWludDhfdCwgRGVzdFR5cGUsIHVucGFja0ExNkJpZ1RvUkdCQTgsIHBhY2tp
bmdGdW5jPihzdGF0aWNfY2FzdDxjb25zdCB1aW50MTZfdCo+KHNvdXJjZURhdGEpLCB3aWR0aCwg
aGVpZ2h0LCBzb3VyY2VFbGVtZW50c1BlclBpeGVsLCBzb3VyY2VFbGVtZW50c1BlclJvdywgZGVz
dGluYXRpb25EYXRhLCBkZXN0aW5hdGlvbkVsZW1lbnRzUGVyUGl4ZWwpOworICAgICAgICBicmVh
azsKKyAgICB9CisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJUKGZhbHNlKTsKKyAgICB9Cit9
CisKKy8vIFRoaXMgc3BlY2lhbGl6ZWQgcm91dGluZSBpcyB1c2VkIG9ubHkgZm9yIGZsb2F0aW5n
LXBvaW50IHRleHR1cmUgdXBsb2Fkcy4gSXQKKy8vIGRvZXMgbm90IG5lZWQgdG8gYmUgYXMgZ2Vu
ZXJhbCBhcyBkb1BhY2tpbmcsIGFib3ZlOyBiZWNhdXNlIHRoZXJlIGFyZQorLy8gY3VycmVudGx5
IG5vIG5hdGl2ZSBmbG9hdGluZy1wb2ludCBpbWFnZSBmb3JtYXRzIGluIFdlYktpdCwgdGhlcmUg
YXJlIG9ubHkgYQorLy8gZmV3IHVwbG9hZCBwYXRocy4KK3RlbXBsYXRlPHZvaWQgcGFja2luZ0Z1
bmMoY29uc3QgZmxvYXQqLCBmbG9hdCopPgorc3RhdGljIHZvaWQgZG9GbG9hdGluZ1BvaW50UGFj
a2luZyhjb25zdCB2b2lkKiBzb3VyY2VEYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHcmFwaGljc0NvbnRleHQzRDo6U291cmNlRGF0YUZvcm1hdCBzb3VyY2VEYXRhRm9y
bWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgd2lk
dGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBoZWln
aHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBzb3Vy
Y2VVbnBhY2tBbGlnbm1lbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZs
b2F0KiBkZXN0aW5hdGlvbkRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHVuc2lnbmVkIGludCBkZXN0aW5hdGlvbkVsZW1lbnRzUGVyUGl4ZWwpCit7CisgICAgc3dpdGNo
IChzb3VyY2VEYXRhRm9ybWF0KSB7CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6U291cmNl
Rm9ybWF0UkdCQTg6IHsKKyAgICAgICAgdW5zaWduZWQgaW50IHNvdXJjZUVsZW1lbnRzUGVyUGl4
ZWwsIHNvdXJjZUVsZW1lbnRzUGVyUm93OworICAgICAgICBjb21wdXRlSW5jcmVtZW50UGFyYW1l
dGVyczxmbG9hdD4od2lkdGgsIDQsIHNvdXJjZVVucGFja0FsaWdubWVudCwgJnNvdXJjZUVsZW1l
bnRzUGVyUGl4ZWwsICZzb3VyY2VFbGVtZW50c1BlclJvdyk7CisgICAgICAgIEFTU0VSVCghc291
cmNlRWxlbWVudHNQZXJSb3cpOyAvLyBHdWFyYW50ZWVkIGJlY2F1c2UgZWFjaCBjb2xvciBjaGFu
bmVsIGlzIHNpemVvZihmbG9hdCkgYnl0ZXMuCisgICAgICAgIGNvbnN0IGZsb2F0KiBzb3VyY2Ug
PSBzdGF0aWNfY2FzdDxjb25zdCBmbG9hdCo+KHNvdXJjZURhdGEpOworICAgICAgICB1bnNpZ25l
ZCBpbnQgbnVtRWxlbWVudHMgPSB3aWR0aCAqIGhlaWdodCAqIDQ7CisgICAgICAgIGNvbnN0IGZs
b2F0KiBlbmRQb2ludGVyID0gc291cmNlICsgbnVtRWxlbWVudHM7CisgICAgICAgIHdoaWxlIChz
b3VyY2UgPCBlbmRQb2ludGVyKSB7CisgICAgICAgICAgICBwYWNraW5nRnVuYyhzb3VyY2UsIGRl
c3RpbmF0aW9uRGF0YSk7CisgICAgICAgICAgICBzb3VyY2UgKz0gc291cmNlRWxlbWVudHNQZXJQ
aXhlbDsKKyAgICAgICAgICAgIGRlc3RpbmF0aW9uRGF0YSArPSBkZXN0aW5hdGlvbkVsZW1lbnRz
UGVyUGl4ZWw7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgR3Jh
cGhpY3NDb250ZXh0M0Q6OlNvdXJjZUZvcm1hdFJHQjMyRjogeworICAgICAgICB1bnNpZ25lZCBp
bnQgc291cmNlRWxlbWVudHNQZXJQaXhlbCwgc291cmNlRWxlbWVudHNQZXJSb3c7CisgICAgICAg
IGNvbXB1dGVJbmNyZW1lbnRQYXJhbWV0ZXJzPGZsb2F0Pih3aWR0aCwgMywgc291cmNlVW5wYWNr
QWxpZ25tZW50LCAmc291cmNlRWxlbWVudHNQZXJQaXhlbCwgJnNvdXJjZUVsZW1lbnRzUGVyUm93
KTsKKyAgICAgICAgZG9VbnBhY2tpbmdBbmRQYWNraW5nPGZsb2F0LCBmbG9hdCwgZmxvYXQsIHVu
cGFja1JHQjMyRlRvUkdCQTMyRiwgcGFja2luZ0Z1bmM+KHN0YXRpY19jYXN0PGNvbnN0IGZsb2F0
Kj4oc291cmNlRGF0YSksIHdpZHRoLCBoZWlnaHQsIHNvdXJjZUVsZW1lbnRzUGVyUGl4ZWwsIHNv
dXJjZUVsZW1lbnRzUGVyUm93LCBkZXN0aW5hdGlvbkRhdGEsIGRlc3RpbmF0aW9uRWxlbWVudHNQ
ZXJQaXhlbCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4
dDNEOjpTb3VyY2VGb3JtYXRSMzJGOiB7CisgICAgICAgIHVuc2lnbmVkIGludCBzb3VyY2VFbGVt
ZW50c1BlclBpeGVsLCBzb3VyY2VFbGVtZW50c1BlclJvdzsKKyAgICAgICAgY29tcHV0ZUluY3Jl
bWVudFBhcmFtZXRlcnM8ZmxvYXQ+KHdpZHRoLCAxLCBzb3VyY2VVbnBhY2tBbGlnbm1lbnQsICZz
b3VyY2VFbGVtZW50c1BlclBpeGVsLCAmc291cmNlRWxlbWVudHNQZXJSb3cpOworICAgICAgICBk
b1VucGFja2luZ0FuZFBhY2tpbmc8ZmxvYXQsIGZsb2F0LCBmbG9hdCwgdW5wYWNrUjMyRlRvUkdC
QTMyRiwgcGFja2luZ0Z1bmM+KHN0YXRpY19jYXN0PGNvbnN0IGZsb2F0Kj4oc291cmNlRGF0YSks
IHdpZHRoLCBoZWlnaHQsIHNvdXJjZUVsZW1lbnRzUGVyUGl4ZWwsIHNvdXJjZUVsZW1lbnRzUGVy
Um93LCBkZXN0aW5hdGlvbkRhdGEsIGRlc3RpbmF0aW9uRWxlbWVudHNQZXJQaXhlbCk7CisgICAg
ICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpTb3VyY2VGb3Jt
YXRSQTMyRjogeworICAgICAgICB1bnNpZ25lZCBpbnQgc291cmNlRWxlbWVudHNQZXJQaXhlbCwg
c291cmNlRWxlbWVudHNQZXJSb3c7CisgICAgICAgIGNvbXB1dGVJbmNyZW1lbnRQYXJhbWV0ZXJz
PGZsb2F0Pih3aWR0aCwgMiwgc291cmNlVW5wYWNrQWxpZ25tZW50LCAmc291cmNlRWxlbWVudHNQ
ZXJQaXhlbCwgJnNvdXJjZUVsZW1lbnRzUGVyUm93KTsKKyAgICAgICAgZG9VbnBhY2tpbmdBbmRQ
YWNraW5nPGZsb2F0LCBmbG9hdCwgZmxvYXQsIHVucGFja1JBMzJGVG9SR0JBMzJGLCBwYWNraW5n
RnVuYz4oc3RhdGljX2Nhc3Q8Y29uc3QgZmxvYXQqPihzb3VyY2VEYXRhKSwgd2lkdGgsIGhlaWdo
dCwgc291cmNlRWxlbWVudHNQZXJQaXhlbCwgc291cmNlRWxlbWVudHNQZXJSb3csIGRlc3RpbmF0
aW9uRGF0YSwgZGVzdGluYXRpb25FbGVtZW50c1BlclBpeGVsKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgfQorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlNvdXJjZUZvcm1hdEEzMkY6IHsKKyAg
ICAgICAgdW5zaWduZWQgaW50IHNvdXJjZUVsZW1lbnRzUGVyUGl4ZWwsIHNvdXJjZUVsZW1lbnRz
UGVyUm93OworICAgICAgICBjb21wdXRlSW5jcmVtZW50UGFyYW1ldGVyczxmbG9hdD4od2lkdGgs
IDEsIHNvdXJjZVVucGFja0FsaWdubWVudCwgJnNvdXJjZUVsZW1lbnRzUGVyUGl4ZWwsICZzb3Vy
Y2VFbGVtZW50c1BlclJvdyk7CisgICAgICAgIGRvVW5wYWNraW5nQW5kUGFja2luZzxmbG9hdCwg
ZmxvYXQsIGZsb2F0LCB1bnBhY2tBMzJGVG9SR0JBMzJGLCBwYWNraW5nRnVuYz4oc3RhdGljX2Nh
c3Q8Y29uc3QgZmxvYXQqPihzb3VyY2VEYXRhKSwgd2lkdGgsIGhlaWdodCwgc291cmNlRWxlbWVu
dHNQZXJQaXhlbCwgc291cmNlRWxlbWVudHNQZXJSb3csIGRlc3RpbmF0aW9uRGF0YSwgZGVzdGlu
YXRpb25FbGVtZW50c1BlclBpeGVsKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGRlZmF1
bHQ6CkBAIC0xMTEzLDYgKzEyODAsODcgQEAgYm9vbCBHcmFwaGljc0NvbnRleHQzRDo6cGFja1Bp
eGVscyhjb25zdAogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwogICAgIH0KKyAgICBjYXNlIEZM
T0FUOiB7CisgICAgICAgIC8vIE9wZW5HTCBFUywgYW5kIHRoZXJlZm9yZSBXZWJHTCwgcmVxdWly
ZSB0aGF0IHRoZSBmb3JtYXQgYW5kCisgICAgICAgIC8vIGludGVybmFsZm9ybWF0IGJlIGlkZW50
aWNhbCwgd2hpY2ggaW1wbGllcyB0aGF0IHRoZSBzb3VyY2UgYW5kCisgICAgICAgIC8vIGRlc3Rp
bmF0aW9uIGZvcm1hdHMgd2lsbCBib3RoIGJlIGZsb2F0aW5nLXBvaW50IGluIHRoaXMgYnJhbmNo
IC0tIGF0CisgICAgICAgIC8vIGxlYXN0LCB1bnRpbCBXZWJLaXQgc3VwcG9ydHMgZmxvYXRpbmct
cG9pbnQgaW1hZ2UgZm9ybWF0cyBuYXRpdmVseS4KKyAgICAgICAgQVNTRVJUKHNvdXJjZURhdGFG
b3JtYXQgPT0gU291cmNlRm9ybWF0UkdCQTMyRiB8fCBzb3VyY2VEYXRhRm9ybWF0ID09IFNvdXJj
ZUZvcm1hdFJHQjMyRgorICAgICAgICAgICAgICAgfHwgc291cmNlRGF0YUZvcm1hdCA9PSBTb3Vy
Y2VGb3JtYXRSQTMyRiB8fCBzb3VyY2VEYXRhRm9ybWF0ID09IFNvdXJjZUZvcm1hdFIzMkYKKyAg
ICAgICAgICAgICAgIHx8IHNvdXJjZURhdGFGb3JtYXQgPT0gU291cmNlRm9ybWF0QTMyRik7Cisg
ICAgICAgIC8vIEJlY2F1c2UgV2ViS2l0IGRvZXNuJ3QgdXNlIGZsb2F0aW5nLXBvaW50IGNvbG9y
IGNoYW5uZWxzIGZvciBhbnl0aGluZworICAgICAgICAvLyBpbnRlcm5hbGx5LCB0aGVyZSdzIG5v
IGNoYW5jZSB3ZSBoYXZlIHRvIGRvIGEgKGxvc3N5KSB1bm11bHRpcGx5CisgICAgICAgIC8vIG9w
ZXJhdGlvbi4KKyAgICAgICAgQVNTRVJUKGFscGhhT3AgPT0gQWxwaGFEb05vdGhpbmcgfHwgYWxw
aGFPcCA9PSBBbHBoYURvUHJlbXVsdGlwbHkpOworICAgICAgICAvLyBGb3IgdGhlIHNvdXJjZSBm
b3JtYXRzIHdpdGggYW4gZXZlbiBudW1iZXIgb2YgY2hhbm5lbHMgKFJHQkEzMkYsCisgICAgICAg
IC8vIFJBMzJGKSBpdCBpcyBndWFyYW50ZWVkIHRoYXQgdGhlIHBpeGVsIGRhdGEgaXMgdGlnaHRs
eSBwYWNrZWQgYmVjYXVzZQorICAgICAgICAvLyB1bnBhY2sgYWxpZ25tZW50IDw9IHNpemVvZihm
bG9hdCkgKiBudW1iZXIgb2YgY2hhbm5lbHMuCisgICAgICAgIGZsb2F0KiBkZXN0aW5hdGlvbiA9
IHN0YXRpY19jYXN0PGZsb2F0Kj4oZGVzdGluYXRpb25EYXRhKTsKKyAgICAgICAgaWYgKGFscGhh
T3AgPT0gQWxwaGFEb05vdGhpbmcKKyAgICAgICAgICAgICYmICgoc291cmNlRGF0YUZvcm1hdCA9
PSBTb3VyY2VGb3JtYXRSR0JBMzJGICYmIGRlc3RpbmF0aW9uRm9ybWF0ID09IFJHQkEpCisgICAg
ICAgICAgICAgICAgfHwgKHNvdXJjZURhdGFGb3JtYXQgPT0gU291cmNlRm9ybWF0UkEzMkYgJiYg
ZGVzdGluYXRpb25Gb3JtYXQgPT0gTFVNSU5BTkNFX0FMUEhBKSkpIHsKKyAgICAgICAgICAgIC8v
IE5vIGNvbnZlcnNpb24gbmVjZXNzYXJ5LgorICAgICAgICAgICAgaW50IG51bUNoYW5uZWxzID0g
KHNvdXJjZURhdGFGb3JtYXQgPT0gU291cmNlRm9ybWF0UkdCQTMyRiA/IDQgOiAyKTsKKyAgICAg
ICAgICAgIG1lbWNweShkZXN0aW5hdGlvbkRhdGEsIHNvdXJjZURhdGEsIHdpZHRoICogaGVpZ2h0
ICogbnVtQ2hhbm5lbHMgKiBzaXplb2YoZmxvYXQpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICB9CisgICAgICAgIHN3aXRjaCAoZGVzdGluYXRpb25Gb3JtYXQpIHsKKyAgICAgICAgY2Fz
ZSBSR0I6CisgICAgICAgICAgICBzd2l0Y2ggKGFscGhhT3ApIHsKKyAgICAgICAgICAgIGNhc2Ug
QWxwaGFEb05vdGhpbmc6CisgICAgICAgICAgICAgICAgZG9GbG9hdGluZ1BvaW50UGFja2luZzxw
YWNrUkdCQTMyRlRvUkdCMzJGPihzb3VyY2VEYXRhLCBzb3VyY2VEYXRhRm9ybWF0LCB3aWR0aCwg
aGVpZ2h0LCBzb3VyY2VVbnBhY2tBbGlnbm1lbnQsIGRlc3RpbmF0aW9uLCAzKTsKKyAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgQWxwaGFEb1ByZW11bHRpcGx5OgorICAg
ICAgICAgICAgICAgIGRvRmxvYXRpbmdQb2ludFBhY2tpbmc8cGFja1JHQkEzMkZUb1JHQjMyRlBy
ZW11bHRpcGx5Pihzb3VyY2VEYXRhLCBzb3VyY2VEYXRhRm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBz
b3VyY2VVbnBhY2tBbGlnbm1lbnQsIGRlc3RpbmF0aW9uLCAzKTsKKyAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2Fz
ZSBSR0JBOgorICAgICAgICAgICAgLy8gQWxwaGFEb05vdGhpbmcgaXMgaGFuZGxlZCBhYm92ZSB3
aXRoIGZhc3QgcGF0aC4KKyAgICAgICAgICAgIEFTU0VSVChhbHBoYU9wID09IEFscGhhRG9QcmVt
dWx0aXBseSk7CisgICAgICAgICAgICBkb0Zsb2F0aW5nUG9pbnRQYWNraW5nPHBhY2tSR0JBMzJG
VG9SR0JBMzJGUHJlbXVsdGlwbHk+KHNvdXJjZURhdGEsIHNvdXJjZURhdGFGb3JtYXQsIHdpZHRo
LCBoZWlnaHQsIHNvdXJjZVVucGFja0FsaWdubWVudCwgZGVzdGluYXRpb24sIDQpOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQUxQSEE6CisgICAgICAgICAgICAvLyBGcm9tIHRo
ZSBkZXNrdG9wIE9wZW5HTCBjb252ZXJzaW9uIHJ1bGVzIChPcGVuR0wgMi4xCisgICAgICAgICAg
ICAvLyBzcGVjaWZpY2F0aW9uLCBUYWJsZSAzLjE1KSwgdGhlIGFscGhhIGNoYW5uZWwgaXMgY2hv
c2VuCisgICAgICAgICAgICAvLyBmcm9tIHRoZSBSR0JBIGRhdGEuCisgICAgICAgICAgICBkb0Zs
b2F0aW5nUG9pbnRQYWNraW5nPHBhY2tSR0JBMzJGVG9BMzJGPihzb3VyY2VEYXRhLCBzb3VyY2VE
YXRhRm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBzb3VyY2VVbnBhY2tBbGlnbm1lbnQsIGRlc3RpbmF0
aW9uLCAxKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIExVTUlOQU5DRToKKyAg
ICAgICAgICAgIC8vIEZyb20gdGhlIGRlc2t0b3AgT3BlbkdMIGNvbnZlcnNpb24gcnVsZXMgKE9w
ZW5HTCAyLjEKKyAgICAgICAgICAgIC8vIHNwZWNpZmljYXRpb24sIFRhYmxlIDMuMTUpLCB0aGUg
cmVkIGNoYW5uZWwgaXMgY2hvc2VuCisgICAgICAgICAgICAvLyBmcm9tIHRoZSBSR0JBIGRhdGEu
CisgICAgICAgICAgICBzd2l0Y2ggKGFscGhhT3ApIHsKKyAgICAgICAgICAgIGNhc2UgQWxwaGFE
b05vdGhpbmc6CisgICAgICAgICAgICAgICAgZG9GbG9hdGluZ1BvaW50UGFja2luZzxwYWNrUkdC
QTMyRlRvUjMyRj4oc291cmNlRGF0YSwgc291cmNlRGF0YUZvcm1hdCwgd2lkdGgsIGhlaWdodCwg
c291cmNlVW5wYWNrQWxpZ25tZW50LCBkZXN0aW5hdGlvbiwgMSk7CisgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICBjYXNlIEFscGhhRG9QcmVtdWx0aXBseToKKyAgICAgICAgICAg
ICAgICBkb0Zsb2F0aW5nUG9pbnRQYWNraW5nPHBhY2tSR0JBMzJGVG9SMzJGUHJlbXVsdGlwbHk+
KHNvdXJjZURhdGEsIHNvdXJjZURhdGFGb3JtYXQsIHdpZHRoLCBoZWlnaHQsIHNvdXJjZVVucGFj
a0FsaWdubWVudCwgZGVzdGluYXRpb24sIDEpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIExVTUlOQU5D
RV9BTFBIQToKKyAgICAgICAgICAgIC8vIEZyb20gdGhlIGRlc2t0b3AgT3BlbkdMIGNvbnZlcnNp
b24gcnVsZXMgKE9wZW5HTCAyLjEKKyAgICAgICAgICAgIC8vIHNwZWNpZmljYXRpb24sIFRhYmxl
IDMuMTUpLCB0aGUgcmVkIGFuZCBhbHBoYSBjaGFubmVscworICAgICAgICAgICAgLy8gYXJlIGNo
b3NlbiBmcm9tIHRoZSBSR0JBIGRhdGEuCisgICAgICAgICAgICBzd2l0Y2ggKGFscGhhT3ApIHsK
KyAgICAgICAgICAgIGNhc2UgQWxwaGFEb05vdGhpbmc6CisgICAgICAgICAgICAgICAgZG9GbG9h
dGluZ1BvaW50UGFja2luZzxwYWNrUkdCQTMyRlRvUkEzMkY+KHNvdXJjZURhdGEsIHNvdXJjZURh
dGFGb3JtYXQsIHdpZHRoLCBoZWlnaHQsIHNvdXJjZVVucGFja0FsaWdubWVudCwgZGVzdGluYXRp
b24sIDIpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBBbHBoYURv
UHJlbXVsdGlwbHk6CisgICAgICAgICAgICAgICAgZG9GbG9hdGluZ1BvaW50UGFja2luZzxwYWNr
UkdCQTMyRlRvUkEzMkZQcmVtdWx0aXBseT4oc291cmNlRGF0YSwgc291cmNlRGF0YUZvcm1hdCwg
d2lkdGgsIGhlaWdodCwgc291cmNlVW5wYWNrQWxpZ25tZW50LCBkZXN0aW5hdGlvbiwgMik7Cisg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgfQogICAgIH0KICAgICByZXR1cm4g
dHJ1ZTsKIH0KSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0
M0QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29u
dGV4dDNELmgJKHJldmlzaW9uIDczMzE5KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9H
cmFwaGljc0NvbnRleHQzRC5oCSh3b3JraW5nIGNvcHkpCkBAIC01MzYsOSArNTM2LDExIEBAIHB1
YmxpYzoKICAgICAgICAgU291cmNlRm9ybWF0UkdCQTggPSAwLAogICAgICAgICBTb3VyY2VGb3Jt
YXRSR0JBMTZMaXR0bGUsCiAgICAgICAgIFNvdXJjZUZvcm1hdFJHQkExNkJpZywKKyAgICAgICAg
U291cmNlRm9ybWF0UkdCQTMyRiwKICAgICAgICAgU291cmNlRm9ybWF0UkdCOCwKICAgICAgICAg
U291cmNlRm9ybWF0UkdCMTZMaXR0bGUsCiAgICAgICAgIFNvdXJjZUZvcm1hdFJHQjE2QmlnLAor
ICAgICAgICBTb3VyY2VGb3JtYXRSR0IzMkYsCiAgICAgICAgIFNvdXJjZUZvcm1hdEJHUjgsCiAg
ICAgICAgIFNvdXJjZUZvcm1hdEJHUkE4LAogICAgICAgICBTb3VyY2VGb3JtYXRCR1JBMTZMaXR0
bGUsCkBAIC01NTMsMTUgKzU1NSwxOCBAQCBwdWJsaWM6CiAgICAgICAgIFNvdXJjZUZvcm1hdFI4
LAogICAgICAgICBTb3VyY2VGb3JtYXRSMTZMaXR0bGUsCiAgICAgICAgIFNvdXJjZUZvcm1hdFIx
NkJpZywKKyAgICAgICAgU291cmNlRm9ybWF0UjMyRiwKICAgICAgICAgU291cmNlRm9ybWF0UkE4
LAogICAgICAgICBTb3VyY2VGb3JtYXRSQTE2TGl0dGxlLAogICAgICAgICBTb3VyY2VGb3JtYXRS
QTE2QmlnLAorICAgICAgICBTb3VyY2VGb3JtYXRSQTMyRiwKICAgICAgICAgU291cmNlRm9ybWF0
QVI4LAogICAgICAgICBTb3VyY2VGb3JtYXRBUjE2TGl0dGxlLAogICAgICAgICBTb3VyY2VGb3Jt
YXRBUjE2QmlnLAogICAgICAgICBTb3VyY2VGb3JtYXRBOCwKICAgICAgICAgU291cmNlRm9ybWF0
QTE2TGl0dGxlLAogICAgICAgICBTb3VyY2VGb3JtYXRBMTZCaWcsCisgICAgICAgIFNvdXJjZUZv
cm1hdEEzMkYsCiAgICAgICAgIFNvdXJjZUZvcm1hdE51bUZvcm1hdHMKICAgICB9OwogCkluZGV4
OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0V4dGVuc2lvbnMzRENocm9taXVt
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9FeHRl
bnNpb25zM0RDaHJvbWl1bS5oCShyZXZpc2lvbiA3MzMxOSkKKysrIFdlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vRXh0ZW5zaW9uczNEQ2hyb21pdW0uaAkod29ya2luZyBjb3B5KQpA
QCAtNDIsNiArNDIsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBFeHRlbnNpb25zM0QgbWV0aG9kcy4K
ICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHMoY29uc3QgU3RyaW5nJik7CisgICAgdmlydHVhbCBi
b29sIGVuc3VyZUVuYWJsZWQoY29uc3QgU3RyaW5nJik7CiAgICAgdmlydHVhbCBpbnQgZ2V0R3Jh
cGhpY3NSZXNldFN0YXR1c0FSQigpOwogICAgIHZpcnR1YWwgdm9pZCBibGl0RnJhbWVidWZmZXIo
bG9uZyBzcmNYMCwgbG9uZyBzcmNZMCwgbG9uZyBzcmNYMSwgbG9uZyBzcmNZMSwgbG9uZyBkc3RY
MCwgbG9uZyBkc3RZMCwgbG9uZyBkc3RYMSwgbG9uZyBkc3RZMSwgdW5zaWduZWQgbG9uZyBtYXNr
LCB1bnNpZ25lZCBsb25nIGZpbHRlcikgeyB9CiAgICAgdmlydHVhbCB2b2lkIHJlbmRlcmJ1ZmZl
clN0b3JhZ2VNdWx0aXNhbXBsZSh1bnNpZ25lZCBsb25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBz
YW1wbGVzLCB1bnNpZ25lZCBsb25nIGludGVybmFsZm9ybWF0LCB1bnNpZ25lZCBsb25nIHdpZHRo
LCB1bnNpZ25lZCBsb25nIGhlaWdodCkgeyB9CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL29wZW5nbC9FeHRlbnNpb25zM0RPcGVuR0wuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnMzRE9wZW5HTC5jcHAJKHJldmlzaW9u
IDczMzE5KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uczNE
T3BlbkdMLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzYsMTAgKzc2LDIwIEBAIGJvb2wgRXh0ZW5z
aW9uczNET3BlbkdMOjpzdXBwb3J0cyhjb25zdCAKICAgICAgICAgcmV0dXJuIG1fYXZhaWxhYmxl
RXh0ZW5zaW9ucy5jb250YWlucygiR0xfRVhUX2ZyYW1lYnVmZmVyX2JsaXQiKTsKICAgICBpZiAo
bmFtZSA9PSAiR0xfQU5HTEVfZnJhbWVidWZmZXJfbXVsdGlzYW1wbGUiKQogICAgICAgICByZXR1
cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfZnJhbWVidWZmZXJfbXVs
dGlzYW1wbGUiKTsKLSAgICAgICAgCisKKyAgICAvLyBJZiBHTF9BUkJfdGV4dHVyZV9mbG9hdCBp
cyBhdmFpbGFibGUgdGhlbiB3ZSByZXBvcnQgR0xfT0VTX3RleHR1cmVfZmxvYXQgYW5kCisgICAg
Ly8gR0xfT0VTX3RleHR1cmVfaGFsZl9mbG9hdCBhcyBhdmFpbGFibGUuCisgICAgaWYgKG5hbWUg
PT0gIkdMX09FU190ZXh0dXJlX2Zsb2F0IiB8fCBuYW1lID09ICJHTF9PRVNfdGV4dHVyZV9oYWxm
X2Zsb2F0IikKKyAgICAgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygi
R0xfQVJCX3RleHR1cmVfZmxvYXQiKTsKKwogICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lv
bnMuY29udGFpbnMobmFtZSk7CiB9CiAKK2Jvb2wgRXh0ZW5zaW9uczNET3BlbkdMOjplbnN1cmVF
bmFibGVkKGNvbnN0IFN0cmluZyYgbmFtZSkKK3sKKyAgICByZXR1cm4gc3VwcG9ydHMobmFtZSk7
Cit9CisKIGludCBFeHRlbnNpb25zM0RPcGVuR0w6OmdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIo
KQogewogICAgIHJldHVybiBHcmFwaGljc0NvbnRleHQzRDo6Tk9fRVJST1I7CkluZGV4OiBXZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zM0RPcGVuR0wuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zM0RPcGVu
R0wuaAkocmV2aXNpb24gNzMzMTkpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5n
bC9FeHRlbnNpb25zM0RPcGVuR0wuaAkod29ya2luZyBjb3B5KQpAQCAtNDAsNiArNDAsNyBAQCBw
dWJsaWM6CiAKICAgICAvLyBFeHRlbnNpb25zM0QgbWV0aG9kcy4KICAgICB2aXJ0dWFsIGJvb2wg
c3VwcG9ydHMoY29uc3QgU3RyaW5nJik7CisgICAgdmlydHVhbCBib29sIGVuc3VyZUVuYWJsZWQo
Y29uc3QgU3RyaW5nJik7CiAgICAgdmlydHVhbCBpbnQgZ2V0R3JhcGhpY3NSZXNldFN0YXR1c0FS
QigpOwogICAgIHZpcnR1YWwgdm9pZCBibGl0RnJhbWVidWZmZXIobG9uZyBzcmNYMCwgbG9uZyBz
cmNZMCwgbG9uZyBzcmNYMSwgbG9uZyBzcmNZMSwgbG9uZyBkc3RYMCwgbG9uZyBkc3RZMCwgbG9u
ZyBkc3RYMSwgbG9uZyBkc3RZMSwgdW5zaWduZWQgbG9uZyBtYXNrLCB1bnNpZ25lZCBsb25nIGZp
bHRlcik7CiAgICAgdmlydHVhbCB2b2lkIHJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZSh1
bnNpZ25lZCBsb25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBzYW1wbGVzLCB1bnNpZ25lZCBsb25n
IGludGVybmFsZm9ybWF0LCB1bnNpZ25lZCBsb25nIHdpZHRoLCB1bnNpZ25lZCBsb25nIGhlaWdo
dCk7ICAgIApJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3ND
b250ZXh0M0RPcGVuR0wuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMLmNwcAkocmV2aXNpb24gNzMzMTkpCisr
KyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5H
TC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzMjYsNyArMTMyNiwxNSBAQCBpbnQgR3JhcGhpY3ND
b250ZXh0M0Q6OnRleEltYWdlMkQodW5zaWduCiB7CiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7
CiAKLSAgICA6OmdsVGV4SW1hZ2UyRCh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lk
dGgsIGhlaWdodCwgYm9yZGVyLCBmb3JtYXQsIHR5cGUsIHBpeGVscyk7CisgICAgdW5zaWduZWQg
b3BlbkdMSW50ZXJuYWxGb3JtYXQgPSBpbnRlcm5hbGZvcm1hdDsKKyAgICBpZiAodHlwZSA9PSBH
TF9GTE9BVCkgeworICAgICAgICBpZiAoZm9ybWF0ID09IEdMX1JHQkEpCisgICAgICAgICAgICBv
cGVuR0xJbnRlcm5hbEZvcm1hdCA9IEdMX1JHQkEzMkZfQVJCOworICAgICAgICBlbHNlIGlmIChm
b3JtYXQgPT0gR0xfUkdCKQorICAgICAgICAgICAgb3BlbkdMSW50ZXJuYWxGb3JtYXQgPSBHTF9S
R0IzMkZfQVJCOworICAgIH0KKworICAgIDo6Z2xUZXhJbWFnZTJEKHRhcmdldCwgbGV2ZWwsIG9w
ZW5HTEludGVybmFsRm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBib3JkZXIsIGZvcm1hdCwgdHlwZSwg
cGl4ZWxzKTsKICAgICByZXR1cm4gMDsKIH0KIApJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9xdC9FeHRlbnNpb25zM0RRdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9xdC9FeHRlbnNpb25zM0RRdC5jcHAJKHJldmlzaW9uIDczMzE5KQorKysgV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9FeHRlbnNpb25zM0RRdC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTQ2LDYgKzQ2LDExIEBAIGJvb2wgRXh0ZW5zaW9uczNEUXQ6OnN1cHBvcnRzKGNvbnN0
IFN0cmkKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKK2Jvb2wgRXh0ZW5zaW9uczNEUXQ6OmVuc3Vy
ZUVuYWJsZWQoY29uc3QgU3RyaW5nJiBuYW1lKQoreworICAgIHJldHVybiBzdXBwb3J0cyhuYW1l
KTsKK30KKwogaW50IEV4dGVuc2lvbnMzRFF0OjpnZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJCKCkK
IHsKICAgICByZXR1cm4gR3JhcGhpY3NDb250ZXh0M0Q6Ok5PX0VSUk9SOwpJbmRleDogV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9FeHRlbnNpb25zM0RRdC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvRXh0ZW5zaW9uczNEUXQuaAkocmV2aXNpb24gNzMz
MTkpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0V4dGVuc2lvbnMzRFF0LmgJKHdv
cmtpbmcgY29weSkKQEAgLTM2LDYgKzM2LDcgQEAgcHVibGljOgogCiAgICAgLy8gRXh0ZW5zaW9u
czNEIG1ldGhvZHMuCiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzKGNvbnN0IFN0cmluZyYpOwor
ICAgIHZpcnR1YWwgYm9vbCBlbnN1cmVFbmFibGVkKGNvbnN0IFN0cmluZyYpOwogICAgIHZpcnR1
YWwgaW50IGdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIoKTsKIAogcHJpdmF0ZToKSW5kZXg6IFdl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2Nocm9taXVtL0No
YW5nZUxvZwkocmV2aXNpb24gNzMzMTkpCisrKyBXZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjYgQEAKKzIwMTAtMTItMDMgIEtlbm5ldGggUnVzc2Vs
bCAgPGtickBnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEltcGxlbWVudCBleHRlbnNpb24gZW50cnkgcG9pbnRzIGFuZCByZW1vdmUg
RVhURU5TSU9OUyBlbnVtCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD00MDMxNgorCisgICAgICAgIEFkZGVkIHN1cHBvcnQgZm9yIGVuc3VyaW5nIHRoYXQg
YSBwYXJ0aWN1bGFyIE9wZW5HTCBleHRlbnNpb24gaXMKKyAgICAgICAgZW5hYmxlZC4KKworICAg
ICAgICAqIHB1YmxpYy9XZWJHcmFwaGljc0NvbnRleHQzRC5oOgorICAgICAgICAqIHNyYy9FeHRl
bnNpb25zM0RDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zM0RDaHJv
bWl1bTo6ZW5zdXJlRW5hYmxlZCk6CisgICAgICAgICogc3JjL0dyYXBoaWNzQ29udGV4dDNEQ2hy
b21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6
aW5pdGlhbGl6ZUV4dGVuc2lvbnMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
M0RJbnRlcm5hbDo6c3VwcG9ydHNFeHRlbnNpb24pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0M0RJbnRlcm5hbDo6ZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZCk6CisgICAgICAgICog
c3JjL0dyYXBoaWNzQ29udGV4dDNESW50ZXJuYWwuaDoKKyAgICAgICAgKiBzcmMvV2ViR3JhcGhp
Y3NDb250ZXh0M0REZWZhdWx0SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkdyYXBoaWNz
Q29udGV4dDNERGVmYXVsdEltcGw6OmdldFJlcXVlc3RhYmxlRXh0ZW5zaW9uc0NIUk9NSVVNKToK
KyAgICAgICAgKFdlYktpdDo6V2ViR3JhcGhpY3NDb250ZXh0M0REZWZhdWx0SW1wbDo6cmVxdWVz
dEV4dGVuc2lvbkNIUk9NSVVNKToKKyAgICAgICAgKiBzcmMvV2ViR3JhcGhpY3NDb250ZXh0M0RE
ZWZhdWx0SW1wbC5oOgorCiAyMDEwLTEyLTAzICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcu
Ym90QGdtYWlsLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByNzMzMDIu
CkluZGV4OiBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkdyYXBoaWNzQ29udGV4dDNELmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJHcmFwaGljc0NvbnRleHQzRC5o
CShyZXZpc2lvbiA3MzMxOSkKKysrIFdlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViR3JhcGhpY3ND
b250ZXh0M0QuaAkod29ya2luZyBjb3B5KQpAQCAtMTQwLDYgKzE0MCwxMCBAQCBwdWJsaWM6CiAg
ICAgLy8gR0xfQ0hST01JVU1fY29weV90ZXh0dXJlX3RvX3BhcmVudF90ZXh0dXJlCiAgICAgdmly
dHVhbCB2b2lkIGNvcHlUZXh0dXJlVG9QYXJlbnRUZXh0dXJlQ0hST01JVU0odW5zaWduZWQgdGV4
dHVyZSwgdW5zaWduZWQgcGFyZW50VGV4dHVyZSkgPSAwOwogCisgICAgLy8gR0xfQ0hST01JVU1f
cmVxdWVzdF9leHRlbnNpb24KKyAgICB2aXJ0dWFsIFdlYlN0cmluZyBnZXRSZXF1ZXN0YWJsZUV4
dGVuc2lvbnNDSFJPTUlVTSgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdEV4dGVuc2lv
bkNIUk9NSVVNKGNvbnN0IGNoYXIqKSA9IDA7CisKICAgICAvLyBUaGUgZW50cnkgcG9pbnRzIGJl
bG93IG1hcCBkaXJlY3RseSB0byB0aGUgT3BlbkdMIEVTIDIuMCBBUEkuCiAgICAgLy8gU2VlOiBo
dHRwOi8vd3d3Lmtocm9ub3Mub3JnL3JlZ2lzdHJ5L2dsZXMvCiAgICAgLy8gYW5kOiBodHRwOi8v
d3d3Lmtocm9ub3Mub3JnL29wZW5nbGVzL3Nkay9kb2NzL21hbi8KSW5kZXg6IFdlYktpdC9jaHJv
bWl1bS9zcmMvRXh0ZW5zaW9uczNEQ2hyb21pdW0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9j
aHJvbWl1bS9zcmMvRXh0ZW5zaW9uczNEQ2hyb21pdW0uY3BwCShyZXZpc2lvbiA3MzMxOSkKKysr
IFdlYktpdC9jaHJvbWl1bS9zcmMvRXh0ZW5zaW9uczNEQ2hyb21pdW0uY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC00OCw2ICs0OCwxMSBAQCBib29sIEV4dGVuc2lvbnMzRENocm9taXVtOjpzdXBwb3J0
cyhjb25zCiAgICAgcmV0dXJuIG1faW50ZXJuYWwtPnN1cHBvcnRzRXh0ZW5zaW9uKG5hbWUpOwog
fQogCitib29sIEV4dGVuc2lvbnMzRENocm9taXVtOjplbnN1cmVFbmFibGVkKGNvbnN0IFN0cmlu
ZyYgbmFtZSkKK3sKKyAgICByZXR1cm4gbV9pbnRlcm5hbC0+ZW5zdXJlRXh0ZW5zaW9uRW5hYmxl
ZChuYW1lKTsKK30KKwogaW50IEV4dGVuc2lvbnMzRENocm9taXVtOjpnZXRHcmFwaGljc1Jlc2V0
U3RhdHVzQVJCKCkKIHsKICAgICByZXR1cm4gbV9pbnRlcm5hbC0+aXNDb250ZXh0TG9zdCgpID8g
c3RhdGljX2Nhc3Q8aW50PihFeHRlbnNpb25zM0Q6OlVOS05PV05fQ09OVEVYVF9SRVNFVF9BUkIp
IDogc3RhdGljX2Nhc3Q8aW50PihHcmFwaGljc0NvbnRleHQzRDo6Tk9fRVJST1IpOwpJbmRleDog
V2ViS2l0L2Nocm9taXVtL3NyYy9HcmFwaGljc0NvbnRleHQzRENocm9taXVtLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vc3JjL0dyYXBoaWNzQ29udGV4dDNEQ2hyb21pdW0uY3Bw
CShyZXZpc2lvbiA3MzMxOSkKKysrIFdlYktpdC9jaHJvbWl1bS9zcmMvR3JhcGhpY3NDb250ZXh0
M0RDaHJvbWl1bS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY4MSwxNiArNjgxLDUzIEBAIEV4dGVu
c2lvbnMzRCogR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDoKICAgICByZXR1cm4gbV9leHRlbnNp
b25zLmdldCgpOwogfQogCi1ib29sIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OnN1cHBvcnRz
RXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgbmFtZSkKK25hbWVzcGFjZSB7CisKK3ZvaWQgc3BsaXRT
dHJpbmdIZWxwZXIoY29uc3QgU3RyaW5nJiBzdHIsIEhhc2hTZXQ8U3RyaW5nPiYgc2V0KQorewor
ICAgIFZlY3RvcjxTdHJpbmc+IHN1YnN0cmluZ3M7CisgICAgc3RyLnNwbGl0KCIgIiwgc3Vic3Ry
aW5ncyk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzdWJzdHJpbmdzLnNpemUoKTsgKytp
KQorICAgICAgICBzZXQuYWRkKHN1YnN0cmluZ3NbaV0pOworfQorCit9IC8vIGFub255bW91cyBu
YW1lc3BhY2UKKwordm9pZCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjppbml0aWFsaXplRXh0
ZW5zaW9ucygpCiB7CiAgICAgaWYgKCFtX2luaXRpYWxpemVkQXZhaWxhYmxlRXh0ZW5zaW9ucykg
ewogICAgICAgICBTdHJpbmcgZXh0ZW5zaW9uc1N0cmluZyA9IGdldFN0cmluZyhHcmFwaGljc0Nv
bnRleHQzRDo6RVhURU5TSU9OUyk7Ci0gICAgICAgIFZlY3RvcjxTdHJpbmc+IGF2YWlsYWJsZUV4
dGVuc2lvbnM7Ci0gICAgICAgIGV4dGVuc2lvbnNTdHJpbmcuc3BsaXQoIiAiLCBhdmFpbGFibGVF
eHRlbnNpb25zKTsKLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBhdmFpbGFibGVFeHRl
bnNpb25zLnNpemUoKTsgKytpKQotICAgICAgICAgICAgbV9hdmFpbGFibGVFeHRlbnNpb25zLmFk
ZChhdmFpbGFibGVFeHRlbnNpb25zW2ldKTsKKyAgICAgICAgc3BsaXRTdHJpbmdIZWxwZXIoZXh0
ZW5zaW9uc1N0cmluZywgbV9hdmFpbGFibGVFeHRlbnNpb25zKTsKKworICAgICAgICBTdHJpbmcg
cmVxdWVzdGFibGVFeHRlbnNpb25zU3RyaW5nID0gbV9pbXBsLT5nZXRSZXF1ZXN0YWJsZUV4dGVu
c2lvbnNDSFJPTUlVTSgpOworICAgICAgICBzcGxpdFN0cmluZ0hlbHBlcihyZXF1ZXN0YWJsZUV4
dGVuc2lvbnNTdHJpbmcsIG1fcmVxdWVzdGFibGVFeHRlbnNpb25zKTsKKwogICAgICAgICBtX2lu
aXRpYWxpemVkQXZhaWxhYmxlRXh0ZW5zaW9ucyA9IHRydWU7CiAgICAgfQorfQorCisKK2Jvb2wg
R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6c3VwcG9ydHNFeHRlbnNpb24oY29uc3QgU3RyaW5n
JiBuYW1lKQoreworICAgIGluaXRpYWxpemVFeHRlbnNpb25zKCk7CisgICAgcmV0dXJuIG1fYXZh
aWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucyhuYW1lKSB8fCBtX3JlcXVlc3RhYmxlRXh0ZW5zaW9u
cy5jb250YWlucyhuYW1lKTsKK30KKworYm9vbCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpl
bnN1cmVFeHRlbnNpb25FbmFibGVkKGNvbnN0IFN0cmluZyYgbmFtZSkKK3sKKyAgICBpbml0aWFs
aXplRXh0ZW5zaW9ucygpOworCisgICAgaWYgKG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlu
cyhuYW1lKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBpZiAobV9yZXF1ZXN0YWJsZUV4
dGVuc2lvbnMuY29udGFpbnMobmFtZSkpIHsKKyAgICAgICAgbV9pbXBsLT5yZXF1ZXN0RXh0ZW5z
aW9uQ0hST01JVU0obmFtZS5hc2NpaSgpLmRhdGEoKSk7CisgICAgICAgIG1fYXZhaWxhYmxlRXh0
ZW5zaW9ucy5jbGVhcigpOworICAgICAgICBtX3JlcXVlc3RhYmxlRXh0ZW5zaW9ucy5jbGVhcigp
OworICAgICAgICBtX2luaXRpYWxpemVkQXZhaWxhYmxlRXh0ZW5zaW9ucyA9IGZhbHNlOworICAg
IH0KKworICAgIGluaXRpYWxpemVFeHRlbnNpb25zKCk7CiAgICAgcmV0dXJuIG1fYXZhaWxhYmxl
RXh0ZW5zaW9ucy5jb250YWlucyhuYW1lKTsKIH0KIApJbmRleDogV2ViS2l0L2Nocm9taXVtL3Ny
Yy9HcmFwaGljc0NvbnRleHQzREludGVybmFsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2Nocm9t
aXVtL3NyYy9HcmFwaGljc0NvbnRleHQzREludGVybmFsLmgJKHJldmlzaW9uIDczMzE5KQorKysg
V2ViS2l0L2Nocm9taXVtL3NyYy9HcmFwaGljc0NvbnRleHQzREludGVybmFsLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTI2NSw2ICsyNjUsNyBAQCBwdWJsaWM6CiAgICAgLy8gRXh0ZW5zaW9uczNEIHN1
cHBvcnQuCiAgICAgRXh0ZW5zaW9uczNEKiBnZXRFeHRlbnNpb25zKCk7CiAgICAgYm9vbCBzdXBw
b3J0c0V4dGVuc2lvbihjb25zdCBTdHJpbmcmIG5hbWUpOworICAgIGJvb2wgZW5zdXJlRXh0ZW5z
aW9uRW5hYmxlZChjb25zdCBTdHJpbmcmIG5hbWUpOwogCiAgICAgLy8gRVhUX3RleHR1cmVfZm9y
bWF0X0JHUkE4ODg4CiAgICAgYm9vbCBzdXBwb3J0c0JHUkEoKTsKQEAgLTI4Niw2ICsyODcsNyBA
QCBwcml2YXRlOgogICAgIFdlYktpdDo6V2ViVmlld0ltcGwqIG1fd2ViVmlld0ltcGw7CiAgICAg
Ym9vbCBtX2luaXRpYWxpemVkQXZhaWxhYmxlRXh0ZW5zaW9uczsKICAgICBIYXNoU2V0PFN0cmlu
Zz4gbV9hdmFpbGFibGVFeHRlbnNpb25zOworICAgIEhhc2hTZXQ8U3RyaW5nPiBtX3JlcXVlc3Rh
YmxlRXh0ZW5zaW9uczsKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiAgICAgUmVm
UHRyPFdlYkdMTGF5ZXJDaHJvbWl1bT4gbV9jb21wb3NpdGluZ0xheWVyOwogI2VuZGlmCkBAIC0z
MDEsNiArMzAzLDggQEAgcHJpdmF0ZToKICNpZiBQTEFURk9STShDRykKICAgICB1bnNpZ25lZCBj
aGFyKiBtX3JlbmRlck91dHB1dDsKICNlbmRpZgorCisgICAgdm9pZCBpbml0aWFsaXplRXh0ZW5z
aW9ucygpOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJHcmFwaGljc0NvbnRleHQzRERlZmF1bHRJbXBsLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJLaXQvY2hyb21pdW0vc3JjL1dlYkdyYXBoaWNzQ29udGV4dDNERGVmYXVsdEltcGwuY3Bw
CShyZXZpc2lvbiA3MzMxOSkKKysrIFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViR3JhcGhpY3NDb250
ZXh0M0REZWZhdWx0SW1wbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYyNCw2ICs2MjQsMTUgQEAg
dm9pZCBXZWJHcmFwaGljc0NvbnRleHQzRERlZmF1bHRJbXBsOjpjbwogICAgIGdsQmluZEZyYW1l
YnVmZmVyRVhUKEdMX0ZSQU1FQlVGRkVSX0VYVCwgbV9ib3VuZEZCTyk7CiB9CiAKK1dlYlN0cmlu
ZyBXZWJHcmFwaGljc0NvbnRleHQzRERlZmF1bHRJbXBsOjpnZXRSZXF1ZXN0YWJsZUV4dGVuc2lv
bnNDSFJPTUlVTSgpCit7CisgICAgcmV0dXJuIFdlYlN0cmluZygpOworfQorCit2b2lkIFdlYkdy
YXBoaWNzQ29udGV4dDNERGVmYXVsdEltcGw6OnJlcXVlc3RFeHRlbnNpb25DSFJPTUlVTShjb25z
dCBjaGFyKikKK3sKK30KKwogLy8gSGVscGVyIG1hY3JvcyB0byByZWR1Y2UgdGhlIGFtb3VudCBv
ZiBjb2RlLgogCiAjZGVmaW5lIERFTEVHQVRFX1RPX0dMKG5hbWUsIGdsbmFtZSkgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXApJbmRleDogV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJHcmFwaGljc0NvbnRleHQzRERlZmF1bHRJbXBsLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJHcmFwaGljc0NvbnRleHQzRERlZmF1bHRJbXBsLmgJKHJldmlz
aW9uIDczMzE5KQorKysgV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJHcmFwaGljc0NvbnRleHQzRERl
ZmF1bHRJbXBsLmgJKHdvcmtpbmcgY29weSkKQEAgLTg1LDYgKzg1LDkgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgdm9pZCB1bm1hcFRleFN1YkltYWdlMkRDSFJPTUlVTShjb25zdCB2b2lkKik7CiAg
ICAgdmlydHVhbCB2b2lkIGNvcHlUZXh0dXJlVG9QYXJlbnRUZXh0dXJlQ0hST01JVU0odW5zaWdu
ZWQgdGV4dHVyZSwgdW5zaWduZWQgcGFyZW50VGV4dHVyZSk7CiAKKyAgICB2aXJ0dWFsIFdlYlN0
cmluZyBnZXRSZXF1ZXN0YWJsZUV4dGVuc2lvbnNDSFJPTUlVTSgpOworICAgIHZpcnR1YWwgdm9p
ZCByZXF1ZXN0RXh0ZW5zaW9uQ0hST01JVU0oY29uc3QgY2hhciopOworCiAgICAgdmlydHVhbCB2
b2lkIGFjdGl2ZVRleHR1cmUodW5zaWduZWQgbG9uZyB0ZXh0dXJlKTsKICAgICB2aXJ0dWFsIHZv
aWQgYXR0YWNoU2hhZGVyKFdlYkdMSWQgcHJvZ3JhbSwgV2ViR0xJZCBzaGFkZXIpOwogICAgIHZp
cnR1YWwgdm9pZCBiaW5kQXR0cmliTG9jYXRpb24oV2ViR0xJZCBwcm9ncmFtLCB1bnNpZ25lZCBs
b25nIGluZGV4LCBjb25zdCBjaGFyKiBuYW1lKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>75787</attachid>
            <date>2010-12-06 23:05:08 -0800</date>
            <delta_ts>2010-12-08 18:27:15 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-40316-20101206230507.patch</filename>
            <type>text/plain</type>
            <size>89219</size>
            <attacher name="Kenneth Russell">kbr</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3MzQyNikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsODEgQEAKKzIwMTAtMTItMDYgIEtlbm5ldGggUnVzc2VsbCAgPGtickBnb29nbGUu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIElt
cGxlbWVudCBleHRlbnNpb24gZW50cnkgcG9pbnRzIGFuZCByZW1vdmUgRVhURU5TSU9OUyBlbnVt
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MDMxNgor
CisgICAgICAgIEltcGxlbWVudGVkIFdlYkdMUmVuZGVyaW5nQ29udGV4dCdzIGdldFN1cHBvcnRl
ZEV4dGVuc2lvbnMgYW5kCisgICAgICAgIGdldEV4dGVuc2lvbnMgZW50cnkgcG9pbnRzLCBhbmQs
IHRvIHZlcmlmeSB0aGVtLCBhZGRlZCBzdXBwb3J0IGZvcgorICAgICAgICB0aGUgZmlyc3Qgc3Bl
Y2lmaWVkIFdlYkdMIGV4dGVuc2lvbiwgT0VTX3RleHR1cmVfZmxvYXQuIFRoaXMKKyAgICAgICAg
ZXh0ZW5zaW9uIGlzIG5vdyBhZHZlcnRpc2VkIGluIHRoZSBDaHJvbWl1bSBhbmQgV2ViS2l0IHBv
cnRzIHdoZW4KKyAgICAgICAgdGhlIHVuZGVybHlpbmcgaGFyZHdhcmUgc3VwcG9ydHMgaXQuCisK
KyAgICAgICAgVGhlIG5ldyBPRVNfdGV4dHVyZV9mbG9hdCB0ZXN0IGluIHRoZSBXZWJHTCBjb25m
b3JtYW5jZSBzdWl0ZQorICAgICAgICB2ZXJpZmllcyB0aGUgYWxsb2NhdGlvbiBhbmQgcG9wdWxh
dGlvbiBvZiBmbG9hdGluZyBwb2ludCB0ZXh0dXJlcywKKyAgICAgICAgYW5kIHRoZWlyIHVzZSBh
cyByZW5kZXIgdGFyZ2V0cy4gSG93ZXZlciwgYmVjYXVzZSB0aGlzIGV4dGVuc2lvbgorICAgICAg
ICBpcyBvcHRpb25hbCwgaXQgaXMgbm90IGVhc2lseSB0ZXN0YWJsZSB3aXRoIGEgbGF5b3V0IHRl
c3Q7IHRoZXJlCisgICAgICAgIGlzIG9ubHkgb25lIHNldCBvZiBleHBlY3RhdGlvbnMgZm9yIGEg
Z2l2ZW4gdGVzdCwgYW5kIHR3byB3b3VsZCBiZQorICAgICAgICBuZWVkZWQsIG9uZSB3aGVuIHRo
ZSBleHRlbnNpb24gaXMgYXZhaWxhYmxlIGFuZCBvbmUgd2hlbiBpdCBpcyBub3QuCisKKyAgICAg
ICAgVGVzdGVkIHdpdGggdGhlIG9lcy10ZXh0dXJlLWZsb2F0Lmh0bWwgV2ViR0wgY29uZm9ybWFu
Y2UgdGVzdCBpbgorICAgICAgICBDaHJvbWl1bSBhbmQgV2ViS2l0IG9uIE1hYyBPUyBYIG9uIGhh
cmR3YXJlIHRoYXQgc3VwcG9ydHMgdGhlCisgICAgICAgIGV4dGVuc2lvbi4gQWxzbyB2ZXJpZmll
ZCB3aXRoIGEgY29uZmlndXJhdGlvbiB0aGF0IGRvZXMgbm90CisgICAgICAgIGFkdmVydGlzZSB0
aGUgZXh0ZW5zaW9uIHRoYXQgdGhpcyBzYW1lIHRlc3QgcGFzc2VzLgorCisgICAgICAgICogQ01h
a2VMaXN0cy50eHQ6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBH
TlVtYWtlZmlsZS5hbToKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29y
ZS5wcmk6CisgICAgICAgICogV2ViQ29yZS5wcm86CisgICAgICAgICogV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTV2ViR0xSZW5kZXJp
bmdDb250ZXh0Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRvSlMpOgorICAgICAgICAo
V2ViQ29yZTo6SlNXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldEV4dGVuc2lvbik6CisgICAgICAg
IChXZWJDb3JlOjpKU1dlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0U3VwcG9ydGVkRXh0ZW5zaW9u
cyk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4V2ViR0xSZW5kZXJpbmdDb250ZXh0
Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRvVjhPYmplY3QpOgorICAgICAgICAoV2Vi
Q29yZTo6VjhXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldEV4dGVuc2lvbkNhbGxiYWNrKToKKyAg
ICAgICAgKFdlYkNvcmU6OlY4V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRTdXBwb3J0ZWRFeHRl
bnNpb25zQ2FsbGJhY2spOgorICAgICAgICAqIGh0bWwvY2FudmFzL09FU1RleHR1cmVGbG9hdC5j
cHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6T0VTVGV4dHVyZUZsb2F0OjpPRVNUZXh0dXJl
RmxvYXQpOgorICAgICAgICAoV2ViQ29yZTo6T0VTVGV4dHVyZUZsb2F0Ojp+T0VTVGV4dHVyZUZs
b2F0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9FU1RleHR1cmVGbG9hdDo6Z2V0TmFtZSk6CisgICAg
ICAgIChXZWJDb3JlOjpPRVNUZXh0dXJlRmxvYXQ6OmNyZWF0ZSk6CisgICAgICAgICogaHRtbC9j
YW52YXMvT0VTVGV4dHVyZUZsb2F0Lmg6IEFkZGVkLgorICAgICAgICAqIGh0bWwvY2FudmFzL09F
U1RleHR1cmVGbG9hdC5pZGw6IEFkZGVkLgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMRXh0
ZW5zaW9uLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpXZWJHTEV4dGVuc2lvbjo6V2Vi
R0xFeHRlbnNpb24pOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xFeHRlbnNpb246On5XZWJHTEV4
dGVuc2lvbik6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xFeHRlbnNpb24uaDogQWRkZWQu
CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0RXh0ZW5zaW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0U3VwcG9ydGVkRXh0ZW5zaW9u
cyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnZhbGlkYXRlVGV4
RnVuY0Zvcm1hdEFuZFR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250
ZXh0Ojp2YWxpZGF0ZVRleEZ1bmNEYXRhKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFJl
bmRlcmluZ0NvbnRleHQuaDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0Nv
bnRleHQuaWRsOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0V4dGVuc2lvbnMzRC5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpjb21wdXRlRm9ybWF0QW5kVHlwZVBhcmFt
ZXRlcnMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmV4dHJhY3RUZXh0
dXJlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpkb1VucGFja2luZ0FuZFBhY2tpbmcpOgorICAg
ICAgICAoV2ViQ29yZTo6ZG9QYWNraW5nKToKKyAgICAgICAgKFdlYkNvcmU6OmRvRmxvYXRpbmdQ
b2ludFBhY2tpbmcpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnBhY2tQ
aXhlbHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRXh0ZW5zaW9uczNEQ2hyb21p
dW0uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uczNET3Bl
bkdMLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnMzRE9wZW5HTDo6c3VwcG9ydHMp
OgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uczNET3BlbkdMOjplbnN1cmVFbmFibGVkKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uczNET3BlbkdMLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3Bl
bkdMLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjp0ZXhJbWFnZTJE
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9xdC9FeHRlbnNpb25zM0RRdC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zM0RRdDo6ZW5zdXJlRW5hYmxlZCk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvcXQvRXh0ZW5zaW9uczNEUXQuaDoKKwogMjAxMC0xMi0wNiAg
SGlyb25vcmkgQm9ubyAgPGhib25vQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBi
eSBEYXZpZCBMZXZpbi4KSW5kZXg6IFdlYkNvcmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gNzM0MjYpCisrKyBXZWJDb3JlL0NN
YWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0yODcsNiArMjg3LDcgQEAgU0VUKFdlYkNv
cmVfSURMX0ZJTEVTCiAgICAgaHRtbC9jYW52YXMvSW50MTZBcnJheS5pZGwKICAgICBodG1sL2Nh
bnZhcy9JbnQzMkFycmF5LmlkbAogICAgIGh0bWwvY2FudmFzL0ludDhBcnJheS5pZGwKKyAgICBo
dG1sL2NhbnZhcy9PRVNUZXh0dXJlRmxvYXQuaWRsCiAgICAgaHRtbC9jYW52YXMvVWludDE2QXJy
YXkuaWRsCiAgICAgaHRtbC9jYW52YXMvVWludDMyQXJyYXkuaWRsCiAgICAgaHRtbC9jYW52YXMv
VWludDhBcnJheS5pZGwKSW5kZXg6IFdlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UJKHJldmlzaW9uIDczNDI2KQorKysg
V2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCSh3b3JraW5nIGNvcHkpCkBAIC0zMTAsNiArMzEw
LDcgQEAgRE9NX0NMQVNTRVMgPSBcCiAgICAgTm90YXRpb24gXAogICAgIE5vdGlmaWNhdGlvbiBc
CiAgICAgTm90aWZpY2F0aW9uQ2VudGVyIFwKKyAgICBPRVNUZXh0dXJlRmxvYXQgXAogICAgIE92
ZXJmbG93RXZlbnQgXAogICAgIFBhZ2VUcmFuc2l0aW9uRXZlbnQgXAogICAgIFBlcmZvcm1hbmNl
IFwKSW5kZXg6IFdlYkNvcmUvR05VbWFrZWZpbGUuYW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9H
TlVtYWtlZmlsZS5hbQkocmV2aXNpb24gNzM0MjYpCisrKyBXZWJDb3JlL0dOVW1ha2VmaWxlLmFt
CSh3b3JraW5nIGNvcHkpCkBAIC00NzMsNiArNDczLDggQEAgd2ViY29yZV9idWlsdF9zb3VyY2Vz
ICs9IFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTTm90aWZpY2F0aW9uQ2VudGVyLmggXAog
CURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNOb3RpZmljYXRpb24uY3BwIFwKIAlEZXJpdmVkU291
cmNlcy9XZWJDb3JlL0pTTm90aWZpY2F0aW9uLmggXAorCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUv
SlNPRVNUZXh0dXJlRmxvYXQuY3BwIFwKKwlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTT0VTVGV4
dHVyZUZsb2F0LmggXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNPdmVyZmxvd0V2ZW50LmNw
cCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU092ZXJmbG93RXZlbnQuaCBcCiAJRGVyaXZl
ZFNvdXJjZXMvV2ViQ29yZS9KU1BhZ2VUcmFuc2l0aW9uRXZlbnQuY3BwIFwKQEAgLTE1NDUsNiAr
MTU0Nyw4IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJV2ViQ29yZS9odG1sL2NhbnZhcy9JbnQz
MkFycmF5LmggXAogCVdlYkNvcmUvaHRtbC9jYW52YXMvSW50OEFycmF5LmNwcCBcCiAJV2ViQ29y
ZS9odG1sL2NhbnZhcy9JbnQ4QXJyYXkuaCBcCisJV2ViQ29yZS9odG1sL2NhbnZhcy9PRVNUZXh0
dXJlRmxvYXQuY3BwIFwKKwlXZWJDb3JlL2h0bWwvY2FudmFzL09FU1RleHR1cmVGbG9hdC5oIFwK
IAlXZWJDb3JlL2h0bWwvY2FudmFzL1VpbnQxNkFycmF5LmNwcCBcCiAJV2ViQ29yZS9odG1sL2Nh
bnZhcy9VaW50MTZBcnJheS5oIFwKIAlXZWJDb3JlL2h0bWwvY2FudmFzL1VpbnQzMkFycmF5LmNw
cCBcCkluZGV4OiBXZWJDb3JlL1dlYkNvcmUuZ3lwaQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dl
YkNvcmUuZ3lwaQkocmV2aXNpb24gNzM0MjYpCisrKyBXZWJDb3JlL1dlYkNvcmUuZ3lwaQkod29y
a2luZyBjb3B5KQpAQCAtMjEzLDYgKzIxMyw3IEBACiAgICAgICAgICAgICAnaHRtbC9jYW52YXMv
SW50MTZBcnJheS5pZGwnLAogICAgICAgICAgICAgJ2h0bWwvY2FudmFzL0ludDMyQXJyYXkuaWRs
JywKICAgICAgICAgICAgICdodG1sL2NhbnZhcy9JbnQ4QXJyYXkuaWRsJywKKyAgICAgICAgICAg
ICdodG1sL2NhbnZhcy9PRVNUZXh0dXJlRmxvYXQuaWRsJywKICAgICAgICAgICAgICdodG1sL2Nh
bnZhcy9VaW50MTZBcnJheS5pZGwnLAogICAgICAgICAgICAgJ2h0bWwvY2FudmFzL1VpbnQzMkFy
cmF5LmlkbCcsCiAgICAgICAgICAgICAnaHRtbC9jYW52YXMvVWludDhBcnJheS5pZGwnLApAQCAt
MTkwOSw2ICsxOTEwLDggQEAKICAgICAgICAgICAgICdodG1sL2NhbnZhcy9JbnQ4QXJyYXkuY3Bw
JywKICAgICAgICAgICAgICdodG1sL2NhbnZhcy9JbnQ4QXJyYXkuaCcsCiAgICAgICAgICAgICAn
aHRtbC9jYW52YXMvSW50ZWdyYWxUeXBlZEFycmF5QmFzZS5oJywKKyAgICAgICAgICAgICdodG1s
L2NhbnZhcy9PRVNUZXh0dXJlRmxvYXQuY3BwJywKKyAgICAgICAgICAgICdodG1sL2NhbnZhcy9P
RVNUZXh0dXJlRmxvYXQuaCcsCiAgICAgICAgICAgICAnaHRtbC9jYW52YXMvVHlwZWRBcnJheUJh
c2UuaCcsCiAgICAgICAgICAgICAnaHRtbC9jYW52YXMvVWludDE2QXJyYXkuY3BwJywKICAgICAg
ICAgICAgICdodG1sL2NhbnZhcy9VaW50MTZBcnJheS5oJywKQEAgLTE5MjIsNiArMTkyNSw4IEBA
CiAgICAgICAgICAgICAnaHRtbC9jYW52YXMvV2ViR0xDb250ZXh0QXR0cmlidXRlcy5oJywKICAg
ICAgICAgICAgICdodG1sL2NhbnZhcy9XZWJHTENvbnRleHRFdmVudC5jcHAnLAogICAgICAgICAg
ICAgJ2h0bWwvY2FudmFzL1dlYkdMQ29udGV4dEV2ZW50LmgnLAorICAgICAgICAgICAgJ2h0bWwv
Y2FudmFzL1dlYkdMRXh0ZW5zaW9uLmNwcCcsCisgICAgICAgICAgICAnaHRtbC9jYW52YXMvV2Vi
R0xFeHRlbnNpb24uaCcsCiAgICAgICAgICAgICAnaHRtbC9jYW52YXMvV2ViR0xGcmFtZWJ1ZmZl
ci5jcHAnLAogICAgICAgICAgICAgJ2h0bWwvY2FudmFzL1dlYkdMRnJhbWVidWZmZXIuaCcsCiAg
ICAgICAgICAgICAnaHRtbC9jYW52YXMvV2ViR0xHZXRJbmZvLmNwcCcsCkluZGV4OiBXZWJDb3Jl
L1dlYkNvcmUucHJpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS5wcmkJKHJldmlzaW9u
IDczNDI2KQorKysgV2ViQ29yZS9XZWJDb3JlLnByaQkod29ya2luZyBjb3B5KQpAQCAtMTkxLDYg
KzE5MSw3IEBAIElETF9CSU5ESU5HUyArPSBcCiAgICAgaHRtbC9jYW52YXMvQ2FudmFzUGF0dGVy
bi5pZGwgXAogICAgIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQuaWRsIFwKICAg
ICBodG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaWRsIFwKKyAgICBodG1sL2Nh
bnZhcy9PRVNUZXh0dXJlRmxvYXQuaWRsIFwKICAgICBodG1sL2NhbnZhcy9XZWJHTEFjdGl2ZUlu
Zm8uaWRsIFwKICAgICBodG1sL2NhbnZhcy9XZWJHTEJ1ZmZlci5pZGwgXAogICAgIGh0bWwvY2Fu
dmFzL1dlYkdMQ29udGV4dEF0dHJpYnV0ZXMuaWRsIFwKSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS5w
cm8KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9XZWJDb3JlLnBybwkocmV2aXNpb24gNzM0MjYpCisr
KyBXZWJDb3JlL1dlYkNvcmUucHJvCSh3b3JraW5nIGNvcHkpCkBAIC0zNzI0LDYgKzM3MjQsNyBA
QCBIRUFERVJTICs9IFwKICAgICAgICAgaHRtbC9jYW52YXMvSW50OEFycmF5LmggXAogICAgICAg
ICBodG1sL2NhbnZhcy9XZWJHTENvbnRleHRBdHRyaWJ1dGVzLmggXAogICAgICAgICBodG1sL2Nh
bnZhcy9GbG9hdDMyQXJyYXkuaCBcCisgICAgICAgIGh0bWwvY2FudmFzL1dlYkdMRXh0ZW5zaW9u
LmggXAogICAgICAgICBodG1sL2NhbnZhcy9XZWJHTEZyYW1lYnVmZmVyLmggXAogICAgICAgICBo
dG1sL2NhbnZhcy9XZWJHTEdldEluZm8uaCBcCiAgICAgICAgIGh0bWwvY2FudmFzL0ludDMyQXJy
YXkuaCBcCkBAIC0zNzMyLDYgKzM3MzMsNyBAQCBIRUFERVJTICs9IFwKICAgICAgICAgaHRtbC9j
YW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmggXAogICAgICAgICBodG1sL2NhbnZhcy9XZWJH
TFNoYWRlci5oIFwKICAgICAgICAgaHRtbC9jYW52YXMvSW50MTZBcnJheS5oIFwKKyAgICAgICAg
aHRtbC9jYW52YXMvT0VTVGV4dHVyZUZsb2F0LmggXAogICAgICAgICBodG1sL2NhbnZhcy9XZWJH
TFRleHR1cmUuaCBcCiAgICAgICAgIGh0bWwvY2FudmFzL1dlYkdMVW5pZm9ybUxvY2F0aW9uLmgg
XAogICAgICAgICBodG1sL2NhbnZhcy9VaW50OEFycmF5LmggXApAQCAtMzc2NCw2ICszNzY2LDcg
QEAgU09VUkNFUyArPSBcCiAgICAgICAgIGh0bWwvY2FudmFzL0ludDhBcnJheS5jcHAgXAogICAg
ICAgICBodG1sL2NhbnZhcy9XZWJHTENvbnRleHRBdHRyaWJ1dGVzLmNwcCBcCiAgICAgICAgIGh0
bWwvY2FudmFzL0Zsb2F0MzJBcnJheS5jcHAgXAorICAgICAgICBodG1sL2NhbnZhcy9XZWJHTEV4
dGVuc2lvbi5jcHAgXAogICAgICAgICBodG1sL2NhbnZhcy9XZWJHTEZyYW1lYnVmZmVyLmNwcCBc
CiAgICAgICAgIGh0bWwvY2FudmFzL1dlYkdMR2V0SW5mby5jcHAgXAogICAgICAgICBodG1sL2Nh
bnZhcy9JbnQzMkFycmF5LmNwcCBcCkBAIC0zNzcyLDYgKzM3NzUsNyBAQCBTT1VSQ0VTICs9IFwK
ICAgICAgICAgaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcCBcCiAgICAgICAg
IGh0bWwvY2FudmFzL1dlYkdMU2hhZGVyLmNwcCBcCiAgICAgICAgIGh0bWwvY2FudmFzL0ludDE2
QXJyYXkuY3BwIFwKKyAgICAgICAgaHRtbC9jYW52YXMvT0VTVGV4dHVyZUZsb2F0LmNwcCBcCiAg
ICAgICAgIGh0bWwvY2FudmFzL1dlYkdMVGV4dHVyZS5jcHAgXAogICAgICAgICBodG1sL2NhbnZh
cy9XZWJHTFVuaWZvcm1Mb2NhdGlvbi5jcHAgXAogICAgICAgICBodG1sL2NhbnZhcy9VaW50OEFy
cmF5LmNwcCBcCkluZGV4OiBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agkocmV2aXNpb24gNzM0MjYpCisrKyBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTUxOCw2ICsxNTE4LDEyIEBACiAJCTZFNjdEMkE5
MTI4MEU4QkQwMDg3NThGNyAvKiBFeHRlbnNpb25zM0QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFNjdEMkE4MTI4MEU4QkQwMDg3NThGNyAvKiBFeHRl
bnNpb25zM0QuaCAqLzsgfTsKIAkJNkU5NkJCMUMxMTk4NkVFMjAwN0Q5NENEIC8qIEludGVncmFs
VHlwZWRBcnJheUJhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDZFOTZCQjFBMTE5ODZFRTEwMDdEOTRDRCAvKiBJbnRlZ3JhbFR5cGVkQXJyYXlCYXNl
LmggKi87IH07CiAJCTZFOTZCQjFEMTE5ODZFRTIwMDdEOTRDRCAvKiBUeXBlZEFycmF5QmFzZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkU5NkJCMUIx
MTk4NkVFMTAwN0Q5NENEIC8qIFR5cGVkQXJyYXlCYXNlLmggKi87IH07CisJCTZFQkYwRTQ4MTJB
ODkyNjEwMERCMTcwOSAvKiBPRVNUZXh0dXJlRmxvYXQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkVCRjBFNDUxMkE4OTI2MTAwREIxNzA5IC8qIE9F
U1RleHR1cmVGbG9hdC5jcHAgKi87IH07CisJCTZFQkYwRTQ5MTJBODkyNjEwMERCMTcwOSAvKiBP
RVNUZXh0dXJlRmxvYXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDZFQkYwRTQ2MTJBODkyNjEwMERCMTcwOSAvKiBPRVNUZXh0dXJlRmxvYXQuaCAqLzsg
fTsKKwkJNkVCRjBFNTQxMkE4OTI5ODAwREIxNzA5IC8qIFdlYkdMRXh0ZW5zaW9uLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFQkYwRTUyMTJBODky
OTgwMERCMTcwOSAvKiBXZWJHTEV4dGVuc2lvbi5jcHAgKi87IH07CisJCTZFQkYwRTU1MTJBODky
OTgwMERCMTcwOSAvKiBXZWJHTEV4dGVuc2lvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNkVCRjBFNTMxMkE4OTI5ODAwREIxNzA5IC8qIFdlYkdMRXh0
ZW5zaW9uLmggKi87IH07CisJCTZFQkYwRTc2MTJBOTg2ODgwMERCMTcwOSAvKiBKU09FU1RleHR1
cmVGbG9hdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA2RUJGMEU3NDEyQTk4Njg4MDBEQjE3MDkgLyogSlNPRVNUZXh0dXJlRmxvYXQuY3BwICovOyB9
OworCQk2RUJGMEU3NzEyQTk4Njg4MDBEQjE3MDkgLyogSlNPRVNUZXh0dXJlRmxvYXQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFQkYwRTc1MTJBOTg2
ODgwMERCMTcwOSAvKiBKU09FU1RleHR1cmVGbG9hdC5oICovOyB9OwogCQk2RUU4QTc3MjEwRjgw
M0YzMDA1QTRBMjQgLyogSlNXZWJHTENvbnRleHRBdHRyaWJ1dGVzLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFRThBNzcwMTBGODAzRjMwMDVBNEEy
NCAvKiBKU1dlYkdMQ29udGV4dEF0dHJpYnV0ZXMuY3BwICovOyB9OwogCQk2RUU4QTc3MzEwRjgw
M0YzMDA1QTRBMjQgLyogSlNXZWJHTENvbnRleHRBdHRyaWJ1dGVzLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RUU4QTc3MTEwRjgwM0YzMDA1QTRBMjQg
LyogSlNXZWJHTENvbnRleHRBdHRyaWJ1dGVzLmggKi87IH07CiAJCTcyNjI2RTAyMEVGMDIyRkUw
MEEwN0UyMCAvKiBGb250RmFzdFBhdGguY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNzI2MjZFMDEwRUYwMjJGRTAwQTA3RTIwIC8qIEZvbnRGYXN0UGF0
aC5jcHAgKi87IH07CkBAIC03NzE0LDYgKzc3MjAsMTMgQEAKIAkJNkU2N0QyQTgxMjgwRThCRDAw
ODc1OEY3IC8qIEV4dGVuc2lvbnMzRC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBFeHRlbnNpb25zM0QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNkU5NkJCMUEx
MTk4NkVFMTAwN0Q5NENEIC8qIEludGVncmFsVHlwZWRBcnJheUJhc2UuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBuYW1lID0gSW50ZWdyYWxUeXBlZEFycmF5QmFzZS5oOyBwYXRoID0gY2Fu
dmFzL0ludGVncmFsVHlwZWRBcnJheUJhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNkU5NkJCMUIxMTk4NkVFMTAwN0Q5NENEIC8qIFR5cGVkQXJyYXlCYXNlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFR5cGVkQXJyYXlCYXNlLmg7IHBhdGggPSBjYW52YXMv
VHlwZWRBcnJheUJhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNkVCRjBFNDUx
MkE4OTI2MTAwREIxNzA5IC8qIE9FU1RleHR1cmVGbG9hdC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IG5hbWUgPSBPRVNUZXh0dXJlRmxvYXQuY3BwOyBwYXRoID0gY2FudmFzL09F
U1RleHR1cmVGbG9hdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTZFQkYwRTQ2
MTJBODkyNjEwMERCMTcwOSAvKiBPRVNUZXh0dXJlRmxvYXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBuYW1lID0gT0VTVGV4dHVyZUZsb2F0Lmg7IHBhdGggPSBjYW52YXMvT0VTVGV4dHVy
ZUZsb2F0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTZFQkYwRTQ3MTJBODkyNjEw
MERCMTcwOSAvKiBPRVNUZXh0dXJlRmxvYXQuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgbmFtZSA9IE9F
U1RleHR1cmVGbG9hdC5pZGw7IHBhdGggPSBjYW52YXMvT0VTVGV4dHVyZUZsb2F0LmlkbDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNkVCRjBFNTIxMkE4OTI5ODAwREIxNzA5IC8qIFdl
YkdMRXh0ZW5zaW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFdl
YkdMRXh0ZW5zaW9uLmNwcDsgcGF0aCA9IGNhbnZhcy9XZWJHTEV4dGVuc2lvbi5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTZFQkYwRTUzMTJBODkyOTgwMERCMTcwOSAvKiBXZWJH
TEV4dGVuc2lvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXZWJHTEV4dGVu
c2lvbi5oOyBwYXRoID0gY2FudmFzL1dlYkdMRXh0ZW5zaW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTZFQkYwRTc0MTJBOTg2ODgwMERCMTcwOSAvKiBKU09FU1RleHR1cmVGbG9h
dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU09FU1RleHR1cmVG
bG9hdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTZFQkYwRTc1MTJBOTg2ODgw
MERCMTcwOSAvKiBKU09FU1RleHR1cmVGbG9hdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBKU09FU1RleHR1cmVGbG9hdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk2RUU4QTc3MDEwRjgwM0YzMDA1QTRBMjQgLyogSlNXZWJHTENvbnRleHRBdHRyaWJ1dGVzLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTV2ViR0xDb250ZXh0QXR0
cmlidXRlcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZFRThBNzcxMTBGODAz
RjMwMDVBNEEyNCAvKiBKU1dlYkdMQ29udGV4dEF0dHJpYnV0ZXMuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gSlNXZWJHTENvbnRleHRBdHRyaWJ1dGVzLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTcyNjI2RTAxMEVGMDIyRkUwMEEwN0UyMCAvKiBGb250RmFzdFBh
dGguY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRm9udEZhc3RQYXRo
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEyNjk1LDYgKzEyNzA4LDkgQEAK
IAkJCQk0OUM3QjlBQzEwNDJEMzJFMDAwOUQ0NDcgLyogSW50OEFycmF5LmggKi8sCiAJCQkJNDlD
N0I5QUQxMDQyRDMyRTAwMDlENDQ3IC8qIEludDhBcnJheS5pZGwgKi8sCiAJCQkJNkU5NkJCMUEx
MTk4NkVFMTAwN0Q5NENEIC8qIEludGVncmFsVHlwZWRBcnJheUJhc2UuaCAqLywKKwkJCQk2RUJG
MEU0NTEyQTg5MjYxMDBEQjE3MDkgLyogT0VTVGV4dHVyZUZsb2F0LmNwcCAqLywKKwkJCQk2RUJG
MEU0NjEyQTg5MjYxMDBEQjE3MDkgLyogT0VTVGV4dHVyZUZsb2F0LmggKi8sCisJCQkJNkVCRjBF
NDcxMkE4OTI2MTAwREIxNzA5IC8qIE9FU1RleHR1cmVGbG9hdC5pZGwgKi8sCiAJCQkJNkU5NkJC
MUIxMTk4NkVFMTAwN0Q5NENEIC8qIFR5cGVkQXJyYXlCYXNlLmggKi8sCiAJCQkJNDlFRUNEREMx
MDUwM0MyMzAwMDk5RkFCIC8qIFVpbnQxNkFycmF5LmNwcCAqLywKIAkJCQk0OUVFQ0RERDEwNTAz
QzI0MDAwOTlGQUIgLyogVWludDE2QXJyYXkuaCAqLywKQEAgLTEyNzE2LDYgKzEyNzMyLDggQEAK
IAkJCQk5M0Y2RjFFQTEyN0Y3MEIxMDA1NUNCMDYgLyogV2ViR0xDb250ZXh0RXZlbnQuY3BwICov
LAogCQkJCTkzRjZGMUVCMTI3RjcwQjEwMDU1Q0IwNiAvKiBXZWJHTENvbnRleHRFdmVudC5oICov
LAogCQkJCTkzRjZGMUVDMTI3RjcwQjEwMDU1Q0IwNiAvKiBXZWJHTENvbnRleHRFdmVudC5pZGwg
Ki8sCisJCQkJNkVCRjBFNTIxMkE4OTI5ODAwREIxNzA5IC8qIFdlYkdMRXh0ZW5zaW9uLmNwcCAq
LywKKwkJCQk2RUJGMEU1MzEyQTg5Mjk4MDBEQjE3MDkgLyogV2ViR0xFeHRlbnNpb24uaCAqLywK
IAkJCQk0OUM3QjlBRTEwNDJEMzJFMDAwOUQ0NDcgLyogV2ViR0xGcmFtZWJ1ZmZlci5jcHAgKi8s
CiAJCQkJNDlDN0I5QUYxMDQyRDMyRTAwMDlENDQ3IC8qIFdlYkdMRnJhbWVidWZmZXIuaCAqLywK
IAkJCQk0OUM3QjlCMDEwNDJEMzJFMDAwOUQ0NDcgLyogV2ViR0xGcmFtZWJ1ZmZlci5pZGwgKi8s
CkBAIC0xNTU2OSw2ICsxNTU4Nyw4IEBACiAJCQkJNDlDN0I5ODMxMDQyRDJEMzAwMDlENDQ3IC8q
IEpTSW50OEFycmF5LmggKi8sCiAJCQkJRTQ0NjE0MTAwQ0Q2ODI2OTAwRkFEQTc1IC8qIEpTTWVk
aWFFcnJvci5jcHAgKi8sCiAJCQkJRTQ0NjE0MTEwQ0Q2ODI2OTAwRkFEQTc1IC8qIEpTTWVkaWFF
cnJvci5oICovLAorCQkJCTZFQkYwRTc0MTJBOTg2ODgwMERCMTcwOSAvKiBKU09FU1RleHR1cmVG
bG9hdC5jcHAgKi8sCisJCQkJNkVCRjBFNzUxMkE5ODY4ODAwREIxNzA5IC8qIEpTT0VTVGV4dHVy
ZUZsb2F0LmggKi8sCiAJCQkJQkNFRjQ1RjMwRTY4N0I1QzAwMUMxMjg3IC8qIEpTVGV4dE1ldHJp
Y3MuY3BwICovLAogCQkJCUJDRUY0NUY0MEU2ODdCNUMwMDFDMTI4NyAvKiBKU1RleHRNZXRyaWNz
LmggKi8sCiAJCQkJRTQ0NjE0MTIwQ0Q2ODI2OTAwRkFEQTc1IC8qIEpTVGltZVJhbmdlcy5jcHAg
Ki8sCkBAIC0yMTUwOCw2ICsyMTUyOCw5IEBACiAJCQkJNDk5QjNFQzUxMjhDQ0M0NzAwRTcyNkMy
IC8qIFBsYXRmb3JtQ0FMYXllci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDk5QjNFRDcxMjhDRDMx
NDAwRTcyNkMyIC8qIEdyYXBoaWNzTGF5ZXJDQS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDk5QjNF
REQxMjhEQjUwMjAwRTcyNkMyIC8qIFBsYXRmb3JtQ0FBbmltYXRpb24uaCBpbiBIZWFkZXJzICov
LAorCQkJCTZFQkYwRTQ5MTJBODkyNjEwMERCMTcwOSAvKiBPRVNUZXh0dXJlRmxvYXQuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTZFQkYwRTU1MTJBODkyOTgwMERCMTcwOSAvKiBXZWJHTEV4dGVuc2lv
bi5oIGluIEhlYWRlcnMgKi8sCisJCQkJNkVCRjBFNzcxMkE5ODY4ODAwREIxNzA5IC8qIEpTT0VT
VGV4dHVyZUZsb2F0LmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95
bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTI0MDk0LDYgKzI0MTE3LDkgQEAKIAkJ
CQk0OTlCM0VENjEyOENEMzE0MDBFNzI2QzIgLyogR3JhcGhpY3NMYXllckNBLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTQ5NTg3ODIxMTJBNTdEREYwMDcyMzhBQyAvKiBQbGF0Zm9ybUNBQW5pbWF0
aW9uTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNDk1ODc4MjIxMkE1N0RERjAwNzIzOEFDIC8q
IFBsYXRmb3JtQ0FMYXllck1hYy5tbSBpbiBTb3VyY2VzICovLAorCQkJCTZFQkYwRTQ4MTJBODky
NjEwMERCMTcwOSAvKiBPRVNUZXh0dXJlRmxvYXQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNkVC
RjBFNTQxMkE4OTI5ODAwREIxNzA5IC8qIFdlYkdMRXh0ZW5zaW9uLmNwcCBpbiBTb3VyY2VzICov
LAorCQkJCTZFQkYwRTc2MTJBOTg2ODgwMERCMTcwOSAvKiBKU09FU1RleHR1cmVGbG9hdC5jcHAg
aW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNz
aW5nID0gMDsKIAkJfTsKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvanMvSlNXZWJHTFJlbmRlcmlu
Z0NvbnRleHRDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvanMvSlNX
ZWJHTFJlbmRlcmluZ0NvbnRleHRDdXN0b20uY3BwCShyZXZpc2lvbiA3MzQyNikKKysrIFdlYkNv
cmUvYmluZGluZ3MvanMvSlNXZWJHTFJlbmRlcmluZ0NvbnRleHRDdXN0b20uY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSAiSlNIVE1MQ2FudmFzRWxlbWVudC5o
IgogI2luY2x1ZGUgIkpTSFRNTEltYWdlRWxlbWVudC5oIgogI2luY2x1ZGUgIkpTSW1hZ2VEYXRh
LmgiCisjaW5jbHVkZSAiSlNPRVNUZXh0dXJlRmxvYXQuaCIKICNpbmNsdWRlICJKU1dlYkdMQnVm
ZmVyLmgiCiAjaW5jbHVkZSAiSlNGbG9hdDMyQXJyYXkuaCIKICNpbmNsdWRlICJKU1dlYkdMRnJh
bWVidWZmZXIuaCIKQEAgLTQ3LDggKzQ4LDEwIEBACiAjaW5jbHVkZSAiSlNVaW50OEFycmF5Lmgi
CiAjaW5jbHVkZSAiSlNXZWJLaXRDU1NNYXRyaXguaCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRl
ZC5oIgorI2luY2x1ZGUgIk9FU1RleHR1cmVGbG9hdC5oIgogI2luY2x1ZGUgIldlYkdMQnVmZmVy
LmgiCiAjaW5jbHVkZSAiRmxvYXQzMkFycmF5LmgiCisjaW5jbHVkZSAiV2ViR0xFeHRlbnNpb24u
aCIKICNpbmNsdWRlICJXZWJHTEZyYW1lYnVmZmVyLmgiCiAjaW5jbHVkZSAiV2ViR0xHZXRJbmZv
LmgiCiAjaW5jbHVkZSAiSW50MzJBcnJheS5oIgpAQCAtMTYxLDYgKzE2NCwxOCBAQCBlbnVtIFdo
aWNoUHJvZ3JhbUNhbGwgewogICAgIGtQcm9ncmFtUGFyYW1ldGVyLCBrVW5pZm9ybQogfTsKIAor
c3RhdGljIEpTVmFsdWUgdG9KUyhFeGVjU3RhdGUqIGV4ZWMsIEpTRE9NR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIFdlYkdMRXh0ZW5zaW9uKiBleHRlbnNpb24pCit7CisgICAgaWYgKCFleHRl
bnNpb24pCisgICAgICAgIHJldHVybiBqc051bGwoKTsKKyAgICBzd2l0Y2ggKGV4dGVuc2lvbi0+
Z2V0TmFtZSgpKSB7CisgICAgY2FzZSBXZWJHTEV4dGVuc2lvbjo6T0VTVGV4dHVyZUZsb2F0TmFt
ZToKKyAgICAgICAgcmV0dXJuIHRvSlMoZXhlYywgZ2xvYmFsT2JqZWN0LCBzdGF0aWNfY2FzdDxP
RVNUZXh0dXJlRmxvYXQqPihleHRlbnNpb24pKTsKKyAgICB9CisgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisgICAgcmV0dXJuIGpzTnVsbCgpOworfQorCiBKU1ZhbHVlIEpTV2ViR0xSZW5kZXJp
bmdDb250ZXh0OjpnZXRBdHRhY2hlZFNoYWRlcnMoRXhlY1N0YXRlKiBleGVjKQogewogICAgIGlm
IChleGVjLT5hcmd1bWVudENvdW50KCkgPCAxKQpAQCAtMTg2LDYgKzIwMSwxOSBAQCBKU1ZhbHVl
IEpTV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRBdHRhCiAgICAgcmV0dXJuIGNvbnN0cnVjdEFy
cmF5KGV4ZWMsIGxpc3QpOwogfQogCitKU1ZhbHVlIEpTV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojpn
ZXRFeHRlbnNpb24oRXhlY1N0YXRlKiBleGVjKQoreworICAgIGlmIChleGVjLT5hcmd1bWVudENv
dW50KCkgPCAxKQorICAgICAgICByZXR1cm4gdGhyb3dTeW50YXhFcnJvcihleGVjKTsKKworICAg
IFdlYkdMUmVuZGVyaW5nQ29udGV4dCogY29udGV4dCA9IHN0YXRpY19jYXN0PFdlYkdMUmVuZGVy
aW5nQ29udGV4dCo+KGltcGwoKSk7CisgICAgY29uc3QgU3RyaW5nJiBuYW1lID0gdXN0cmluZ1Rv
U3RyaW5nKGV4ZWMtPmFyZ3VtZW50KDApLnRvU3RyaW5nKGV4ZWMpKTsKKyAgICBpZiAoZXhlYy0+
aGFkRXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworICAgIFdlYkdM
RXh0ZW5zaW9uKiBleHRlbnNpb24gPSBjb250ZXh0LT5nZXRFeHRlbnNpb24obmFtZSk7CisgICAg
cmV0dXJuIHRvSlMoZXhlYywgZ2xvYmFsT2JqZWN0KCksIGV4dGVuc2lvbik7Cit9CisKIEpTVmFs
dWUgSlNXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldEJ1ZmZlclBhcmFtZXRlcihFeGVjU3RhdGUq
IGV4ZWMpCiB7CiAgICAgcmV0dXJuIGdldE9iamVjdFBhcmFtZXRlcih0aGlzLCBleGVjLCBrQnVm
ZmVyKTsKQEAgLTI4MCw2ICszMDgsMTYgQEAgSlNWYWx1ZSBKU1dlYkdMUmVuZGVyaW5nQ29udGV4
dDo6Z2V0U2hhZAogICAgIHJldHVybiB0b0pTKGV4ZWMsIGdsb2JhbE9iamVjdCgpLCBpbmZvKTsK
IH0KIAorSlNWYWx1ZSBKU1dlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0U3VwcG9ydGVkRXh0ZW5z
aW9ucyhFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgV2ViR0xSZW5kZXJpbmdDb250ZXh0KiBjb250
ZXh0ID0gc3RhdGljX2Nhc3Q8V2ViR0xSZW5kZXJpbmdDb250ZXh0Kj4oaW1wbCgpKTsKKyAgICBW
ZWN0b3I8U3RyaW5nPiB2YWx1ZSA9IGNvbnRleHQtPmdldFN1cHBvcnRlZEV4dGVuc2lvbnMoKTsK
KyAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBsaXN0OworICAgIGZvciAoc2l6ZV90IGlpID0gMDsg
aWkgPCB2YWx1ZS5zaXplKCk7ICsraWkpCisgICAgICAgIGxpc3QuYXBwZW5kKGpzU3RyaW5nKGV4
ZWMsIHZhbHVlW2lpXSkpOworICAgIHJldHVybiBjb25zdHJ1Y3RBcnJheShleGVjLCBsaXN0KTsK
K30KKwogSlNWYWx1ZSBKU1dlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0VGV4UGFyYW1ldGVyKEV4
ZWNTdGF0ZSogZXhlYykKIHsKICAgICByZXR1cm4gZ2V0T2JqZWN0UGFyYW1ldGVyKHRoaXMsIGV4
ZWMsIGtUZXh0dXJlKTsKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4V2ViR0xS
ZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdz
L3Y4L2N1c3RvbS9WOFdlYkdMUmVuZGVyaW5nQ29udGV4dEN1c3RvbS5jcHAJKHJldmlzaW9uIDcz
NDI2KQorKysgV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhXZWJHTFJlbmRlcmluZ0NvbnRl
eHRDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MSw2ICs0MSw3IEBACiAjaW5jbHVkZSA8
d3RmL0Zhc3RNYWxsb2MuaD4KIAogI2luY2x1ZGUgIlY4QmluZGluZy5oIgorI2luY2x1ZGUgIlY4
QmluZGluZ01hY3Jvcy5oIgogI2luY2x1ZGUgIlY4QXJyYXlCdWZmZXJWaWV3LmgiCiAjaW5jbHVk
ZSAiVjhXZWJHTEJ1ZmZlci5oIgogI2luY2x1ZGUgIlY4SW50OEFycmF5LmgiCkBAIC02MCw2ICs2
MSw3IEBACiAjaW5jbHVkZSAiVjhIVE1MSW1hZ2VFbGVtZW50LmgiCiAjaW5jbHVkZSAiVjhIVE1M
VmlkZW9FbGVtZW50LmgiCiAjaW5jbHVkZSAiVjhJbWFnZURhdGEuaCIKKyNpbmNsdWRlICJWOE9F
U1RleHR1cmVGbG9hdC5oIgogI2luY2x1ZGUgIlY4UHJveHkuaCIKICNpbmNsdWRlICJXZWJHTFJl
bmRlcmluZ0NvbnRleHQuaCIKIApAQCAtMTUxLDYgKzE1MywxOCBAQCBzdGF0aWMgdjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IHRvVjhPYmplY3QoCiAgICAgfQogfQogCitzdGF0aWMgdjg6OkhhbmRsZTx2
ODo6VmFsdWU+IHRvVjhPYmplY3QoV2ViR0xFeHRlbnNpb24qIGV4dGVuc2lvbikKK3sKKyAgICBp
ZiAoIWV4dGVuc2lvbikKKyAgICAgICAgcmV0dXJuIHY4OjpOdWxsKCk7CisgICAgc3dpdGNoIChl
eHRlbnNpb24tPmdldE5hbWUoKSkgeworICAgIGNhc2UgV2ViR0xFeHRlbnNpb246Ok9FU1RleHR1
cmVGbG9hdE5hbWU6CisgICAgICAgIHJldHVybiB0b1Y4KHN0YXRpY19jYXN0PE9FU1RleHR1cmVG
bG9hdCo+KGV4dGVuc2lvbikpOworICAgIH0KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICByZXR1cm4gdjg6Ok51bGwoKTsKK30KKwogZW51bSBPYmplY3RUeXBlIHsKICAgICBrQnVmZmVy
LCBrUmVuZGVyYnVmZmVyLCBrVGV4dHVyZSwga1ZlcnRleEF0dHJpYgogfTsKQEAgLTI0Myw2ICsy
NTcsMTkgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4V2ViR0xSZW5kZXJpbmdDbwogICAgIHJl
dHVybiBnZXRPYmplY3RQYXJhbWV0ZXIoYXJncywga0J1ZmZlcik7CiB9CiAKK3Y4OjpIYW5kbGU8
djg6OlZhbHVlPiBWOFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0RXh0ZW5zaW9uQ2FsbGJhY2so
Y29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKK3sKKyAgICBJTkNfU1RBVFMoIkRPTS5XZWJHTFJl
bmRlcmluZ0NvbnRleHQuZ2V0RXh0ZW5zaW9uQ2FsbGJhY2soKSIpOworICAgIFdlYkdMUmVuZGVy
aW5nQ29udGV4dCogaW1wID0gVjhXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnRvTmF0aXZlKGFyZ3Mu
SG9sZGVyKCkpOworICAgIGlmIChhcmdzLkxlbmd0aCgpIDwgMSkgeworICAgICAgICBWOFByb3h5
OjpzZXRET01FeGNlcHRpb24oU1lOVEFYX0VSUik7CisgICAgICAgIHJldHVybiBub3RIYW5kbGVk
QnlJbnRlcmNlcHRvcigpOworICAgIH0KKyAgICBTVFJJTkdfVE9fVjhQQVJBTUVURVJfRVhDRVBU
SU9OX0JMT0NLKFY4UGFyYW1ldGVyPD4sIG5hbWUsIGFyZ3NbMF0pOworICAgIFdlYkdMRXh0ZW5z
aW9uKiBleHRlbnNpb24gPSBpbXAtPmdldEV4dGVuc2lvbihuYW1lKTsKKyAgICByZXR1cm4gdG9W
OE9iamVjdChleHRlbnNpb24pOworfQorCiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhXZWJHTFJl
bmRlcmluZ0NvbnRleHQ6OmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlckNhbGxiYWNr
KGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgSU5DX1NUQVRTKCJET00uV2ViR0xS
ZW5kZXJpbmdDb250ZXh0LmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcigpIik7CkBA
IC0zNDEsNiArMzY4LDE3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFdlYkdMUmVuZGVyaW5n
Q28KICAgICByZXR1cm4gdG9WOE9iamVjdChpbmZvKTsKIH0KIAordjg6OkhhbmRsZTx2ODo6VmFs
dWU+IFY4V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRTdXBwb3J0ZWRFeHRlbnNpb25zQ2FsbGJh
Y2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKK3sKKyAgICBJTkNfU1RBVFMoIkRPTS5XZWJH
TFJlbmRlcmluZ0NvbnRleHQuZ2V0U3VwcG9ydGVkRXh0ZW5zaW9uc0NhbGxiYWNrKCkiKTsKKyAg
ICBXZWJHTFJlbmRlcmluZ0NvbnRleHQqIGltcCA9IFY4V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp0
b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKKyAgICBWZWN0b3I8U3RyaW5nPiB2YWx1ZSA9IGltcC0+
Z2V0U3VwcG9ydGVkRXh0ZW5zaW9ucygpOworICAgIHY4OjpMb2NhbDx2ODo6QXJyYXk+IGFycmF5
ID0gdjg6OkFycmF5OjpOZXcodmFsdWUuc2l6ZSgpKTsKKyAgICBmb3IgKHNpemVfdCBpaSA9IDA7
IGlpIDwgdmFsdWUuc2l6ZSgpOyArK2lpKQorICAgICAgICBhcnJheS0+U2V0KHY4OjpJbnRlZ2Vy
OjpOZXcoaWkpLCB2ODo6U3RyaW5nOjpOZXcoZnJvbVdlYkNvcmVTdHJpbmcodmFsdWVbaWldKSwg
dmFsdWVbaWldLmxlbmd0aCgpKSk7CisgICAgcmV0dXJuIGFycmF5OworfQorCiB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gVjhXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFRleFBhcmFtZXRlckNhbGxi
YWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgSU5DX1NUQVRTKCJET00uV2Vi
R0xSZW5kZXJpbmdDb250ZXh0LmdldFRleFBhcmFtZXRlcigpIik7CkluZGV4OiBXZWJDb3JlL2h0
bWwvY2FudmFzL09FU1RleHR1cmVGbG9hdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1s
L2NhbnZhcy9PRVNUZXh0dXJlRmxvYXQuY3BwCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9odG1s
L2NhbnZhcy9PRVNUZXh0dXJlRmxvYXQuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDU0IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICog
MS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
IElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKDNEX0NBTlZBUykKKwor
I2luY2x1ZGUgIk9FU1RleHR1cmVGbG9hdC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK09F
U1RleHR1cmVGbG9hdDo6T0VTVGV4dHVyZUZsb2F0KCkgOiBXZWJHTEV4dGVuc2lvbigpCit7Cit9
CisKK09FU1RleHR1cmVGbG9hdDo6fk9FU1RleHR1cmVGbG9hdCgpCit7Cit9CisKK1dlYkdMRXh0
ZW5zaW9uOjpFeHRlbnNpb25OYW1lIE9FU1RleHR1cmVGbG9hdDo6Z2V0TmFtZSgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIE9FU1RleHR1cmVGbG9hdE5hbWU7Cit9CisKK1Bhc3NSZWZQdHI8T0VTVGV4
dHVyZUZsb2F0PiBPRVNUZXh0dXJlRmxvYXQ6OmNyZWF0ZSgpCit7CisgICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBPRVNUZXh0dXJlRmxvYXQpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisK
KyNlbmRpZiAvLyBFTkFCTEUoM0RfQ0FOVkFTKQpJbmRleDogV2ViQ29yZS9odG1sL2NhbnZhcy9P
RVNUZXh0dXJlRmxvYXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvY2FudmFzL09FU1Rl
eHR1cmVGbG9hdC5oCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9odG1sL2NhbnZhcy9PRVNUZXh0
dXJlRmxvYXQuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0OCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBD
T05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMg
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICog
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYg
T0VTVGV4dHVyZUZsb2F0X2gKKyNkZWZpbmUgT0VTVGV4dHVyZUZsb2F0X2gKKworI2luY2x1ZGUg
IldlYkdMRXh0ZW5zaW9uLmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRl
IDx3dGYvUmVmQ291bnRlZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIE9FU1Rl
eHR1cmVGbG9hdCA6IHB1YmxpYyBXZWJHTEV4dGVuc2lvbiB7CitwdWJsaWM6CisgICAgc3RhdGlj
IFBhc3NSZWZQdHI8T0VTVGV4dHVyZUZsb2F0PiBjcmVhdGUoKTsKKworICAgIHZpcnR1YWwgfk9F
U1RleHR1cmVGbG9hdCgpOworICAgIHZpcnR1YWwgRXh0ZW5zaW9uTmFtZSBnZXROYW1lKCkgY29u
c3Q7CisKK3ByaXZhdGU6CisgICAgT0VTVGV4dHVyZUZsb2F0KCk7Cit9OworCit9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBPRVNUZXh0dXJlRmxvYXRfaApJbmRleDogV2ViQ29y
ZS9odG1sL2NhbnZhcy9PRVNUZXh0dXJlRmxvYXQuaWRsCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
aHRtbC9jYW52YXMvT0VTVGV4dHVyZUZsb2F0LmlkbAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUv
aHRtbC9jYW52YXMvT0VTVGV4dHVyZUZsb2F0LmlkbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwy
OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoK
KyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKK21vZHVsZSBodG1sIHsKKyAgICBpbnRlcmZhY2UgW0NvbmRpdGlvbmFsPTNE
X0NBTlZBUywgT21pdENvbnN0cnVjdG9yXSBPRVNUZXh0dXJlRmxvYXQgeworICAgIH07Cit9Cklu
ZGV4OiBXZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRXh0ZW5zaW9uLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRXh0ZW5zaW9uLmNwcAkocmV2aXNpb24gMCkKKysr
IFdlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xFeHRlbnNpb24uY3BwCShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDQ0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YK
KyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKDNE
X0NBTlZBUykKKworI2luY2x1ZGUgIldlYkdMRXh0ZW5zaW9uLmgiCisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworV2ViR0xFeHRlbnNpb246OldlYkdMRXh0ZW5zaW9uKCkKK3sKK30KKworV2ViR0xF
eHRlbnNpb246On5XZWJHTEV4dGVuc2lvbigpCit7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKKworI2VuZGlmIC8vIEVOQUJMRSgzRF9DQU5WQVMpCkluZGV4OiBXZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdMRXh0ZW5zaW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTEV4dGVuc2lvbi5oCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
TEV4dGVuc2lvbi5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQ5IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRT
IENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElU
UyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisg
KiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRl
ZiBXZWJHTEV4dGVuc2lvbl9oCisjZGVmaW5lIFdlYkdMRXh0ZW5zaW9uX2gKKworI2luY2x1ZGUg
PHd0Zi9SZWZDb3VudGVkLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgV2ViR0xF
eHRlbnNpb24gOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJHTEV4dGVuc2lvbj4geworcHVibGljOgor
ICAgIC8vIEV4dGVuc2lvbiBuYW1lcyBhcmUgbmVlZGVkIHRvIHByb3Blcmx5IHdyYXAgaW5zdGFu
Y2VzIGluIEphdmFTY3JpcHQgb2JqZWN0cy4KKyAgICBlbnVtIEV4dGVuc2lvbk5hbWUgeworICAg
ICAgICBPRVNUZXh0dXJlRmxvYXROYW1lCisgICAgfTsKKworICAgIHZpcnR1YWwgfldlYkdMRXh0
ZW5zaW9uKCk7CisgICAgdmlydHVhbCBFeHRlbnNpb25OYW1lIGdldE5hbWUoKSBjb25zdCA9IDA7
CisKK3Byb3RlY3RlZDoKKyAgICBXZWJHTEV4dGVuc2lvbigpOworfTsKKworfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQorCisjZW5kaWYgLy8gV2ViR0xFeHRlbnNpb25faApJbmRleDogV2ViQ29yZS9o
dG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcAkocmV2aXNpb24gNzM0MjYp
CisrKyBXZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTQzLDYgKzQzLDcgQEAKICNpbmNsdWRlICJJbWFnZURhdGEuaCIKICNpbmNs
dWRlICJJbnRTaXplLmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKKyNpbmNsdWRlICJP
RVNUZXh0dXJlRmxvYXQuaCIKICNpbmNsdWRlICJSZW5kZXJCb3guaCIKICNpbmNsdWRlICJSZW5k
ZXJMYXllci5oIgogI2luY2x1ZGUgIlVpbnQxNkFycmF5LmgiCkBAIC0xNDYyLDYgKzE0NjMsMjEg
QEAgdW5zaWduZWQgbG9uZyBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldAogICAgIHJldHVybiBt
X2NvbnRleHQtPmdldEVycm9yKCk7CiB9CiAKK1dlYkdMRXh0ZW5zaW9uKiBXZWJHTFJlbmRlcmlu
Z0NvbnRleHQ6OmdldEV4dGVuc2lvbihjb25zdCBTdHJpbmcmIG5hbWUpCit7CisgICAgaWYgKG5h
bWUgPT0gIk9FU190ZXh0dXJlX2Zsb2F0IgorICAgICAgICAmJiBtX2NvbnRleHQtPmdldEV4dGVu
c2lvbnMoKS0+c3VwcG9ydHMoIkdMX09FU190ZXh0dXJlX2Zsb2F0IikpIHsKKyAgICAgICAgaWYg
KCFtX29lc1RleHR1cmVGbG9hdCkgeworICAgICAgICAgICAgaWYgKCFtX2NvbnRleHQtPmdldEV4
dGVuc2lvbnMoKS0+ZW5zdXJlRW5hYmxlZCgiR0xfT0VTX3RleHR1cmVfZmxvYXQiKSkKKyAgICAg
ICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIG1fb2VzVGV4dHVyZUZsb2F0ID0gT0VT
VGV4dHVyZUZsb2F0OjpjcmVhdGUoKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gbV9vZXNU
ZXh0dXJlRmxvYXQuZ2V0KCk7CisgICAgfQorCisgICAgcmV0dXJuIDA7Cit9CisKIFdlYkdMR2V0
SW5mbyBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFt
ZXRlcih1bnNpZ25lZCBsb25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBhdHRhY2htZW50LCB1bnNp
Z25lZCBsb25nIHBuYW1lLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBVTlVTRURfUEFSQU0o
ZWMpOwpAQCAtMTg1Nyw2ICsxODczLDE0IEBAIFN0cmluZyBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6
OmdldFNoYWRlclMKICAgICByZXR1cm4gbV9jb250ZXh0LT5nZXRTaGFkZXJTb3VyY2Uob2JqZWN0
T3JaZXJvKHNoYWRlcikpOwogfQogCitWZWN0b3I8U3RyaW5nPiBXZWJHTFJlbmRlcmluZ0NvbnRl
eHQ6OmdldFN1cHBvcnRlZEV4dGVuc2lvbnMoKQoreworICAgIFZlY3RvcjxTdHJpbmc+IHJlc3Vs
dDsKKyAgICBpZiAobV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCktPnN1cHBvcnRzKCJHTF9PRVNf
dGV4dHVyZV9mbG9hdCIpKQorICAgICAgICByZXN1bHQuYXBwZW5kKCJPRVNfdGV4dHVyZV9mbG9h
dCIpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKIFdlYkdMR2V0SW5mbyBXZWJHTFJlbmRlcmlu
Z0NvbnRleHQ6OmdldFRleFBhcmFtZXRlcih1bnNpZ25lZCBsb25nIHRhcmdldCwgdW5zaWduZWQg
bG9uZyBwbmFtZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgVU5VU0VEX1BBUkFNKGVjKTsK
QEAgLTM1OTksNiArMzYyMyw4IEBAIGJvb2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp2YWxpZGF0
ZVRleEYKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpVTlNJR05FRF9TSE9SVF81XzVfNV8x
OgogICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgorICAgICAgICBpZiAodHlwZSA9PSBHcmFw
aGljc0NvbnRleHQzRDo6RkxPQVQgJiYgbV9vZXNUZXh0dXJlRmxvYXQpCisgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRl
eHQzRDo6SU5WQUxJRF9FTlVNKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KQEAgLTM2
MDgsMTQgKzM2MzQsMTYgQEAgYm9vbCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnZhbGlkYXRlVGV4
RgogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OkFMUEhBOgogICAgIGNhc2UgR3JhcGhpY3ND
b250ZXh0M0Q6OkxVTUlOQU5DRToKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpMVU1JTkFO
Q0VfQUxQSEE6Ci0gICAgICAgIGlmICh0eXBlICE9IEdyYXBoaWNzQ29udGV4dDNEOjpVTlNJR05F
RF9CWVRFKSB7CisgICAgICAgIGlmICh0eXBlICE9IEdyYXBoaWNzQ29udGV4dDNEOjpVTlNJR05F
RF9CWVRFCisgICAgICAgICAgICAmJiB0eXBlICE9IEdyYXBoaWNzQ29udGV4dDNEOjpGTE9BVCkg
ewogICAgICAgICAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRl
eHQzRDo6SU5WQUxJRF9PUEVSQVRJT04pOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
ICAgICB9CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlJHQjoK
ICAgICAgICAgaWYgKHR5cGUgIT0gR3JhcGhpY3NDb250ZXh0M0Q6OlVOU0lHTkVEX0JZVEUKLSAg
ICAgICAgICAgICYmIHR5cGUgIT0gR3JhcGhpY3NDb250ZXh0M0Q6OlVOU0lHTkVEX1NIT1JUXzVf
Nl81KSB7CisgICAgICAgICAgICAmJiB0eXBlICE9IEdyYXBoaWNzQ29udGV4dDNEOjpVTlNJR05F
RF9TSE9SVF81XzZfNQorICAgICAgICAgICAgJiYgdHlwZSAhPSBHcmFwaGljc0NvbnRleHQzRDo6
RkxPQVQpIHsKICAgICAgICAgICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhp
Y3NDb250ZXh0M0Q6OklOVkFMSURfT1BFUkFUSU9OKTsKICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICAgICAgfQpAQCAtMzYyMyw3ICszNjUxLDggQEAgYm9vbCBXZWJHTFJlbmRlcmluZ0Nv
bnRleHQ6OnZhbGlkYXRlVGV4RgogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlJHQkE6CiAg
ICAgICAgIGlmICh0eXBlICE9IEdyYXBoaWNzQ29udGV4dDNEOjpVTlNJR05FRF9CWVRFCiAgICAg
ICAgICAgICAmJiB0eXBlICE9IEdyYXBoaWNzQ29udGV4dDNEOjpVTlNJR05FRF9TSE9SVF80XzRf
NF80Ci0gICAgICAgICAgICAmJiB0eXBlICE9IEdyYXBoaWNzQ29udGV4dDNEOjpVTlNJR05FRF9T
SE9SVF81XzVfNV8xKSB7CisgICAgICAgICAgICAmJiB0eXBlICE9IEdyYXBoaWNzQ29udGV4dDNE
OjpVTlNJR05FRF9TSE9SVF81XzVfNV8xCisgICAgICAgICAgICAmJiB0eXBlICE9IEdyYXBoaWNz
Q29udGV4dDNEOjpGTE9BVCkgewogICAgICAgICAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xF
cnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9PUEVSQVRJT04pOwogICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgICAgICB9CkBAIC0zNzEyLDYgKzM3NDEsMTIgQEAgYm9vbCBXZWJH
TFJlbmRlcmluZ0NvbnRleHQ6OnZhbGlkYXRlVGV4RgogICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgICAgICB9CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6
OkZMT0FUOiAvLyBPRVNfdGV4dHVyZV9mbG9hdAorICAgICAgICBpZiAoIXBpeGVscy0+aXNGbG9h
dEFycmF5KCkpIHsKKyAgICAgICAgICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR3Jh
cGhpY3NDb250ZXh0M0Q6OklOVkFMSURfT1BFUkFUSU9OKTsKKyAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgogICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CkluZGV4OiBXZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdMUmVuZGVyaW5nQ29udGV4dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR0xSZW5kZXJpbmdDb250ZXh0LmgJKHJldmlzaW9uIDczNDI2KQorKysgV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuaAkod29ya2luZyBjb3B5KQpAQCAtNDMsNiAr
NDMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBXZWJHTEFjdGl2ZUluZm87CiBjbGFz
cyBXZWJHTEJ1ZmZlcjsKIGNsYXNzIFdlYkdMQ29udGV4dEF0dHJpYnV0ZXM7CitjbGFzcyBXZWJH
TEV4dGVuc2lvbjsKIGNsYXNzIFdlYkdMRnJhbWVidWZmZXI7CiBjbGFzcyBXZWJHTE9iamVjdDsK
IGNsYXNzIFdlYkdMUHJvZ3JhbTsKQEAgLTU1LDYgKzU2LDcgQEAgY2xhc3MgSFRNTFZpZGVvRWxl
bWVudDsKIGNsYXNzIEltYWdlQnVmZmVyOwogY2xhc3MgSW1hZ2VEYXRhOwogY2xhc3MgSW50U2l6
ZTsKK2NsYXNzIE9FU1RleHR1cmVGbG9hdDsKIAogY2xhc3MgV2ViR0xSZW5kZXJpbmdDb250ZXh0
IDogcHVibGljIENhbnZhc1JlbmRlcmluZ0NvbnRleHQgewogcHVibGljOgpAQCAtMTQ1LDYgKzE0
Nyw4IEBAIHB1YmxpYzoKIAogICAgIHVuc2lnbmVkIGxvbmcgZ2V0RXJyb3IoKTsKIAorICAgIFdl
YkdMRXh0ZW5zaW9uKiBnZXRFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBuYW1lKTsKKwogICAgIFdl
YkdMR2V0SW5mbyBnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIodW5zaWduZWQgbG9u
ZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgYXR0YWNobWVudCwgdW5zaWduZWQgbG9uZyBwbmFtZSwg
RXhjZXB0aW9uQ29kZSYpOwogCiAgICAgV2ViR0xHZXRJbmZvIGdldFBhcmFtZXRlcih1bnNpZ25l
ZCBsb25nIHBuYW1lLCBFeGNlcHRpb25Db2RlJik7CkBAIC0xNjQsNiArMTY4LDggQEAgcHVibGlj
OgogCiAgICAgU3RyaW5nIGdldFNoYWRlclNvdXJjZShXZWJHTFNoYWRlciosIEV4Y2VwdGlvbkNv
ZGUmKTsKIAorICAgIFZlY3RvcjxTdHJpbmc+IGdldFN1cHBvcnRlZEV4dGVuc2lvbnMoKTsKKwog
ICAgIFdlYkdMR2V0SW5mbyBnZXRUZXhQYXJhbWV0ZXIodW5zaWduZWQgbG9uZyB0YXJnZXQsIHVu
c2lnbmVkIGxvbmcgcG5hbWUsIEV4Y2VwdGlvbkNvZGUmKTsKIAogICAgIFdlYkdMR2V0SW5mbyBn
ZXRVbmlmb3JtKFdlYkdMUHJvZ3JhbSosIGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiwgRXhj
ZXB0aW9uQ29kZSYpOwpAQCAtNDU2LDYgKzQ2Miw5IEBAIHB1YmxpYzoKICAgICBib29sIG1faXNS
ZXNvdXJjZVNhZmU7CiAgICAgYm9vbCBtX2lzRGVwdGhTdGVuY2lsU3VwcG9ydGVkOwogCisgICAg
Ly8gRW5hYmxlZCBleHRlbnNpb24gb2JqZWN0cy4KKyAgICBSZWZQdHI8T0VTVGV4dHVyZUZsb2F0
PiBtX29lc1RleHR1cmVGbG9hdDsKKwogICAgIC8vIEhlbHBlcnMgZm9yIGdldFBhcmFtZXRlciBh
bmQgb3RoZXJzCiAgICAgV2ViR0xHZXRJbmZvIGdldEJvb2xlYW5QYXJhbWV0ZXIodW5zaWduZWQg
bG9uZyBwbmFtZSk7CiAgICAgV2ViR0xHZXRJbmZvIGdldEJvb2xlYW5BcnJheVBhcmFtZXRlcih1
bnNpZ25lZCBsb25nIHBuYW1lKTsKSW5kZXg6IFdlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5k
ZXJpbmdDb250ZXh0LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
UmVuZGVyaW5nQ29udGV4dC5pZGwJKHJldmlzaW9uIDczNDI2KQorKysgV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yODcsNyAr
Mjg3LDYgQEAgbW9kdWxlIGh0bWwgewogICAgICAgICBjb25zdCB1bnNpZ25lZCBpbnQgVkVORE9S
ICAgICAgICAgICAgICAgICAgICAgICAgID0gMHgxRjAwOwogICAgICAgICBjb25zdCB1bnNpZ25l
ZCBpbnQgUkVOREVSRVIgICAgICAgICAgICAgICAgICAgICAgID0gMHgxRjAxOwogICAgICAgICBj
b25zdCB1bnNpZ25lZCBpbnQgVkVSU0lPTiAgICAgICAgICAgICAgICAgICAgICAgID0gMHgxRjAy
OwotICAgICAgICBjb25zdCB1bnNpZ25lZCBpbnQgRVhURU5TSU9OUyAgICAgICAgICAgICAgICAg
ICAgID0gMHgxRjAzOwogCiAgICAgICAgIC8qIFRleHR1cmVNYWdGaWx0ZXIgKi8KICAgICAgICAg
Y29uc3QgdW5zaWduZWQgaW50IE5FQVJFU1QgICAgICAgICAgICAgICAgICAgICAgICA9IDB4MjYw
MDsKQEAgLTUzNSw2ICs1MzQsOSBAQCBtb2R1bGUgaHRtbCB7CiAKICAgICAgICAgW1N0cmljdFR5
cGVDaGVja2luZ10gdW5zaWduZWQgbG9uZyBnZXRFcnJvcigpOwogCisgICAgICAgIC8vIG9iamVj
dCBnZXRFeHRlbnNpb24oaW4gRE9NU3RyaW5nIG5hbWUpOworICAgICAgICBbU3RyaWN0VHlwZUNo
ZWNraW5nLCBDdXN0b21dIHZvaWQgZ2V0RXh0ZW5zaW9uKGluIERPTVN0cmluZyBuYW1lKTsKKwog
ICAgICAgICAvLyBhbnkgZ2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyKGluIHVuc2ln
bmVkIGxvbmcgdGFyZ2V0LCBpbiB1bnNpZ25lZCBsb25nIGF0dGFjaG1lbnQsIGluIHVuc2lnbmVk
IGxvbmcgcG5hbWUpIHJhaXNlcyhET01FeGNlcHRpb24pOwogICAgICAgICBbU3RyaWN0VHlwZUNo
ZWNraW5nLCBDdXN0b21dIHZvaWQgZ2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyKCk7
CiAgICAgICAgIC8vIGFueSBnZXRQYXJhbWV0ZXIoaW4gdW5zaWduZWQgbG9uZyBwbmFtZSkgcmFp
c2VzKERPTUV4Y2VwdGlvbik7CkBAIC01NTQsNiArNTU2LDkgQEAgbW9kdWxlIGh0bWwgewogCiAg
ICAgICAgIFtTdHJpY3RUeXBlQ2hlY2tpbmcsIENvbnZlcnROdWxsU3RyaW5nVG89TnVsbF0gRE9N
U3RyaW5nICAgIGdldFNoYWRlclNvdXJjZShpbiBXZWJHTFNoYWRlciBzaGFkZXIpIHJhaXNlcyhE
T01FeGNlcHRpb24pOwogCisgICAgICAgIC8vIERPTVN0cmluZ1tdIGdldFN1cHBvcnRlZEV4dGVu
c2lvbnMoKQorICAgICAgICBbU3RyaWN0VHlwZUNoZWNraW5nLCBDdXN0b21dIHZvaWQgZ2V0U3Vw
cG9ydGVkRXh0ZW5zaW9ucygpOworCiAgICAgICAgIC8vIGFueSBnZXRUZXhQYXJhbWV0ZXIoaW4g
dW5zaWduZWQgbG9uZyB0YXJnZXQsIGluIHVuc2lnbmVkIGxvbmcgcG5hbWUpIHJhaXNlcyhET01F
eGNlcHRpb24pOwogICAgICAgICBbU3RyaWN0VHlwZUNoZWNraW5nLCBDdXN0b21dIHZvaWQgZ2V0
VGV4UGFyYW1ldGVyKCk7CiAKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRXh0ZW5z
aW9uczNELmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9FeHRlbnNp
b25zM0QuaAkocmV2aXNpb24gNzM0MjYpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0V4
dGVuc2lvbnMzRC5oCSh3b3JraW5nIGNvcHkpCkBAIC01MCwxMSArNTAsMTcgQEAgcHVibGljOgog
ICAgIC8vICAgR0xfQVJCX3RleHR1cmVfbm9uX3Bvd2VyX29mX3R3byAvIEdMX09FU190ZXh0dXJl
X25wb3QKICAgICAvLyAgIEdMX0VYVF9wYWNrZWRfZGVwdGhfc3RlbmNpbCAvIEdMX09FU19wYWNr
ZWRfZGVwdGhfc3RlbmNpbAogICAgIC8vICAgR0xfQU5HTEVfZnJhbWVidWZmZXJfYmxpdCAvIEdM
X0FOR0xFX2ZyYW1lYnVmZmVyX211bHRpc2FtcGxlCisgICAgLy8gICBHTF9PRVNfdGV4dHVyZV9m
bG9hdAogCiAgICAgLy8gVGFrZXMgZnVsbCBuYW1lIG9mIGV4dGVuc2lvbjsgZm9yIGV4YW1wbGUs
CiAgICAgLy8gIkdMX0VYVF90ZXh0dXJlX2Zvcm1hdF9CR1JBODg4OCIuCiAgICAgdmlydHVhbCBi
b29sIHN1cHBvcnRzKGNvbnN0IFN0cmluZyYpID0gMDsKIAorICAgIC8vIENlcnRhaW4gT3BlbkdM
IGFuZCBXZWJHTCBpbXBsZW1lbnRhdGlvbnMgbWF5IHN1cHBvcnQgZW5hYmxpbmcKKyAgICAvLyBl
eHRlbnNpb25zIGxhemlseS4gUmV0dXJucyB0cnVlIGlmIHRoZSBnaXZlbiBleHRlbnNpb24gaGFz
IGJlZW4KKyAgICAvLyBzdWNjZXNzZnVsbHkgZW5hYmxlZC4KKyAgICB2aXJ0dWFsIGJvb2wgZW5z
dXJlRW5hYmxlZChjb25zdCBTdHJpbmcmKSA9IDA7CisKICAgICBlbnVtIEV4dGVuc2lvbnNFbnVt
VHlwZSB7CiAgICAgICAgIC8vIEdMX0VYVF90ZXh0dXJlX2Zvcm1hdF9CR1JBODg4OCBlbnVtcwog
ICAgICAgICBCR1JBX0VYVCA9IDB4ODBFMSwKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NDb250ZXh0M0QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuY3BwCShyZXZpc2lvbiA3MzQyNikKKysrIFdlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC04Niw2ICs4Niw5IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0M0Q6OmNvbXB1dGVGb3JtYXRB
bmQKICAgICAgICAgKmNvbXBvbmVudHNQZXJQaXhlbCA9IDE7CiAgICAgICAgICpieXRlc1BlckNv
bXBvbmVudCA9IHNpemVvZih1bnNpZ25lZCBzaG9ydCk7CiAgICAgICAgIGJyZWFrOworICAgIGNh
c2UgR3JhcGhpY3NDb250ZXh0M0Q6OkZMT0FUOiAvLyBPRVNfdGV4dHVyZV9mbG9hdAorICAgICAg
ICAqYnl0ZXNQZXJDb21wb25lbnQgPSBzaXplb2YoZmxvYXQpOworICAgICAgICBicmVhazsKICAg
ICBkZWZhdWx0OgogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQpAQCAtMTg4LDYgKzE5MSwy
NyBAQCBib29sIEdyYXBoaWNzQ29udGV4dDNEOjpleHRyYWN0VGV4dHVyZURhCiAgICAgICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgfQogICAgICAgICBicmVhazsKKyAgICBj
YXNlIEZMT0FUOiAvLyBPRVNfdGV4dHVyZV9mbG9hdAorICAgICAgICBzd2l0Y2ggKGZvcm1hdCkg
eworICAgICAgICBjYXNlIFJHQkE6CisgICAgICAgICAgICBzb3VyY2VEYXRhRm9ybWF0ID0gU291
cmNlRm9ybWF0UkdCQTMyRjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFJHQjoK
KyAgICAgICAgICAgIHNvdXJjZURhdGFGb3JtYXQgPSBTb3VyY2VGb3JtYXRSR0IzMkY7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBBTFBIQToKKyAgICAgICAgICAgIHNvdXJjZURh
dGFGb3JtYXQgPSBTb3VyY2VGb3JtYXRBMzJGOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IGNhc2UgTFVNSU5BTkNFOgorICAgICAgICAgICAgc291cmNlRGF0YUZvcm1hdCA9IFNvdXJjZUZv
cm1hdFIzMkY7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBMVU1JTkFOQ0VfQUxQ
SEE6CisgICAgICAgICAgICBzb3VyY2VEYXRhRm9ybWF0ID0gU291cmNlRm9ybWF0UkEzMkY7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOworICAgICAgICB9CisgICAgICAgIGJyZWFrOwogICAgIGNhc2UgVU5TSUdO
RURfU0hPUlRfNV81XzVfMToKICAgICAgICAgc291cmNlRGF0YUZvcm1hdCA9IFNvdXJjZUZvcm1h
dFJHQkE1NTUxOwogICAgICAgICBicmVhazsKQEAgLTUwMSw2ICs1MjUsMzggQEAgdm9pZCB1bnBh
Y2tBMTZCaWdUb1JHQkE4KGNvbnN0IHVpbnQxNl90KgogICAgIGRlc3RpbmF0aW9uWzNdID0gY29u
dmVydENvbG9yMTZCaWdUbzgoc291cmNlWzBdKTsKIH0KIAordm9pZCB1bnBhY2tSR0IzMkZUb1JH
QkEzMkYoY29uc3QgZmxvYXQqIHNvdXJjZSwgZmxvYXQqIGRlc3RpbmF0aW9uKQoreworICAgIGRl
c3RpbmF0aW9uWzBdID0gc291cmNlWzBdOworICAgIGRlc3RpbmF0aW9uWzFdID0gc291cmNlWzFd
OworICAgIGRlc3RpbmF0aW9uWzJdID0gc291cmNlWzJdOworICAgIGRlc3RpbmF0aW9uWzNdID0g
MTsKK30KKwordm9pZCB1bnBhY2tSMzJGVG9SR0JBMzJGKGNvbnN0IGZsb2F0KiBzb3VyY2UsIGZs
b2F0KiBkZXN0aW5hdGlvbikKK3sKKyAgICBkZXN0aW5hdGlvblswXSA9IHNvdXJjZVswXTsKKyAg
ICBkZXN0aW5hdGlvblsxXSA9IHNvdXJjZVswXTsKKyAgICBkZXN0aW5hdGlvblsyXSA9IHNvdXJj
ZVswXTsKKyAgICBkZXN0aW5hdGlvblszXSA9IDE7Cit9CisKK3ZvaWQgdW5wYWNrUkEzMkZUb1JH
QkEzMkYoY29uc3QgZmxvYXQqIHNvdXJjZSwgZmxvYXQqIGRlc3RpbmF0aW9uKQoreworICAgIGRl
c3RpbmF0aW9uWzBdID0gc291cmNlWzBdOworICAgIGRlc3RpbmF0aW9uWzFdID0gc291cmNlWzBd
OworICAgIGRlc3RpbmF0aW9uWzJdID0gc291cmNlWzBdOworICAgIGRlc3RpbmF0aW9uWzNdID0g
c291cmNlWzFdOworfQorCit2b2lkIHVucGFja0EzMkZUb1JHQkEzMkYoY29uc3QgZmxvYXQqIHNv
dXJjZSwgZmxvYXQqIGRlc3RpbmF0aW9uKQoreworICAgIGRlc3RpbmF0aW9uWzBdID0gMDsKKyAg
ICBkZXN0aW5hdGlvblsxXSA9IDA7CisgICAgZGVzdGluYXRpb25bMl0gPSAwOworICAgIGRlc3Rp
bmF0aW9uWzNdID0gc291cmNlWzBdOworfQorCiAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIC8vIFBpeGVsIHBh
Y2tpbmcgcm91dGluZXMuCiAvLwpAQCAtNzEzLDE0ICs3NjksNjggQEAgdm9pZCBwYWNrUkdCQThU
b1Vuc2lnbmVkU2hvcnQ1NjVVbm11bHRpcAogICAgICAgICAgICAgICAgICAgICB8ICgoc291cmNl
QiAmIDB4RjgpID4+IDMpKTsKIH0KIAordm9pZCBwYWNrUkdCQTMyRlRvUkdCMzJGKGNvbnN0IGZs
b2F0KiBzb3VyY2UsIGZsb2F0KiBkZXN0aW5hdGlvbikKK3sKKyAgICBkZXN0aW5hdGlvblswXSA9
IHNvdXJjZVswXTsKKyAgICBkZXN0aW5hdGlvblsxXSA9IHNvdXJjZVsxXTsKKyAgICBkZXN0aW5h
dGlvblsyXSA9IHNvdXJjZVsyXTsKK30KKwordm9pZCBwYWNrUkdCQTMyRlRvUkdCMzJGUHJlbXVs
dGlwbHkoY29uc3QgZmxvYXQqIHNvdXJjZSwgZmxvYXQqIGRlc3RpbmF0aW9uKQoreworICAgIGZs
b2F0IHNjYWxlRmFjdG9yID0gc291cmNlWzNdOworICAgIGRlc3RpbmF0aW9uWzBdID0gc291cmNl
WzBdICogc2NhbGVGYWN0b3I7CisgICAgZGVzdGluYXRpb25bMV0gPSBzb3VyY2VbMV0gKiBzY2Fs
ZUZhY3RvcjsKKyAgICBkZXN0aW5hdGlvblsyXSA9IHNvdXJjZVsyXSAqIHNjYWxlRmFjdG9yOwor
fQorCit2b2lkIHBhY2tSR0JBMzJGVG9SR0JBMzJGUHJlbXVsdGlwbHkoY29uc3QgZmxvYXQqIHNv
dXJjZSwgZmxvYXQqIGRlc3RpbmF0aW9uKQoreworICAgIGZsb2F0IHNjYWxlRmFjdG9yID0gc291
cmNlWzNdOworICAgIGRlc3RpbmF0aW9uWzBdID0gc291cmNlWzBdICogc2NhbGVGYWN0b3I7Cisg
ICAgZGVzdGluYXRpb25bMV0gPSBzb3VyY2VbMV0gKiBzY2FsZUZhY3RvcjsKKyAgICBkZXN0aW5h
dGlvblsyXSA9IHNvdXJjZVsyXSAqIHNjYWxlRmFjdG9yOworICAgIGRlc3RpbmF0aW9uWzNdID0g
c291cmNlWzNdOworfQorCit2b2lkIHBhY2tSR0JBMzJGVG9BMzJGKGNvbnN0IGZsb2F0KiBzb3Vy
Y2UsIGZsb2F0KiBkZXN0aW5hdGlvbikKK3sKKyAgICBkZXN0aW5hdGlvblswXSA9IHNvdXJjZVsz
XTsKK30KKwordm9pZCBwYWNrUkdCQTMyRlRvUjMyRihjb25zdCBmbG9hdCogc291cmNlLCBmbG9h
dCogZGVzdGluYXRpb24pCit7CisgICAgZGVzdGluYXRpb25bMF0gPSBzb3VyY2VbMF07Cit9CisK
K3ZvaWQgcGFja1JHQkEzMkZUb1IzMkZQcmVtdWx0aXBseShjb25zdCBmbG9hdCogc291cmNlLCBm
bG9hdCogZGVzdGluYXRpb24pCit7CisgICAgZmxvYXQgc2NhbGVGYWN0b3IgPSBzb3VyY2VbM107
CisgICAgZGVzdGluYXRpb25bMF0gPSBzb3VyY2VbMF0gKiBzY2FsZUZhY3RvcjsKK30KKworCit2
b2lkIHBhY2tSR0JBMzJGVG9SQTMyRihjb25zdCBmbG9hdCogc291cmNlLCBmbG9hdCogZGVzdGlu
YXRpb24pCit7CisgICAgZGVzdGluYXRpb25bMF0gPSBzb3VyY2VbMF07CisgICAgZGVzdGluYXRp
b25bMV0gPSBzb3VyY2VbM107Cit9CisKK3ZvaWQgcGFja1JHQkEzMkZUb1JBMzJGUHJlbXVsdGlw
bHkoY29uc3QgZmxvYXQqIHNvdXJjZSwgZmxvYXQqIGRlc3RpbmF0aW9uKQoreworICAgIGZsb2F0
IHNjYWxlRmFjdG9yID0gc291cmNlWzNdOworICAgIGRlc3RpbmF0aW9uWzBdID0gc291cmNlWzBd
ICogc2NhbGVGYWN0b3I7CisgICAgZGVzdGluYXRpb25bMV0gPSBzY2FsZUZhY3RvcjsKK30KKwog
fSAvLyBhbm9ueW1vdXMgbmFtZXNwYWNlCiAKIC8vIFRoaXMgaXMgdXNlZCB3aGVuZXZlciB1bnBh
Y2tpbmcgaXMgbmVjZXNzYXJ5OyBpLmUuLCB0aGUgc291cmNlIGRhdGEKLS8vIGlzIG5vdCBpbiBS
R0JBOCBmb3JtYXQsIG9yIHRoZSB1bnBhY2sgYWxpZ25tZW50IHNwZWNpZmllcyB0aGF0IHJvd3MK
LS8vIGFyZSBub3QgdGlnaHRseSBwYWNrZWQuCi10ZW1wbGF0ZTx0eXBlbmFtZSBTb3VyY2VUeXBl
LCB0eXBlbmFtZSBEZXN0VHlwZSwKLSAgICAgICAgIHZvaWQgdW5wYWNraW5nRnVuYyhjb25zdCBT
b3VyY2VUeXBlKiwgdWludDhfdCopLAotICAgICAgICAgdm9pZCBwYWNraW5nRnVuYyhjb25zdCB1
aW50OF90KiwgRGVzdFR5cGUqKT4KKy8vIGlzIG5vdCBpbiBSR0JBOC9SR0JBMzJGIGZvcm1hdCwg
b3IgdGhlIHVucGFjayBhbGlnbm1lbnQgc3BlY2lmaWVzCisvLyB0aGF0IHJvd3MgYXJlIG5vdCB0
aWdodGx5IHBhY2tlZC4KK3RlbXBsYXRlPHR5cGVuYW1lIFNvdXJjZVR5cGUsIHR5cGVuYW1lIElu
dGVybWVkaWF0ZVR5cGUsIHR5cGVuYW1lIERlc3RUeXBlLAorICAgICAgICAgdm9pZCB1bnBhY2tp
bmdGdW5jKGNvbnN0IFNvdXJjZVR5cGUqLCBJbnRlcm1lZGlhdGVUeXBlKiksCisgICAgICAgICB2
b2lkIHBhY2tpbmdGdW5jKGNvbnN0IEludGVybWVkaWF0ZVR5cGUqLCBEZXN0VHlwZSopPgogc3Rh
dGljIHZvaWQgZG9VbnBhY2tpbmdBbmRQYWNraW5nKGNvbnN0IFNvdXJjZVR5cGUqIHNvdXJjZURh
dGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IHdpZHRo
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBoZWlnaHQs
CkBAIC03MzIsNyArODQyLDcgQEAgc3RhdGljIHZvaWQgZG9VbnBhY2tpbmdBbmRQYWNraW5nKGNv
bnN0IAogICAgIGlmICghc291cmNlRWxlbWVudHNQZXJSb3cpIHsKICAgICAgICAgdW5zaWduZWQg
aW50IG51bUVsZW1lbnRzID0gd2lkdGggKiBoZWlnaHQgKiBzb3VyY2VFbGVtZW50c1BlclBpeGVs
OwogICAgICAgICBjb25zdCBTb3VyY2VUeXBlKiBlbmRQb2ludGVyID0gc291cmNlRGF0YSArIG51
bUVsZW1lbnRzOwotICAgICAgICB1aW50OF90IHRlbXBvcmFyeVJHQkFEYXRhWzRdOworICAgICAg
ICBJbnRlcm1lZGlhdGVUeXBlIHRlbXBvcmFyeVJHQkFEYXRhWzRdOwogICAgICAgICB3aGlsZSAo
c291cmNlRGF0YSA8IGVuZFBvaW50ZXIpIHsKICAgICAgICAgICAgIHVucGFja2luZ0Z1bmMoc291
cmNlRGF0YSwgdGVtcG9yYXJ5UkdCQURhdGEpOwogICAgICAgICAgICAgcGFja2luZ0Z1bmModGVt
cG9yYXJ5UkdCQURhdGEsIGRlc3RpbmF0aW9uRGF0YSk7CkBAIC03NDAsNyArODUwLDcgQEAgc3Rh
dGljIHZvaWQgZG9VbnBhY2tpbmdBbmRQYWNraW5nKGNvbnN0IAogICAgICAgICAgICAgZGVzdGlu
YXRpb25EYXRhICs9IGRlc3RpbmF0aW9uRWxlbWVudHNQZXJQaXhlbDsKICAgICAgICAgfQogICAg
IH0gZWxzZSB7Ci0gICAgICAgIHVpbnQ4X3QgdGVtcG9yYXJ5UkdCQURhdGFbNF07CisgICAgICAg
IEludGVybWVkaWF0ZVR5cGUgdGVtcG9yYXJ5UkdCQURhdGFbNF07CiAgICAgICAgIGZvciAodW5z
aWduZWQgaW50IHkgPSAwOyB5IDwgaGVpZ2h0OyArK3kpIHsKICAgICAgICAgICAgIGNvbnN0IFNv
dXJjZVR5cGUqIGN1cnJlbnRTb3VyY2UgPSBzb3VyY2VEYXRhOwogICAgICAgICAgICAgZm9yICh1
bnNpZ25lZCBpbnQgeCA9IDA7IHggPCB3aWR0aDsgKyt4KSB7CkBAIC04MDIsMTc2ICs5MTIsMjMz
IEBAIHN0YXRpYyB2b2lkIGRvUGFja2luZyhjb25zdCB2b2lkKiBzb3VyY2UKICAgICAgICAgICAg
ICAgICBkZXN0aW5hdGlvbkRhdGEgKz0gZGVzdGluYXRpb25FbGVtZW50c1BlclBpeGVsOwogICAg
ICAgICAgICAgfQogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgZG9VbnBhY2tpbmdBbmRQ
YWNraW5nPHVpbnQ4X3QsIERlc3RUeXBlLCB1bnBhY2tSR0JBOFRvUkdCQTgsIHBhY2tpbmdGdW5j
PihzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oc291cmNlRGF0YSksIHdpZHRoLCBoZWlnaHQs
IHNvdXJjZUVsZW1lbnRzUGVyUGl4ZWwsIHNvdXJjZUVsZW1lbnRzUGVyUm93LCBkZXN0aW5hdGlv
bkRhdGEsIGRlc3RpbmF0aW9uRWxlbWVudHNQZXJQaXhlbCk7CisgICAgICAgICAgICBkb1VucGFj
a2luZ0FuZFBhY2tpbmc8dWludDhfdCwgdWludDhfdCwgRGVzdFR5cGUsIHVucGFja1JHQkE4VG9S
R0JBOCwgcGFja2luZ0Z1bmM+KHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihzb3VyY2VEYXRh
KSwgd2lkdGgsIGhlaWdodCwgc291cmNlRWxlbWVudHNQZXJQaXhlbCwgc291cmNlRWxlbWVudHNQ
ZXJSb3csIGRlc3RpbmF0aW9uRGF0YSwgZGVzdGluYXRpb25FbGVtZW50c1BlclBpeGVsKTsKICAg
ICAgICAgfQogICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHQz
RDo6U291cmNlRm9ybWF0UkdCQTE2TGl0dGxlOiB7CiAgICAgICAgIHVuc2lnbmVkIGludCBzb3Vy
Y2VFbGVtZW50c1BlclBpeGVsLCBzb3VyY2VFbGVtZW50c1BlclJvdzsKICAgICAgICAgY29tcHV0
ZUluY3JlbWVudFBhcmFtZXRlcnM8dWludDE2X3Q+KHdpZHRoLCA4LCBzb3VyY2VVbnBhY2tBbGln
bm1lbnQsICZzb3VyY2VFbGVtZW50c1BlclBpeGVsLCAmc291cmNlRWxlbWVudHNQZXJSb3cpOwot
ICAgICAgICBkb1VucGFja2luZ0FuZFBhY2tpbmc8dWludDE2X3QsIERlc3RUeXBlLCB1bnBhY2tS
R0JBMTZMaXR0bGVUb1JHQkE4LCBwYWNraW5nRnVuYz4oc3RhdGljX2Nhc3Q8Y29uc3QgdWludDE2
X3QqPihzb3VyY2VEYXRhKSwgd2lkdGgsIGhlaWdodCwgc291cmNlRWxlbWVudHNQZXJQaXhlbCwg
c291cmNlRWxlbWVudHNQZXJSb3csIGRlc3RpbmF0aW9uRGF0YSwgZGVzdGluYXRpb25FbGVtZW50
c1BlclBpeGVsKTsKKyAgICAgICAgZG9VbnBhY2tpbmdBbmRQYWNraW5nPHVpbnQxNl90LCB1aW50
OF90LCBEZXN0VHlwZSwgdW5wYWNrUkdCQTE2TGl0dGxlVG9SR0JBOCwgcGFja2luZ0Z1bmM+KHN0
YXRpY19jYXN0PGNvbnN0IHVpbnQxNl90Kj4oc291cmNlRGF0YSksIHdpZHRoLCBoZWlnaHQsIHNv
dXJjZUVsZW1lbnRzUGVyUGl4ZWwsIHNvdXJjZUVsZW1lbnRzUGVyUm93LCBkZXN0aW5hdGlvbkRh
dGEsIGRlc3RpbmF0aW9uRWxlbWVudHNQZXJQaXhlbCk7CiAgICAgICAgIGJyZWFrOwogICAgIH0K
ICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpTb3VyY2VGb3JtYXRSR0JBMTZCaWc6IHsKICAg
ICAgICAgdW5zaWduZWQgaW50IHNvdXJjZUVsZW1lbnRzUGVyUGl4ZWwsIHNvdXJjZUVsZW1lbnRz
UGVyUm93OwogICAgICAgICBjb21wdXRlSW5jcmVtZW50UGFyYW1ldGVyczx1aW50MTZfdD4od2lk
dGgsIDgsIHNvdXJjZVVucGFja0FsaWdubWVudCwgJnNvdXJjZUVsZW1lbnRzUGVyUGl4ZWwsICZz
b3VyY2VFbGVtZW50c1BlclJvdyk7Ci0gICAgICAgIGRvVW5wYWNraW5nQW5kUGFja2luZzx1aW50
MTZfdCwgRGVzdFR5cGUsIHVucGFja1JHQkExNkJpZ1RvUkdCQTgsIHBhY2tpbmdGdW5jPihzdGF0
aWNfY2FzdDxjb25zdCB1aW50MTZfdCo+KHNvdXJjZURhdGEpLCB3aWR0aCwgaGVpZ2h0LCBzb3Vy
Y2VFbGVtZW50c1BlclBpeGVsLCBzb3VyY2VFbGVtZW50c1BlclJvdywgZGVzdGluYXRpb25EYXRh
LCBkZXN0aW5hdGlvbkVsZW1lbnRzUGVyUGl4ZWwpOworICAgICAgICBkb1VucGFja2luZ0FuZFBh
Y2tpbmc8dWludDE2X3QsIHVpbnQ4X3QsIERlc3RUeXBlLCB1bnBhY2tSR0JBMTZCaWdUb1JHQkE4
LCBwYWNraW5nRnVuYz4oc3RhdGljX2Nhc3Q8Y29uc3QgdWludDE2X3QqPihzb3VyY2VEYXRhKSwg
d2lkdGgsIGhlaWdodCwgc291cmNlRWxlbWVudHNQZXJQaXhlbCwgc291cmNlRWxlbWVudHNQZXJS
b3csIGRlc3RpbmF0aW9uRGF0YSwgZGVzdGluYXRpb25FbGVtZW50c1BlclBpeGVsKTsKICAgICAg
ICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlNvdXJjZUZvcm1h
dFJHQjg6IHsKICAgICAgICAgdW5zaWduZWQgaW50IHNvdXJjZUVsZW1lbnRzUGVyUGl4ZWwsIHNv
dXJjZUVsZW1lbnRzUGVyUm93OwogICAgICAgICBjb21wdXRlSW5jcmVtZW50UGFyYW1ldGVyczx1
aW50OF90Pih3aWR0aCwgMywgc291cmNlVW5wYWNrQWxpZ25tZW50LCAmc291cmNlRWxlbWVudHNQ
ZXJQaXhlbCwgJnNvdXJjZUVsZW1lbnRzUGVyUm93KTsKLSAgICAgICAgZG9VbnBhY2tpbmdBbmRQ
YWNraW5nPHVpbnQ4X3QsIERlc3RUeXBlLCB1bnBhY2tSR0I4VG9SR0JBOCwgcGFja2luZ0Z1bmM+
KHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihzb3VyY2VEYXRhKSwgd2lkdGgsIGhlaWdodCwg
c291cmNlRWxlbWVudHNQZXJQaXhlbCwgc291cmNlRWxlbWVudHNQZXJSb3csIGRlc3RpbmF0aW9u
RGF0YSwgZGVzdGluYXRpb25FbGVtZW50c1BlclBpeGVsKTsKKyAgICAgICAgZG9VbnBhY2tpbmdB
bmRQYWNraW5nPHVpbnQ4X3QsIHVpbnQ4X3QsIERlc3RUeXBlLCB1bnBhY2tSR0I4VG9SR0JBOCwg
cGFja2luZ0Z1bmM+KHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihzb3VyY2VEYXRhKSwgd2lk
dGgsIGhlaWdodCwgc291cmNlRWxlbWVudHNQZXJQaXhlbCwgc291cmNlRWxlbWVudHNQZXJSb3cs
IGRlc3RpbmF0aW9uRGF0YSwgZGVzdGluYXRpb25FbGVtZW50c1BlclBpeGVsKTsKICAgICAgICAg
YnJlYWs7CiAgICAgfQogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlNvdXJjZUZvcm1hdFJH
QjE2TGl0dGxlOiB7CiAgICAgICAgIHVuc2lnbmVkIGludCBzb3VyY2VFbGVtZW50c1BlclBpeGVs
LCBzb3VyY2VFbGVtZW50c1BlclJvdzsKICAgICAgICAgY29tcHV0ZUluY3JlbWVudFBhcmFtZXRl
cnM8dWludDE2X3Q+KHdpZHRoLCA2LCBzb3VyY2VVbnBhY2tBbGlnbm1lbnQsICZzb3VyY2VFbGVt
ZW50c1BlclBpeGVsLCAmc291cmNlRWxlbWVudHNQZXJSb3cpOwotICAgICAgICBkb1VucGFja2lu
Z0FuZFBhY2tpbmc8dWludDE2X3QsIERlc3RUeXBlLCB1bnBhY2tSR0IxNkxpdHRsZVRvUkdCQTgs
IHBhY2tpbmdGdW5jPihzdGF0aWNfY2FzdDxjb25zdCB1aW50MTZfdCo+KHNvdXJjZURhdGEpLCB3
aWR0aCwgaGVpZ2h0LCBzb3VyY2VFbGVtZW50c1BlclBpeGVsLCBzb3VyY2VFbGVtZW50c1BlclJv
dywgZGVzdGluYXRpb25EYXRhLCBkZXN0aW5hdGlvbkVsZW1lbnRzUGVyUGl4ZWwpOworICAgICAg
ICBkb1VucGFja2luZ0FuZFBhY2tpbmc8dWludDE2X3QsIHVpbnQ4X3QsIERlc3RUeXBlLCB1bnBh
Y2tSR0IxNkxpdHRsZVRvUkdCQTgsIHBhY2tpbmdGdW5jPihzdGF0aWNfY2FzdDxjb25zdCB1aW50
MTZfdCo+KHNvdXJjZURhdGEpLCB3aWR0aCwgaGVpZ2h0LCBzb3VyY2VFbGVtZW50c1BlclBpeGVs
LCBzb3VyY2VFbGVtZW50c1BlclJvdywgZGVzdGluYXRpb25EYXRhLCBkZXN0aW5hdGlvbkVsZW1l
bnRzUGVyUGl4ZWwpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBHcmFwaGljc0Nv
bnRleHQzRDo6U291cmNlRm9ybWF0UkdCMTZCaWc6IHsKICAgICAgICAgdW5zaWduZWQgaW50IHNv
dXJjZUVsZW1lbnRzUGVyUGl4ZWwsIHNvdXJjZUVsZW1lbnRzUGVyUm93OwogICAgICAgICBjb21w
dXRlSW5jcmVtZW50UGFyYW1ldGVyczx1aW50MTZfdD4od2lkdGgsIDYsIHNvdXJjZVVucGFja0Fs
aWdubWVudCwgJnNvdXJjZUVsZW1lbnRzUGVyUGl4ZWwsICZzb3VyY2VFbGVtZW50c1BlclJvdyk7
Ci0gICAgICAgIGRvVW5wYWNraW5nQW5kUGFja2luZzx1aW50MTZfdCwgRGVzdFR5cGUsIHVucGFj
a1JHQjE2QmlnVG9SR0JBOCwgcGFja2luZ0Z1bmM+KHN0YXRpY19jYXN0PGNvbnN0IHVpbnQxNl90
Kj4oc291cmNlRGF0YSksIHdpZHRoLCBoZWlnaHQsIHNvdXJjZUVsZW1lbnRzUGVyUGl4ZWwsIHNv
dXJjZUVsZW1lbnRzUGVyUm93LCBkZXN0aW5hdGlvbkRhdGEsIGRlc3RpbmF0aW9uRWxlbWVudHNQ
ZXJQaXhlbCk7CisgICAgICAgIGRvVW5wYWNraW5nQW5kUGFja2luZzx1aW50MTZfdCwgdWludDhf
dCwgRGVzdFR5cGUsIHVucGFja1JHQjE2QmlnVG9SR0JBOCwgcGFja2luZ0Z1bmM+KHN0YXRpY19j
YXN0PGNvbnN0IHVpbnQxNl90Kj4oc291cmNlRGF0YSksIHdpZHRoLCBoZWlnaHQsIHNvdXJjZUVs
ZW1lbnRzUGVyUGl4ZWwsIHNvdXJjZUVsZW1lbnRzUGVyUm93LCBkZXN0aW5hdGlvbkRhdGEsIGRl
c3RpbmF0aW9uRWxlbWVudHNQZXJQaXhlbCk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBj
YXNlIEdyYXBoaWNzQ29udGV4dDNEOjpTb3VyY2VGb3JtYXRCR1I4OiB7CiAgICAgICAgIHVuc2ln
bmVkIGludCBzb3VyY2VFbGVtZW50c1BlclBpeGVsLCBzb3VyY2VFbGVtZW50c1BlclJvdzsKICAg
ICAgICAgY29tcHV0ZUluY3JlbWVudFBhcmFtZXRlcnM8dWludDhfdD4od2lkdGgsIDMsIHNvdXJj
ZVVucGFja0FsaWdubWVudCwgJnNvdXJjZUVsZW1lbnRzUGVyUGl4ZWwsICZzb3VyY2VFbGVtZW50
c1BlclJvdyk7Ci0gICAgICAgIGRvVW5wYWNraW5nQW5kUGFja2luZzx1aW50OF90LCBEZXN0VHlw
ZSwgdW5wYWNrQkdSOFRvUkdCQTgsIHBhY2tpbmdGdW5jPihzdGF0aWNfY2FzdDxjb25zdCB1aW50
OF90Kj4oc291cmNlRGF0YSksIHdpZHRoLCBoZWlnaHQsIHNvdXJjZUVsZW1lbnRzUGVyUGl4ZWws
IHNvdXJjZUVsZW1lbnRzUGVyUm93LCBkZXN0aW5hdGlvbkRhdGEsIGRlc3RpbmF0aW9uRWxlbWVu
dHNQZXJQaXhlbCk7CisgICAgICAgIGRvVW5wYWNraW5nQW5kUGFja2luZzx1aW50OF90LCB1aW50
OF90LCBEZXN0VHlwZSwgdW5wYWNrQkdSOFRvUkdCQTgsIHBhY2tpbmdGdW5jPihzdGF0aWNfY2Fz
dDxjb25zdCB1aW50OF90Kj4oc291cmNlRGF0YSksIHdpZHRoLCBoZWlnaHQsIHNvdXJjZUVsZW1l
bnRzUGVyUGl4ZWwsIHNvdXJjZUVsZW1lbnRzUGVyUm93LCBkZXN0aW5hdGlvbkRhdGEsIGRlc3Rp
bmF0aW9uRWxlbWVudHNQZXJQaXhlbCk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBjYXNl
IEdyYXBoaWNzQ29udGV4dDNEOjpTb3VyY2VGb3JtYXRBUkdCODogewogICAgICAgICB1bnNpZ25l
ZCBpbnQgc291cmNlRWxlbWVudHNQZXJQaXhlbCwgc291cmNlRWxlbWVudHNQZXJSb3c7CiAgICAg
ICAgIGNvbXB1dGVJbmNyZW1lbnRQYXJhbWV0ZXJzPHVpbnQ4X3Q+KHdpZHRoLCA0LCBzb3VyY2VV
bnBhY2tBbGlnbm1lbnQsICZzb3VyY2VFbGVtZW50c1BlclBpeGVsLCAmc291cmNlRWxlbWVudHNQ
ZXJSb3cpOwotICAgICAgICBkb1VucGFja2luZ0FuZFBhY2tpbmc8dWludDhfdCwgRGVzdFR5cGUs
IHVucGFja0FSR0I4VG9SR0JBOCwgcGFja2luZ0Z1bmM+KHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4
X3QqPihzb3VyY2VEYXRhKSwgd2lkdGgsIGhlaWdodCwgc291cmNlRWxlbWVudHNQZXJQaXhlbCwg
c291cmNlRWxlbWVudHNQZXJSb3csIGRlc3RpbmF0aW9uRGF0YSwgZGVzdGluYXRpb25FbGVtZW50
c1BlclBpeGVsKTsKKyAgICAgICAgZG9VbnBhY2tpbmdBbmRQYWNraW5nPHVpbnQ4X3QsIHVpbnQ4
X3QsIERlc3RUeXBlLCB1bnBhY2tBUkdCOFRvUkdCQTgsIHBhY2tpbmdGdW5jPihzdGF0aWNfY2Fz
dDxjb25zdCB1aW50OF90Kj4oc291cmNlRGF0YSksIHdpZHRoLCBoZWlnaHQsIHNvdXJjZUVsZW1l
bnRzUGVyUGl4ZWwsIHNvdXJjZUVsZW1lbnRzUGVyUm93LCBkZXN0aW5hdGlvbkRhdGEsIGRlc3Rp
bmF0aW9uRWxlbWVudHNQZXJQaXhlbCk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBjYXNl
IEdyYXBoaWNzQ29udGV4dDNEOjpTb3VyY2VGb3JtYXRBUkdCMTZMaXR0bGU6IHsKICAgICAgICAg
dW5zaWduZWQgaW50IHNvdXJjZUVsZW1lbnRzUGVyUGl4ZWwsIHNvdXJjZUVsZW1lbnRzUGVyUm93
OwogICAgICAgICBjb21wdXRlSW5jcmVtZW50UGFyYW1ldGVyczx1aW50MTZfdD4od2lkdGgsIDgs
IHNvdXJjZVVucGFja0FsaWdubWVudCwgJnNvdXJjZUVsZW1lbnRzUGVyUGl4ZWwsICZzb3VyY2VF
bGVtZW50c1BlclJvdyk7Ci0gICAgICAgIGRvVW5wYWNraW5nQW5kUGFja2luZzx1aW50MTZfdCwg
RGVzdFR5cGUsIHVucGFja0FSR0IxNkxpdHRsZVRvUkdCQTgsIHBhY2tpbmdGdW5jPihzdGF0aWNf
Y2FzdDxjb25zdCB1aW50MTZfdCo+KHNvdXJjZURhdGEpLCB3aWR0aCwgaGVpZ2h0LCBzb3VyY2VF
bGVtZW50c1BlclBpeGVsLCBzb3VyY2VFbGVtZW50c1BlclJvdywgZGVzdGluYXRpb25EYXRhLCBk
ZXN0aW5hdGlvbkVsZW1lbnRzUGVyUGl4ZWwpOworICAgICAgICBkb1VucGFja2luZ0FuZFBhY2tp
bmc8dWludDE2X3QsIHVpbnQ4X3QsIERlc3RUeXBlLCB1bnBhY2tBUkdCMTZMaXR0bGVUb1JHQkE4
LCBwYWNraW5nRnVuYz4oc3RhdGljX2Nhc3Q8Y29uc3QgdWludDE2X3QqPihzb3VyY2VEYXRhKSwg
d2lkdGgsIGhlaWdodCwgc291cmNlRWxlbWVudHNQZXJQaXhlbCwgc291cmNlRWxlbWVudHNQZXJS
b3csIGRlc3RpbmF0aW9uRGF0YSwgZGVzdGluYXRpb25FbGVtZW50c1BlclBpeGVsKTsKICAgICAg
ICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlNvdXJjZUZvcm1h
dEFSR0IxNkJpZzogewogICAgICAgICB1bnNpZ25lZCBpbnQgc291cmNlRWxlbWVudHNQZXJQaXhl
bCwgc291cmNlRWxlbWVudHNQZXJSb3c7CiAgICAgICAgIGNvbXB1dGVJbmNyZW1lbnRQYXJhbWV0
ZXJzPHVpbnQxNl90Pih3aWR0aCwgOCwgc291cmNlVW5wYWNrQWxpZ25tZW50LCAmc291cmNlRWxl
bWVudHNQZXJQaXhlbCwgJnNvdXJjZUVsZW1lbnRzUGVyUm93KTsKLSAgICAgICAgZG9VbnBhY2tp
bmdBbmRQYWNraW5nPHVpbnQxNl90LCBEZXN0VHlwZSwgdW5wYWNrQVJHQjE2QmlnVG9SR0JBOCwg
cGFja2luZ0Z1bmM+KHN0YXRpY19jYXN0PGNvbnN0IHVpbnQxNl90Kj4oc291cmNlRGF0YSksIHdp
ZHRoLCBoZWlnaHQsIHNvdXJjZUVsZW1lbnRzUGVyUGl4ZWwsIHNvdXJjZUVsZW1lbnRzUGVyUm93
LCBkZXN0aW5hdGlvbkRhdGEsIGRlc3RpbmF0aW9uRWxlbWVudHNQZXJQaXhlbCk7CisgICAgICAg
IGRvVW5wYWNraW5nQW5kUGFja2luZzx1aW50MTZfdCwgdWludDhfdCwgRGVzdFR5cGUsIHVucGFj
a0FSR0IxNkJpZ1RvUkdCQTgsIHBhY2tpbmdGdW5jPihzdGF0aWNfY2FzdDxjb25zdCB1aW50MTZf
dCo+KHNvdXJjZURhdGEpLCB3aWR0aCwgaGVpZ2h0LCBzb3VyY2VFbGVtZW50c1BlclBpeGVsLCBz
b3VyY2VFbGVtZW50c1BlclJvdywgZGVzdGluYXRpb25EYXRhLCBkZXN0aW5hdGlvbkVsZW1lbnRz
UGVyUGl4ZWwpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBHcmFwaGljc0NvbnRl
eHQzRDo6U291cmNlRm9ybWF0QUJHUjg6IHsKICAgICAgICAgdW5zaWduZWQgaW50IHNvdXJjZUVs
ZW1lbnRzUGVyUGl4ZWwsIHNvdXJjZUVsZW1lbnRzUGVyUm93OwogICAgICAgICBjb21wdXRlSW5j
cmVtZW50UGFyYW1ldGVyczx1aW50OF90Pih3aWR0aCwgNCwgc291cmNlVW5wYWNrQWxpZ25tZW50
LCAmc291cmNlRWxlbWVudHNQZXJQaXhlbCwgJnNvdXJjZUVsZW1lbnRzUGVyUm93KTsKLSAgICAg
ICAgZG9VbnBhY2tpbmdBbmRQYWNraW5nPHVpbnQ4X3QsIERlc3RUeXBlLCB1bnBhY2tBQkdSOFRv
UkdCQTgsIHBhY2tpbmdGdW5jPihzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oc291cmNlRGF0
YSksIHdpZHRoLCBoZWlnaHQsIHNvdXJjZUVsZW1lbnRzUGVyUGl4ZWwsIHNvdXJjZUVsZW1lbnRz
UGVyUm93LCBkZXN0aW5hdGlvbkRhdGEsIGRlc3RpbmF0aW9uRWxlbWVudHNQZXJQaXhlbCk7Cisg
ICAgICAgIGRvVW5wYWNraW5nQW5kUGFja2luZzx1aW50OF90LCB1aW50OF90LCBEZXN0VHlwZSwg
dW5wYWNrQUJHUjhUb1JHQkE4LCBwYWNraW5nRnVuYz4oc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhf
dCo+KHNvdXJjZURhdGEpLCB3aWR0aCwgaGVpZ2h0LCBzb3VyY2VFbGVtZW50c1BlclBpeGVsLCBz
b3VyY2VFbGVtZW50c1BlclJvdywgZGVzdGluYXRpb25EYXRhLCBkZXN0aW5hdGlvbkVsZW1lbnRz
UGVyUGl4ZWwpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBHcmFwaGljc0NvbnRl
eHQzRDo6U291cmNlRm9ybWF0QkdSQTg6IHsKICAgICAgICAgdW5zaWduZWQgaW50IHNvdXJjZUVs
ZW1lbnRzUGVyUGl4ZWwsIHNvdXJjZUVsZW1lbnRzUGVyUm93OwogICAgICAgICBjb21wdXRlSW5j
cmVtZW50UGFyYW1ldGVyczx1aW50OF90Pih3aWR0aCwgNCwgc291cmNlVW5wYWNrQWxpZ25tZW50
LCAmc291cmNlRWxlbWVudHNQZXJQaXhlbCwgJnNvdXJjZUVsZW1lbnRzUGVyUm93KTsKLSAgICAg
ICAgZG9VbnBhY2tpbmdBbmRQYWNraW5nPHVpbnQ4X3QsIERlc3RUeXBlLCB1bnBhY2tCR1JBOFRv
UkdCQTgsIHBhY2tpbmdGdW5jPihzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oc291cmNlRGF0
YSksIHdpZHRoLCBoZWlnaHQsIHNvdXJjZUVsZW1lbnRzUGVyUGl4ZWwsIHNvdXJjZUVsZW1lbnRz
UGVyUm93LCBkZXN0aW5hdGlvbkRhdGEsIGRlc3RpbmF0aW9uRWxlbWVudHNQZXJQaXhlbCk7Cisg
ICAgICAgIGRvVW5wYWNraW5nQW5kUGFja2luZzx1aW50OF90LCB1aW50OF90LCBEZXN0VHlwZSwg
dW5wYWNrQkdSQThUb1JHQkE4LCBwYWNraW5nRnVuYz4oc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhf
dCo+KHNvdXJjZURhdGEpLCB3aWR0aCwgaGVpZ2h0LCBzb3VyY2VFbGVtZW50c1BlclBpeGVsLCBz
b3VyY2VFbGVtZW50c1BlclJvdywgZGVzdGluYXRpb25EYXRhLCBkZXN0aW5hdGlvbkVsZW1lbnRz
UGVyUGl4ZWwpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBHcmFwaGljc0NvbnRl
eHQzRDo6U291cmNlRm9ybWF0QkdSQTE2TGl0dGxlOiB7CiAgICAgICAgIHVuc2lnbmVkIGludCBz
b3VyY2VFbGVtZW50c1BlclBpeGVsLCBzb3VyY2VFbGVtZW50c1BlclJvdzsKICAgICAgICAgY29t
cHV0ZUluY3JlbWVudFBhcmFtZXRlcnM8dWludDE2X3Q+KHdpZHRoLCA4LCBzb3VyY2VVbnBhY2tB
bGlnbm1lbnQsICZzb3VyY2VFbGVtZW50c1BlclBpeGVsLCAmc291cmNlRWxlbWVudHNQZXJSb3cp
OwotICAgICAgICBkb1VucGFja2luZ0FuZFBhY2tpbmc8dWludDE2X3QsIERlc3RUeXBlLCB1bnBh
Y2tCR1JBMTZMaXR0bGVUb1JHQkE4LCBwYWNraW5nRnVuYz4oc3RhdGljX2Nhc3Q8Y29uc3QgdWlu
dDE2X3QqPihzb3VyY2VEYXRhKSwgd2lkdGgsIGhlaWdodCwgc291cmNlRWxlbWVudHNQZXJQaXhl
bCwgc291cmNlRWxlbWVudHNQZXJSb3csIGRlc3RpbmF0aW9uRGF0YSwgZGVzdGluYXRpb25FbGVt
ZW50c1BlclBpeGVsKTsKKyAgICAgICAgZG9VbnBhY2tpbmdBbmRQYWNraW5nPHVpbnQxNl90LCB1
aW50OF90LCBEZXN0VHlwZSwgdW5wYWNrQkdSQTE2TGl0dGxlVG9SR0JBOCwgcGFja2luZ0Z1bmM+
KHN0YXRpY19jYXN0PGNvbnN0IHVpbnQxNl90Kj4oc291cmNlRGF0YSksIHdpZHRoLCBoZWlnaHQs
IHNvdXJjZUVsZW1lbnRzUGVyUGl4ZWwsIHNvdXJjZUVsZW1lbnRzUGVyUm93LCBkZXN0aW5hdGlv
bkRhdGEsIGRlc3RpbmF0aW9uRWxlbWVudHNQZXJQaXhlbCk7CiAgICAgICAgIGJyZWFrOwogICAg
IH0KICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpTb3VyY2VGb3JtYXRCR1JBMTZCaWc6IHsK
ICAgICAgICAgdW5zaWduZWQgaW50IHNvdXJjZUVsZW1lbnRzUGVyUGl4ZWwsIHNvdXJjZUVsZW1l
bnRzUGVyUm93OwogICAgICAgICBjb21wdXRlSW5jcmVtZW50UGFyYW1ldGVyczx1aW50MTZfdD4o
d2lkdGgsIDgsIHNvdXJjZVVucGFja0FsaWdubWVudCwgJnNvdXJjZUVsZW1lbnRzUGVyUGl4ZWws
ICZzb3VyY2VFbGVtZW50c1BlclJvdyk7Ci0gICAgICAgIGRvVW5wYWNraW5nQW5kUGFja2luZzx1
aW50MTZfdCwgRGVzdFR5cGUsIHVucGFja0JHUkExNkJpZ1RvUkdCQTgsIHBhY2tpbmdGdW5jPihz
dGF0aWNfY2FzdDxjb25zdCB1aW50MTZfdCo+KHNvdXJjZURhdGEpLCB3aWR0aCwgaGVpZ2h0LCBz
b3VyY2VFbGVtZW50c1BlclBpeGVsLCBzb3VyY2VFbGVtZW50c1BlclJvdywgZGVzdGluYXRpb25E
YXRhLCBkZXN0aW5hdGlvbkVsZW1lbnRzUGVyUGl4ZWwpOworICAgICAgICBkb1VucGFja2luZ0Fu
ZFBhY2tpbmc8dWludDE2X3QsIHVpbnQ4X3QsIERlc3RUeXBlLCB1bnBhY2tCR1JBMTZCaWdUb1JH
QkE4LCBwYWNraW5nRnVuYz4oc3RhdGljX2Nhc3Q8Y29uc3QgdWludDE2X3QqPihzb3VyY2VEYXRh
KSwgd2lkdGgsIGhlaWdodCwgc291cmNlRWxlbWVudHNQZXJQaXhlbCwgc291cmNlRWxlbWVudHNQ
ZXJSb3csIGRlc3RpbmF0aW9uRGF0YSwgZGVzdGluYXRpb25FbGVtZW50c1BlclBpeGVsKTsKICAg
ICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlNvdXJjZUZv
cm1hdFJHQkE1NTUxOiB7CiAgICAgICAgIHVuc2lnbmVkIGludCBzb3VyY2VFbGVtZW50c1BlclBp
eGVsLCBzb3VyY2VFbGVtZW50c1BlclJvdzsKICAgICAgICAgY29tcHV0ZUluY3JlbWVudFBhcmFt
ZXRlcnM8dWludDE2X3Q+KHdpZHRoLCAyLCBzb3VyY2VVbnBhY2tBbGlnbm1lbnQsICZzb3VyY2VF
bGVtZW50c1BlclBpeGVsLCAmc291cmNlRWxlbWVudHNQZXJSb3cpOwotICAgICAgICBkb1VucGFj
a2luZ0FuZFBhY2tpbmc8dWludDE2X3QsIERlc3RUeXBlLCB1bnBhY2tSR0JBNTU1MVRvUkdCQTgs
IHBhY2tpbmdGdW5jPihzdGF0aWNfY2FzdDxjb25zdCB1aW50MTZfdCo+KHNvdXJjZURhdGEpLCB3
aWR0aCwgaGVpZ2h0LCBzb3VyY2VFbGVtZW50c1BlclBpeGVsLCBzb3VyY2VFbGVtZW50c1BlclJv
dywgZGVzdGluYXRpb25EYXRhLCBkZXN0aW5hdGlvbkVsZW1lbnRzUGVyUGl4ZWwpOworICAgICAg
ICBkb1VucGFja2luZ0FuZFBhY2tpbmc8dWludDE2X3QsIHVpbnQ4X3QsIERlc3RUeXBlLCB1bnBh
Y2tSR0JBNTU1MVRvUkdCQTgsIHBhY2tpbmdGdW5jPihzdGF0aWNfY2FzdDxjb25zdCB1aW50MTZf
dCo+KHNvdXJjZURhdGEpLCB3aWR0aCwgaGVpZ2h0LCBzb3VyY2VFbGVtZW50c1BlclBpeGVsLCBz
b3VyY2VFbGVtZW50c1BlclJvdywgZGVzdGluYXRpb25EYXRhLCBkZXN0aW5hdGlvbkVsZW1lbnRz
UGVyUGl4ZWwpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBHcmFwaGljc0NvbnRl
eHQzRDo6U291cmNlRm9ybWF0UkdCQTQ0NDQ6IHsKICAgICAgICAgdW5zaWduZWQgaW50IHNvdXJj
ZUVsZW1lbnRzUGVyUGl4ZWwsIHNvdXJjZUVsZW1lbnRzUGVyUm93OwogICAgICAgICBjb21wdXRl
SW5jcmVtZW50UGFyYW1ldGVyczx1aW50MTZfdD4od2lkdGgsIDIsIHNvdXJjZVVucGFja0FsaWdu
bWVudCwgJnNvdXJjZUVsZW1lbnRzUGVyUGl4ZWwsICZzb3VyY2VFbGVtZW50c1BlclJvdyk7Ci0g
ICAgICAgIGRvVW5wYWNraW5nQW5kUGFja2luZzx1aW50MTZfdCwgRGVzdFR5cGUsIHVucGFja1JH
QkE0NDQ0VG9SR0JBOCwgcGFja2luZ0Z1bmM+KHN0YXRpY19jYXN0PGNvbnN0IHVpbnQxNl90Kj4o
c291cmNlRGF0YSksIHdpZHRoLCBoZWlnaHQsIHNvdXJjZUVsZW1lbnRzUGVyUGl4ZWwsIHNvdXJj
ZUVsZW1lbnRzUGVyUm93LCBkZXN0aW5hdGlvbkRhdGEsIGRlc3RpbmF0aW9uRWxlbWVudHNQZXJQ
aXhlbCk7CisgICAgICAgIGRvVW5wYWNraW5nQW5kUGFja2luZzx1aW50MTZfdCwgdWludDhfdCwg
RGVzdFR5cGUsIHVucGFja1JHQkE0NDQ0VG9SR0JBOCwgcGFja2luZ0Z1bmM+KHN0YXRpY19jYXN0
PGNvbnN0IHVpbnQxNl90Kj4oc291cmNlRGF0YSksIHdpZHRoLCBoZWlnaHQsIHNvdXJjZUVsZW1l
bnRzUGVyUGl4ZWwsIHNvdXJjZUVsZW1lbnRzUGVyUm93LCBkZXN0aW5hdGlvbkRhdGEsIGRlc3Rp
bmF0aW9uRWxlbWVudHNQZXJQaXhlbCk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBjYXNl
IEdyYXBoaWNzQ29udGV4dDNEOjpTb3VyY2VGb3JtYXRSR0I1NjU6IHsKICAgICAgICAgdW5zaWdu
ZWQgaW50IHNvdXJjZUVsZW1lbnRzUGVyUGl4ZWwsIHNvdXJjZUVsZW1lbnRzUGVyUm93OwogICAg
ICAgICBjb21wdXRlSW5jcmVtZW50UGFyYW1ldGVyczx1aW50MTZfdD4od2lkdGgsIDIsIHNvdXJj
ZVVucGFja0FsaWdubWVudCwgJnNvdXJjZUVsZW1lbnRzUGVyUGl4ZWwsICZzb3VyY2VFbGVtZW50
c1BlclJvdyk7Ci0gICAgICAgIGRvVW5wYWNraW5nQW5kUGFja2luZzx1aW50MTZfdCwgRGVzdFR5
cGUsIHVucGFja1JHQjU2NVRvUkdCQTgsIHBhY2tpbmdGdW5jPihzdGF0aWNfY2FzdDxjb25zdCB1
aW50MTZfdCo+KHNvdXJjZURhdGEpLCB3aWR0aCwgaGVpZ2h0LCBzb3VyY2VFbGVtZW50c1BlclBp
eGVsLCBzb3VyY2VFbGVtZW50c1BlclJvdywgZGVzdGluYXRpb25EYXRhLCBkZXN0aW5hdGlvbkVs
ZW1lbnRzUGVyUGl4ZWwpOworICAgICAgICBkb1VucGFja2luZ0FuZFBhY2tpbmc8dWludDE2X3Qs
IHVpbnQ4X3QsIERlc3RUeXBlLCB1bnBhY2tSR0I1NjVUb1JHQkE4LCBwYWNraW5nRnVuYz4oc3Rh
dGljX2Nhc3Q8Y29uc3QgdWludDE2X3QqPihzb3VyY2VEYXRhKSwgd2lkdGgsIGhlaWdodCwgc291
cmNlRWxlbWVudHNQZXJQaXhlbCwgc291cmNlRWxlbWVudHNQZXJSb3csIGRlc3RpbmF0aW9uRGF0
YSwgZGVzdGluYXRpb25FbGVtZW50c1BlclBpeGVsKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQog
ICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlNvdXJjZUZvcm1hdFI4OiB7CiAgICAgICAgIHVu
c2lnbmVkIGludCBzb3VyY2VFbGVtZW50c1BlclBpeGVsLCBzb3VyY2VFbGVtZW50c1BlclJvdzsK
ICAgICAgICAgY29tcHV0ZUluY3JlbWVudFBhcmFtZXRlcnM8dWludDhfdD4od2lkdGgsIDEsIHNv
dXJjZVVucGFja0FsaWdubWVudCwgJnNvdXJjZUVsZW1lbnRzUGVyUGl4ZWwsICZzb3VyY2VFbGVt
ZW50c1BlclJvdyk7Ci0gICAgICAgIGRvVW5wYWNraW5nQW5kUGFja2luZzx1aW50OF90LCBEZXN0
VHlwZSwgdW5wYWNrUjhUb1JHQkE4LCBwYWNraW5nRnVuYz4oc3RhdGljX2Nhc3Q8Y29uc3QgdWlu
dDhfdCo+KHNvdXJjZURhdGEpLCB3aWR0aCwgaGVpZ2h0LCBzb3VyY2VFbGVtZW50c1BlclBpeGVs
LCBzb3VyY2VFbGVtZW50c1BlclJvdywgZGVzdGluYXRpb25EYXRhLCBkZXN0aW5hdGlvbkVsZW1l
bnRzUGVyUGl4ZWwpOworICAgICAgICBkb1VucGFja2luZ0FuZFBhY2tpbmc8dWludDhfdCwgdWlu
dDhfdCwgRGVzdFR5cGUsIHVucGFja1I4VG9SR0JBOCwgcGFja2luZ0Z1bmM+KHN0YXRpY19jYXN0
PGNvbnN0IHVpbnQ4X3QqPihzb3VyY2VEYXRhKSwgd2lkdGgsIGhlaWdodCwgc291cmNlRWxlbWVu
dHNQZXJQaXhlbCwgc291cmNlRWxlbWVudHNQZXJSb3csIGRlc3RpbmF0aW9uRGF0YSwgZGVzdGlu
YXRpb25FbGVtZW50c1BlclBpeGVsKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2Ug
R3JhcGhpY3NDb250ZXh0M0Q6OlNvdXJjZUZvcm1hdFIxNkxpdHRsZTogewogICAgICAgICB1bnNp
Z25lZCBpbnQgc291cmNlRWxlbWVudHNQZXJQaXhlbCwgc291cmNlRWxlbWVudHNQZXJSb3c7CiAg
ICAgICAgIGNvbXB1dGVJbmNyZW1lbnRQYXJhbWV0ZXJzPHVpbnQxNl90Pih3aWR0aCwgMiwgc291
cmNlVW5wYWNrQWxpZ25tZW50LCAmc291cmNlRWxlbWVudHNQZXJQaXhlbCwgJnNvdXJjZUVsZW1l
bnRzUGVyUm93KTsKLSAgICAgICAgZG9VbnBhY2tpbmdBbmRQYWNraW5nPHVpbnQxNl90LCBEZXN0
VHlwZSwgdW5wYWNrUjE2TGl0dGxlVG9SR0JBOCwgcGFja2luZ0Z1bmM+KHN0YXRpY19jYXN0PGNv
bnN0IHVpbnQxNl90Kj4oc291cmNlRGF0YSksIHdpZHRoLCBoZWlnaHQsIHNvdXJjZUVsZW1lbnRz
UGVyUGl4ZWwsIHNvdXJjZUVsZW1lbnRzUGVyUm93LCBkZXN0aW5hdGlvbkRhdGEsIGRlc3RpbmF0
aW9uRWxlbWVudHNQZXJQaXhlbCk7CisgICAgICAgIGRvVW5wYWNraW5nQW5kUGFja2luZzx1aW50
MTZfdCwgdWludDhfdCwgRGVzdFR5cGUsIHVucGFja1IxNkxpdHRsZVRvUkdCQTgsIHBhY2tpbmdG
dW5jPihzdGF0aWNfY2FzdDxjb25zdCB1aW50MTZfdCo+KHNvdXJjZURhdGEpLCB3aWR0aCwgaGVp
Z2h0LCBzb3VyY2VFbGVtZW50c1BlclBpeGVsLCBzb3VyY2VFbGVtZW50c1BlclJvdywgZGVzdGlu
YXRpb25EYXRhLCBkZXN0aW5hdGlvbkVsZW1lbnRzUGVyUGl4ZWwpOwogICAgICAgICBicmVhazsK
ICAgICB9CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6U291cmNlRm9ybWF0UjE2QmlnOiB7
CiAgICAgICAgIHVuc2lnbmVkIGludCBzb3VyY2VFbGVtZW50c1BlclBpeGVsLCBzb3VyY2VFbGVt
ZW50c1BlclJvdzsKICAgICAgICAgY29tcHV0ZUluY3JlbWVudFBhcmFtZXRlcnM8dWludDE2X3Q+
KHdpZHRoLCAyLCBzb3VyY2VVbnBhY2tBbGlnbm1lbnQsICZzb3VyY2VFbGVtZW50c1BlclBpeGVs
LCAmc291cmNlRWxlbWVudHNQZXJSb3cpOwotICAgICAgICBkb1VucGFja2luZ0FuZFBhY2tpbmc8
dWludDE2X3QsIERlc3RUeXBlLCB1bnBhY2tSMTZCaWdUb1JHQkE4LCBwYWNraW5nRnVuYz4oc3Rh
dGljX2Nhc3Q8Y29uc3QgdWludDE2X3QqPihzb3VyY2VEYXRhKSwgd2lkdGgsIGhlaWdodCwgc291
cmNlRWxlbWVudHNQZXJQaXhlbCwgc291cmNlRWxlbWVudHNQZXJSb3csIGRlc3RpbmF0aW9uRGF0
YSwgZGVzdGluYXRpb25FbGVtZW50c1BlclBpeGVsKTsKKyAgICAgICAgZG9VbnBhY2tpbmdBbmRQ
YWNraW5nPHVpbnQxNl90LCB1aW50OF90LCBEZXN0VHlwZSwgdW5wYWNrUjE2QmlnVG9SR0JBOCwg
cGFja2luZ0Z1bmM+KHN0YXRpY19jYXN0PGNvbnN0IHVpbnQxNl90Kj4oc291cmNlRGF0YSksIHdp
ZHRoLCBoZWlnaHQsIHNvdXJjZUVsZW1lbnRzUGVyUGl4ZWwsIHNvdXJjZUVsZW1lbnRzUGVyUm93
LCBkZXN0aW5hdGlvbkRhdGEsIGRlc3RpbmF0aW9uRWxlbWVudHNQZXJQaXhlbCk7CiAgICAgICAg
IGJyZWFrOwogICAgIH0KICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpTb3VyY2VGb3JtYXRS
QTg6IHsKICAgICAgICAgdW5zaWduZWQgaW50IHNvdXJjZUVsZW1lbnRzUGVyUGl4ZWwsIHNvdXJj
ZUVsZW1lbnRzUGVyUm93OwogICAgICAgICBjb21wdXRlSW5jcmVtZW50UGFyYW1ldGVyczx1aW50
OF90Pih3aWR0aCwgMiwgc291cmNlVW5wYWNrQWxpZ25tZW50LCAmc291cmNlRWxlbWVudHNQZXJQ
aXhlbCwgJnNvdXJjZUVsZW1lbnRzUGVyUm93KTsKLSAgICAgICAgZG9VbnBhY2tpbmdBbmRQYWNr
aW5nPHVpbnQ4X3QsIERlc3RUeXBlLCB1bnBhY2tSQThUb1JHQkE4LCBwYWNraW5nRnVuYz4oc3Rh
dGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KHNvdXJjZURhdGEpLCB3aWR0aCwgaGVpZ2h0LCBzb3Vy
Y2VFbGVtZW50c1BlclBpeGVsLCBzb3VyY2VFbGVtZW50c1BlclJvdywgZGVzdGluYXRpb25EYXRh
LCBkZXN0aW5hdGlvbkVsZW1lbnRzUGVyUGl4ZWwpOworICAgICAgICBkb1VucGFja2luZ0FuZFBh
Y2tpbmc8dWludDhfdCwgdWludDhfdCwgRGVzdFR5cGUsIHVucGFja1JBOFRvUkdCQTgsIHBhY2tp
bmdGdW5jPihzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oc291cmNlRGF0YSksIHdpZHRoLCBo
ZWlnaHQsIHNvdXJjZUVsZW1lbnRzUGVyUGl4ZWwsIHNvdXJjZUVsZW1lbnRzUGVyUm93LCBkZXN0
aW5hdGlvbkRhdGEsIGRlc3RpbmF0aW9uRWxlbWVudHNQZXJQaXhlbCk7CiAgICAgICAgIGJyZWFr
OwogICAgIH0KICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpTb3VyY2VGb3JtYXRSQTE2TGl0
dGxlOiB7CiAgICAgICAgIHVuc2lnbmVkIGludCBzb3VyY2VFbGVtZW50c1BlclBpeGVsLCBzb3Vy
Y2VFbGVtZW50c1BlclJvdzsKICAgICAgICAgY29tcHV0ZUluY3JlbWVudFBhcmFtZXRlcnM8dWlu
dDE2X3Q+KHdpZHRoLCA0LCBzb3VyY2VVbnBhY2tBbGlnbm1lbnQsICZzb3VyY2VFbGVtZW50c1Bl
clBpeGVsLCAmc291cmNlRWxlbWVudHNQZXJSb3cpOwotICAgICAgICBkb1VucGFja2luZ0FuZFBh
Y2tpbmc8dWludDE2X3QsIERlc3RUeXBlLCB1bnBhY2tSQTE2TGl0dGxlVG9SR0JBOCwgcGFja2lu
Z0Z1bmM+KHN0YXRpY19jYXN0PGNvbnN0IHVpbnQxNl90Kj4oc291cmNlRGF0YSksIHdpZHRoLCBo
ZWlnaHQsIHNvdXJjZUVsZW1lbnRzUGVyUGl4ZWwsIHNvdXJjZUVsZW1lbnRzUGVyUm93LCBkZXN0
aW5hdGlvbkRhdGEsIGRlc3RpbmF0aW9uRWxlbWVudHNQZXJQaXhlbCk7CisgICAgICAgIGRvVW5w
YWNraW5nQW5kUGFja2luZzx1aW50MTZfdCwgdWludDhfdCwgRGVzdFR5cGUsIHVucGFja1JBMTZM
aXR0bGVUb1JHQkE4LCBwYWNraW5nRnVuYz4oc3RhdGljX2Nhc3Q8Y29uc3QgdWludDE2X3QqPihz
b3VyY2VEYXRhKSwgd2lkdGgsIGhlaWdodCwgc291cmNlRWxlbWVudHNQZXJQaXhlbCwgc291cmNl
RWxlbWVudHNQZXJSb3csIGRlc3RpbmF0aW9uRGF0YSwgZGVzdGluYXRpb25FbGVtZW50c1BlclBp
eGVsKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6
OlNvdXJjZUZvcm1hdFJBMTZCaWc6IHsKICAgICAgICAgdW5zaWduZWQgaW50IHNvdXJjZUVsZW1l
bnRzUGVyUGl4ZWwsIHNvdXJjZUVsZW1lbnRzUGVyUm93OwogICAgICAgICBjb21wdXRlSW5jcmVt
ZW50UGFyYW1ldGVyczx1aW50MTZfdD4od2lkdGgsIDQsIHNvdXJjZVVucGFja0FsaWdubWVudCwg
JnNvdXJjZUVsZW1lbnRzUGVyUGl4ZWwsICZzb3VyY2VFbGVtZW50c1BlclJvdyk7Ci0gICAgICAg
IGRvVW5wYWNraW5nQW5kUGFja2luZzx1aW50MTZfdCwgRGVzdFR5cGUsIHVucGFja1JBMTZCaWdU
b1JHQkE4LCBwYWNraW5nRnVuYz4oc3RhdGljX2Nhc3Q8Y29uc3QgdWludDE2X3QqPihzb3VyY2VE
YXRhKSwgd2lkdGgsIGhlaWdodCwgc291cmNlRWxlbWVudHNQZXJQaXhlbCwgc291cmNlRWxlbWVu
dHNQZXJSb3csIGRlc3RpbmF0aW9uRGF0YSwgZGVzdGluYXRpb25FbGVtZW50c1BlclBpeGVsKTsK
KyAgICAgICAgZG9VbnBhY2tpbmdBbmRQYWNraW5nPHVpbnQxNl90LCB1aW50OF90LCBEZXN0VHlw
ZSwgdW5wYWNrUkExNkJpZ1RvUkdCQTgsIHBhY2tpbmdGdW5jPihzdGF0aWNfY2FzdDxjb25zdCB1
aW50MTZfdCo+KHNvdXJjZURhdGEpLCB3aWR0aCwgaGVpZ2h0LCBzb3VyY2VFbGVtZW50c1BlclBp
eGVsLCBzb3VyY2VFbGVtZW50c1BlclJvdywgZGVzdGluYXRpb25EYXRhLCBkZXN0aW5hdGlvbkVs
ZW1lbnRzUGVyUGl4ZWwpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBHcmFwaGlj
c0NvbnRleHQzRDo6U291cmNlRm9ybWF0QVI4OiB7CiAgICAgICAgIHVuc2lnbmVkIGludCBzb3Vy
Y2VFbGVtZW50c1BlclBpeGVsLCBzb3VyY2VFbGVtZW50c1BlclJvdzsKICAgICAgICAgY29tcHV0
ZUluY3JlbWVudFBhcmFtZXRlcnM8dWludDhfdD4od2lkdGgsIDIsIHNvdXJjZVVucGFja0FsaWdu
bWVudCwgJnNvdXJjZUVsZW1lbnRzUGVyUGl4ZWwsICZzb3VyY2VFbGVtZW50c1BlclJvdyk7Ci0g
ICAgICAgIGRvVW5wYWNraW5nQW5kUGFja2luZzx1aW50OF90LCBEZXN0VHlwZSwgdW5wYWNrQVI4
VG9SR0JBOCwgcGFja2luZ0Z1bmM+KHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihzb3VyY2VE
YXRhKSwgd2lkdGgsIGhlaWdodCwgc291cmNlRWxlbWVudHNQZXJQaXhlbCwgc291cmNlRWxlbWVu
dHNQZXJSb3csIGRlc3RpbmF0aW9uRGF0YSwgZGVzdGluYXRpb25FbGVtZW50c1BlclBpeGVsKTsK
KyAgICAgICAgZG9VbnBhY2tpbmdBbmRQYWNraW5nPHVpbnQ4X3QsIHVpbnQ4X3QsIERlc3RUeXBl
LCB1bnBhY2tBUjhUb1JHQkE4LCBwYWNraW5nRnVuYz4oc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhf
dCo+KHNvdXJjZURhdGEpLCB3aWR0aCwgaGVpZ2h0LCBzb3VyY2VFbGVtZW50c1BlclBpeGVsLCBz
b3VyY2VFbGVtZW50c1BlclJvdywgZGVzdGluYXRpb25EYXRhLCBkZXN0aW5hdGlvbkVsZW1lbnRz
UGVyUGl4ZWwpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBHcmFwaGljc0NvbnRl
eHQzRDo6U291cmNlRm9ybWF0QVIxNkxpdHRsZTogewogICAgICAgICB1bnNpZ25lZCBpbnQgc291
cmNlRWxlbWVudHNQZXJQaXhlbCwgc291cmNlRWxlbWVudHNQZXJSb3c7CiAgICAgICAgIGNvbXB1
dGVJbmNyZW1lbnRQYXJhbWV0ZXJzPHVpbnQxNl90Pih3aWR0aCwgNCwgc291cmNlVW5wYWNrQWxp
Z25tZW50LCAmc291cmNlRWxlbWVudHNQZXJQaXhlbCwgJnNvdXJjZUVsZW1lbnRzUGVyUm93KTsK
LSAgICAgICAgZG9VbnBhY2tpbmdBbmRQYWNraW5nPHVpbnQxNl90LCBEZXN0VHlwZSwgdW5wYWNr
QVIxNkxpdHRsZVRvUkdCQTgsIHBhY2tpbmdGdW5jPihzdGF0aWNfY2FzdDxjb25zdCB1aW50MTZf
dCo+KHNvdXJjZURhdGEpLCB3aWR0aCwgaGVpZ2h0LCBzb3VyY2VFbGVtZW50c1BlclBpeGVsLCBz
b3VyY2VFbGVtZW50c1BlclJvdywgZGVzdGluYXRpb25EYXRhLCBkZXN0aW5hdGlvbkVsZW1lbnRz
UGVyUGl4ZWwpOworICAgICAgICBkb1VucGFja2luZ0FuZFBhY2tpbmc8dWludDE2X3QsIHVpbnQ4
X3QsIERlc3RUeXBlLCB1bnBhY2tBUjE2TGl0dGxlVG9SR0JBOCwgcGFja2luZ0Z1bmM+KHN0YXRp
Y19jYXN0PGNvbnN0IHVpbnQxNl90Kj4oc291cmNlRGF0YSksIHdpZHRoLCBoZWlnaHQsIHNvdXJj
ZUVsZW1lbnRzUGVyUGl4ZWwsIHNvdXJjZUVsZW1lbnRzUGVyUm93LCBkZXN0aW5hdGlvbkRhdGEs
IGRlc3RpbmF0aW9uRWxlbWVudHNQZXJQaXhlbCk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAg
ICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpTb3VyY2VGb3JtYXRBUjE2QmlnOiB7CiAgICAgICAg
IHVuc2lnbmVkIGludCBzb3VyY2VFbGVtZW50c1BlclBpeGVsLCBzb3VyY2VFbGVtZW50c1BlclJv
dzsKICAgICAgICAgY29tcHV0ZUluY3JlbWVudFBhcmFtZXRlcnM8dWludDE2X3Q+KHdpZHRoLCA0
LCBzb3VyY2VVbnBhY2tBbGlnbm1lbnQsICZzb3VyY2VFbGVtZW50c1BlclBpeGVsLCAmc291cmNl
RWxlbWVudHNQZXJSb3cpOwotICAgICAgICBkb1VucGFja2luZ0FuZFBhY2tpbmc8dWludDE2X3Qs
IERlc3RUeXBlLCB1bnBhY2tBUjE2QmlnVG9SR0JBOCwgcGFja2luZ0Z1bmM+KHN0YXRpY19jYXN0
PGNvbnN0IHVpbnQxNl90Kj4oc291cmNlRGF0YSksIHdpZHRoLCBoZWlnaHQsIHNvdXJjZUVsZW1l
bnRzUGVyUGl4ZWwsIHNvdXJjZUVsZW1lbnRzUGVyUm93LCBkZXN0aW5hdGlvbkRhdGEsIGRlc3Rp
bmF0aW9uRWxlbWVudHNQZXJQaXhlbCk7CisgICAgICAgIGRvVW5wYWNraW5nQW5kUGFja2luZzx1
aW50MTZfdCwgdWludDhfdCwgRGVzdFR5cGUsIHVucGFja0FSMTZCaWdUb1JHQkE4LCBwYWNraW5n
RnVuYz4oc3RhdGljX2Nhc3Q8Y29uc3QgdWludDE2X3QqPihzb3VyY2VEYXRhKSwgd2lkdGgsIGhl
aWdodCwgc291cmNlRWxlbWVudHNQZXJQaXhlbCwgc291cmNlRWxlbWVudHNQZXJSb3csIGRlc3Rp
bmF0aW9uRGF0YSwgZGVzdGluYXRpb25FbGVtZW50c1BlclBpeGVsKTsKICAgICAgICAgYnJlYWs7
CiAgICAgfQogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlNvdXJjZUZvcm1hdEE4OiB7CiAg
ICAgICAgIHVuc2lnbmVkIGludCBzb3VyY2VFbGVtZW50c1BlclBpeGVsLCBzb3VyY2VFbGVtZW50
c1BlclJvdzsKICAgICAgICAgY29tcHV0ZUluY3JlbWVudFBhcmFtZXRlcnM8dWludDhfdD4od2lk
dGgsIDEsIHNvdXJjZVVucGFja0FsaWdubWVudCwgJnNvdXJjZUVsZW1lbnRzUGVyUGl4ZWwsICZz
b3VyY2VFbGVtZW50c1BlclJvdyk7Ci0gICAgICAgIGRvVW5wYWNraW5nQW5kUGFja2luZzx1aW50
OF90LCBEZXN0VHlwZSwgdW5wYWNrQThUb1JHQkE4LCBwYWNraW5nRnVuYz4oc3RhdGljX2Nhc3Q8
Y29uc3QgdWludDhfdCo+KHNvdXJjZURhdGEpLCB3aWR0aCwgaGVpZ2h0LCBzb3VyY2VFbGVtZW50
c1BlclBpeGVsLCBzb3VyY2VFbGVtZW50c1BlclJvdywgZGVzdGluYXRpb25EYXRhLCBkZXN0aW5h
dGlvbkVsZW1lbnRzUGVyUGl4ZWwpOworICAgICAgICBkb1VucGFja2luZ0FuZFBhY2tpbmc8dWlu
dDhfdCwgdWludDhfdCwgRGVzdFR5cGUsIHVucGFja0E4VG9SR0JBOCwgcGFja2luZ0Z1bmM+KHN0
YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihzb3VyY2VEYXRhKSwgd2lkdGgsIGhlaWdodCwgc291
cmNlRWxlbWVudHNQZXJQaXhlbCwgc291cmNlRWxlbWVudHNQZXJSb3csIGRlc3RpbmF0aW9uRGF0
YSwgZGVzdGluYXRpb25FbGVtZW50c1BlclBpeGVsKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQog
ICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlNvdXJjZUZvcm1hdEExNkxpdHRsZTogewogICAg
ICAgICB1bnNpZ25lZCBpbnQgc291cmNlRWxlbWVudHNQZXJQaXhlbCwgc291cmNlRWxlbWVudHNQ
ZXJSb3c7CiAgICAgICAgIGNvbXB1dGVJbmNyZW1lbnRQYXJhbWV0ZXJzPHVpbnQxNl90Pih3aWR0
aCwgMiwgc291cmNlVW5wYWNrQWxpZ25tZW50LCAmc291cmNlRWxlbWVudHNQZXJQaXhlbCwgJnNv
dXJjZUVsZW1lbnRzUGVyUm93KTsKLSAgICAgICAgZG9VbnBhY2tpbmdBbmRQYWNraW5nPHVpbnQx
Nl90LCBEZXN0VHlwZSwgdW5wYWNrQTE2TGl0dGxlVG9SR0JBOCwgcGFja2luZ0Z1bmM+KHN0YXRp
Y19jYXN0PGNvbnN0IHVpbnQxNl90Kj4oc291cmNlRGF0YSksIHdpZHRoLCBoZWlnaHQsIHNvdXJj
ZUVsZW1lbnRzUGVyUGl4ZWwsIHNvdXJjZUVsZW1lbnRzUGVyUm93LCBkZXN0aW5hdGlvbkRhdGEs
IGRlc3RpbmF0aW9uRWxlbWVudHNQZXJQaXhlbCk7CisgICAgICAgIGRvVW5wYWNraW5nQW5kUGFj
a2luZzx1aW50MTZfdCwgdWludDhfdCwgRGVzdFR5cGUsIHVucGFja0ExNkxpdHRsZVRvUkdCQTgs
IHBhY2tpbmdGdW5jPihzdGF0aWNfY2FzdDxjb25zdCB1aW50MTZfdCo+KHNvdXJjZURhdGEpLCB3
aWR0aCwgaGVpZ2h0LCBzb3VyY2VFbGVtZW50c1BlclBpeGVsLCBzb3VyY2VFbGVtZW50c1BlclJv
dywgZGVzdGluYXRpb25EYXRhLCBkZXN0aW5hdGlvbkVsZW1lbnRzUGVyUGl4ZWwpOwogICAgICAg
ICBicmVhazsKICAgICB9CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6U291cmNlRm9ybWF0
QTE2QmlnOiB7CiAgICAgICAgIHVuc2lnbmVkIGludCBzb3VyY2VFbGVtZW50c1BlclBpeGVsLCBz
b3VyY2VFbGVtZW50c1BlclJvdzsKICAgICAgICAgY29tcHV0ZUluY3JlbWVudFBhcmFtZXRlcnM8
dWludDE2X3Q+KHdpZHRoLCAyLCBzb3VyY2VVbnBhY2tBbGlnbm1lbnQsICZzb3VyY2VFbGVtZW50
c1BlclBpeGVsLCAmc291cmNlRWxlbWVudHNQZXJSb3cpOwotICAgICAgICBkb1VucGFja2luZ0Fu
ZFBhY2tpbmc8dWludDE2X3QsIERlc3RUeXBlLCB1bnBhY2tBMTZCaWdUb1JHQkE4LCBwYWNraW5n
RnVuYz4oc3RhdGljX2Nhc3Q8Y29uc3QgdWludDE2X3QqPihzb3VyY2VEYXRhKSwgd2lkdGgsIGhl
aWdodCwgc291cmNlRWxlbWVudHNQZXJQaXhlbCwgc291cmNlRWxlbWVudHNQZXJSb3csIGRlc3Rp
bmF0aW9uRGF0YSwgZGVzdGluYXRpb25FbGVtZW50c1BlclBpeGVsKTsKKyAgICAgICAgZG9VbnBh
Y2tpbmdBbmRQYWNraW5nPHVpbnQxNl90LCB1aW50OF90LCBEZXN0VHlwZSwgdW5wYWNrQTE2Qmln
VG9SR0JBOCwgcGFja2luZ0Z1bmM+KHN0YXRpY19jYXN0PGNvbnN0IHVpbnQxNl90Kj4oc291cmNl
RGF0YSksIHdpZHRoLCBoZWlnaHQsIHNvdXJjZUVsZW1lbnRzUGVyUGl4ZWwsIHNvdXJjZUVsZW1l
bnRzUGVyUm93LCBkZXN0aW5hdGlvbkRhdGEsIGRlc3RpbmF0aW9uRWxlbWVudHNQZXJQaXhlbCk7
CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlQoZmFs
c2UpOworICAgIH0KK30KKworLy8gVGhpcyBzcGVjaWFsaXplZCByb3V0aW5lIGlzIHVzZWQgb25s
eSBmb3IgZmxvYXRpbmctcG9pbnQgdGV4dHVyZSB1cGxvYWRzLiBJdAorLy8gZG9lcyBub3QgbmVl
ZCB0byBiZSBhcyBnZW5lcmFsIGFzIGRvUGFja2luZywgYWJvdmU7IGJlY2F1c2UgdGhlcmUgYXJl
CisvLyBjdXJyZW50bHkgbm8gbmF0aXZlIGZsb2F0aW5nLXBvaW50IGltYWdlIGZvcm1hdHMgaW4g
V2ViS2l0LCB0aGVyZSBhcmUgb25seSBhCisvLyBmZXcgdXBsb2FkIHBhdGhzLgordGVtcGxhdGU8
dm9pZCBwYWNraW5nRnVuYyhjb25zdCBmbG9hdCosIGZsb2F0Kik+CitzdGF0aWMgdm9pZCBkb0Zs
b2F0aW5nUG9pbnRQYWNraW5nKGNvbnN0IHZvaWQqIHNvdXJjZURhdGEsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdyYXBoaWNzQ29udGV4dDNEOjpTb3VyY2VEYXRhRm9ybWF0
IHNvdXJjZURhdGFGb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVu
c2lnbmVkIGludCB3aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5z
aWduZWQgaW50IGhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5z
aWduZWQgaW50IHNvdXJjZVVucGFja0FsaWdubWVudCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZmxvYXQqIGRlc3RpbmF0aW9uRGF0YSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGRlc3RpbmF0aW9uRWxlbWVudHNQZXJQaXhlbCkK
K3sKKyAgICBzd2l0Y2ggKHNvdXJjZURhdGFGb3JtYXQpIHsKKyAgICBjYXNlIEdyYXBoaWNzQ29u
dGV4dDNEOjpTb3VyY2VGb3JtYXRSR0JBODogeworICAgICAgICB1bnNpZ25lZCBpbnQgc291cmNl
RWxlbWVudHNQZXJQaXhlbCwgc291cmNlRWxlbWVudHNQZXJSb3c7CisgICAgICAgIGNvbXB1dGVJ
bmNyZW1lbnRQYXJhbWV0ZXJzPGZsb2F0Pih3aWR0aCwgNCwgc291cmNlVW5wYWNrQWxpZ25tZW50
LCAmc291cmNlRWxlbWVudHNQZXJQaXhlbCwgJnNvdXJjZUVsZW1lbnRzUGVyUm93KTsKKyAgICAg
ICAgQVNTRVJUKCFzb3VyY2VFbGVtZW50c1BlclJvdyk7IC8vIEd1YXJhbnRlZWQgYmVjYXVzZSBl
YWNoIGNvbG9yIGNoYW5uZWwgaXMgc2l6ZW9mKGZsb2F0KSBieXRlcy4KKyAgICAgICAgY29uc3Qg
ZmxvYXQqIHNvdXJjZSA9IHN0YXRpY19jYXN0PGNvbnN0IGZsb2F0Kj4oc291cmNlRGF0YSk7Cisg
ICAgICAgIHVuc2lnbmVkIGludCBudW1FbGVtZW50cyA9IHdpZHRoICogaGVpZ2h0ICogNDsKKyAg
ICAgICAgY29uc3QgZmxvYXQqIGVuZFBvaW50ZXIgPSBzb3VyY2UgKyBudW1FbGVtZW50czsKKyAg
ICAgICAgd2hpbGUgKHNvdXJjZSA8IGVuZFBvaW50ZXIpIHsKKyAgICAgICAgICAgIHBhY2tpbmdG
dW5jKHNvdXJjZSwgZGVzdGluYXRpb25EYXRhKTsKKyAgICAgICAgICAgIHNvdXJjZSArPSBzb3Vy
Y2VFbGVtZW50c1BlclBpeGVsOworICAgICAgICAgICAgZGVzdGluYXRpb25EYXRhICs9IGRlc3Rp
bmF0aW9uRWxlbWVudHNQZXJQaXhlbDsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKyAgICB9
CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6U291cmNlRm9ybWF0UkdCMzJGOiB7CisgICAg
ICAgIHVuc2lnbmVkIGludCBzb3VyY2VFbGVtZW50c1BlclBpeGVsLCBzb3VyY2VFbGVtZW50c1Bl
clJvdzsKKyAgICAgICAgY29tcHV0ZUluY3JlbWVudFBhcmFtZXRlcnM8ZmxvYXQ+KHdpZHRoLCAz
LCBzb3VyY2VVbnBhY2tBbGlnbm1lbnQsICZzb3VyY2VFbGVtZW50c1BlclBpeGVsLCAmc291cmNl
RWxlbWVudHNQZXJSb3cpOworICAgICAgICBkb1VucGFja2luZ0FuZFBhY2tpbmc8ZmxvYXQsIGZs
b2F0LCBmbG9hdCwgdW5wYWNrUkdCMzJGVG9SR0JBMzJGLCBwYWNraW5nRnVuYz4oc3RhdGljX2Nh
c3Q8Y29uc3QgZmxvYXQqPihzb3VyY2VEYXRhKSwgd2lkdGgsIGhlaWdodCwgc291cmNlRWxlbWVu
dHNQZXJQaXhlbCwgc291cmNlRWxlbWVudHNQZXJSb3csIGRlc3RpbmF0aW9uRGF0YSwgZGVzdGlu
YXRpb25FbGVtZW50c1BlclBpeGVsKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2Ug
R3JhcGhpY3NDb250ZXh0M0Q6OlNvdXJjZUZvcm1hdFIzMkY6IHsKKyAgICAgICAgdW5zaWduZWQg
aW50IHNvdXJjZUVsZW1lbnRzUGVyUGl4ZWwsIHNvdXJjZUVsZW1lbnRzUGVyUm93OworICAgICAg
ICBjb21wdXRlSW5jcmVtZW50UGFyYW1ldGVyczxmbG9hdD4od2lkdGgsIDEsIHNvdXJjZVVucGFj
a0FsaWdubWVudCwgJnNvdXJjZUVsZW1lbnRzUGVyUGl4ZWwsICZzb3VyY2VFbGVtZW50c1BlclJv
dyk7CisgICAgICAgIGRvVW5wYWNraW5nQW5kUGFja2luZzxmbG9hdCwgZmxvYXQsIGZsb2F0LCB1
bnBhY2tSMzJGVG9SR0JBMzJGLCBwYWNraW5nRnVuYz4oc3RhdGljX2Nhc3Q8Y29uc3QgZmxvYXQq
Pihzb3VyY2VEYXRhKSwgd2lkdGgsIGhlaWdodCwgc291cmNlRWxlbWVudHNQZXJQaXhlbCwgc291
cmNlRWxlbWVudHNQZXJSb3csIGRlc3RpbmF0aW9uRGF0YSwgZGVzdGluYXRpb25FbGVtZW50c1Bl
clBpeGVsKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0
M0Q6OlNvdXJjZUZvcm1hdFJBMzJGOiB7CisgICAgICAgIHVuc2lnbmVkIGludCBzb3VyY2VFbGVt
ZW50c1BlclBpeGVsLCBzb3VyY2VFbGVtZW50c1BlclJvdzsKKyAgICAgICAgY29tcHV0ZUluY3Jl
bWVudFBhcmFtZXRlcnM8ZmxvYXQ+KHdpZHRoLCAyLCBzb3VyY2VVbnBhY2tBbGlnbm1lbnQsICZz
b3VyY2VFbGVtZW50c1BlclBpeGVsLCAmc291cmNlRWxlbWVudHNQZXJSb3cpOworICAgICAgICBk
b1VucGFja2luZ0FuZFBhY2tpbmc8ZmxvYXQsIGZsb2F0LCBmbG9hdCwgdW5wYWNrUkEzMkZUb1JH
QkEzMkYsIHBhY2tpbmdGdW5jPihzdGF0aWNfY2FzdDxjb25zdCBmbG9hdCo+KHNvdXJjZURhdGEp
LCB3aWR0aCwgaGVpZ2h0LCBzb3VyY2VFbGVtZW50c1BlclBpeGVsLCBzb3VyY2VFbGVtZW50c1Bl
clJvdywgZGVzdGluYXRpb25EYXRhLCBkZXN0aW5hdGlvbkVsZW1lbnRzUGVyUGl4ZWwpOworICAg
ICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6U291cmNlRm9y
bWF0QTMyRjogeworICAgICAgICB1bnNpZ25lZCBpbnQgc291cmNlRWxlbWVudHNQZXJQaXhlbCwg
c291cmNlRWxlbWVudHNQZXJSb3c7CisgICAgICAgIGNvbXB1dGVJbmNyZW1lbnRQYXJhbWV0ZXJz
PGZsb2F0Pih3aWR0aCwgMSwgc291cmNlVW5wYWNrQWxpZ25tZW50LCAmc291cmNlRWxlbWVudHNQ
ZXJQaXhlbCwgJnNvdXJjZUVsZW1lbnRzUGVyUm93KTsKKyAgICAgICAgZG9VbnBhY2tpbmdBbmRQ
YWNraW5nPGZsb2F0LCBmbG9hdCwgZmxvYXQsIHVucGFja0EzMkZUb1JHQkEzMkYsIHBhY2tpbmdG
dW5jPihzdGF0aWNfY2FzdDxjb25zdCBmbG9hdCo+KHNvdXJjZURhdGEpLCB3aWR0aCwgaGVpZ2h0
LCBzb3VyY2VFbGVtZW50c1BlclBpeGVsLCBzb3VyY2VFbGVtZW50c1BlclJvdywgZGVzdGluYXRp
b25EYXRhLCBkZXN0aW5hdGlvbkVsZW1lbnRzUGVyUGl4ZWwpOwogICAgICAgICBicmVhazsKICAg
ICB9CiAgICAgZGVmYXVsdDoKQEAgLTExMTMsNiArMTI4MCw4NyBAQCBib29sIEdyYXBoaWNzQ29u
dGV4dDNEOjpwYWNrUGl4ZWxzKGNvbnN0CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAgICAg
fQorICAgIGNhc2UgRkxPQVQ6IHsKKyAgICAgICAgLy8gT3BlbkdMIEVTLCBhbmQgdGhlcmVmb3Jl
IFdlYkdMLCByZXF1aXJlIHRoYXQgdGhlIGZvcm1hdCBhbmQKKyAgICAgICAgLy8gaW50ZXJuYWxm
b3JtYXQgYmUgaWRlbnRpY2FsLCB3aGljaCBpbXBsaWVzIHRoYXQgdGhlIHNvdXJjZSBhbmQKKyAg
ICAgICAgLy8gZGVzdGluYXRpb24gZm9ybWF0cyB3aWxsIGJvdGggYmUgZmxvYXRpbmctcG9pbnQg
aW4gdGhpcyBicmFuY2ggLS0gYXQKKyAgICAgICAgLy8gbGVhc3QsIHVudGlsIFdlYktpdCBzdXBw
b3J0cyBmbG9hdGluZy1wb2ludCBpbWFnZSBmb3JtYXRzIG5hdGl2ZWx5LgorICAgICAgICBBU1NF
UlQoc291cmNlRGF0YUZvcm1hdCA9PSBTb3VyY2VGb3JtYXRSR0JBMzJGIHx8IHNvdXJjZURhdGFG
b3JtYXQgPT0gU291cmNlRm9ybWF0UkdCMzJGCisgICAgICAgICAgICAgICB8fCBzb3VyY2VEYXRh
Rm9ybWF0ID09IFNvdXJjZUZvcm1hdFJBMzJGIHx8IHNvdXJjZURhdGFGb3JtYXQgPT0gU291cmNl
Rm9ybWF0UjMyRgorICAgICAgICAgICAgICAgfHwgc291cmNlRGF0YUZvcm1hdCA9PSBTb3VyY2VG
b3JtYXRBMzJGKTsKKyAgICAgICAgLy8gQmVjYXVzZSBXZWJLaXQgZG9lc24ndCB1c2UgZmxvYXRp
bmctcG9pbnQgY29sb3IgY2hhbm5lbHMgZm9yIGFueXRoaW5nCisgICAgICAgIC8vIGludGVybmFs
bHksIHRoZXJlJ3Mgbm8gY2hhbmNlIHdlIGhhdmUgdG8gZG8gYSAobG9zc3kpIHVubXVsdGlwbHkK
KyAgICAgICAgLy8gb3BlcmF0aW9uLgorICAgICAgICBBU1NFUlQoYWxwaGFPcCA9PSBBbHBoYURv
Tm90aGluZyB8fCBhbHBoYU9wID09IEFscGhhRG9QcmVtdWx0aXBseSk7CisgICAgICAgIC8vIEZv
ciB0aGUgc291cmNlIGZvcm1hdHMgd2l0aCBhbiBldmVuIG51bWJlciBvZiBjaGFubmVscyAoUkdC
QTMyRiwKKyAgICAgICAgLy8gUkEzMkYpIGl0IGlzIGd1YXJhbnRlZWQgdGhhdCB0aGUgcGl4ZWwg
ZGF0YSBpcyB0aWdodGx5IHBhY2tlZCBiZWNhdXNlCisgICAgICAgIC8vIHVucGFjayBhbGlnbm1l
bnQgPD0gc2l6ZW9mKGZsb2F0KSAqIG51bWJlciBvZiBjaGFubmVscy4KKyAgICAgICAgZmxvYXQq
IGRlc3RpbmF0aW9uID0gc3RhdGljX2Nhc3Q8ZmxvYXQqPihkZXN0aW5hdGlvbkRhdGEpOworICAg
ICAgICBpZiAoYWxwaGFPcCA9PSBBbHBoYURvTm90aGluZworICAgICAgICAgICAgJiYgKChzb3Vy
Y2VEYXRhRm9ybWF0ID09IFNvdXJjZUZvcm1hdFJHQkEzMkYgJiYgZGVzdGluYXRpb25Gb3JtYXQg
PT0gUkdCQSkKKyAgICAgICAgICAgICAgICB8fCAoc291cmNlRGF0YUZvcm1hdCA9PSBTb3VyY2VG
b3JtYXRSQTMyRiAmJiBkZXN0aW5hdGlvbkZvcm1hdCA9PSBMVU1JTkFOQ0VfQUxQSEEpKSkgewor
ICAgICAgICAgICAgLy8gTm8gY29udmVyc2lvbiBuZWNlc3NhcnkuCisgICAgICAgICAgICBpbnQg
bnVtQ2hhbm5lbHMgPSAoc291cmNlRGF0YUZvcm1hdCA9PSBTb3VyY2VGb3JtYXRSR0JBMzJGID8g
NCA6IDIpOworICAgICAgICAgICAgbWVtY3B5KGRlc3RpbmF0aW9uRGF0YSwgc291cmNlRGF0YSwg
d2lkdGggKiBoZWlnaHQgKiBudW1DaGFubmVscyAqIHNpemVvZihmbG9hdCkpOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgc3dpdGNoIChkZXN0aW5hdGlvbkZvcm1hdCkg
eworICAgICAgICBjYXNlIFJHQjoKKyAgICAgICAgICAgIHN3aXRjaCAoYWxwaGFPcCkgeworICAg
ICAgICAgICAgY2FzZSBBbHBoYURvTm90aGluZzoKKyAgICAgICAgICAgICAgICBkb0Zsb2F0aW5n
UG9pbnRQYWNraW5nPHBhY2tSR0JBMzJGVG9SR0IzMkY+KHNvdXJjZURhdGEsIHNvdXJjZURhdGFG
b3JtYXQsIHdpZHRoLCBoZWlnaHQsIHNvdXJjZVVucGFja0FsaWdubWVudCwgZGVzdGluYXRpb24s
IDMpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBBbHBoYURvUHJl
bXVsdGlwbHk6CisgICAgICAgICAgICAgICAgZG9GbG9hdGluZ1BvaW50UGFja2luZzxwYWNrUkdC
QTMyRlRvUkdCMzJGUHJlbXVsdGlwbHk+KHNvdXJjZURhdGEsIHNvdXJjZURhdGFGb3JtYXQsIHdp
ZHRoLCBoZWlnaHQsIHNvdXJjZVVucGFja0FsaWdubWVudCwgZGVzdGluYXRpb24sIDMpOworICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICBjYXNlIFJHQkE6CisgICAgICAgICAgICAvLyBBbHBoYURvTm90aGluZyBpcyBo
YW5kbGVkIGFib3ZlIHdpdGggZmFzdCBwYXRoLgorICAgICAgICAgICAgQVNTRVJUKGFscGhhT3Ag
PT0gQWxwaGFEb1ByZW11bHRpcGx5KTsKKyAgICAgICAgICAgIGRvRmxvYXRpbmdQb2ludFBhY2tp
bmc8cGFja1JHQkEzMkZUb1JHQkEzMkZQcmVtdWx0aXBseT4oc291cmNlRGF0YSwgc291cmNlRGF0
YUZvcm1hdCwgd2lkdGgsIGhlaWdodCwgc291cmNlVW5wYWNrQWxpZ25tZW50LCBkZXN0aW5hdGlv
biwgNCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBBTFBIQToKKyAgICAgICAg
ICAgIC8vIEZyb20gdGhlIGRlc2t0b3AgT3BlbkdMIGNvbnZlcnNpb24gcnVsZXMgKE9wZW5HTCAy
LjEKKyAgICAgICAgICAgIC8vIHNwZWNpZmljYXRpb24sIFRhYmxlIDMuMTUpLCB0aGUgYWxwaGEg
Y2hhbm5lbCBpcyBjaG9zZW4KKyAgICAgICAgICAgIC8vIGZyb20gdGhlIFJHQkEgZGF0YS4KKyAg
ICAgICAgICAgIGRvRmxvYXRpbmdQb2ludFBhY2tpbmc8cGFja1JHQkEzMkZUb0EzMkY+KHNvdXJj
ZURhdGEsIHNvdXJjZURhdGFGb3JtYXQsIHdpZHRoLCBoZWlnaHQsIHNvdXJjZVVucGFja0FsaWdu
bWVudCwgZGVzdGluYXRpb24sIDEpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2Ug
TFVNSU5BTkNFOgorICAgICAgICAgICAgLy8gRnJvbSB0aGUgZGVza3RvcCBPcGVuR0wgY29udmVy
c2lvbiBydWxlcyAoT3BlbkdMIDIuMQorICAgICAgICAgICAgLy8gc3BlY2lmaWNhdGlvbiwgVGFi
bGUgMy4xNSksIHRoZSByZWQgY2hhbm5lbCBpcyBjaG9zZW4KKyAgICAgICAgICAgIC8vIGZyb20g
dGhlIFJHQkEgZGF0YS4KKyAgICAgICAgICAgIHN3aXRjaCAoYWxwaGFPcCkgeworICAgICAgICAg
ICAgY2FzZSBBbHBoYURvTm90aGluZzoKKyAgICAgICAgICAgICAgICBkb0Zsb2F0aW5nUG9pbnRQ
YWNraW5nPHBhY2tSR0JBMzJGVG9SMzJGPihzb3VyY2VEYXRhLCBzb3VyY2VEYXRhRm9ybWF0LCB3
aWR0aCwgaGVpZ2h0LCBzb3VyY2VVbnBhY2tBbGlnbm1lbnQsIGRlc3RpbmF0aW9uLCAxKTsKKyAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgQWxwaGFEb1ByZW11bHRpcGx5
OgorICAgICAgICAgICAgICAgIGRvRmxvYXRpbmdQb2ludFBhY2tpbmc8cGFja1JHQkEzMkZUb1Iz
MkZQcmVtdWx0aXBseT4oc291cmNlRGF0YSwgc291cmNlRGF0YUZvcm1hdCwgd2lkdGgsIGhlaWdo
dCwgc291cmNlVW5wYWNrQWxpZ25tZW50LCBkZXN0aW5hdGlvbiwgMSk7CisgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IGNhc2UgTFVNSU5BTkNFX0FMUEhBOgorICAgICAgICAgICAgLy8gRnJvbSB0aGUgZGVza3RvcCBP
cGVuR0wgY29udmVyc2lvbiBydWxlcyAoT3BlbkdMIDIuMQorICAgICAgICAgICAgLy8gc3BlY2lm
aWNhdGlvbiwgVGFibGUgMy4xNSksIHRoZSByZWQgYW5kIGFscGhhIGNoYW5uZWxzCisgICAgICAg
ICAgICAvLyBhcmUgY2hvc2VuIGZyb20gdGhlIFJHQkEgZGF0YS4KKyAgICAgICAgICAgIHN3aXRj
aCAoYWxwaGFPcCkgeworICAgICAgICAgICAgY2FzZSBBbHBoYURvTm90aGluZzoKKyAgICAgICAg
ICAgICAgICBkb0Zsb2F0aW5nUG9pbnRQYWNraW5nPHBhY2tSR0JBMzJGVG9SQTMyRj4oc291cmNl
RGF0YSwgc291cmNlRGF0YUZvcm1hdCwgd2lkdGgsIGhlaWdodCwgc291cmNlVW5wYWNrQWxpZ25t
ZW50LCBkZXN0aW5hdGlvbiwgMik7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICBjYXNlIEFscGhhRG9QcmVtdWx0aXBseToKKyAgICAgICAgICAgICAgICBkb0Zsb2F0aW5nUG9p
bnRQYWNraW5nPHBhY2tSR0JBMzJGVG9SQTMyRlByZW11bHRpcGx5Pihzb3VyY2VEYXRhLCBzb3Vy
Y2VEYXRhRm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBzb3VyY2VVbnBhY2tBbGlnbm1lbnQsIGRlc3Rp
bmF0aW9uLCAyKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGRlZmF1bHQ6
CisgICAgICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKyAgICB9CiAgICAg
fQogICAgIHJldHVybiB0cnVlOwogfQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9H
cmFwaGljc0NvbnRleHQzRC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NDb250ZXh0M0QuaAkocmV2aXNpb24gNzM0MjYpCisrKyBXZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmgJKHdvcmtpbmcgY29weSkKQEAgLTUzNiw5
ICs1MzYsMTEgQEAgcHVibGljOgogICAgICAgICBTb3VyY2VGb3JtYXRSR0JBOCA9IDAsCiAgICAg
ICAgIFNvdXJjZUZvcm1hdFJHQkExNkxpdHRsZSwKICAgICAgICAgU291cmNlRm9ybWF0UkdCQTE2
QmlnLAorICAgICAgICBTb3VyY2VGb3JtYXRSR0JBMzJGLAogICAgICAgICBTb3VyY2VGb3JtYXRS
R0I4LAogICAgICAgICBTb3VyY2VGb3JtYXRSR0IxNkxpdHRsZSwKICAgICAgICAgU291cmNlRm9y
bWF0UkdCMTZCaWcsCisgICAgICAgIFNvdXJjZUZvcm1hdFJHQjMyRiwKICAgICAgICAgU291cmNl
Rm9ybWF0QkdSOCwKICAgICAgICAgU291cmNlRm9ybWF0QkdSQTgsCiAgICAgICAgIFNvdXJjZUZv
cm1hdEJHUkExNkxpdHRsZSwKQEAgLTU1MywxNSArNTU1LDE4IEBAIHB1YmxpYzoKICAgICAgICAg
U291cmNlRm9ybWF0UjgsCiAgICAgICAgIFNvdXJjZUZvcm1hdFIxNkxpdHRsZSwKICAgICAgICAg
U291cmNlRm9ybWF0UjE2QmlnLAorICAgICAgICBTb3VyY2VGb3JtYXRSMzJGLAogICAgICAgICBT
b3VyY2VGb3JtYXRSQTgsCiAgICAgICAgIFNvdXJjZUZvcm1hdFJBMTZMaXR0bGUsCiAgICAgICAg
IFNvdXJjZUZvcm1hdFJBMTZCaWcsCisgICAgICAgIFNvdXJjZUZvcm1hdFJBMzJGLAogICAgICAg
ICBTb3VyY2VGb3JtYXRBUjgsCiAgICAgICAgIFNvdXJjZUZvcm1hdEFSMTZMaXR0bGUsCiAgICAg
ICAgIFNvdXJjZUZvcm1hdEFSMTZCaWcsCiAgICAgICAgIFNvdXJjZUZvcm1hdEE4LAogICAgICAg
ICBTb3VyY2VGb3JtYXRBMTZMaXR0bGUsCiAgICAgICAgIFNvdXJjZUZvcm1hdEExNkJpZywKKyAg
ICAgICAgU291cmNlRm9ybWF0QTMyRiwKICAgICAgICAgU291cmNlRm9ybWF0TnVtRm9ybWF0cwog
ICAgIH07CiAKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRXh0ZW5z
aW9uczNEQ2hyb21pdW0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0V4dGVuc2lvbnMzRENocm9taXVtLmgJKHJldmlzaW9uIDczNDI2KQorKysgV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9FeHRlbnNpb25zM0RDaHJvbWl1bS5oCSh3
b3JraW5nIGNvcHkpCkBAIC00Miw2ICs0Miw3IEBAIHB1YmxpYzoKIAogICAgIC8vIEV4dGVuc2lv
bnMzRCBtZXRob2RzLgogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0cyhjb25zdCBTdHJpbmcmKTsK
KyAgICB2aXJ0dWFsIGJvb2wgZW5zdXJlRW5hYmxlZChjb25zdCBTdHJpbmcmKTsKICAgICB2aXJ0
dWFsIGludCBnZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJCKCk7CiAgICAgdmlydHVhbCB2b2lkIGJs
aXRGcmFtZWJ1ZmZlcihsb25nIHNyY1gwLCBsb25nIHNyY1kwLCBsb25nIHNyY1gxLCBsb25nIHNy
Y1kxLCBsb25nIGRzdFgwLCBsb25nIGRzdFkwLCBsb25nIGRzdFgxLCBsb25nIGRzdFkxLCB1bnNp
Z25lZCBsb25nIG1hc2ssIHVuc2lnbmVkIGxvbmcgZmlsdGVyKSB7IH0KICAgICB2aXJ0dWFsIHZv
aWQgcmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlKHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1
bnNpZ25lZCBsb25nIHNhbXBsZXMsIHVuc2lnbmVkIGxvbmcgaW50ZXJuYWxmb3JtYXQsIHVuc2ln
bmVkIGxvbmcgd2lkdGgsIHVuc2lnbmVkIGxvbmcgaGVpZ2h0KSB7IH0KSW5kZXg6IFdlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnMzRE9wZW5HTC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uczNET3BlbkdM
LmNwcAkocmV2aXNpb24gNzM0MjYpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5n
bC9FeHRlbnNpb25zM0RPcGVuR0wuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NiwxMCArNzYsMjAg
QEAgYm9vbCBFeHRlbnNpb25zM0RPcGVuR0w6OnN1cHBvcnRzKGNvbnN0IAogICAgICAgICByZXR1
cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfZnJhbWVidWZmZXJfYmxp
dCIpOwogICAgIGlmIChuYW1lID09ICJHTF9BTkdMRV9mcmFtZWJ1ZmZlcl9tdWx0aXNhbXBsZSIp
CiAgICAgICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0VYVF9m
cmFtZWJ1ZmZlcl9tdWx0aXNhbXBsZSIpOwotICAgICAgICAKKworICAgIC8vIElmIEdMX0FSQl90
ZXh0dXJlX2Zsb2F0IGlzIGF2YWlsYWJsZSB0aGVuIHdlIHJlcG9ydCBHTF9PRVNfdGV4dHVyZV9m
bG9hdCBhbmQKKyAgICAvLyBHTF9PRVNfdGV4dHVyZV9oYWxmX2Zsb2F0IGFzIGF2YWlsYWJsZS4K
KyAgICBpZiAobmFtZSA9PSAiR0xfT0VTX3RleHR1cmVfZmxvYXQiIHx8IG5hbWUgPT0gIkdMX09F
U190ZXh0dXJlX2hhbGZfZmxvYXQiKQorICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNp
b25zLmNvbnRhaW5zKCJHTF9BUkJfdGV4dHVyZV9mbG9hdCIpOworCiAgICAgcmV0dXJuIG1fYXZh
aWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucyhuYW1lKTsKIH0KIAorYm9vbCBFeHRlbnNpb25zM0RP
cGVuR0w6OmVuc3VyZUVuYWJsZWQoY29uc3QgU3RyaW5nJiBuYW1lKQoreworICAgIHJldHVybiBz
dXBwb3J0cyhuYW1lKTsKK30KKwogaW50IEV4dGVuc2lvbnMzRE9wZW5HTDo6Z2V0R3JhcGhpY3NS
ZXNldFN0YXR1c0FSQigpCiB7CiAgICAgcmV0dXJuIEdyYXBoaWNzQ29udGV4dDNEOjpOT19FUlJP
UjsKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnMzRE9w
ZW5HTC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4
dGVuc2lvbnMzRE9wZW5HTC5oCShyZXZpc2lvbiA3MzQyNikKKysrIFdlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnMzRE9wZW5HTC5oCSh3b3JraW5nIGNvcHkpCkBAIC00
MCw2ICs0MCw3IEBAIHB1YmxpYzoKIAogICAgIC8vIEV4dGVuc2lvbnMzRCBtZXRob2RzLgogICAg
IHZpcnR1YWwgYm9vbCBzdXBwb3J0cyhjb25zdCBTdHJpbmcmKTsKKyAgICB2aXJ0dWFsIGJvb2wg
ZW5zdXJlRW5hYmxlZChjb25zdCBTdHJpbmcmKTsKICAgICB2aXJ0dWFsIGludCBnZXRHcmFwaGlj
c1Jlc2V0U3RhdHVzQVJCKCk7CiAgICAgdmlydHVhbCB2b2lkIGJsaXRGcmFtZWJ1ZmZlcihsb25n
IHNyY1gwLCBsb25nIHNyY1kwLCBsb25nIHNyY1gxLCBsb25nIHNyY1kxLCBsb25nIGRzdFgwLCBs
b25nIGRzdFkwLCBsb25nIGRzdFgxLCBsb25nIGRzdFkxLCB1bnNpZ25lZCBsb25nIG1hc2ssIHVu
c2lnbmVkIGxvbmcgZmlsdGVyKTsKICAgICB2aXJ0dWFsIHZvaWQgcmVuZGVyYnVmZmVyU3RvcmFn
ZU11bHRpc2FtcGxlKHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25nIHNhbXBsZXMs
IHVuc2lnbmVkIGxvbmcgaW50ZXJuYWxmb3JtYXQsIHVuc2lnbmVkIGxvbmcgd2lkdGgsIHVuc2ln
bmVkIGxvbmcgaGVpZ2h0KTsgICAgCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29w
ZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0wuY3BwCShyZXZp
c2lvbiA3MzQyNikKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNz
Q29udGV4dDNET3BlbkdMLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTMyNiw3ICsxMzI2LDE1IEBA
IGludCBHcmFwaGljc0NvbnRleHQzRDo6dGV4SW1hZ2UyRCh1bnNpZ24KIHsKICAgICBtYWtlQ29u
dGV4dEN1cnJlbnQoKTsKIAotICAgIDo6Z2xUZXhJbWFnZTJEKHRhcmdldCwgbGV2ZWwsIGludGVy
bmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBib3JkZXIsIGZvcm1hdCwgdHlwZSwgcGl4ZWxzKTsK
KyAgICB1bnNpZ25lZCBvcGVuR0xJbnRlcm5hbEZvcm1hdCA9IGludGVybmFsZm9ybWF0OworICAg
IGlmICh0eXBlID09IEdMX0ZMT0FUKSB7CisgICAgICAgIGlmIChmb3JtYXQgPT0gR0xfUkdCQSkK
KyAgICAgICAgICAgIG9wZW5HTEludGVybmFsRm9ybWF0ID0gR0xfUkdCQTMyRl9BUkI7CisgICAg
ICAgIGVsc2UgaWYgKGZvcm1hdCA9PSBHTF9SR0IpCisgICAgICAgICAgICBvcGVuR0xJbnRlcm5h
bEZvcm1hdCA9IEdMX1JHQjMyRl9BUkI7CisgICAgfQorCisgICAgOjpnbFRleEltYWdlMkQodGFy
Z2V0LCBsZXZlbCwgb3BlbkdMSW50ZXJuYWxGb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGJvcmRlciwg
Zm9ybWF0LCB0eXBlLCBwaXhlbHMpOwogICAgIHJldHVybiAwOwogfQogCkluZGV4OiBXZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3F0L0V4dGVuc2lvbnMzRFF0LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0V4dGVuc2lvbnMzRFF0LmNwcAkocmV2aXNpb24g
NzM0MjYpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0V4dGVuc2lvbnMzRFF0LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNDYsNiArNDYsMTEgQEAgYm9vbCBFeHRlbnNpb25zM0RRdDo6
c3VwcG9ydHMoY29uc3QgU3RyaQogICAgIHJldHVybiBmYWxzZTsKIH0KIAorYm9vbCBFeHRlbnNp
b25zM0RRdDo6ZW5zdXJlRW5hYmxlZChjb25zdCBTdHJpbmcmIG5hbWUpCit7CisgICAgcmV0dXJu
IHN1cHBvcnRzKG5hbWUpOworfQorCiBpbnQgRXh0ZW5zaW9uczNEUXQ6OmdldEdyYXBoaWNzUmVz
ZXRTdGF0dXNBUkIoKQogewogICAgIHJldHVybiBHcmFwaGljc0NvbnRleHQzRDo6Tk9fRVJST1I7
CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0V4dGVuc2lvbnMzRFF0LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9FeHRlbnNpb25zM0RRdC5o
CShyZXZpc2lvbiA3MzQyNikKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvRXh0ZW5z
aW9uczNEUXQuaAkod29ya2luZyBjb3B5KQpAQCAtMzYsNiArMzYsNyBAQCBwdWJsaWM6CiAKICAg
ICAvLyBFeHRlbnNpb25zM0QgbWV0aG9kcy4KICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHMoY29u
c3QgU3RyaW5nJik7CisgICAgdmlydHVhbCBib29sIGVuc3VyZUVuYWJsZWQoY29uc3QgU3RyaW5n
Jik7CiAgICAgdmlydHVhbCBpbnQgZ2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQigpOwogCiBwcml2
YXRlOgpJbmRleDogV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJL
aXQvY2hyb21pdW0vQ2hhbmdlTG9nCShyZXZpc2lvbiA3MzQyNikKKysrIFdlYktpdC9jaHJvbWl1
bS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyNiBAQAorMjAxMC0xMi0wNiAg
S2VubmV0aCBSdXNzZWxsICA8a2JyQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50IGV4dGVuc2lvbiBlbnRyeSBwb2lu
dHMgYW5kIHJlbW92ZSBFWFRFTlNJT05TIGVudW0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTQwMzE2CisKKyAgICAgICAgQWRkZWQgc3VwcG9ydCBmb3Ig
ZW5zdXJpbmcgdGhhdCBhIHBhcnRpY3VsYXIgT3BlbkdMIGV4dGVuc2lvbiBpcworICAgICAgICBl
bmFibGVkLgorCisgICAgICAgICogcHVibGljL1dlYkdyYXBoaWNzQ29udGV4dDNELmg6CisgICAg
ICAgICogc3JjL0V4dGVuc2lvbnMzRENocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV4
dGVuc2lvbnMzRENocm9taXVtOjplbnN1cmVFbmFibGVkKToKKyAgICAgICAgKiBzcmMvR3JhcGhp
Y3NDb250ZXh0M0RDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQzREludGVybmFsOjppbml0aWFsaXplRXh0ZW5zaW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHQzREludGVybmFsOjpzdXBwb3J0c0V4dGVuc2lvbik6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzREludGVybmFsOjplbnN1cmVFeHRlbnNpb25FbmFibGVk
KToKKyAgICAgICAgKiBzcmMvR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbC5oOgorICAgICAgICAq
IHNyYy9XZWJHcmFwaGljc0NvbnRleHQzRERlZmF1bHRJbXBsLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViR3JhcGhpY3NDb250ZXh0M0REZWZhdWx0SW1wbDo6Z2V0UmVxdWVzdGFibGVFeHRlbnNp
b25zQ0hST01JVU0pOgorICAgICAgICAoV2ViS2l0OjpXZWJHcmFwaGljc0NvbnRleHQzRERlZmF1
bHRJbXBsOjpyZXF1ZXN0RXh0ZW5zaW9uQ0hST01JVU0pOgorICAgICAgICAqIHNyYy9XZWJHcmFw
aGljc0NvbnRleHQzRERlZmF1bHRJbXBsLmg6CisKIDIwMTAtMTItMDYgIE5hdGUgQ2hhcGluICA8
amFwaGV0QGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBBZGFtIEJhcnRoLgpJ
bmRleDogV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJHcmFwaGljc0NvbnRleHQzRC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViR3JhcGhpY3NDb250ZXh0M0QuaAko
cmV2aXNpb24gNzM0MjYpCisrKyBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkdyYXBoaWNzQ29u
dGV4dDNELmgJKHdvcmtpbmcgY29weSkKQEAgLTE0MCw2ICsxNDAsMTAgQEAgcHVibGljOgogICAg
IC8vIEdMX0NIUk9NSVVNX2NvcHlfdGV4dHVyZV90b19wYXJlbnRfdGV4dHVyZQogICAgIHZpcnR1
YWwgdm9pZCBjb3B5VGV4dHVyZVRvUGFyZW50VGV4dHVyZUNIUk9NSVVNKHVuc2lnbmVkIHRleHR1
cmUsIHVuc2lnbmVkIHBhcmVudFRleHR1cmUpID0gMDsKIAorICAgIC8vIEdMX0NIUk9NSVVNX3Jl
cXVlc3RfZXh0ZW5zaW9uCisgICAgdmlydHVhbCBXZWJTdHJpbmcgZ2V0UmVxdWVzdGFibGVFeHRl
bnNpb25zQ0hST01JVU0oKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RFeHRlbnNpb25D
SFJPTUlVTShjb25zdCBjaGFyKikgPSAwOworCiAgICAgLy8gVGhlIGVudHJ5IHBvaW50cyBiZWxv
dyBtYXAgZGlyZWN0bHkgdG8gdGhlIE9wZW5HTCBFUyAyLjAgQVBJLgogICAgIC8vIFNlZTogaHR0
cDovL3d3dy5raHJvbm9zLm9yZy9yZWdpc3RyeS9nbGVzLwogICAgIC8vIGFuZDogaHR0cDovL3d3
dy5raHJvbm9zLm9yZy9vcGVuZ2xlcy9zZGsvZG9jcy9tYW4vCkluZGV4OiBXZWJLaXQvY2hyb21p
dW0vc3JjL0V4dGVuc2lvbnMzRENocm9taXVtLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hy
b21pdW0vc3JjL0V4dGVuc2lvbnMzRENocm9taXVtLmNwcAkocmV2aXNpb24gNzM0MjYpCisrKyBX
ZWJLaXQvY2hyb21pdW0vc3JjL0V4dGVuc2lvbnMzRENocm9taXVtLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNDgsNiArNDgsMTEgQEAgYm9vbCBFeHRlbnNpb25zM0RDaHJvbWl1bTo6c3VwcG9ydHMo
Y29ucwogICAgIHJldHVybiBtX2ludGVybmFsLT5zdXBwb3J0c0V4dGVuc2lvbihuYW1lKTsKIH0K
IAorYm9vbCBFeHRlbnNpb25zM0RDaHJvbWl1bTo6ZW5zdXJlRW5hYmxlZChjb25zdCBTdHJpbmcm
IG5hbWUpCit7CisgICAgcmV0dXJuIG1faW50ZXJuYWwtPmVuc3VyZUV4dGVuc2lvbkVuYWJsZWQo
bmFtZSk7Cit9CisKIGludCBFeHRlbnNpb25zM0RDaHJvbWl1bTo6Z2V0R3JhcGhpY3NSZXNldFN0
YXR1c0FSQigpCiB7CiAgICAgcmV0dXJuIG1faW50ZXJuYWwtPmlzQ29udGV4dExvc3QoKSA/IHN0
YXRpY19jYXN0PGludD4oRXh0ZW5zaW9uczNEOjpVTktOT1dOX0NPTlRFWFRfUkVTRVRfQVJCKSA6
IHN0YXRpY19jYXN0PGludD4oR3JhcGhpY3NDb250ZXh0M0Q6Ok5PX0VSUk9SKTsKSW5kZXg6IFdl
YktpdC9jaHJvbWl1bS9zcmMvR3JhcGhpY3NDb250ZXh0M0RDaHJvbWl1bS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViS2l0L2Nocm9taXVtL3NyYy9HcmFwaGljc0NvbnRleHQzRENocm9taXVtLmNwcAko
cmV2aXNpb24gNzM0MjYpCisrKyBXZWJLaXQvY2hyb21pdW0vc3JjL0dyYXBoaWNzQ29udGV4dDNE
Q2hyb21pdW0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02ODEsMTcgKzY4MSw1NCBAQCBFeHRlbnNp
b25zM0QqIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6CiAgICAgcmV0dXJuIG1fZXh0ZW5zaW9u
cy5nZXQoKTsKIH0KIAotYm9vbCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpzdXBwb3J0c0V4
dGVuc2lvbihjb25zdCBTdHJpbmcmIG5hbWUpCituYW1lc3BhY2UgeworCit2b2lkIHNwbGl0U3Ry
aW5nSGVscGVyKGNvbnN0IFN0cmluZyYgc3RyLCBIYXNoU2V0PFN0cmluZz4mIHNldCkKK3sKKyAg
ICBWZWN0b3I8U3RyaW5nPiBzdWJzdHJpbmdzOworICAgIHN0ci5zcGxpdCgiICIsIHN1YnN0cmlu
Z3MpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc3Vic3RyaW5ncy5zaXplKCk7ICsraSkK
KyAgICAgICAgc2V0LmFkZChzdWJzdHJpbmdzW2ldKTsKK30KKworfSAvLyBhbm9ueW1vdXMgbmFt
ZXNwYWNlCisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6aW5pdGlhbGl6ZUV4dGVu
c2lvbnMoKQogewogICAgIGlmICghbV9pbml0aWFsaXplZEF2YWlsYWJsZUV4dGVuc2lvbnMpIHsK
ICAgICAgICAgU3RyaW5nIGV4dGVuc2lvbnNTdHJpbmcgPSBnZXRTdHJpbmcoR3JhcGhpY3NDb250
ZXh0M0Q6OkVYVEVOU0lPTlMpOwotICAgICAgICBWZWN0b3I8U3RyaW5nPiBhdmFpbGFibGVFeHRl
bnNpb25zOwotICAgICAgICBleHRlbnNpb25zU3RyaW5nLnNwbGl0KCIgIiwgYXZhaWxhYmxlRXh0
ZW5zaW9ucyk7Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYXZhaWxhYmxlRXh0ZW5z
aW9ucy5zaXplKCk7ICsraSkKLSAgICAgICAgICAgIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5hZGQo
YXZhaWxhYmxlRXh0ZW5zaW9uc1tpXSk7CisgICAgICAgIHNwbGl0U3RyaW5nSGVscGVyKGV4dGVu
c2lvbnNTdHJpbmcsIG1fZW5hYmxlZEV4dGVuc2lvbnMpOworCisgICAgICAgIFN0cmluZyByZXF1
ZXN0YWJsZUV4dGVuc2lvbnNTdHJpbmcgPSBtX2ltcGwtPmdldFJlcXVlc3RhYmxlRXh0ZW5zaW9u
c0NIUk9NSVVNKCk7CisgICAgICAgIHNwbGl0U3RyaW5nSGVscGVyKHJlcXVlc3RhYmxlRXh0ZW5z
aW9uc1N0cmluZywgbV9yZXF1ZXN0YWJsZUV4dGVuc2lvbnMpOworCiAgICAgICAgIG1faW5pdGlh
bGl6ZWRBdmFpbGFibGVFeHRlbnNpb25zID0gdHJ1ZTsKICAgICB9Ci0gICAgcmV0dXJuIG1fYXZh
aWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucyhuYW1lKTsKK30KKworCitib29sIEdyYXBoaWNzQ29u
dGV4dDNESW50ZXJuYWw6OnN1cHBvcnRzRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgbmFtZSkKK3sK
KyAgICBpbml0aWFsaXplRXh0ZW5zaW9ucygpOworICAgIHJldHVybiBtX2VuYWJsZWRFeHRlbnNp
b25zLmNvbnRhaW5zKG5hbWUpIHx8IG1fcmVxdWVzdGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKG5h
bWUpOworfQorCitib29sIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmVuc3VyZUV4dGVuc2lv
bkVuYWJsZWQoY29uc3QgU3RyaW5nJiBuYW1lKQoreworICAgIGluaXRpYWxpemVFeHRlbnNpb25z
KCk7CisKKyAgICBpZiAobV9lbmFibGVkRXh0ZW5zaW9ucy5jb250YWlucyhuYW1lKSkKKyAgICAg
ICAgcmV0dXJuIHRydWU7CisKKyAgICBpZiAobV9yZXF1ZXN0YWJsZUV4dGVuc2lvbnMuY29udGFp
bnMobmFtZSkpIHsKKyAgICAgICAgbV9pbXBsLT5yZXF1ZXN0RXh0ZW5zaW9uQ0hST01JVU0obmFt
ZS5hc2NpaSgpLmRhdGEoKSk7CisgICAgICAgIG1fZW5hYmxlZEV4dGVuc2lvbnMuY2xlYXIoKTsK
KyAgICAgICAgbV9yZXF1ZXN0YWJsZUV4dGVuc2lvbnMuY2xlYXIoKTsKKyAgICAgICAgbV9pbml0
aWFsaXplZEF2YWlsYWJsZUV4dGVuc2lvbnMgPSBmYWxzZTsKKyAgICB9CisKKyAgICBpbml0aWFs
aXplRXh0ZW5zaW9ucygpOworICAgIHJldHVybiBtX2VuYWJsZWRFeHRlbnNpb25zLmNvbnRhaW5z
KG5hbWUpOwogfQogCiBERUxFR0FURV9UT19JTVBMXzRSKG1hcEJ1ZmZlclN1YkRhdGFDSFJPTUlV
TSwgdW5zaWduZWQsIGludCwgaW50LCB1bnNpZ25lZCwgdm9pZCopCkluZGV4OiBXZWJLaXQvY2hy
b21pdW0vc3JjL0dyYXBoaWNzQ29udGV4dDNESW50ZXJuYWwuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJL
aXQvY2hyb21pdW0vc3JjL0dyYXBoaWNzQ29udGV4dDNESW50ZXJuYWwuaAkocmV2aXNpb24gNzM0
MjYpCisrKyBXZWJLaXQvY2hyb21pdW0vc3JjL0dyYXBoaWNzQ29udGV4dDNESW50ZXJuYWwuaAko
d29ya2luZyBjb3B5KQpAQCAtMjY1LDYgKzI2NSw3IEBAIHB1YmxpYzoKICAgICAvLyBFeHRlbnNp
b25zM0Qgc3VwcG9ydC4KICAgICBFeHRlbnNpb25zM0QqIGdldEV4dGVuc2lvbnMoKTsKICAgICBi
b29sIHN1cHBvcnRzRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgbmFtZSk7CisgICAgYm9vbCBlbnN1
cmVFeHRlbnNpb25FbmFibGVkKGNvbnN0IFN0cmluZyYgbmFtZSk7CiAKICAgICAvLyBFWFRfdGV4
dHVyZV9mb3JtYXRfQkdSQTg4ODgKICAgICBib29sIHN1cHBvcnRzQkdSQSgpOwpAQCAtMjg1LDcg
KzI4Niw4IEBAIHByaXZhdGU6CiAgICAgT3duUHRyPEV4dGVuc2lvbnMzRENocm9taXVtPiBtX2V4
dGVuc2lvbnM7CiAgICAgV2ViS2l0OjpXZWJWaWV3SW1wbCogbV93ZWJWaWV3SW1wbDsKICAgICBi
b29sIG1faW5pdGlhbGl6ZWRBdmFpbGFibGVFeHRlbnNpb25zOwotICAgIEhhc2hTZXQ8U3RyaW5n
PiBtX2F2YWlsYWJsZUV4dGVuc2lvbnM7CisgICAgSGFzaFNldDxTdHJpbmc+IG1fZW5hYmxlZEV4
dGVuc2lvbnM7CisgICAgSGFzaFNldDxTdHJpbmc+IG1fcmVxdWVzdGFibGVFeHRlbnNpb25zOwog
I2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKICAgICBSZWZQdHI8V2ViR0xMYXllckNo
cm9taXVtPiBtX2NvbXBvc2l0aW5nTGF5ZXI7CiAjZW5kaWYKQEAgLTMwMSw2ICszMDMsOCBAQCBw
cml2YXRlOgogI2lmIFBMQVRGT1JNKENHKQogICAgIHVuc2lnbmVkIGNoYXIqIG1fcmVuZGVyT3V0
cHV0OwogI2VuZGlmCisKKyAgICB2b2lkIGluaXRpYWxpemVFeHRlbnNpb25zKCk7CiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJLaXQvY2hyb21pdW0vc3JjL1dlYkdyYXBo
aWNzQ29udGV4dDNERGVmYXVsdEltcGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1
bS9zcmMvV2ViR3JhcGhpY3NDb250ZXh0M0REZWZhdWx0SW1wbC5jcHAJKHJldmlzaW9uIDczNDI2
KQorKysgV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJHcmFwaGljc0NvbnRleHQzRERlZmF1bHRJbXBs
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjI0LDYgKzYyNCwxNSBAQCB2b2lkIFdlYkdyYXBoaWNz
Q29udGV4dDNERGVmYXVsdEltcGw6OmNvCiAgICAgZ2xCaW5kRnJhbWVidWZmZXJFWFQoR0xfRlJB
TUVCVUZGRVJfRVhULCBtX2JvdW5kRkJPKTsKIH0KIAorV2ViU3RyaW5nIFdlYkdyYXBoaWNzQ29u
dGV4dDNERGVmYXVsdEltcGw6OmdldFJlcXVlc3RhYmxlRXh0ZW5zaW9uc0NIUk9NSVVNKCkKK3sK
KyAgICByZXR1cm4gV2ViU3RyaW5nKCk7Cit9CisKK3ZvaWQgV2ViR3JhcGhpY3NDb250ZXh0M0RE
ZWZhdWx0SW1wbDo6cmVxdWVzdEV4dGVuc2lvbkNIUk9NSVVNKGNvbnN0IGNoYXIqKQoreworfQor
CiAvLyBIZWxwZXIgbWFjcm9zIHRvIHJlZHVjZSB0aGUgYW1vdW50IG9mIGNvZGUuCiAKICNkZWZp
bmUgREVMRUdBVEVfVE9fR0wobmFtZSwgZ2xuYW1lKSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCkluZGV4OiBXZWJLaXQvY2hyb21pdW0vc3JjL1dlYkdyYXBoaWNz
Q29udGV4dDNERGVmYXVsdEltcGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYkdyYXBoaWNzQ29udGV4dDNERGVmYXVsdEltcGwuaAkocmV2aXNpb24gNzM0MjYpCisrKyBX
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYkdyYXBoaWNzQ29udGV4dDNERGVmYXVsdEltcGwuaAkod29y
a2luZyBjb3B5KQpAQCAtODUsNiArODUsOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHVu
bWFwVGV4U3ViSW1hZ2UyRENIUk9NSVVNKGNvbnN0IHZvaWQqKTsKICAgICB2aXJ0dWFsIHZvaWQg
Y29weVRleHR1cmVUb1BhcmVudFRleHR1cmVDSFJPTUlVTSh1bnNpZ25lZCB0ZXh0dXJlLCB1bnNp
Z25lZCBwYXJlbnRUZXh0dXJlKTsKIAorICAgIHZpcnR1YWwgV2ViU3RyaW5nIGdldFJlcXVlc3Rh
YmxlRXh0ZW5zaW9uc0NIUk9NSVVNKCk7CisgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RFeHRlbnNp
b25DSFJPTUlVTShjb25zdCBjaGFyKik7CisKICAgICB2aXJ0dWFsIHZvaWQgYWN0aXZlVGV4dHVy
ZSh1bnNpZ25lZCBsb25nIHRleHR1cmUpOwogICAgIHZpcnR1YWwgdm9pZCBhdHRhY2hTaGFkZXIo
V2ViR0xJZCBwcm9ncmFtLCBXZWJHTElkIHNoYWRlcik7CiAgICAgdmlydHVhbCB2b2lkIGJpbmRB
dHRyaWJMb2NhdGlvbihXZWJHTElkIHByb2dyYW0sIHVuc2lnbmVkIGxvbmcgaW5kZXgsIGNvbnN0
IGNoYXIqIG5hbWUpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>76000</attachid>
            <date>2010-12-08 18:27:19 -0800</date>
            <delta_ts>2010-12-09 17:20:05 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-40316-20101208182718.patch</filename>
            <type>text/plain</type>
            <size>91663</size>
            <attacher name="Kenneth Russell">kbr</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3MzU4MikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsODQgQEAKKzIwMTAtMTItMDggIEtlbm5ldGggUnVzc2VsbCAgPGtickBnb29nbGUu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIElt
cGxlbWVudCBleHRlbnNpb24gZW50cnkgcG9pbnRzIGFuZCByZW1vdmUgRVhURU5TSU9OUyBlbnVt
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MDMxNgor
CisgICAgICAgIEltcGxlbWVudGVkIFdlYkdMUmVuZGVyaW5nQ29udGV4dCdzIGdldFN1cHBvcnRl
ZEV4dGVuc2lvbnMgYW5kCisgICAgICAgIGdldEV4dGVuc2lvbnMgZW50cnkgcG9pbnRzLCBhbmQs
IHRvIHZlcmlmeSB0aGVtLCBhZGRlZCBzdXBwb3J0IGZvcgorICAgICAgICB0aGUgZmlyc3Qgc3Bl
Y2lmaWVkIFdlYkdMIGV4dGVuc2lvbiwgT0VTX3RleHR1cmVfZmxvYXQuIFRoaXMKKyAgICAgICAg
ZXh0ZW5zaW9uIGlzIG5vdyBhZHZlcnRpc2VkIGluIHRoZSBDaHJvbWl1bSBhbmQgV2ViS2l0IHBv
cnRzIHdoZW4KKyAgICAgICAgdGhlIHVuZGVybHlpbmcgaGFyZHdhcmUgc3VwcG9ydHMgaXQuCisK
KyAgICAgICAgVGhlIG5ldyBPRVNfdGV4dHVyZV9mbG9hdCB0ZXN0IGluIHRoZSBXZWJHTCBjb25m
b3JtYW5jZSBzdWl0ZQorICAgICAgICB2ZXJpZmllcyB0aGUgYWxsb2NhdGlvbiBhbmQgcG9wdWxh
dGlvbiBvZiBmbG9hdGluZyBwb2ludCB0ZXh0dXJlcywKKyAgICAgICAgYW5kIHRoZWlyIHVzZSBh
cyByZW5kZXIgdGFyZ2V0cy4gSG93ZXZlciwgYmVjYXVzZSB0aGlzIGV4dGVuc2lvbgorICAgICAg
ICBpcyBvcHRpb25hbCwgaXQgaXMgbm90IGVhc2lseSB0ZXN0YWJsZSB3aXRoIGEgbGF5b3V0IHRl
c3Q7IHRoZXJlCisgICAgICAgIGlzIG9ubHkgb25lIHNldCBvZiBleHBlY3RhdGlvbnMgZm9yIGEg
Z2l2ZW4gdGVzdCwgYW5kIHR3byB3b3VsZCBiZQorICAgICAgICBuZWVkZWQsIG9uZSB3aGVuIHRo
ZSBleHRlbnNpb24gaXMgYXZhaWxhYmxlIGFuZCBvbmUgd2hlbiBpdCBpcyBub3QuCisKKyAgICAg
ICAgVGVzdGVkIHdpdGggdGhlIG9lcy10ZXh0dXJlLWZsb2F0Lmh0bWwgV2ViR0wgY29uZm9ybWFu
Y2UgdGVzdCBpbgorICAgICAgICBDaHJvbWl1bSBhbmQgV2ViS2l0IG9uIE1hYyBPUyBYIG9uIGhh
cmR3YXJlIHRoYXQgc3VwcG9ydHMgdGhlCisgICAgICAgIGV4dGVuc2lvbi4gQWxzbyB2ZXJpZmll
ZCB3aXRoIGEgY29uZmlndXJhdGlvbiB0aGF0IGRvZXMgbm90CisgICAgICAgIGFkdmVydGlzZSB0
aGUgZXh0ZW5zaW9uIHRoYXQgdGhpcyBzYW1lIHRlc3QgcGFzc2VzLgorCisgICAgICAgICogQ01h
a2VMaXN0cy50eHQ6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBH
TlVtYWtlZmlsZS5hbToKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29y
ZS5wcmk6CisgICAgICAgICogV2ViQ29yZS5wcm86CisgICAgICAgICogV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTV2ViR0xSZW5kZXJp
bmdDb250ZXh0Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRvSlMpOgorICAgICAgICAo
V2ViQ29yZTo6SlNXZWJHTFJlbmRlcmluZ0NvbnRleHQ6Om1hcmtDaGlsZHJlbik6CisgICAgICAg
IChXZWJDb3JlOjpKU1dlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0RXh0ZW5zaW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OkpTV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRTdXBwb3J0ZWRFeHRlbnNp
b25zKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhXZWJHTFJlbmRlcmluZ0NvbnRl
eHRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6dG9WOE9iamVjdCk6CisgICAgICAgIChX
ZWJDb3JlOjpWOFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0RXh0ZW5zaW9uQ2FsbGJhY2spOgor
ICAgICAgICAoV2ViQ29yZTo6VjhXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFN1cHBvcnRlZEV4
dGVuc2lvbnNDYWxsYmFjayk6CisgICAgICAgICogaHRtbC9jYW52YXMvT0VTVGV4dHVyZUZsb2F0
LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpPRVNUZXh0dXJlRmxvYXQ6Ok9FU1RleHR1
cmVGbG9hdCk6CisgICAgICAgIChXZWJDb3JlOjpPRVNUZXh0dXJlRmxvYXQ6On5PRVNUZXh0dXJl
RmxvYXQpOgorICAgICAgICAoV2ViQ29yZTo6T0VTVGV4dHVyZUZsb2F0OjpnZXROYW1lKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok9FU1RleHR1cmVGbG9hdDo6Y3JlYXRlKToKKyAgICAgICAgKiBodG1s
L2NhbnZhcy9PRVNUZXh0dXJlRmxvYXQuaDogQWRkZWQuCisgICAgICAgICogaHRtbC9jYW52YXMv
T0VTVGV4dHVyZUZsb2F0LmlkbDogQWRkZWQuCisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xF
eHRlbnNpb24uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldlYkdMRXh0ZW5zaW9uOjpX
ZWJHTEV4dGVuc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTEV4dGVuc2lvbjo6fldlYkdM
RXh0ZW5zaW9uKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTEV4dGVuc2lvbi5oOiBBZGRl
ZC4KKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRFeHRlbnNpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRTdXBwb3J0ZWRFeHRlbnNp
b25zKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6dmFsaWRhdGVU
ZXhGdW5jRm9ybWF0QW5kVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0Nv
bnRleHQ6OnZhbGlkYXRlVGV4RnVuY0RhdGEpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5k
ZXJpbmdDb250ZXh0OjpnZXROdW1iZXJPZkV4dGVuc2lvbnMpOgorICAgICAgICAoV2ViQ29yZTo6
V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRFeHRlbnNpb25OdW1iZXIpOgorICAgICAgICAqIGh0
bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5oOgorICAgICAgICAqIGh0bWwvY2FudmFz
L1dlYkdMUmVuZGVyaW5nQ29udGV4dC5pZGw6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
RXh0ZW5zaW9uczNELmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250
ZXh0M0QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmNvbXB1dGVG
b3JtYXRBbmRUeXBlUGFyYW1ldGVycyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQzRDo6ZXh0cmFjdFRleHR1cmVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OmRvVW5wYWNraW5n
QW5kUGFja2luZyk6CisgICAgICAgIChXZWJDb3JlOjpkb1BhY2tpbmcpOgorICAgICAgICAoV2Vi
Q29yZTo6ZG9GbG9hdGluZ1BvaW50UGFja2luZyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQzRDo6cGFja1BpeGVscyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NDb250ZXh0M0QuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9F
eHRlbnNpb25zM0RDaHJvbWl1bS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5n
bC9FeHRlbnNpb25zM0RPcGVuR0wuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uczNE
T3BlbkdMOjpzdXBwb3J0cyk6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zM0RPcGVuR0w6
OmVuc3VyZUVuYWJsZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRl
bnNpb25zM0RPcGVuR0wuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3Jh
cGhpY3NDb250ZXh0M0RPcGVuR0wuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0M0Q6OnRleEltYWdlMkQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3F0L0V4dGVu
c2lvbnMzRFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnMzRFF0OjplbnN1cmVF
bmFibGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9xdC9FeHRlbnNpb25zM0RRdC5o
OgorCiAyMDEwLTEyLTA4ICBNYXR0aGV3IERlbGFuZXkgIDxtZGVsYW5leUBhcHBsZS5jb20+CiAK
ICAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gRnJhc2VyLgpJbmRleDogV2ViQ29yZS9DTWFrZUxp
c3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiA3
MzU2OSkKKysrIFdlYkNvcmUvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTI4Nyw2
ICsyODcsNyBAQCBTRVQoV2ViQ29yZV9JRExfRklMRVMKICAgICBodG1sL2NhbnZhcy9JbnQxNkFy
cmF5LmlkbAogICAgIGh0bWwvY2FudmFzL0ludDMyQXJyYXkuaWRsCiAgICAgaHRtbC9jYW52YXMv
SW50OEFycmF5LmlkbAorICAgIGh0bWwvY2FudmFzL09FU1RleHR1cmVGbG9hdC5pZGwKICAgICBo
dG1sL2NhbnZhcy9VaW50MTZBcnJheS5pZGwKICAgICBodG1sL2NhbnZhcy9VaW50MzJBcnJheS5p
ZGwKICAgICBodG1sL2NhbnZhcy9VaW50OEFycmF5LmlkbApJbmRleDogV2ViQ29yZS9EZXJpdmVk
U291cmNlcy5tYWtlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQko
cmV2aXNpb24gNzM1NjkpCisrKyBXZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UJKHdvcmtpbmcg
Y29weSkKQEAgLTMxMCw2ICszMTAsNyBAQCBET01fQ0xBU1NFUyA9IFwKICAgICBOb3RhdGlvbiBc
CiAgICAgTm90aWZpY2F0aW9uIFwKICAgICBOb3RpZmljYXRpb25DZW50ZXIgXAorICAgIE9FU1Rl
eHR1cmVGbG9hdCBcCiAgICAgT3ZlcmZsb3dFdmVudCBcCiAgICAgUGFnZVRyYW5zaXRpb25FdmVu
dCBcCiAgICAgUGVyZm9ybWFuY2UgXApJbmRleDogV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL0dOVW1ha2VmaWxlLmFtCShyZXZpc2lvbiA3MzU2OSkKKysrIFdl
YkNvcmUvR05VbWFrZWZpbGUuYW0JKHdvcmtpbmcgY29weSkKQEAgLTQ3Myw2ICs0NzMsOCBAQCB3
ZWJjb3JlX2J1aWx0X3NvdXJjZXMgKz0gXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNOb3Rp
ZmljYXRpb25DZW50ZXIuaCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU05vdGlmaWNhdGlv
bi5jcHAgXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNOb3RpZmljYXRpb24uaCBcCisJRGVy
aXZlZFNvdXJjZXMvV2ViQ29yZS9KU09FU1RleHR1cmVGbG9hdC5jcHAgXAorCURlcml2ZWRTb3Vy
Y2VzL1dlYkNvcmUvSlNPRVNUZXh0dXJlRmxvYXQuaCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29y
ZS9KU092ZXJmbG93RXZlbnQuY3BwIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTT3ZlcmZs
b3dFdmVudC5oIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTUGFnZVRyYW5zaXRpb25FdmVu
dC5jcHAgXApAQCAtMTU0NSw2ICsxNTQ3LDggQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlXZWJD
b3JlL2h0bWwvY2FudmFzL0ludDMyQXJyYXkuaCBcCiAJV2ViQ29yZS9odG1sL2NhbnZhcy9JbnQ4
QXJyYXkuY3BwIFwKIAlXZWJDb3JlL2h0bWwvY2FudmFzL0ludDhBcnJheS5oIFwKKwlXZWJDb3Jl
L2h0bWwvY2FudmFzL09FU1RleHR1cmVGbG9hdC5jcHAgXAorCVdlYkNvcmUvaHRtbC9jYW52YXMv
T0VTVGV4dHVyZUZsb2F0LmggXAogCVdlYkNvcmUvaHRtbC9jYW52YXMvVWludDE2QXJyYXkuY3Bw
IFwKIAlXZWJDb3JlL2h0bWwvY2FudmFzL1VpbnQxNkFycmF5LmggXAogCVdlYkNvcmUvaHRtbC9j
YW52YXMvVWludDMyQXJyYXkuY3BwIFwKSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS5neXBpCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS5neXBpCShyZXZpc2lvbiA3MzU2OSkKKysrIFdlYkNv
cmUvV2ViQ29yZS5neXBpCSh3b3JraW5nIGNvcHkpCkBAIC0yMTMsNiArMjEzLDcgQEAKICAgICAg
ICAgICAgICdodG1sL2NhbnZhcy9JbnQxNkFycmF5LmlkbCcsCiAgICAgICAgICAgICAnaHRtbC9j
YW52YXMvSW50MzJBcnJheS5pZGwnLAogICAgICAgICAgICAgJ2h0bWwvY2FudmFzL0ludDhBcnJh
eS5pZGwnLAorICAgICAgICAgICAgJ2h0bWwvY2FudmFzL09FU1RleHR1cmVGbG9hdC5pZGwnLAog
ICAgICAgICAgICAgJ2h0bWwvY2FudmFzL1VpbnQxNkFycmF5LmlkbCcsCiAgICAgICAgICAgICAn
aHRtbC9jYW52YXMvVWludDMyQXJyYXkuaWRsJywKICAgICAgICAgICAgICdodG1sL2NhbnZhcy9V
aW50OEFycmF5LmlkbCcsCkBAIC0xOTExLDYgKzE5MTIsOCBAQAogICAgICAgICAgICAgJ2h0bWwv
Y2FudmFzL0ludDhBcnJheS5jcHAnLAogICAgICAgICAgICAgJ2h0bWwvY2FudmFzL0ludDhBcnJh
eS5oJywKICAgICAgICAgICAgICdodG1sL2NhbnZhcy9JbnRlZ3JhbFR5cGVkQXJyYXlCYXNlLmgn
LAorICAgICAgICAgICAgJ2h0bWwvY2FudmFzL09FU1RleHR1cmVGbG9hdC5jcHAnLAorICAgICAg
ICAgICAgJ2h0bWwvY2FudmFzL09FU1RleHR1cmVGbG9hdC5oJywKICAgICAgICAgICAgICdodG1s
L2NhbnZhcy9UeXBlZEFycmF5QmFzZS5oJywKICAgICAgICAgICAgICdodG1sL2NhbnZhcy9VaW50
MTZBcnJheS5jcHAnLAogICAgICAgICAgICAgJ2h0bWwvY2FudmFzL1VpbnQxNkFycmF5LmgnLApA
QCAtMTkyNCw2ICsxOTI3LDggQEAKICAgICAgICAgICAgICdodG1sL2NhbnZhcy9XZWJHTENvbnRl
eHRBdHRyaWJ1dGVzLmgnLAogICAgICAgICAgICAgJ2h0bWwvY2FudmFzL1dlYkdMQ29udGV4dEV2
ZW50LmNwcCcsCiAgICAgICAgICAgICAnaHRtbC9jYW52YXMvV2ViR0xDb250ZXh0RXZlbnQuaCcs
CisgICAgICAgICAgICAnaHRtbC9jYW52YXMvV2ViR0xFeHRlbnNpb24uY3BwJywKKyAgICAgICAg
ICAgICdodG1sL2NhbnZhcy9XZWJHTEV4dGVuc2lvbi5oJywKICAgICAgICAgICAgICdodG1sL2Nh
bnZhcy9XZWJHTEZyYW1lYnVmZmVyLmNwcCcsCiAgICAgICAgICAgICAnaHRtbC9jYW52YXMvV2Vi
R0xGcmFtZWJ1ZmZlci5oJywKICAgICAgICAgICAgICdodG1sL2NhbnZhcy9XZWJHTEdldEluZm8u
Y3BwJywKSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS5wcmkKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9X
ZWJDb3JlLnByaQkocmV2aXNpb24gNzM1NjkpCisrKyBXZWJDb3JlL1dlYkNvcmUucHJpCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xOTEsNiArMTkxLDcgQEAgSURMX0JJTkRJTkdTICs9IFwKICAgICBodG1s
L2NhbnZhcy9DYW52YXNQYXR0ZXJuLmlkbCBcCiAgICAgaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVy
aW5nQ29udGV4dC5pZGwgXAogICAgIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQy
RC5pZGwgXAorICAgIGh0bWwvY2FudmFzL09FU1RleHR1cmVGbG9hdC5pZGwgXAogICAgIGh0bWwv
Y2FudmFzL1dlYkdMQWN0aXZlSW5mby5pZGwgXAogICAgIGh0bWwvY2FudmFzL1dlYkdMQnVmZmVy
LmlkbCBcCiAgICAgaHRtbC9jYW52YXMvV2ViR0xDb250ZXh0QXR0cmlidXRlcy5pZGwgXApJbmRl
eDogV2ViQ29yZS9XZWJDb3JlLnBybwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUucHJv
CShyZXZpc2lvbiA3MzU2OSkKKysrIFdlYkNvcmUvV2ViQ29yZS5wcm8JKHdvcmtpbmcgY29weSkK
QEAgLTM3MjUsNiArMzcyNSw3IEBAIEhFQURFUlMgKz0gXAogICAgICAgICBodG1sL2NhbnZhcy9J
bnQ4QXJyYXkuaCBcCiAgICAgICAgIGh0bWwvY2FudmFzL1dlYkdMQ29udGV4dEF0dHJpYnV0ZXMu
aCBcCiAgICAgICAgIGh0bWwvY2FudmFzL0Zsb2F0MzJBcnJheS5oIFwKKyAgICAgICAgaHRtbC9j
YW52YXMvV2ViR0xFeHRlbnNpb24uaCBcCiAgICAgICAgIGh0bWwvY2FudmFzL1dlYkdMRnJhbWVi
dWZmZXIuaCBcCiAgICAgICAgIGh0bWwvY2FudmFzL1dlYkdMR2V0SW5mby5oIFwKICAgICAgICAg
aHRtbC9jYW52YXMvSW50MzJBcnJheS5oIFwKQEAgLTM3MzMsNiArMzczNCw3IEBAIEhFQURFUlMg
Kz0gXAogICAgICAgICBodG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuaCBcCiAgICAg
ICAgIGh0bWwvY2FudmFzL1dlYkdMU2hhZGVyLmggXAogICAgICAgICBodG1sL2NhbnZhcy9JbnQx
NkFycmF5LmggXAorICAgICAgICBodG1sL2NhbnZhcy9PRVNUZXh0dXJlRmxvYXQuaCBcCiAgICAg
ICAgIGh0bWwvY2FudmFzL1dlYkdMVGV4dHVyZS5oIFwKICAgICAgICAgaHRtbC9jYW52YXMvV2Vi
R0xVbmlmb3JtTG9jYXRpb24uaCBcCiAgICAgICAgIGh0bWwvY2FudmFzL1VpbnQ4QXJyYXkuaCBc
CkBAIC0zNzY1LDYgKzM3NjcsNyBAQCBTT1VSQ0VTICs9IFwKICAgICAgICAgaHRtbC9jYW52YXMv
SW50OEFycmF5LmNwcCBcCiAgICAgICAgIGh0bWwvY2FudmFzL1dlYkdMQ29udGV4dEF0dHJpYnV0
ZXMuY3BwIFwKICAgICAgICAgaHRtbC9jYW52YXMvRmxvYXQzMkFycmF5LmNwcCBcCisgICAgICAg
IGh0bWwvY2FudmFzL1dlYkdMRXh0ZW5zaW9uLmNwcCBcCiAgICAgICAgIGh0bWwvY2FudmFzL1dl
YkdMRnJhbWVidWZmZXIuY3BwIFwKICAgICAgICAgaHRtbC9jYW52YXMvV2ViR0xHZXRJbmZvLmNw
cCBcCiAgICAgICAgIGh0bWwvY2FudmFzL0ludDMyQXJyYXkuY3BwIFwKQEAgLTM3NzMsNiArMzc3
Niw3IEBAIFNPVVJDRVMgKz0gXAogICAgICAgICBodG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0Nv
bnRleHQuY3BwIFwKICAgICAgICAgaHRtbC9jYW52YXMvV2ViR0xTaGFkZXIuY3BwIFwKICAgICAg
ICAgaHRtbC9jYW52YXMvSW50MTZBcnJheS5jcHAgXAorICAgICAgICBodG1sL2NhbnZhcy9PRVNU
ZXh0dXJlRmxvYXQuY3BwIFwKICAgICAgICAgaHRtbC9jYW52YXMvV2ViR0xUZXh0dXJlLmNwcCBc
CiAgICAgICAgIGh0bWwvY2FudmFzL1dlYkdMVW5pZm9ybUxvY2F0aW9uLmNwcCBcCiAgICAgICAg
IGh0bWwvY2FudmFzL1VpbnQ4QXJyYXkuY3BwIFwKSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiA3MzU2OSkKKysrIFdlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xNTIxLDYgKzE1
MjEsMTIgQEAKIAkJNkU2N0QyQTkxMjgwRThCRDAwODc1OEY3IC8qIEV4dGVuc2lvbnMzRC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkU2N0QyQTgxMjgw
RThCRDAwODc1OEY3IC8qIEV4dGVuc2lvbnMzRC5oICovOyB9OwogCQk2RTk2QkIxQzExOTg2RUUy
MDA3RDk0Q0QgLyogSW50ZWdyYWxUeXBlZEFycmF5QmFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkU5NkJCMUExMTk4NkVFMTAwN0Q5NENEIC8qIElu
dGVncmFsVHlwZWRBcnJheUJhc2UuaCAqLzsgfTsKIAkJNkU5NkJCMUQxMTk4NkVFMjAwN0Q5NENE
IC8qIFR5cGVkQXJyYXlCYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA2RTk2QkIxQjExOTg2RUUxMDA3RDk0Q0QgLyogVHlwZWRBcnJheUJhc2UuaCAq
LzsgfTsKKwkJNkVCRjBFNDgxMkE4OTI2MTAwREIxNzA5IC8qIE9FU1RleHR1cmVGbG9hdC5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RUJGMEU0NTEy
QTg5MjYxMDBEQjE3MDkgLyogT0VTVGV4dHVyZUZsb2F0LmNwcCAqLzsgfTsKKwkJNkVCRjBFNDkx
MkE4OTI2MTAwREIxNzA5IC8qIE9FU1RleHR1cmVGbG9hdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkVCRjBFNDYxMkE4OTI2MTAwREIxNzA5IC8qIE9F
U1RleHR1cmVGbG9hdC5oICovOyB9OworCQk2RUJGMEU1NDEyQTg5Mjk4MDBEQjE3MDkgLyogV2Vi
R0xFeHRlbnNpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNkVCRjBFNTIxMkE4OTI5ODAwREIxNzA5IC8qIFdlYkdMRXh0ZW5zaW9uLmNwcCAqLzsg
fTsKKwkJNkVCRjBFNTUxMkE4OTI5ODAwREIxNzA5IC8qIFdlYkdMRXh0ZW5zaW9uLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RUJGMEU1MzEyQTg5Mjk4
MDBEQjE3MDkgLyogV2ViR0xFeHRlbnNpb24uaCAqLzsgfTsKKwkJNkVCRjBFNzYxMkE5ODY4ODAw
REIxNzA5IC8qIEpTT0VTVGV4dHVyZUZsb2F0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFQkYwRTc0MTJBOTg2ODgwMERCMTcwOSAvKiBKU09FU1Rl
eHR1cmVGbG9hdC5jcHAgKi87IH07CisJCTZFQkYwRTc3MTJBOTg2ODgwMERCMTcwOSAvKiBKU09F
U1RleHR1cmVGbG9hdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNkVCRjBFNzUxMkE5ODY4ODAwREIxNzA5IC8qIEpTT0VTVGV4dHVyZUZsb2F0LmggKi87
IH07CiAJCTZFRThBNzcyMTBGODAzRjMwMDVBNEEyNCAvKiBKU1dlYkdMQ29udGV4dEF0dHJpYnV0
ZXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkVF
OEE3NzAxMEY4MDNGMzAwNUE0QTI0IC8qIEpTV2ViR0xDb250ZXh0QXR0cmlidXRlcy5jcHAgKi87
IH07CiAJCTZFRThBNzczMTBGODAzRjMwMDVBNEEyNCAvKiBKU1dlYkdMQ29udGV4dEF0dHJpYnV0
ZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFRThB
NzcxMTBGODAzRjMwMDVBNEEyNCAvKiBKU1dlYkdMQ29udGV4dEF0dHJpYnV0ZXMuaCAqLzsgfTsK
IAkJNzI2MjZFMDIwRUYwMjJGRTAwQTA3RTIwIC8qIEZvbnRGYXN0UGF0aC5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MjYyNkUwMTBFRjAyMkZFMDBB
MDdFMjAgLyogRm9udEZhc3RQYXRoLmNwcCAqLzsgfTsKQEAgLTc4ODIsNiArNzg4OCwxMyBAQAog
CQk2RTY3RDJBODEyODBFOEJEMDA4NzU4RjcgLyogRXh0ZW5zaW9uczNELmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEV4dGVuc2lvbnMzRC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk2RTk2QkIxQTExOTg2RUUxMDA3RDk0Q0QgLyogSW50ZWdyYWxUeXBlZEFycmF5
QmFzZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBJbnRlZ3JhbFR5cGVkQXJy
YXlCYXNlLmg7IHBhdGggPSBjYW52YXMvSW50ZWdyYWxUeXBlZEFycmF5QmFzZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk2RTk2QkIxQjExOTg2RUUxMDA3RDk0Q0QgLyogVHlwZWRB
cnJheUJhc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gVHlwZWRBcnJheUJh
c2UuaDsgcGF0aCA9IGNhbnZhcy9UeXBlZEFycmF5QmFzZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk2RUJGMEU0NTEyQTg5MjYxMDBEQjE3MDkgLyogT0VTVGV4dHVyZUZsb2F0LmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IE9FU1RleHR1cmVGbG9hdC5j
cHA7IHBhdGggPSBjYW52YXMvT0VTVGV4dHVyZUZsb2F0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJNkVCRjBFNDYxMkE4OTI2MTAwREIxNzA5IC8qIE9FU1RleHR1cmVGbG9hdC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBPRVNUZXh0dXJlRmxvYXQuaDsgcGF0
aCA9IGNhbnZhcy9PRVNUZXh0dXJlRmxvYXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJNkVCRjBFNDcxMkE4OTI2MTAwREIxNzA5IC8qIE9FU1RleHR1cmVGbG9hdC5pZGwgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0OyBuYW1lID0gT0VTVGV4dHVyZUZsb2F0LmlkbDsgcGF0aCA9IGNhbnZhcy9PRVNU
ZXh0dXJlRmxvYXQuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk2RUJGMEU1MjEy
QTg5Mjk4MDBEQjE3MDkgLyogV2ViR0xFeHRlbnNpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBuYW1lID0gV2ViR0xFeHRlbnNpb24uY3BwOyBwYXRoID0gY2FudmFzL1dlYkdM
RXh0ZW5zaW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNkVCRjBFNTMxMkE4
OTI5ODAwREIxNzA5IC8qIFdlYkdMRXh0ZW5zaW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgbmFtZSA9IFdlYkdMRXh0ZW5zaW9uLmg7IHBhdGggPSBjYW52YXMvV2ViR0xFeHRlbnNpb24u
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNkVCRjBFNzQxMkE5ODY4ODAwREIxNzA5
IC8qIEpTT0VTVGV4dHVyZUZsb2F0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEpTT0VTVGV4dHVyZUZsb2F0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJNkVCRjBFNzUxMkE5ODY4ODAwREIxNzA5IC8qIEpTT0VTVGV4dHVyZUZsb2F0LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTT0VTVGV4dHVyZUZsb2F0Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZFRThBNzcwMTBGODAzRjMwMDVBNEEyNCAvKiBKU1dlYkdM
Q29udGV4dEF0dHJpYnV0ZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gSlNXZWJHTENvbnRleHRBdHRyaWJ1dGVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNkVFOEE3NzExMEY4MDNGMzAwNUE0QTI0IC8qIEpTV2ViR0xDb250ZXh0QXR0cmlidXRl
cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1dlYkdMQ29udGV4dEF0dHJp
YnV0ZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzI2MjZFMDEwRUYwMjJGRTAw
QTA3RTIwIC8qIEZvbnRGYXN0UGF0aC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBGb250RmFzdFBhdGguY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
MTMwNTUsNiArMTMwNjgsOSBAQAogCQkJCTQ5QzdCOUFDMTA0MkQzMkUwMDA5RDQ0NyAvKiBJbnQ4
QXJyYXkuaCAqLywKIAkJCQk0OUM3QjlBRDEwNDJEMzJFMDAwOUQ0NDcgLyogSW50OEFycmF5Lmlk
bCAqLywKIAkJCQk2RTk2QkIxQTExOTg2RUUxMDA3RDk0Q0QgLyogSW50ZWdyYWxUeXBlZEFycmF5
QmFzZS5oICovLAorCQkJCTZFQkYwRTQ1MTJBODkyNjEwMERCMTcwOSAvKiBPRVNUZXh0dXJlRmxv
YXQuY3BwICovLAorCQkJCTZFQkYwRTQ2MTJBODkyNjEwMERCMTcwOSAvKiBPRVNUZXh0dXJlRmxv
YXQuaCAqLywKKwkJCQk2RUJGMEU0NzEyQTg5MjYxMDBEQjE3MDkgLyogT0VTVGV4dHVyZUZsb2F0
LmlkbCAqLywKIAkJCQk2RTk2QkIxQjExOTg2RUUxMDA3RDk0Q0QgLyogVHlwZWRBcnJheUJhc2Uu
aCAqLywKIAkJCQk0OUVFQ0REQzEwNTAzQzIzMDAwOTlGQUIgLyogVWludDE2QXJyYXkuY3BwICov
LAogCQkJCTQ5RUVDREREMTA1MDNDMjQwMDA5OUZBQiAvKiBVaW50MTZBcnJheS5oICovLApAQCAt
MTMwNzYsNiArMTMwOTIsOCBAQAogCQkJCTkzRjZGMUVBMTI3RjcwQjEwMDU1Q0IwNiAvKiBXZWJH
TENvbnRleHRFdmVudC5jcHAgKi8sCiAJCQkJOTNGNkYxRUIxMjdGNzBCMTAwNTVDQjA2IC8qIFdl
YkdMQ29udGV4dEV2ZW50LmggKi8sCiAJCQkJOTNGNkYxRUMxMjdGNzBCMTAwNTVDQjA2IC8qIFdl
YkdMQ29udGV4dEV2ZW50LmlkbCAqLywKKwkJCQk2RUJGMEU1MjEyQTg5Mjk4MDBEQjE3MDkgLyog
V2ViR0xFeHRlbnNpb24uY3BwICovLAorCQkJCTZFQkYwRTUzMTJBODkyOTgwMERCMTcwOSAvKiBX
ZWJHTEV4dGVuc2lvbi5oICovLAogCQkJCTQ5QzdCOUFFMTA0MkQzMkUwMDA5RDQ0NyAvKiBXZWJH
TEZyYW1lYnVmZmVyLmNwcCAqLywKIAkJCQk0OUM3QjlBRjEwNDJEMzJFMDAwOUQ0NDcgLyogV2Vi
R0xGcmFtZWJ1ZmZlci5oICovLAogCQkJCTQ5QzdCOUIwMTA0MkQzMkUwMDA5RDQ0NyAvKiBXZWJH
TEZyYW1lYnVmZmVyLmlkbCAqLywKQEAgLTE1OTMyLDYgKzE1OTUwLDggQEAKIAkJCQk0OUM3Qjk4
MzEwNDJEMkQzMDAwOUQ0NDcgLyogSlNJbnQ4QXJyYXkuaCAqLywKIAkJCQlFNDQ2MTQxMDBDRDY4
MjY5MDBGQURBNzUgLyogSlNNZWRpYUVycm9yLmNwcCAqLywKIAkJCQlFNDQ2MTQxMTBDRDY4MjY5
MDBGQURBNzUgLyogSlNNZWRpYUVycm9yLmggKi8sCisJCQkJNkVCRjBFNzQxMkE5ODY4ODAwREIx
NzA5IC8qIEpTT0VTVGV4dHVyZUZsb2F0LmNwcCAqLywKKwkJCQk2RUJGMEU3NTEyQTk4Njg4MDBE
QjE3MDkgLyogSlNPRVNUZXh0dXJlRmxvYXQuaCAqLywKIAkJCQlCQ0VGNDVGMzBFNjg3QjVDMDAx
QzEyODcgLyogSlNUZXh0TWV0cmljcy5jcHAgKi8sCiAJCQkJQkNFRjQ1RjQwRTY4N0I1QzAwMUMx
Mjg3IC8qIEpTVGV4dE1ldHJpY3MuaCAqLywKIAkJCQlFNDQ2MTQxMjBDRDY4MjY5MDBGQURBNzUg
LyogSlNUaW1lUmFuZ2VzLmNwcCAqLywKQEAgLTIyMTYwLDYgKzIyMTgwLDkgQEAKIAkJCQlGREEx
NUVDQTEyQjAzRjUwMDAzQTU4M0EgLyogSlNSZWFsdGltZUFuYWx5c2VyTm9kZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJRkRBMTVFQ0UxMkIwM0Y2MTAwM0E1ODNBIC8qIEpTSmF2YVNjcmlwdEF1ZGlv
Tm9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkRBMTVFRDIxMkIwM0Y5NDAwM0E1ODNBIC8qIEpT
RGVsYXlOb2RlLmggaW4gSGVhZGVycyAqLywKKwkJCQk2RUJGMEU0OTEyQTg5MjYxMDBEQjE3MDkg
LyogT0VTVGV4dHVyZUZsb2F0LmggaW4gSGVhZGVycyAqLywKKwkJCQk2RUJGMEU1NTEyQTg5Mjk4
MDBEQjE3MDkgLyogV2ViR0xFeHRlbnNpb24uaCBpbiBIZWFkZXJzICovLAorCQkJCTZFQkYwRTc3
MTJBOTg2ODgwMERCMTcwOSAvKiBKU09FU1RleHR1cmVGbG9hdC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBA
IC0yNDgyNiw2ICsyNDg0OSw5IEBACiAJCQkJRkRBMTVFQ0QxMkIwM0Y2MTAwM0E1ODNBIC8qIEpT
SmF2YVNjcmlwdEF1ZGlvTm9kZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGREExNUVEMTEyQjAz
Rjk0MDAzQTU4M0EgLyogSlNEZWxheU5vZGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDk0QkM0
MEQxMkFFREQ5RTAwNzQzQkQyIC8qIFRyYW5zZm9ybWF0aW9uTWF0cml4Q0EuY3BwIGluIFNvdXJj
ZXMgKi8sCisJCQkJNkVCRjBFNDgxMkE4OTI2MTAwREIxNzA5IC8qIE9FU1RleHR1cmVGbG9hdC5j
cHAgaW4gU291cmNlcyAqLywKKwkJCQk2RUJGMEU1NDEyQTg5Mjk4MDBEQjE3MDkgLyogV2ViR0xF
eHRlbnNpb24uY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNkVCRjBFNzYxMkE5ODY4ODAwREIxNzA5
IC8qIEpTT0VTVGV4dHVyZUZsb2F0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9u
bHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpJbmRleDogV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU1dlYkdMUmVuZGVyaW5nQ29udGV4dEN1c3RvbS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dlYkdMUmVuZGVyaW5nQ29udGV4dEN1c3RvbS5jcHAJ
KHJldmlzaW9uIDczNTY5KQorKysgV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dlYkdMUmVuZGVyaW5n
Q29udGV4dEN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNs
dWRlICJKU0hUTUxDYW52YXNFbGVtZW50LmgiCiAjaW5jbHVkZSAiSlNIVE1MSW1hZ2VFbGVtZW50
LmgiCiAjaW5jbHVkZSAiSlNJbWFnZURhdGEuaCIKKyNpbmNsdWRlICJKU09FU1RleHR1cmVGbG9h
dC5oIgogI2luY2x1ZGUgIkpTV2ViR0xCdWZmZXIuaCIKICNpbmNsdWRlICJKU0Zsb2F0MzJBcnJh
eS5oIgogI2luY2x1ZGUgIkpTV2ViR0xGcmFtZWJ1ZmZlci5oIgpAQCAtNDcsOCArNDgsMTAgQEAK
ICNpbmNsdWRlICJKU1VpbnQ4QXJyYXkuaCIKICNpbmNsdWRlICJKU1dlYktpdENTU01hdHJpeC5o
IgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCisjaW5jbHVkZSAiT0VTVGV4dHVyZUZsb2F0
LmgiCiAjaW5jbHVkZSAiV2ViR0xCdWZmZXIuaCIKICNpbmNsdWRlICJGbG9hdDMyQXJyYXkuaCIK
KyNpbmNsdWRlICJXZWJHTEV4dGVuc2lvbi5oIgogI2luY2x1ZGUgIldlYkdMRnJhbWVidWZmZXIu
aCIKICNpbmNsdWRlICJXZWJHTEdldEluZm8uaCIKICNpbmNsdWRlICJJbnQzMkFycmF5LmgiCkBA
IC0xNjEsNiArMTY0LDI3IEBAIGVudW0gV2hpY2hQcm9ncmFtQ2FsbCB7CiAgICAga1Byb2dyYW1Q
YXJhbWV0ZXIsIGtVbmlmb3JtCiB9OwogCitzdGF0aWMgSlNWYWx1ZSB0b0pTKEV4ZWNTdGF0ZSog
ZXhlYywgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgV2ViR0xFeHRlbnNpb24qIGV4
dGVuc2lvbikKK3sKKyAgICBpZiAoIWV4dGVuc2lvbikKKyAgICAgICAgcmV0dXJuIGpzTnVsbCgp
OworICAgIHN3aXRjaCAoZXh0ZW5zaW9uLT5nZXROYW1lKCkpIHsKKyAgICBjYXNlIFdlYkdMRXh0
ZW5zaW9uOjpPRVNUZXh0dXJlRmxvYXROYW1lOgorICAgICAgICByZXR1cm4gdG9KUyhleGVjLCBn
bG9iYWxPYmplY3QsIHN0YXRpY19jYXN0PE9FU1RleHR1cmVGbG9hdCo+KGV4dGVuc2lvbikpOwor
ICAgIH0KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4ganNOdWxsKCk7Cit9
CisKK3ZvaWQgSlNXZWJHTFJlbmRlcmluZ0NvbnRleHQ6Om1hcmtDaGlsZHJlbihNYXJrU3RhY2sm
IG1hcmtTdGFjaykKK3sKKyAgICBCYXNlOjptYXJrQ2hpbGRyZW4obWFya1N0YWNrKTsKKworICAg
IFdlYkdMUmVuZGVyaW5nQ29udGV4dCogY29udGV4dCA9IHN0YXRpY19jYXN0PFdlYkdMUmVuZGVy
aW5nQ29udGV4dCo+KGltcGwoKSk7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBjb250ZXh0LT5n
ZXROdW1iZXJPZkV4dGVuc2lvbnMoKTsgKytpKQorICAgICAgICBtYXJrRE9NT2JqZWN0V3JhcHBl
cihtYXJrU3RhY2ssICpIZWFwOjpoZWFwKHRoaXMpLT5nbG9iYWxEYXRhKCksIGNvbnRleHQtPmdl
dEV4dGVuc2lvbk51bWJlcihpKSk7Cit9CisKIEpTVmFsdWUgSlNXZWJHTFJlbmRlcmluZ0NvbnRl
eHQ6OmdldEF0dGFjaGVkU2hhZGVycyhFeGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAgaWYgKGV4ZWMt
PmFyZ3VtZW50Q291bnQoKSA8IDEpCkBAIC0xODYsNiArMjEwLDE5IEBAIEpTVmFsdWUgSlNXZWJH
TFJlbmRlcmluZ0NvbnRleHQ6OmdldEF0dGEKICAgICByZXR1cm4gY29uc3RydWN0QXJyYXkoZXhl
YywgbGlzdCk7CiB9CiAKK0pTVmFsdWUgSlNXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldEV4dGVu
c2lvbihFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA8
IDEpCisgICAgICAgIHJldHVybiB0aHJvd1N5bnRheEVycm9yKGV4ZWMpOworCisgICAgV2ViR0xS
ZW5kZXJpbmdDb250ZXh0KiBjb250ZXh0ID0gc3RhdGljX2Nhc3Q8V2ViR0xSZW5kZXJpbmdDb250
ZXh0Kj4oaW1wbCgpKTsKKyAgICBjb25zdCBTdHJpbmcmIG5hbWUgPSB1c3RyaW5nVG9TdHJpbmco
ZXhlYy0+YXJndW1lbnQoMCkudG9TdHJpbmcoZXhlYykpOworICAgIGlmIChleGVjLT5oYWRFeGNl
cHRpb24oKSkKKyAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CisgICAgV2ViR0xFeHRlbnNp
b24qIGV4dGVuc2lvbiA9IGNvbnRleHQtPmdldEV4dGVuc2lvbihuYW1lKTsKKyAgICByZXR1cm4g
dG9KUyhleGVjLCBnbG9iYWxPYmplY3QoKSwgZXh0ZW5zaW9uKTsKK30KKwogSlNWYWx1ZSBKU1dl
YkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0QnVmZmVyUGFyYW1ldGVyKEV4ZWNTdGF0ZSogZXhlYykK
IHsKICAgICByZXR1cm4gZ2V0T2JqZWN0UGFyYW1ldGVyKHRoaXMsIGV4ZWMsIGtCdWZmZXIpOwpA
QCAtMjgwLDYgKzMxNywxNiBAQCBKU1ZhbHVlIEpTV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRT
aGFkCiAgICAgcmV0dXJuIHRvSlMoZXhlYywgZ2xvYmFsT2JqZWN0KCksIGluZm8pOwogfQogCitK
U1ZhbHVlIEpTV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRTdXBwb3J0ZWRFeHRlbnNpb25zKEV4
ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBXZWJHTFJlbmRlcmluZ0NvbnRleHQqIGNvbnRleHQgPSBz
dGF0aWNfY2FzdDxXZWJHTFJlbmRlcmluZ0NvbnRleHQqPihpbXBsKCkpOworICAgIFZlY3RvcjxT
dHJpbmc+IHZhbHVlID0gY29udGV4dC0+Z2V0U3VwcG9ydGVkRXh0ZW5zaW9ucygpOworICAgIE1h
cmtlZEFyZ3VtZW50QnVmZmVyIGxpc3Q7CisgICAgZm9yIChzaXplX3QgaWkgPSAwOyBpaSA8IHZh
bHVlLnNpemUoKTsgKytpaSkKKyAgICAgICAgbGlzdC5hcHBlbmQoanNTdHJpbmcoZXhlYywgdmFs
dWVbaWldKSk7CisgICAgcmV0dXJuIGNvbnN0cnVjdEFycmF5KGV4ZWMsIGxpc3QpOworfQorCiBK
U1ZhbHVlIEpTV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRUZXhQYXJhbWV0ZXIoRXhlY1N0YXRl
KiBleGVjKQogewogICAgIHJldHVybiBnZXRPYmplY3RQYXJhbWV0ZXIodGhpcywgZXhlYywga1Rl
eHR1cmUpOwpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhXZWJHTFJlbmRlcmlu
Z0NvbnRleHRDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4V2ViR0xSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcAkocmV2aXNpb24gNzM1NjkpCisr
KyBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFdlYkdMUmVuZGVyaW5nQ29udGV4dEN1c3Rv
bS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQxLDYgKzQxLDcgQEAKICNpbmNsdWRlIDx3dGYvRmFz
dE1hbGxvYy5oPgogCiAjaW5jbHVkZSAiVjhCaW5kaW5nLmgiCisjaW5jbHVkZSAiVjhCaW5kaW5n
TWFjcm9zLmgiCiAjaW5jbHVkZSAiVjhBcnJheUJ1ZmZlclZpZXcuaCIKICNpbmNsdWRlICJWOFdl
YkdMQnVmZmVyLmgiCiAjaW5jbHVkZSAiVjhJbnQ4QXJyYXkuaCIKQEAgLTYwLDYgKzYxLDcgQEAK
ICNpbmNsdWRlICJWOEhUTUxJbWFnZUVsZW1lbnQuaCIKICNpbmNsdWRlICJWOEhUTUxWaWRlb0Vs
ZW1lbnQuaCIKICNpbmNsdWRlICJWOEltYWdlRGF0YS5oIgorI2luY2x1ZGUgIlY4T0VTVGV4dHVy
ZUZsb2F0LmgiCiAjaW5jbHVkZSAiVjhQcm94eS5oIgogI2luY2x1ZGUgIldlYkdMUmVuZGVyaW5n
Q29udGV4dC5oIgogCkBAIC0xNTEsNiArMTUzLDIxIEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gdG9WOE9iamVjdCgKICAgICB9CiB9CiAKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gdG9WOE9iamVjdChXZWJHTEV4dGVuc2lvbiogZXh0ZW5zaW9uLCB2ODo6SGFuZGxlPHY4OjpP
YmplY3Q+IGNvbnRleHRPYmplY3QpCit7CisgICAgaWYgKCFleHRlbnNpb24pCisgICAgICAgIHJl
dHVybiB2ODo6TnVsbCgpOworICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBleHRlbnNpb25PYmpl
Y3Q7CisgICAgc3dpdGNoIChleHRlbnNpb24tPmdldE5hbWUoKSkgeworICAgIGNhc2UgV2ViR0xF
eHRlbnNpb246Ok9FU1RleHR1cmVGbG9hdE5hbWU6CisgICAgICAgIGV4dGVuc2lvbk9iamVjdCA9
IHRvVjgoc3RhdGljX2Nhc3Q8T0VTVGV4dHVyZUZsb2F0Kj4oZXh0ZW5zaW9uKSk7CisgICAgICAg
IGJyZWFrOworICAgIH0KKyAgICBBU1NFUlQoIWV4dGVuc2lvbk9iamVjdC5Jc0VtcHR5KCkpOwor
ICAgIFY4RE9NV3JhcHBlcjo6c2V0SGlkZGVuUmVmZXJlbmNlKGNvbnRleHRPYmplY3QsIGV4dGVu
c2lvbk9iamVjdCk7CisgICAgcmV0dXJuIGV4dGVuc2lvbk9iamVjdDsKK30KKwogZW51bSBPYmpl
Y3RUeXBlIHsKICAgICBrQnVmZmVyLCBrUmVuZGVyYnVmZmVyLCBrVGV4dHVyZSwga1ZlcnRleEF0
dHJpYgogfTsKQEAgLTI0Myw2ICsyNjAsMTkgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4V2Vi
R0xSZW5kZXJpbmdDbwogICAgIHJldHVybiBnZXRPYmplY3RQYXJhbWV0ZXIoYXJncywga0J1ZmZl
cik7CiB9CiAKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6
Z2V0RXh0ZW5zaW9uQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKK3sKKyAgICBJ
TkNfU1RBVFMoIkRPTS5XZWJHTFJlbmRlcmluZ0NvbnRleHQuZ2V0RXh0ZW5zaW9uQ2FsbGJhY2so
KSIpOworICAgIFdlYkdMUmVuZGVyaW5nQ29udGV4dCogaW1wID0gVjhXZWJHTFJlbmRlcmluZ0Nv
bnRleHQ6OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOworICAgIGlmIChhcmdzLkxlbmd0aCgpIDwg
MSkgeworICAgICAgICBWOFByb3h5OjpzZXRET01FeGNlcHRpb24oU1lOVEFYX0VSUik7CisgICAg
ICAgIHJldHVybiBub3RIYW5kbGVkQnlJbnRlcmNlcHRvcigpOworICAgIH0KKyAgICBTVFJJTkdf
VE9fVjhQQVJBTUVURVJfRVhDRVBUSU9OX0JMT0NLKFY4UGFyYW1ldGVyPD4sIG5hbWUsIGFyZ3Nb
MF0pOworICAgIFdlYkdMRXh0ZW5zaW9uKiBleHRlbnNpb24gPSBpbXAtPmdldEV4dGVuc2lvbihu
YW1lKTsKKyAgICByZXR1cm4gdG9WOE9iamVjdChleHRlbnNpb24sIGFyZ3MuSG9sZGVyKCkpOwor
fQorCiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldEZy
YW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlckNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMm
IGFyZ3MpCiB7CiAgICAgSU5DX1NUQVRTKCJET00uV2ViR0xSZW5kZXJpbmdDb250ZXh0LmdldEZy
YW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcigpIik7CkBAIC0zNDEsNiArMzcxLDE3IEBAIHY4
OjpIYW5kbGU8djg6OlZhbHVlPiBWOFdlYkdMUmVuZGVyaW5nQ28KICAgICByZXR1cm4gdG9WOE9i
amVjdChpbmZvKTsKIH0KIAordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4V2ViR0xSZW5kZXJpbmdD
b250ZXh0OjpnZXRTdXBwb3J0ZWRFeHRlbnNpb25zQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50
cyYgYXJncykKK3sKKyAgICBJTkNfU1RBVFMoIkRPTS5XZWJHTFJlbmRlcmluZ0NvbnRleHQuZ2V0
U3VwcG9ydGVkRXh0ZW5zaW9uc0NhbGxiYWNrKCkiKTsKKyAgICBXZWJHTFJlbmRlcmluZ0NvbnRl
eHQqIGltcCA9IFY4V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp0b05hdGl2ZShhcmdzLkhvbGRlcigp
KTsKKyAgICBWZWN0b3I8U3RyaW5nPiB2YWx1ZSA9IGltcC0+Z2V0U3VwcG9ydGVkRXh0ZW5zaW9u
cygpOworICAgIHY4OjpMb2NhbDx2ODo6QXJyYXk+IGFycmF5ID0gdjg6OkFycmF5OjpOZXcodmFs
dWUuc2l6ZSgpKTsKKyAgICBmb3IgKHNpemVfdCBpaSA9IDA7IGlpIDwgdmFsdWUuc2l6ZSgpOyAr
K2lpKQorICAgICAgICBhcnJheS0+U2V0KHY4OjpJbnRlZ2VyOjpOZXcoaWkpLCB2ODo6U3RyaW5n
OjpOZXcoZnJvbVdlYkNvcmVTdHJpbmcodmFsdWVbaWldKSwgdmFsdWVbaWldLmxlbmd0aCgpKSk7
CisgICAgcmV0dXJuIGFycmF5OworfQorCiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhXZWJHTFJl
bmRlcmluZ0NvbnRleHQ6OmdldFRleFBhcmFtZXRlckNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVu
dHMmIGFyZ3MpCiB7CiAgICAgSU5DX1NUQVRTKCJET00uV2ViR0xSZW5kZXJpbmdDb250ZXh0Lmdl
dFRleFBhcmFtZXRlcigpIik7CkluZGV4OiBXZWJDb3JlL2h0bWwvY2FudmFzL09FU1RleHR1cmVG
bG9hdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL2NhbnZhcy9PRVNUZXh0dXJlRmxv
YXQuY3BwCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9odG1sL2NhbnZhcy9PRVNUZXh0dXJlRmxv
YXQuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDU0IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRS
SUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorCisjaWYgRU5BQkxFKDNEX0NBTlZBUykKKworI2luY2x1ZGUgIk9FU1RleHR1cmVG
bG9hdC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK09FU1RleHR1cmVGbG9hdDo6T0VTVGV4
dHVyZUZsb2F0KCkgOiBXZWJHTEV4dGVuc2lvbigpCit7Cit9CisKK09FU1RleHR1cmVGbG9hdDo6
fk9FU1RleHR1cmVGbG9hdCgpCit7Cit9CisKK1dlYkdMRXh0ZW5zaW9uOjpFeHRlbnNpb25OYW1l
IE9FU1RleHR1cmVGbG9hdDo6Z2V0TmFtZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9FU1RleHR1
cmVGbG9hdE5hbWU7Cit9CisKK1Bhc3NSZWZQdHI8T0VTVGV4dHVyZUZsb2F0PiBPRVNUZXh0dXJl
RmxvYXQ6OmNyZWF0ZSgpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBPRVNUZXh0dXJlRmxv
YXQpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoM0Rf
Q0FOVkFTKQpJbmRleDogV2ViQ29yZS9odG1sL2NhbnZhcy9PRVNUZXh0dXJlRmxvYXQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvY2FudmFzL09FU1RleHR1cmVGbG9hdC5oCShyZXZpc2lv
biAwKQorKysgV2ViQ29yZS9odG1sL2NhbnZhcy9PRVNUZXh0dXJlRmxvYXQuaAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSw0OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwor
ICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgT0VTVGV4dHVyZUZsb2F0X2gKKyNk
ZWZpbmUgT0VTVGV4dHVyZUZsb2F0X2gKKworI2luY2x1ZGUgIldlYkdMRXh0ZW5zaW9uLmgiCisj
aW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIE9FU1RleHR1cmVGbG9hdCA6IHB1YmxpYyBX
ZWJHTEV4dGVuc2lvbiB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8T0VTVGV4dHVy
ZUZsb2F0PiBjcmVhdGUoKTsKKworICAgIHZpcnR1YWwgfk9FU1RleHR1cmVGbG9hdCgpOworICAg
IHZpcnR1YWwgRXh0ZW5zaW9uTmFtZSBnZXROYW1lKCkgY29uc3Q7CisKK3ByaXZhdGU6CisgICAg
T0VTVGV4dHVyZUZsb2F0KCk7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRp
ZiAvLyBPRVNUZXh0dXJlRmxvYXRfaApJbmRleDogV2ViQ29yZS9odG1sL2NhbnZhcy9PRVNUZXh0
dXJlRmxvYXQuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9jYW52YXMvT0VTVGV4dHVy
ZUZsb2F0LmlkbAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvaHRtbC9jYW52YXMvT0VTVGV4dHVy
ZUZsb2F0LmlkbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyOSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBD
T05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMg
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICog
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK21vZHVsZSBo
dG1sIHsKKyAgICBpbnRlcmZhY2UgW0NvbmRpdGlvbmFsPTNEX0NBTlZBUywgT21pdENvbnN0cnVj
dG9yXSBPRVNUZXh0dXJlRmxvYXQgeworICAgIH07Cit9CkluZGV4OiBXZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdMRXh0ZW5zaW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdMRXh0ZW5zaW9uLmNwcAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR0xFeHRlbnNpb24uY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQ0IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBB
TkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQK
KyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKDNEX0NBTlZBUykKKworI2luY2x1ZGUg
IldlYkdMRXh0ZW5zaW9uLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworV2ViR0xFeHRlbnNp
b246OldlYkdMRXh0ZW5zaW9uKCkKK3sKK30KKworV2ViR0xFeHRlbnNpb246On5XZWJHTEV4dGVu
c2lvbigpCit7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJM
RSgzRF9DQU5WQVMpCkluZGV4OiBXZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRXh0ZW5zaW9uLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEV4dGVuc2lvbi5oCShyZXZp
c2lvbiAwKQorKysgV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEV4dGVuc2lvbi5oCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDQ5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMi
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJHTEV4dGVuc2lvbl9oCisj
ZGVmaW5lIFdlYkdMRXh0ZW5zaW9uX2gKKworI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgV2ViR0xFeHRlbnNpb24gOiBwdWJsaWMgUmVm
Q291bnRlZDxXZWJHTEV4dGVuc2lvbj4geworcHVibGljOgorICAgIC8vIEV4dGVuc2lvbiBuYW1l
cyBhcmUgbmVlZGVkIHRvIHByb3Blcmx5IHdyYXAgaW5zdGFuY2VzIGluIEphdmFTY3JpcHQgb2Jq
ZWN0cy4KKyAgICBlbnVtIEV4dGVuc2lvbk5hbWUgeworICAgICAgICBPRVNUZXh0dXJlRmxvYXRO
YW1lCisgICAgfTsKKworICAgIHZpcnR1YWwgfldlYkdMRXh0ZW5zaW9uKCk7CisgICAgdmlydHVh
bCBFeHRlbnNpb25OYW1lIGdldE5hbWUoKSBjb25zdCA9IDA7CisKK3Byb3RlY3RlZDoKKyAgICBX
ZWJHTEV4dGVuc2lvbigpOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYg
Ly8gV2ViR0xFeHRlbnNpb25faApJbmRleDogV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRl
cmluZ0NvbnRleHQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xS
ZW5kZXJpbmdDb250ZXh0LmNwcAkocmV2aXNpb24gNzM1NjkpCisrKyBXZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQzLDYgKzQz
LDcgQEAKICNpbmNsdWRlICJJbWFnZURhdGEuaCIKICNpbmNsdWRlICJJbnRTaXplLmgiCiAjaW5j
bHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKKyNpbmNsdWRlICJPRVNUZXh0dXJlRmxvYXQuaCIKICNp
bmNsdWRlICJSZW5kZXJCb3guaCIKICNpbmNsdWRlICJSZW5kZXJMYXllci5oIgogI2luY2x1ZGUg
IlVpbnQxNkFycmF5LmgiCkBAIC0xNDYyLDYgKzE0NjMsMjEgQEAgdW5zaWduZWQgbG9uZyBXZWJH
TFJlbmRlcmluZ0NvbnRleHQ6OmdldAogICAgIHJldHVybiBtX2NvbnRleHQtPmdldEVycm9yKCk7
CiB9CiAKK1dlYkdMRXh0ZW5zaW9uKiBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldEV4dGVuc2lv
bihjb25zdCBTdHJpbmcmIG5hbWUpCit7CisgICAgaWYgKG5hbWUgPT0gIk9FU190ZXh0dXJlX2Zs
b2F0IgorICAgICAgICAmJiBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS0+c3VwcG9ydHMoIkdM
X09FU190ZXh0dXJlX2Zsb2F0IikpIHsKKyAgICAgICAgaWYgKCFtX29lc1RleHR1cmVGbG9hdCkg
eworICAgICAgICAgICAgaWYgKCFtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS0+ZW5zdXJlRW5h
YmxlZCgiR0xfT0VTX3RleHR1cmVfZmxvYXQiKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gMDsK
KyAgICAgICAgICAgIG1fb2VzVGV4dHVyZUZsb2F0ID0gT0VTVGV4dHVyZUZsb2F0OjpjcmVhdGUo
KTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gbV9vZXNUZXh0dXJlRmxvYXQuZ2V0KCk7Cisg
ICAgfQorCisgICAgcmV0dXJuIDA7Cit9CisKIFdlYkdMR2V0SW5mbyBXZWJHTFJlbmRlcmluZ0Nv
bnRleHQ6OmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcih1bnNpZ25lZCBsb25nIHRh
cmdldCwgdW5zaWduZWQgbG9uZyBhdHRhY2htZW50LCB1bnNpZ25lZCBsb25nIHBuYW1lLCBFeGNl
cHRpb25Db2RlJiBlYykKIHsKICAgICBVTlVTRURfUEFSQU0oZWMpOwpAQCAtMTg1Nyw2ICsxODcz
LDE0IEBAIFN0cmluZyBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFNoYWRlclMKICAgICByZXR1
cm4gbV9jb250ZXh0LT5nZXRTaGFkZXJTb3VyY2Uob2JqZWN0T3JaZXJvKHNoYWRlcikpOwogfQog
CitWZWN0b3I8U3RyaW5nPiBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFN1cHBvcnRlZEV4dGVu
c2lvbnMoKQoreworICAgIFZlY3RvcjxTdHJpbmc+IHJlc3VsdDsKKyAgICBpZiAobV9jb250ZXh0
LT5nZXRFeHRlbnNpb25zKCktPnN1cHBvcnRzKCJHTF9PRVNfdGV4dHVyZV9mbG9hdCIpKQorICAg
ICAgICByZXN1bHQuYXBwZW5kKCJPRVNfdGV4dHVyZV9mbG9hdCIpOworICAgIHJldHVybiByZXN1
bHQ7Cit9CisKIFdlYkdMR2V0SW5mbyBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFRleFBhcmFt
ZXRlcih1bnNpZ25lZCBsb25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBwbmFtZSwgRXhjZXB0aW9u
Q29kZSYgZWMpCiB7CiAgICAgVU5VU0VEX1BBUkFNKGVjKTsKQEAgLTM1OTgsNiArMzYyMiwxMSBA
QCBib29sIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dmFsaWRhdGVUZXhGCiAgICAgY2FzZSBHcmFw
aGljc0NvbnRleHQzRDo6VU5TSUdORURfU0hPUlRfNF80XzRfNDoKICAgICBjYXNlIEdyYXBoaWNz
Q29udGV4dDNEOjpVTlNJR05FRF9TSE9SVF81XzVfNV8xOgogICAgICAgICBicmVhazsKKyAgICBj
YXNlIEdyYXBoaWNzQ29udGV4dDNEOjpGTE9BVDoKKyAgICAgICAgaWYgKG1fb2VzVGV4dHVyZUZs
b2F0KQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdM
RXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfRU5VTSk7CisgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICBkZWZhdWx0OgogICAgICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9y
KEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX0VOVU0pOwogICAgICAgICByZXR1cm4gZmFsc2U7
CkBAIC0zNjA4LDE0ICszNjM3LDE2IEBAIGJvb2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp2YWxp
ZGF0ZVRleEYKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpBTFBIQToKICAgICBjYXNlIEdy
YXBoaWNzQ29udGV4dDNEOjpMVU1JTkFOQ0U6CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6
TFVNSU5BTkNFX0FMUEhBOgotICAgICAgICBpZiAodHlwZSAhPSBHcmFwaGljc0NvbnRleHQzRDo6
VU5TSUdORURfQllURSkgeworICAgICAgICBpZiAodHlwZSAhPSBHcmFwaGljc0NvbnRleHQzRDo6
VU5TSUdORURfQllURQorICAgICAgICAgICAgJiYgdHlwZSAhPSBHcmFwaGljc0NvbnRleHQzRDo6
RkxPQVQpIHsKICAgICAgICAgICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhp
Y3NDb250ZXh0M0Q6OklOVkFMSURfT1BFUkFUSU9OKTsKICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICAgICAgfQogICAgICAgICBicmVhazsKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNE
OjpSR0I6CiAgICAgICAgIGlmICh0eXBlICE9IEdyYXBoaWNzQ29udGV4dDNEOjpVTlNJR05FRF9C
WVRFCi0gICAgICAgICAgICAmJiB0eXBlICE9IEdyYXBoaWNzQ29udGV4dDNEOjpVTlNJR05FRF9T
SE9SVF81XzZfNSkgeworICAgICAgICAgICAgJiYgdHlwZSAhPSBHcmFwaGljc0NvbnRleHQzRDo6
VU5TSUdORURfU0hPUlRfNV82XzUKKyAgICAgICAgICAgICYmIHR5cGUgIT0gR3JhcGhpY3NDb250
ZXh0M0Q6OkZMT0FUKSB7CiAgICAgICAgICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9y
KEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX09QRVJBVElPTik7CiAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgICAgIH0KQEAgLTM2MjMsNyArMzY1NCw4IEBAIGJvb2wgV2ViR0xSZW5k
ZXJpbmdDb250ZXh0Ojp2YWxpZGF0ZVRleEYKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpS
R0JBOgogICAgICAgICBpZiAodHlwZSAhPSBHcmFwaGljc0NvbnRleHQzRDo6VU5TSUdORURfQllU
RQogICAgICAgICAgICAgJiYgdHlwZSAhPSBHcmFwaGljc0NvbnRleHQzRDo6VU5TSUdORURfU0hP
UlRfNF80XzRfNAotICAgICAgICAgICAgJiYgdHlwZSAhPSBHcmFwaGljc0NvbnRleHQzRDo6VU5T
SUdORURfU0hPUlRfNV81XzVfMSkgeworICAgICAgICAgICAgJiYgdHlwZSAhPSBHcmFwaGljc0Nv
bnRleHQzRDo6VU5TSUdORURfU0hPUlRfNV81XzVfMQorICAgICAgICAgICAgJiYgdHlwZSAhPSBH
cmFwaGljc0NvbnRleHQzRDo6RkxPQVQpIHsKICAgICAgICAgICAgIG1fY29udGV4dC0+c3ludGhl
c2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfT1BFUkFUSU9OKTsKICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQpAQCAtMzcxMiw2ICszNzQ0LDEyIEBAIGJv
b2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp2YWxpZGF0ZVRleEYKICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICAgICAgfQogICAgICAgICBicmVhazsKKyAgICBjYXNlIEdyYXBoaWNzQ29u
dGV4dDNEOjpGTE9BVDogLy8gT0VTX3RleHR1cmVfZmxvYXQKKyAgICAgICAgaWYgKCFwaXhlbHMt
PmlzRmxvYXRBcnJheSgpKSB7CisgICAgICAgICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVy
cm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX09QRVJBVElPTik7CisgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQpAQCAtNDA4MSw2ICs0MTE5LDIyIEBA
IHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpyZXN0b3JlU3RhdGUKICAgICBtX2NvbnRleHQt
PmJpbmRCdWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkFSUkFZX0JVRkZFUiwgb2JqZWN0T3JaZXJv
KG1fYm91bmRBcnJheUJ1ZmZlci5nZXQoKSkpOwogfQogCitpbnQgV2ViR0xSZW5kZXJpbmdDb250
ZXh0OjpnZXROdW1iZXJPZkV4dGVuc2lvbnMoKQoreworICAgIHJldHVybiAobV9vZXNUZXh0dXJl
RmxvYXQgPyAxIDogMCk7Cit9CisKK1dlYkdMRXh0ZW5zaW9uKiBXZWJHTFJlbmRlcmluZ0NvbnRl
eHQ6OmdldEV4dGVuc2lvbk51bWJlcihpbnQgaSkKK3sKKyAgICBpZiAobV9vZXNUZXh0dXJlRmxv
YXQpIHsKKyAgICAgICAgaWYgKCFpKQorICAgICAgICAgICAgcmV0dXJuIG1fb2VzVGV4dHVyZUZs
b2F0LmdldCgpOworICAgICAgICAtLWk7CisgICAgfQorICAgIC8vIFNpbWlsYXIgdGVzdHMgZm9y
IG90aGVyIGV4dGVuc2lvbnMgd291bGQgZ28gaGVyZS4KKyAgICByZXR1cm4gMDsKK30KKwogV2Vi
R0xSZW5kZXJpbmdDb250ZXh0OjpMUlVJbWFnZUJ1ZmZlckNhY2hlOjpMUlVJbWFnZUJ1ZmZlckNh
Y2hlKGludCBjYXBhY2l0eSkKICAgICA6IG1fYnVmZmVycyhuZXcgT3duUHRyPEltYWdlQnVmZmVy
PltjYXBhY2l0eV0pCiAgICAgLCBtX2NhcGFjaXR5KGNhcGFjaXR5KQpJbmRleDogV2ViQ29yZS9o
dG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5oCShyZXZpc2lvbiA3MzU2OSkKKysr
IFdlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTQzLDYgKzQzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgV2ViR0xBY3Rp
dmVJbmZvOwogY2xhc3MgV2ViR0xCdWZmZXI7CiBjbGFzcyBXZWJHTENvbnRleHRBdHRyaWJ1dGVz
OworY2xhc3MgV2ViR0xFeHRlbnNpb247CiBjbGFzcyBXZWJHTEZyYW1lYnVmZmVyOwogY2xhc3Mg
V2ViR0xPYmplY3Q7CiBjbGFzcyBXZWJHTFByb2dyYW07CkBAIC01NSw2ICs1Niw3IEBAIGNsYXNz
IEhUTUxWaWRlb0VsZW1lbnQ7CiBjbGFzcyBJbWFnZUJ1ZmZlcjsKIGNsYXNzIEltYWdlRGF0YTsK
IGNsYXNzIEludFNpemU7CitjbGFzcyBPRVNUZXh0dXJlRmxvYXQ7CiAKIGNsYXNzIFdlYkdMUmVu
ZGVyaW5nQ29udGV4dCA6IHB1YmxpYyBDYW52YXNSZW5kZXJpbmdDb250ZXh0IHsKIHB1YmxpYzoK
QEAgLTE0NSw2ICsxNDcsOCBAQCBwdWJsaWM6CiAKICAgICB1bnNpZ25lZCBsb25nIGdldEVycm9y
KCk7CiAKKyAgICBXZWJHTEV4dGVuc2lvbiogZ2V0RXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgbmFt
ZSk7CisKICAgICBXZWJHTEdldEluZm8gZ2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVy
KHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25nIGF0dGFjaG1lbnQsIHVuc2lnbmVk
IGxvbmcgcG5hbWUsIEV4Y2VwdGlvbkNvZGUmKTsKIAogICAgIFdlYkdMR2V0SW5mbyBnZXRQYXJh
bWV0ZXIodW5zaWduZWQgbG9uZyBwbmFtZSwgRXhjZXB0aW9uQ29kZSYpOwpAQCAtMTY0LDYgKzE2
OCw4IEBAIHB1YmxpYzoKIAogICAgIFN0cmluZyBnZXRTaGFkZXJTb3VyY2UoV2ViR0xTaGFkZXIq
LCBFeGNlcHRpb25Db2RlJik7CiAKKyAgICBWZWN0b3I8U3RyaW5nPiBnZXRTdXBwb3J0ZWRFeHRl
bnNpb25zKCk7CisKICAgICBXZWJHTEdldEluZm8gZ2V0VGV4UGFyYW1ldGVyKHVuc2lnbmVkIGxv
bmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25nIHBuYW1lLCBFeGNlcHRpb25Db2RlJik7CiAKICAgICBX
ZWJHTEdldEluZm8gZ2V0VW5pZm9ybShXZWJHTFByb2dyYW0qLCBjb25zdCBXZWJHTFVuaWZvcm1M
b2NhdGlvbiosIEV4Y2VwdGlvbkNvZGUmKTsKQEAgLTI5Miw2ICsyOTgsMTAgQEAgcHVibGljOgog
CiAgICAgdm9pZCByZW1vdmVPYmplY3QoV2ViR0xPYmplY3QqKTsKIAorICAgIC8vIEhlbHBlcnMg
Zm9yIEpTQyBiaW5kaW5ncy4KKyAgICBpbnQgZ2V0TnVtYmVyT2ZFeHRlbnNpb25zKCk7CisgICAg
V2ViR0xFeHRlbnNpb24qIGdldEV4dGVuc2lvbk51bWJlcihpbnQgaSk7CisKICAgcHJpdmF0ZToK
ICAgICBmcmllbmQgY2xhc3MgV2ViR0xPYmplY3Q7CiAKQEAgLTQ1Niw2ICs0NjYsOSBAQCBwdWJs
aWM6CiAgICAgYm9vbCBtX2lzUmVzb3VyY2VTYWZlOwogICAgIGJvb2wgbV9pc0RlcHRoU3RlbmNp
bFN1cHBvcnRlZDsKIAorICAgIC8vIEVuYWJsZWQgZXh0ZW5zaW9uIG9iamVjdHMuCisgICAgUmVm
UHRyPE9FU1RleHR1cmVGbG9hdD4gbV9vZXNUZXh0dXJlRmxvYXQ7CisKICAgICAvLyBIZWxwZXJz
IGZvciBnZXRQYXJhbWV0ZXIgYW5kIG90aGVycwogICAgIFdlYkdMR2V0SW5mbyBnZXRCb29sZWFu
UGFyYW1ldGVyKHVuc2lnbmVkIGxvbmcgcG5hbWUpOwogICAgIFdlYkdMR2V0SW5mbyBnZXRCb29s
ZWFuQXJyYXlQYXJhbWV0ZXIodW5zaWduZWQgbG9uZyBwbmFtZSk7CkluZGV4OiBXZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5pZGwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuaWRsCShyZXZpc2lvbiA3MzU2OSkK
KysrIFdlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmlkbAkod29ya2lu
ZyBjb3B5KQpAQCAtMjksNiArMjksNyBAQCBtb2R1bGUgaHRtbCB7CiAgICAgICAgIENvbmRpdGlv
bmFsPTNEX0NBTlZBUywKICAgICAgICAgSW50ZXJmYWNlVVVJRD05OGZiNDhhZS03MjE2LTQ4OWMt
ODYyYi04ZTEyMTdmYzQ0NDMsCiAgICAgICAgIEltcGxlbWVudGF0aW9uVVVJRD1hYjRmMDc4MS0x
NTJmLTQ1MGUtOTU0Ni01YjM5ODc0OTFhNTQsCisgICAgICAgIEN1c3RvbU1hcmtGdW5jdGlvbiwK
ICAgICAgICAgRG9udENoZWNrRW51bXMKICAgICBdIFdlYkdMUmVuZGVyaW5nQ29udGV4dCA6IENh
bnZhc1JlbmRlcmluZ0NvbnRleHQgewogCkBAIC0yODcsNyArMjg4LDYgQEAgbW9kdWxlIGh0bWwg
ewogICAgICAgICBjb25zdCB1bnNpZ25lZCBpbnQgVkVORE9SICAgICAgICAgICAgICAgICAgICAg
ICAgID0gMHgxRjAwOwogICAgICAgICBjb25zdCB1bnNpZ25lZCBpbnQgUkVOREVSRVIgICAgICAg
ICAgICAgICAgICAgICAgID0gMHgxRjAxOwogICAgICAgICBjb25zdCB1bnNpZ25lZCBpbnQgVkVS
U0lPTiAgICAgICAgICAgICAgICAgICAgICAgID0gMHgxRjAyOwotICAgICAgICBjb25zdCB1bnNp
Z25lZCBpbnQgRVhURU5TSU9OUyAgICAgICAgICAgICAgICAgICAgID0gMHgxRjAzOwogCiAgICAg
ICAgIC8qIFRleHR1cmVNYWdGaWx0ZXIgKi8KICAgICAgICAgY29uc3QgdW5zaWduZWQgaW50IE5F
QVJFU1QgICAgICAgICAgICAgICAgICAgICAgICA9IDB4MjYwMDsKQEAgLTUzNSw2ICs1MzUsOSBA
QCBtb2R1bGUgaHRtbCB7CiAKICAgICAgICAgW1N0cmljdFR5cGVDaGVja2luZ10gdW5zaWduZWQg
bG9uZyBnZXRFcnJvcigpOwogCisgICAgICAgIC8vIG9iamVjdCBnZXRFeHRlbnNpb24oaW4gRE9N
U3RyaW5nIG5hbWUpOworICAgICAgICBbU3RyaWN0VHlwZUNoZWNraW5nLCBDdXN0b21dIHZvaWQg
Z2V0RXh0ZW5zaW9uKGluIERPTVN0cmluZyBuYW1lKTsKKwogICAgICAgICAvLyBhbnkgZ2V0RnJh
bWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyKGluIHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCBpbiB1
bnNpZ25lZCBsb25nIGF0dGFjaG1lbnQsIGluIHVuc2lnbmVkIGxvbmcgcG5hbWUpIHJhaXNlcyhE
T01FeGNlcHRpb24pOwogICAgICAgICBbU3RyaWN0VHlwZUNoZWNraW5nLCBDdXN0b21dIHZvaWQg
Z2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyKCk7CiAgICAgICAgIC8vIGFueSBnZXRQ
YXJhbWV0ZXIoaW4gdW5zaWduZWQgbG9uZyBwbmFtZSkgcmFpc2VzKERPTUV4Y2VwdGlvbik7CkBA
IC01NTQsNiArNTU3LDkgQEAgbW9kdWxlIGh0bWwgewogCiAgICAgICAgIFtTdHJpY3RUeXBlQ2hl
Y2tpbmcsIENvbnZlcnROdWxsU3RyaW5nVG89TnVsbF0gRE9NU3RyaW5nICAgIGdldFNoYWRlclNv
dXJjZShpbiBXZWJHTFNoYWRlciBzaGFkZXIpIHJhaXNlcyhET01FeGNlcHRpb24pOwogCisgICAg
ICAgIC8vIERPTVN0cmluZ1tdIGdldFN1cHBvcnRlZEV4dGVuc2lvbnMoKQorICAgICAgICBbU3Ry
aWN0VHlwZUNoZWNraW5nLCBDdXN0b21dIHZvaWQgZ2V0U3VwcG9ydGVkRXh0ZW5zaW9ucygpOwor
CiAgICAgICAgIC8vIGFueSBnZXRUZXhQYXJhbWV0ZXIoaW4gdW5zaWduZWQgbG9uZyB0YXJnZXQs
IGluIHVuc2lnbmVkIGxvbmcgcG5hbWUpIHJhaXNlcyhET01FeGNlcHRpb24pOwogICAgICAgICBb
U3RyaWN0VHlwZUNoZWNraW5nLCBDdXN0b21dIHZvaWQgZ2V0VGV4UGFyYW1ldGVyKCk7CiAKSW5k
ZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRXh0ZW5zaW9uczNELmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9FeHRlbnNpb25zM0QuaAkocmV2aXNpb24gNzM1
NjkpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0V4dGVuc2lvbnMzRC5oCSh3b3JraW5n
IGNvcHkpCkBAIC01MCwxMSArNTAsMTcgQEAgcHVibGljOgogICAgIC8vICAgR0xfQVJCX3RleHR1
cmVfbm9uX3Bvd2VyX29mX3R3byAvIEdMX09FU190ZXh0dXJlX25wb3QKICAgICAvLyAgIEdMX0VY
VF9wYWNrZWRfZGVwdGhfc3RlbmNpbCAvIEdMX09FU19wYWNrZWRfZGVwdGhfc3RlbmNpbAogICAg
IC8vICAgR0xfQU5HTEVfZnJhbWVidWZmZXJfYmxpdCAvIEdMX0FOR0xFX2ZyYW1lYnVmZmVyX211
bHRpc2FtcGxlCisgICAgLy8gICBHTF9PRVNfdGV4dHVyZV9mbG9hdAogCiAgICAgLy8gVGFrZXMg
ZnVsbCBuYW1lIG9mIGV4dGVuc2lvbjsgZm9yIGV4YW1wbGUsCiAgICAgLy8gIkdMX0VYVF90ZXh0
dXJlX2Zvcm1hdF9CR1JBODg4OCIuCiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzKGNvbnN0IFN0
cmluZyYpID0gMDsKIAorICAgIC8vIENlcnRhaW4gT3BlbkdMIGFuZCBXZWJHTCBpbXBsZW1lbnRh
dGlvbnMgbWF5IHN1cHBvcnQgZW5hYmxpbmcKKyAgICAvLyBleHRlbnNpb25zIGxhemlseS4gUmV0
dXJucyB0cnVlIGlmIHRoZSBnaXZlbiBleHRlbnNpb24gaGFzIGJlZW4KKyAgICAvLyBzdWNjZXNz
ZnVsbHkgZW5hYmxlZC4KKyAgICB2aXJ0dWFsIGJvb2wgZW5zdXJlRW5hYmxlZChjb25zdCBTdHJp
bmcmKSA9IDA7CisKICAgICBlbnVtIEV4dGVuc2lvbnNFbnVtVHlwZSB7CiAgICAgICAgIC8vIEdM
X0VYVF90ZXh0dXJlX2Zvcm1hdF9CR1JBODg4OCBlbnVtcwogICAgICAgICBCR1JBX0VYVCA9IDB4
ODBFMSwKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0Qu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250
ZXh0M0QuY3BwCShyZXZpc2lvbiA3MzU2OSkKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NDb250ZXh0M0QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04Niw2ICs4Niw5IEBAIGJv
b2wgR3JhcGhpY3NDb250ZXh0M0Q6OmNvbXB1dGVGb3JtYXRBbmQKICAgICAgICAgKmNvbXBvbmVu
dHNQZXJQaXhlbCA9IDE7CiAgICAgICAgICpieXRlc1BlckNvbXBvbmVudCA9IHNpemVvZih1bnNp
Z25lZCBzaG9ydCk7CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6
OkZMT0FUOiAvLyBPRVNfdGV4dHVyZV9mbG9hdAorICAgICAgICAqYnl0ZXNQZXJDb21wb25lbnQg
PSBzaXplb2YoZmxvYXQpOworICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgfQpAQCAtMTg4LDYgKzE5MSwyNyBAQCBib29sIEdyYXBoaWNzQ29u
dGV4dDNEOjpleHRyYWN0VGV4dHVyZURhCiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKICAgICAgICAgfQogICAgICAgICBicmVhazsKKyAgICBjYXNlIEZMT0FUOiAvLyBPRVNfdGV4
dHVyZV9mbG9hdAorICAgICAgICBzd2l0Y2ggKGZvcm1hdCkgeworICAgICAgICBjYXNlIFJHQkE6
CisgICAgICAgICAgICBzb3VyY2VEYXRhRm9ybWF0ID0gU291cmNlRm9ybWF0UkdCQTMyRjsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFJHQjoKKyAgICAgICAgICAgIHNvdXJjZURh
dGFGb3JtYXQgPSBTb3VyY2VGb3JtYXRSR0IzMkY7CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgY2FzZSBBTFBIQToKKyAgICAgICAgICAgIHNvdXJjZURhdGFGb3JtYXQgPSBTb3VyY2VGb3Jt
YXRBMzJGOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgTFVNSU5BTkNFOgorICAg
ICAgICAgICAgc291cmNlRGF0YUZvcm1hdCA9IFNvdXJjZUZvcm1hdFIzMkY7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgY2FzZSBMVU1JTkFOQ0VfQUxQSEE6CisgICAgICAgICAgICBzb3Vy
Y2VEYXRhRm9ybWF0ID0gU291cmNlRm9ybWF0UkEzMkY7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAg
ICB9CisgICAgICAgIGJyZWFrOwogICAgIGNhc2UgVU5TSUdORURfU0hPUlRfNV81XzVfMToKICAg
ICAgICAgc291cmNlRGF0YUZvcm1hdCA9IFNvdXJjZUZvcm1hdFJHQkE1NTUxOwogICAgICAgICBi
cmVhazsKQEAgLTUwMSw2ICs1MjUsMzggQEAgdm9pZCB1bnBhY2tBMTZCaWdUb1JHQkE4KGNvbnN0
IHVpbnQxNl90KgogICAgIGRlc3RpbmF0aW9uWzNdID0gY29udmVydENvbG9yMTZCaWdUbzgoc291
cmNlWzBdKTsKIH0KIAordm9pZCB1bnBhY2tSR0IzMkZUb1JHQkEzMkYoY29uc3QgZmxvYXQqIHNv
dXJjZSwgZmxvYXQqIGRlc3RpbmF0aW9uKQoreworICAgIGRlc3RpbmF0aW9uWzBdID0gc291cmNl
WzBdOworICAgIGRlc3RpbmF0aW9uWzFdID0gc291cmNlWzFdOworICAgIGRlc3RpbmF0aW9uWzJd
ID0gc291cmNlWzJdOworICAgIGRlc3RpbmF0aW9uWzNdID0gMTsKK30KKwordm9pZCB1bnBhY2tS
MzJGVG9SR0JBMzJGKGNvbnN0IGZsb2F0KiBzb3VyY2UsIGZsb2F0KiBkZXN0aW5hdGlvbikKK3sK
KyAgICBkZXN0aW5hdGlvblswXSA9IHNvdXJjZVswXTsKKyAgICBkZXN0aW5hdGlvblsxXSA9IHNv
dXJjZVswXTsKKyAgICBkZXN0aW5hdGlvblsyXSA9IHNvdXJjZVswXTsKKyAgICBkZXN0aW5hdGlv
blszXSA9IDE7Cit9CisKK3ZvaWQgdW5wYWNrUkEzMkZUb1JHQkEzMkYoY29uc3QgZmxvYXQqIHNv
dXJjZSwgZmxvYXQqIGRlc3RpbmF0aW9uKQoreworICAgIGRlc3RpbmF0aW9uWzBdID0gc291cmNl
WzBdOworICAgIGRlc3RpbmF0aW9uWzFdID0gc291cmNlWzBdOworICAgIGRlc3RpbmF0aW9uWzJd
ID0gc291cmNlWzBdOworICAgIGRlc3RpbmF0aW9uWzNdID0gc291cmNlWzFdOworfQorCit2b2lk
IHVucGFja0EzMkZUb1JHQkEzMkYoY29uc3QgZmxvYXQqIHNvdXJjZSwgZmxvYXQqIGRlc3RpbmF0
aW9uKQoreworICAgIGRlc3RpbmF0aW9uWzBdID0gMDsKKyAgICBkZXN0aW5hdGlvblsxXSA9IDA7
CisgICAgZGVzdGluYXRpb25bMl0gPSAwOworICAgIGRlc3RpbmF0aW9uWzNdID0gc291cmNlWzBd
OworfQorCiAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIC8vIFBpeGVsIHBhY2tpbmcgcm91dGluZXMuCiAvLwpA
QCAtNzEzLDE0ICs3NjksNjggQEAgdm9pZCBwYWNrUkdCQThUb1Vuc2lnbmVkU2hvcnQ1NjVVbm11
bHRpcAogICAgICAgICAgICAgICAgICAgICB8ICgoc291cmNlQiAmIDB4RjgpID4+IDMpKTsKIH0K
IAordm9pZCBwYWNrUkdCQTMyRlRvUkdCMzJGKGNvbnN0IGZsb2F0KiBzb3VyY2UsIGZsb2F0KiBk
ZXN0aW5hdGlvbikKK3sKKyAgICBkZXN0aW5hdGlvblswXSA9IHNvdXJjZVswXTsKKyAgICBkZXN0
aW5hdGlvblsxXSA9IHNvdXJjZVsxXTsKKyAgICBkZXN0aW5hdGlvblsyXSA9IHNvdXJjZVsyXTsK
K30KKwordm9pZCBwYWNrUkdCQTMyRlRvUkdCMzJGUHJlbXVsdGlwbHkoY29uc3QgZmxvYXQqIHNv
dXJjZSwgZmxvYXQqIGRlc3RpbmF0aW9uKQoreworICAgIGZsb2F0IHNjYWxlRmFjdG9yID0gc291
cmNlWzNdOworICAgIGRlc3RpbmF0aW9uWzBdID0gc291cmNlWzBdICogc2NhbGVGYWN0b3I7Cisg
ICAgZGVzdGluYXRpb25bMV0gPSBzb3VyY2VbMV0gKiBzY2FsZUZhY3RvcjsKKyAgICBkZXN0aW5h
dGlvblsyXSA9IHNvdXJjZVsyXSAqIHNjYWxlRmFjdG9yOworfQorCit2b2lkIHBhY2tSR0JBMzJG
VG9SR0JBMzJGUHJlbXVsdGlwbHkoY29uc3QgZmxvYXQqIHNvdXJjZSwgZmxvYXQqIGRlc3RpbmF0
aW9uKQoreworICAgIGZsb2F0IHNjYWxlRmFjdG9yID0gc291cmNlWzNdOworICAgIGRlc3RpbmF0
aW9uWzBdID0gc291cmNlWzBdICogc2NhbGVGYWN0b3I7CisgICAgZGVzdGluYXRpb25bMV0gPSBz
b3VyY2VbMV0gKiBzY2FsZUZhY3RvcjsKKyAgICBkZXN0aW5hdGlvblsyXSA9IHNvdXJjZVsyXSAq
IHNjYWxlRmFjdG9yOworICAgIGRlc3RpbmF0aW9uWzNdID0gc291cmNlWzNdOworfQorCit2b2lk
IHBhY2tSR0JBMzJGVG9BMzJGKGNvbnN0IGZsb2F0KiBzb3VyY2UsIGZsb2F0KiBkZXN0aW5hdGlv
bikKK3sKKyAgICBkZXN0aW5hdGlvblswXSA9IHNvdXJjZVszXTsKK30KKwordm9pZCBwYWNrUkdC
QTMyRlRvUjMyRihjb25zdCBmbG9hdCogc291cmNlLCBmbG9hdCogZGVzdGluYXRpb24pCit7Cisg
ICAgZGVzdGluYXRpb25bMF0gPSBzb3VyY2VbMF07Cit9CisKK3ZvaWQgcGFja1JHQkEzMkZUb1Iz
MkZQcmVtdWx0aXBseShjb25zdCBmbG9hdCogc291cmNlLCBmbG9hdCogZGVzdGluYXRpb24pCit7
CisgICAgZmxvYXQgc2NhbGVGYWN0b3IgPSBzb3VyY2VbM107CisgICAgZGVzdGluYXRpb25bMF0g
PSBzb3VyY2VbMF0gKiBzY2FsZUZhY3RvcjsKK30KKworCit2b2lkIHBhY2tSR0JBMzJGVG9SQTMy
Rihjb25zdCBmbG9hdCogc291cmNlLCBmbG9hdCogZGVzdGluYXRpb24pCit7CisgICAgZGVzdGlu
YXRpb25bMF0gPSBzb3VyY2VbMF07CisgICAgZGVzdGluYXRpb25bMV0gPSBzb3VyY2VbM107Cit9
CisKK3ZvaWQgcGFja1JHQkEzMkZUb1JBMzJGUHJlbXVsdGlwbHkoY29uc3QgZmxvYXQqIHNvdXJj
ZSwgZmxvYXQqIGRlc3RpbmF0aW9uKQoreworICAgIGZsb2F0IHNjYWxlRmFjdG9yID0gc291cmNl
WzNdOworICAgIGRlc3RpbmF0aW9uWzBdID0gc291cmNlWzBdICogc2NhbGVGYWN0b3I7CisgICAg
ZGVzdGluYXRpb25bMV0gPSBzY2FsZUZhY3RvcjsKK30KKwogfSAvLyBhbm9ueW1vdXMgbmFtZXNw
YWNlCiAKIC8vIFRoaXMgaXMgdXNlZCB3aGVuZXZlciB1bnBhY2tpbmcgaXMgbmVjZXNzYXJ5OyBp
LmUuLCB0aGUgc291cmNlIGRhdGEKLS8vIGlzIG5vdCBpbiBSR0JBOCBmb3JtYXQsIG9yIHRoZSB1
bnBhY2sgYWxpZ25tZW50IHNwZWNpZmllcyB0aGF0IHJvd3MKLS8vIGFyZSBub3QgdGlnaHRseSBw
YWNrZWQuCi10ZW1wbGF0ZTx0eXBlbmFtZSBTb3VyY2VUeXBlLCB0eXBlbmFtZSBEZXN0VHlwZSwK
LSAgICAgICAgIHZvaWQgdW5wYWNraW5nRnVuYyhjb25zdCBTb3VyY2VUeXBlKiwgdWludDhfdCop
LAotICAgICAgICAgdm9pZCBwYWNraW5nRnVuYyhjb25zdCB1aW50OF90KiwgRGVzdFR5cGUqKT4K
Ky8vIGlzIG5vdCBpbiBSR0JBOC9SR0JBMzJGIGZvcm1hdCwgb3IgdGhlIHVucGFjayBhbGlnbm1l
bnQgc3BlY2lmaWVzCisvLyB0aGF0IHJvd3MgYXJlIG5vdCB0aWdodGx5IHBhY2tlZC4KK3RlbXBs
YXRlPHR5cGVuYW1lIFNvdXJjZVR5cGUsIHR5cGVuYW1lIEludGVybWVkaWF0ZVR5cGUsIHR5cGVu
YW1lIERlc3RUeXBlLAorICAgICAgICAgdm9pZCB1bnBhY2tpbmdGdW5jKGNvbnN0IFNvdXJjZVR5
cGUqLCBJbnRlcm1lZGlhdGVUeXBlKiksCisgICAgICAgICB2b2lkIHBhY2tpbmdGdW5jKGNvbnN0
IEludGVybWVkaWF0ZVR5cGUqLCBEZXN0VHlwZSopPgogc3RhdGljIHZvaWQgZG9VbnBhY2tpbmdB
bmRQYWNraW5nKGNvbnN0IFNvdXJjZVR5cGUqIHNvdXJjZURhdGEsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IHdpZHRoLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBoZWlnaHQsCkBAIC03MzIsNyArODQyLDcgQEAg
c3RhdGljIHZvaWQgZG9VbnBhY2tpbmdBbmRQYWNraW5nKGNvbnN0IAogICAgIGlmICghc291cmNl
RWxlbWVudHNQZXJSb3cpIHsKICAgICAgICAgdW5zaWduZWQgaW50IG51bUVsZW1lbnRzID0gd2lk
dGggKiBoZWlnaHQgKiBzb3VyY2VFbGVtZW50c1BlclBpeGVsOwogICAgICAgICBjb25zdCBTb3Vy
Y2VUeXBlKiBlbmRQb2ludGVyID0gc291cmNlRGF0YSArIG51bUVsZW1lbnRzOwotICAgICAgICB1
aW50OF90IHRlbXBvcmFyeVJHQkFEYXRhWzRdOworICAgICAgICBJbnRlcm1lZGlhdGVUeXBlIHRl
bXBvcmFyeVJHQkFEYXRhWzRdOwogICAgICAgICB3aGlsZSAoc291cmNlRGF0YSA8IGVuZFBvaW50
ZXIpIHsKICAgICAgICAgICAgIHVucGFja2luZ0Z1bmMoc291cmNlRGF0YSwgdGVtcG9yYXJ5UkdC
QURhdGEpOwogICAgICAgICAgICAgcGFja2luZ0Z1bmModGVtcG9yYXJ5UkdCQURhdGEsIGRlc3Rp
bmF0aW9uRGF0YSk7CkBAIC03NDAsNyArODUwLDcgQEAgc3RhdGljIHZvaWQgZG9VbnBhY2tpbmdB
bmRQYWNraW5nKGNvbnN0IAogICAgICAgICAgICAgZGVzdGluYXRpb25EYXRhICs9IGRlc3RpbmF0
aW9uRWxlbWVudHNQZXJQaXhlbDsKICAgICAgICAgfQogICAgIH0gZWxzZSB7Ci0gICAgICAgIHVp
bnQ4X3QgdGVtcG9yYXJ5UkdCQURhdGFbNF07CisgICAgICAgIEludGVybWVkaWF0ZVR5cGUgdGVt
cG9yYXJ5UkdCQURhdGFbNF07CiAgICAgICAgIGZvciAodW5zaWduZWQgaW50IHkgPSAwOyB5IDwg
aGVpZ2h0OyArK3kpIHsKICAgICAgICAgICAgIGNvbnN0IFNvdXJjZVR5cGUqIGN1cnJlbnRTb3Vy
Y2UgPSBzb3VyY2VEYXRhOwogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpbnQgeCA9IDA7IHgg
PCB3aWR0aDsgKyt4KSB7CkBAIC04MDIsMTc2ICs5MTIsMTc2IEBAIHN0YXRpYyB2b2lkIGRvUGFj
a2luZyhjb25zdCB2b2lkKiBzb3VyY2UKICAgICAgICAgICAgICAgICBkZXN0aW5hdGlvbkRhdGEg
Kz0gZGVzdGluYXRpb25FbGVtZW50c1BlclBpeGVsOwogICAgICAgICAgICAgfQogICAgICAgICB9
IGVsc2UgewotICAgICAgICAgICAgZG9VbnBhY2tpbmdBbmRQYWNraW5nPHVpbnQ4X3QsIERlc3RU
eXBlLCB1bnBhY2tSR0JBOFRvUkdCQTgsIHBhY2tpbmdGdW5jPihzdGF0aWNfY2FzdDxjb25zdCB1
aW50OF90Kj4oc291cmNlRGF0YSksIHdpZHRoLCBoZWlnaHQsIHNvdXJjZUVsZW1lbnRzUGVyUGl4
ZWwsIHNvdXJjZUVsZW1lbnRzUGVyUm93LCBkZXN0aW5hdGlvbkRhdGEsIGRlc3RpbmF0aW9uRWxl
bWVudHNQZXJQaXhlbCk7CisgICAgICAgICAgICBkb1VucGFja2luZ0FuZFBhY2tpbmc8dWludDhf
dCwgdWludDhfdCwgRGVzdFR5cGUsIHVucGFja1JHQkE4VG9SR0JBOCwgcGFja2luZ0Z1bmM+KHN0
YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihzb3VyY2VEYXRhKSwgd2lkdGgsIGhlaWdodCwgc291
cmNlRWxlbWVudHNQZXJQaXhlbCwgc291cmNlRWxlbWVudHNQZXJSb3csIGRlc3RpbmF0aW9uRGF0
YSwgZGVzdGluYXRpb25FbGVtZW50c1BlclBpeGVsKTsKICAgICAgICAgfQogICAgICAgICBicmVh
azsKICAgICB9CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6U291cmNlRm9ybWF0UkdCQTE2
TGl0dGxlOiB7CiAgICAgICAgIHVuc2lnbmVkIGludCBzb3VyY2VFbGVtZW50c1BlclBpeGVsLCBz
b3VyY2VFbGVtZW50c1BlclJvdzsKICAgICAgICAgY29tcHV0ZUluY3JlbWVudFBhcmFtZXRlcnM8
dWludDE2X3Q+KHdpZHRoLCA4LCBzb3VyY2VVbnBhY2tBbGlnbm1lbnQsICZzb3VyY2VFbGVtZW50
c1BlclBpeGVsLCAmc291cmNlRWxlbWVudHNQZXJSb3cpOwotICAgICAgICBkb1VucGFja2luZ0Fu
ZFBhY2tpbmc8dWludDE2X3QsIERlc3RUeXBlLCB1bnBhY2tSR0JBMTZMaXR0bGVUb1JHQkE4LCBw
YWNraW5nRnVuYz4oc3RhdGljX2Nhc3Q8Y29uc3QgdWludDE2X3QqPihzb3VyY2VEYXRhKSwgd2lk
dGgsIGhlaWdodCwgc291cmNlRWxlbWVudHNQZXJQaXhlbCwgc291cmNlRWxlbWVudHNQZXJSb3cs
IGRlc3RpbmF0aW9uRGF0YSwgZGVzdGluYXRpb25FbGVtZW50c1BlclBpeGVsKTsKKyAgICAgICAg
ZG9VbnBhY2tpbmdBbmRQYWNraW5nPHVpbnQxNl90LCB1aW50OF90LCBEZXN0VHlwZSwgdW5wYWNr
UkdCQTE2TGl0dGxlVG9SR0JBOCwgcGFja2luZ0Z1bmM+KHN0YXRpY19jYXN0PGNvbnN0IHVpbnQx
Nl90Kj4oc291cmNlRGF0YSksIHdpZHRoLCBoZWlnaHQsIHNvdXJjZUVsZW1lbnRzUGVyUGl4ZWws
IHNvdXJjZUVsZW1lbnRzUGVyUm93LCBkZXN0aW5hdGlvbkRhdGEsIGRlc3RpbmF0aW9uRWxlbWVu
dHNQZXJQaXhlbCk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBjYXNlIEdyYXBoaWNzQ29u
dGV4dDNEOjpTb3VyY2VGb3JtYXRSR0JBMTZCaWc6IHsKICAgICAgICAgdW5zaWduZWQgaW50IHNv
dXJjZUVsZW1lbnRzUGVyUGl4ZWwsIHNvdXJjZUVsZW1lbnRzUGVyUm93OwogICAgICAgICBjb21w
dXRlSW5jcmVtZW50UGFyYW1ldGVyczx1aW50MTZfdD4od2lkdGgsIDgsIHNvdXJjZVVucGFja0Fs
aWdubWVudCwgJnNvdXJjZUVsZW1lbnRzUGVyUGl4ZWwsICZzb3VyY2VFbGVtZW50c1BlclJvdyk7
Ci0gICAgICAgIGRvVW5wYWNraW5nQW5kUGFja2luZzx1aW50MTZfdCwgRGVzdFR5cGUsIHVucGFj
a1JHQkExNkJpZ1RvUkdCQTgsIHBhY2tpbmdGdW5jPihzdGF0aWNfY2FzdDxjb25zdCB1aW50MTZf
dCo+KHNvdXJjZURhdGEpLCB3aWR0aCwgaGVpZ2h0LCBzb3VyY2VFbGVtZW50c1BlclBpeGVsLCBz
b3VyY2VFbGVtZW50c1BlclJvdywgZGVzdGluYXRpb25EYXRhLCBkZXN0aW5hdGlvbkVsZW1lbnRz
UGVyUGl4ZWwpOworICAgICAgICBkb1VucGFja2luZ0FuZFBhY2tpbmc8dWludDE2X3QsIHVpbnQ4
X3QsIERlc3RUeXBlLCB1bnBhY2tSR0JBMTZCaWdUb1JHQkE4LCBwYWNraW5nRnVuYz4oc3RhdGlj
X2Nhc3Q8Y29uc3QgdWludDE2X3QqPihzb3VyY2VEYXRhKSwgd2lkdGgsIGhlaWdodCwgc291cmNl
RWxlbWVudHNQZXJQaXhlbCwgc291cmNlRWxlbWVudHNQZXJSb3csIGRlc3RpbmF0aW9uRGF0YSwg
ZGVzdGluYXRpb25FbGVtZW50c1BlclBpeGVsKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAg
IGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlNvdXJjZUZvcm1hdFJHQjg6IHsKICAgICAgICAgdW5z
aWduZWQgaW50IHNvdXJjZUVsZW1lbnRzUGVyUGl4ZWwsIHNvdXJjZUVsZW1lbnRzUGVyUm93Owog
ICAgICAgICBjb21wdXRlSW5jcmVtZW50UGFyYW1ldGVyczx1aW50OF90Pih3aWR0aCwgMywgc291
cmNlVW5wYWNrQWxpZ25tZW50LCAmc291cmNlRWxlbWVudHNQZXJQaXhlbCwgJnNvdXJjZUVsZW1l
bnRzUGVyUm93KTsKLSAgICAgICAgZG9VbnBhY2tpbmdBbmRQYWNraW5nPHVpbnQ4X3QsIERlc3RU
eXBlLCB1bnBhY2tSR0I4VG9SR0JBOCwgcGFja2luZ0Z1bmM+KHN0YXRpY19jYXN0PGNvbnN0IHVp
bnQ4X3QqPihzb3VyY2VEYXRhKSwgd2lkdGgsIGhlaWdodCwgc291cmNlRWxlbWVudHNQZXJQaXhl
bCwgc291cmNlRWxlbWVudHNQZXJSb3csIGRlc3RpbmF0aW9uRGF0YSwgZGVzdGluYXRpb25FbGVt
ZW50c1BlclBpeGVsKTsKKyAgICAgICAgZG9VbnBhY2tpbmdBbmRQYWNraW5nPHVpbnQ4X3QsIHVp
bnQ4X3QsIERlc3RUeXBlLCB1bnBhY2tSR0I4VG9SR0JBOCwgcGFja2luZ0Z1bmM+KHN0YXRpY19j
YXN0PGNvbnN0IHVpbnQ4X3QqPihzb3VyY2VEYXRhKSwgd2lkdGgsIGhlaWdodCwgc291cmNlRWxl
bWVudHNQZXJQaXhlbCwgc291cmNlRWxlbWVudHNQZXJSb3csIGRlc3RpbmF0aW9uRGF0YSwgZGVz
dGluYXRpb25FbGVtZW50c1BlclBpeGVsKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNh
c2UgR3JhcGhpY3NDb250ZXh0M0Q6OlNvdXJjZUZvcm1hdFJHQjE2TGl0dGxlOiB7CiAgICAgICAg
IHVuc2lnbmVkIGludCBzb3VyY2VFbGVtZW50c1BlclBpeGVsLCBzb3VyY2VFbGVtZW50c1BlclJv
dzsKICAgICAgICAgY29tcHV0ZUluY3JlbWVudFBhcmFtZXRlcnM8dWludDE2X3Q+KHdpZHRoLCA2
LCBzb3VyY2VVbnBhY2tBbGlnbm1lbnQsICZzb3VyY2VFbGVtZW50c1BlclBpeGVsLCAmc291cmNl
RWxlbWVudHNQZXJSb3cpOwotICAgICAgICBkb1VucGFja2luZ0FuZFBhY2tpbmc8dWludDE2X3Qs
IERlc3RUeXBlLCB1bnBhY2tSR0IxNkxpdHRsZVRvUkdCQTgsIHBhY2tpbmdGdW5jPihzdGF0aWNf
Y2FzdDxjb25zdCB1aW50MTZfdCo+KHNvdXJjZURhdGEpLCB3aWR0aCwgaGVpZ2h0LCBzb3VyY2VF
bGVtZW50c1BlclBpeGVsLCBzb3VyY2VFbGVtZW50c1BlclJvdywgZGVzdGluYXRpb25EYXRhLCBk
ZXN0aW5hdGlvbkVsZW1lbnRzUGVyUGl4ZWwpOworICAgICAgICBkb1VucGFja2luZ0FuZFBhY2tp
bmc8dWludDE2X3QsIHVpbnQ4X3QsIERlc3RUeXBlLCB1bnBhY2tSR0IxNkxpdHRsZVRvUkdCQTgs
IHBhY2tpbmdGdW5jPihzdGF0aWNfY2FzdDxjb25zdCB1aW50MTZfdCo+KHNvdXJjZURhdGEpLCB3
aWR0aCwgaGVpZ2h0LCBzb3VyY2VFbGVtZW50c1BlclBpeGVsLCBzb3VyY2VFbGVtZW50c1BlclJv
dywgZGVzdGluYXRpb25EYXRhLCBkZXN0aW5hdGlvbkVsZW1lbnRzUGVyUGl4ZWwpOwogICAgICAg
ICBicmVhazsKICAgICB9CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6U291cmNlRm9ybWF0
UkdCMTZCaWc6IHsKICAgICAgICAgdW5zaWduZWQgaW50IHNvdXJjZUVsZW1lbnRzUGVyUGl4ZWws
IHNvdXJjZUVsZW1lbnRzUGVyUm93OwogICAgICAgICBjb21wdXRlSW5jcmVtZW50UGFyYW1ldGVy
czx1aW50MTZfdD4od2lkdGgsIDYsIHNvdXJjZVVucGFja0FsaWdubWVudCwgJnNvdXJjZUVsZW1l
bnRzUGVyUGl4ZWwsICZzb3VyY2VFbGVtZW50c1BlclJvdyk7Ci0gICAgICAgIGRvVW5wYWNraW5n
QW5kUGFja2luZzx1aW50MTZfdCwgRGVzdFR5cGUsIHVucGFja1JHQjE2QmlnVG9SR0JBOCwgcGFj
a2luZ0Z1bmM+KHN0YXRpY19jYXN0PGNvbnN0IHVpbnQxNl90Kj4oc291cmNlRGF0YSksIHdpZHRo
LCBoZWlnaHQsIHNvdXJjZUVsZW1lbnRzUGVyUGl4ZWwsIHNvdXJjZUVsZW1lbnRzUGVyUm93LCBk
ZXN0aW5hdGlvbkRhdGEsIGRlc3RpbmF0aW9uRWxlbWVudHNQZXJQaXhlbCk7CisgICAgICAgIGRv
VW5wYWNraW5nQW5kUGFja2luZzx1aW50MTZfdCwgdWludDhfdCwgRGVzdFR5cGUsIHVucGFja1JH
QjE2QmlnVG9SR0JBOCwgcGFja2luZ0Z1bmM+KHN0YXRpY19jYXN0PGNvbnN0IHVpbnQxNl90Kj4o
c291cmNlRGF0YSksIHdpZHRoLCBoZWlnaHQsIHNvdXJjZUVsZW1lbnRzUGVyUGl4ZWwsIHNvdXJj
ZUVsZW1lbnRzUGVyUm93LCBkZXN0aW5hdGlvbkRhdGEsIGRlc3RpbmF0aW9uRWxlbWVudHNQZXJQ
aXhlbCk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNE
OjpTb3VyY2VGb3JtYXRCR1I4OiB7CiAgICAgICAgIHVuc2lnbmVkIGludCBzb3VyY2VFbGVtZW50
c1BlclBpeGVsLCBzb3VyY2VFbGVtZW50c1BlclJvdzsKICAgICAgICAgY29tcHV0ZUluY3JlbWVu
dFBhcmFtZXRlcnM8dWludDhfdD4od2lkdGgsIDMsIHNvdXJjZVVucGFja0FsaWdubWVudCwgJnNv
dXJjZUVsZW1lbnRzUGVyUGl4ZWwsICZzb3VyY2VFbGVtZW50c1BlclJvdyk7Ci0gICAgICAgIGRv
VW5wYWNraW5nQW5kUGFja2luZzx1aW50OF90LCBEZXN0VHlwZSwgdW5wYWNrQkdSOFRvUkdCQTgs
IHBhY2tpbmdGdW5jPihzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oc291cmNlRGF0YSksIHdp
ZHRoLCBoZWlnaHQsIHNvdXJjZUVsZW1lbnRzUGVyUGl4ZWwsIHNvdXJjZUVsZW1lbnRzUGVyUm93
LCBkZXN0aW5hdGlvbkRhdGEsIGRlc3RpbmF0aW9uRWxlbWVudHNQZXJQaXhlbCk7CisgICAgICAg
IGRvVW5wYWNraW5nQW5kUGFja2luZzx1aW50OF90LCB1aW50OF90LCBEZXN0VHlwZSwgdW5wYWNr
QkdSOFRvUkdCQTgsIHBhY2tpbmdGdW5jPihzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oc291
cmNlRGF0YSksIHdpZHRoLCBoZWlnaHQsIHNvdXJjZUVsZW1lbnRzUGVyUGl4ZWwsIHNvdXJjZUVs
ZW1lbnRzUGVyUm93LCBkZXN0aW5hdGlvbkRhdGEsIGRlc3RpbmF0aW9uRWxlbWVudHNQZXJQaXhl
bCk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpT
b3VyY2VGb3JtYXRBUkdCODogewogICAgICAgICB1bnNpZ25lZCBpbnQgc291cmNlRWxlbWVudHNQ
ZXJQaXhlbCwgc291cmNlRWxlbWVudHNQZXJSb3c7CiAgICAgICAgIGNvbXB1dGVJbmNyZW1lbnRQ
YXJhbWV0ZXJzPHVpbnQ4X3Q+KHdpZHRoLCA0LCBzb3VyY2VVbnBhY2tBbGlnbm1lbnQsICZzb3Vy
Y2VFbGVtZW50c1BlclBpeGVsLCAmc291cmNlRWxlbWVudHNQZXJSb3cpOwotICAgICAgICBkb1Vu
cGFja2luZ0FuZFBhY2tpbmc8dWludDhfdCwgRGVzdFR5cGUsIHVucGFja0FSR0I4VG9SR0JBOCwg
cGFja2luZ0Z1bmM+KHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihzb3VyY2VEYXRhKSwgd2lk
dGgsIGhlaWdodCwgc291cmNlRWxlbWVudHNQZXJQaXhlbCwgc291cmNlRWxlbWVudHNQZXJSb3cs
IGRlc3RpbmF0aW9uRGF0YSwgZGVzdGluYXRpb25FbGVtZW50c1BlclBpeGVsKTsKKyAgICAgICAg
ZG9VbnBhY2tpbmdBbmRQYWNraW5nPHVpbnQ4X3QsIHVpbnQ4X3QsIERlc3RUeXBlLCB1bnBhY2tB
UkdCOFRvUkdCQTgsIHBhY2tpbmdGdW5jPihzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oc291
cmNlRGF0YSksIHdpZHRoLCBoZWlnaHQsIHNvdXJjZUVsZW1lbnRzUGVyUGl4ZWwsIHNvdXJjZUVs
ZW1lbnRzUGVyUm93LCBkZXN0aW5hdGlvbkRhdGEsIGRlc3RpbmF0aW9uRWxlbWVudHNQZXJQaXhl
bCk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpT
b3VyY2VGb3JtYXRBUkdCMTZMaXR0bGU6IHsKICAgICAgICAgdW5zaWduZWQgaW50IHNvdXJjZUVs
ZW1lbnRzUGVyUGl4ZWwsIHNvdXJjZUVsZW1lbnRzUGVyUm93OwogICAgICAgICBjb21wdXRlSW5j
cmVtZW50UGFyYW1ldGVyczx1aW50MTZfdD4od2lkdGgsIDgsIHNvdXJjZVVucGFja0FsaWdubWVu
dCwgJnNvdXJjZUVsZW1lbnRzUGVyUGl4ZWwsICZzb3VyY2VFbGVtZW50c1BlclJvdyk7Ci0gICAg
ICAgIGRvVW5wYWNraW5nQW5kUGFja2luZzx1aW50MTZfdCwgRGVzdFR5cGUsIHVucGFja0FSR0Ix
NkxpdHRsZVRvUkdCQTgsIHBhY2tpbmdGdW5jPihzdGF0aWNfY2FzdDxjb25zdCB1aW50MTZfdCo+
KHNvdXJjZURhdGEpLCB3aWR0aCwgaGVpZ2h0LCBzb3VyY2VFbGVtZW50c1BlclBpeGVsLCBzb3Vy
Y2VFbGVtZW50c1BlclJvdywgZGVzdGluYXRpb25EYXRhLCBkZXN0aW5hdGlvbkVsZW1lbnRzUGVy
UGl4ZWwpOworICAgICAgICBkb1VucGFja2luZ0FuZFBhY2tpbmc8dWludDE2X3QsIHVpbnQ4X3Qs
IERlc3RUeXBlLCB1bnBhY2tBUkdCMTZMaXR0bGVUb1JHQkE4LCBwYWNraW5nRnVuYz4oc3RhdGlj
X2Nhc3Q8Y29uc3QgdWludDE2X3QqPihzb3VyY2VEYXRhKSwgd2lkdGgsIGhlaWdodCwgc291cmNl
RWxlbWVudHNQZXJQaXhlbCwgc291cmNlRWxlbWVudHNQZXJSb3csIGRlc3RpbmF0aW9uRGF0YSwg
ZGVzdGluYXRpb25FbGVtZW50c1BlclBpeGVsKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAg
IGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlNvdXJjZUZvcm1hdEFSR0IxNkJpZzogewogICAgICAg
ICB1bnNpZ25lZCBpbnQgc291cmNlRWxlbWVudHNQZXJQaXhlbCwgc291cmNlRWxlbWVudHNQZXJS
b3c7CiAgICAgICAgIGNvbXB1dGVJbmNyZW1lbnRQYXJhbWV0ZXJzPHVpbnQxNl90Pih3aWR0aCwg
OCwgc291cmNlVW5wYWNrQWxpZ25tZW50LCAmc291cmNlRWxlbWVudHNQZXJQaXhlbCwgJnNvdXJj
ZUVsZW1lbnRzUGVyUm93KTsKLSAgICAgICAgZG9VbnBhY2tpbmdBbmRQYWNraW5nPHVpbnQxNl90
LCBEZXN0VHlwZSwgdW5wYWNrQVJHQjE2QmlnVG9SR0JBOCwgcGFja2luZ0Z1bmM+KHN0YXRpY19j
YXN0PGNvbnN0IHVpbnQxNl90Kj4oc291cmNlRGF0YSksIHdpZHRoLCBoZWlnaHQsIHNvdXJjZUVs
ZW1lbnRzUGVyUGl4ZWwsIHNvdXJjZUVsZW1lbnRzUGVyUm93LCBkZXN0aW5hdGlvbkRhdGEsIGRl
c3RpbmF0aW9uRWxlbWVudHNQZXJQaXhlbCk7CisgICAgICAgIGRvVW5wYWNraW5nQW5kUGFja2lu
Zzx1aW50MTZfdCwgdWludDhfdCwgRGVzdFR5cGUsIHVucGFja0FSR0IxNkJpZ1RvUkdCQTgsIHBh
Y2tpbmdGdW5jPihzdGF0aWNfY2FzdDxjb25zdCB1aW50MTZfdCo+KHNvdXJjZURhdGEpLCB3aWR0
aCwgaGVpZ2h0LCBzb3VyY2VFbGVtZW50c1BlclBpeGVsLCBzb3VyY2VFbGVtZW50c1BlclJvdywg
ZGVzdGluYXRpb25EYXRhLCBkZXN0aW5hdGlvbkVsZW1lbnRzUGVyUGl4ZWwpOwogICAgICAgICBi
cmVhazsKICAgICB9CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6U291cmNlRm9ybWF0QUJH
Ujg6IHsKICAgICAgICAgdW5zaWduZWQgaW50IHNvdXJjZUVsZW1lbnRzUGVyUGl4ZWwsIHNvdXJj
ZUVsZW1lbnRzUGVyUm93OwogICAgICAgICBjb21wdXRlSW5jcmVtZW50UGFyYW1ldGVyczx1aW50
OF90Pih3aWR0aCwgNCwgc291cmNlVW5wYWNrQWxpZ25tZW50LCAmc291cmNlRWxlbWVudHNQZXJQ
aXhlbCwgJnNvdXJjZUVsZW1lbnRzUGVyUm93KTsKLSAgICAgICAgZG9VbnBhY2tpbmdBbmRQYWNr
aW5nPHVpbnQ4X3QsIERlc3RUeXBlLCB1bnBhY2tBQkdSOFRvUkdCQTgsIHBhY2tpbmdGdW5jPihz
dGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oc291cmNlRGF0YSksIHdpZHRoLCBoZWlnaHQsIHNv
dXJjZUVsZW1lbnRzUGVyUGl4ZWwsIHNvdXJjZUVsZW1lbnRzUGVyUm93LCBkZXN0aW5hdGlvbkRh
dGEsIGRlc3RpbmF0aW9uRWxlbWVudHNQZXJQaXhlbCk7CisgICAgICAgIGRvVW5wYWNraW5nQW5k
UGFja2luZzx1aW50OF90LCB1aW50OF90LCBEZXN0VHlwZSwgdW5wYWNrQUJHUjhUb1JHQkE4LCBw
YWNraW5nRnVuYz4oc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KHNvdXJjZURhdGEpLCB3aWR0
aCwgaGVpZ2h0LCBzb3VyY2VFbGVtZW50c1BlclBpeGVsLCBzb3VyY2VFbGVtZW50c1BlclJvdywg
ZGVzdGluYXRpb25EYXRhLCBkZXN0aW5hdGlvbkVsZW1lbnRzUGVyUGl4ZWwpOwogICAgICAgICBi
cmVhazsKICAgICB9CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6U291cmNlRm9ybWF0QkdS
QTg6IHsKICAgICAgICAgdW5zaWduZWQgaW50IHNvdXJjZUVsZW1lbnRzUGVyUGl4ZWwsIHNvdXJj
ZUVsZW1lbnRzUGVyUm93OwogICAgICAgICBjb21wdXRlSW5jcmVtZW50UGFyYW1ldGVyczx1aW50
OF90Pih3aWR0aCwgNCwgc291cmNlVW5wYWNrQWxpZ25tZW50LCAmc291cmNlRWxlbWVudHNQZXJQ
aXhlbCwgJnNvdXJjZUVsZW1lbnRzUGVyUm93KTsKLSAgICAgICAgZG9VbnBhY2tpbmdBbmRQYWNr
aW5nPHVpbnQ4X3QsIERlc3RUeXBlLCB1bnBhY2tCR1JBOFRvUkdCQTgsIHBhY2tpbmdGdW5jPihz
dGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oc291cmNlRGF0YSksIHdpZHRoLCBoZWlnaHQsIHNv
dXJjZUVsZW1lbnRzUGVyUGl4ZWwsIHNvdXJjZUVsZW1lbnRzUGVyUm93LCBkZXN0aW5hdGlvbkRh
dGEsIGRlc3RpbmF0aW9uRWxlbWVudHNQZXJQaXhlbCk7CisgICAgICAgIGRvVW5wYWNraW5nQW5k
UGFja2luZzx1aW50OF90LCB1aW50OF90LCBEZXN0VHlwZSwgdW5wYWNrQkdSQThUb1JHQkE4LCBw
YWNraW5nRnVuYz4oc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KHNvdXJjZURhdGEpLCB3aWR0
aCwgaGVpZ2h0LCBzb3VyY2VFbGVtZW50c1BlclBpeGVsLCBzb3VyY2VFbGVtZW50c1BlclJvdywg
ZGVzdGluYXRpb25EYXRhLCBkZXN0aW5hdGlvbkVsZW1lbnRzUGVyUGl4ZWwpOwogICAgICAgICBi
cmVhazsKICAgICB9CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6U291cmNlRm9ybWF0QkdS
QTE2TGl0dGxlOiB7CiAgICAgICAgIHVuc2lnbmVkIGludCBzb3VyY2VFbGVtZW50c1BlclBpeGVs
LCBzb3VyY2VFbGVtZW50c1BlclJvdzsKICAgICAgICAgY29tcHV0ZUluY3JlbWVudFBhcmFtZXRl
cnM8dWludDE2X3Q+KHdpZHRoLCA4LCBzb3VyY2VVbnBhY2tBbGlnbm1lbnQsICZzb3VyY2VFbGVt
ZW50c1BlclBpeGVsLCAmc291cmNlRWxlbWVudHNQZXJSb3cpOwotICAgICAgICBkb1VucGFja2lu
Z0FuZFBhY2tpbmc8dWludDE2X3QsIERlc3RUeXBlLCB1bnBhY2tCR1JBMTZMaXR0bGVUb1JHQkE4
LCBwYWNraW5nRnVuYz4oc3RhdGljX2Nhc3Q8Y29uc3QgdWludDE2X3QqPihzb3VyY2VEYXRhKSwg
d2lkdGgsIGhlaWdodCwgc291cmNlRWxlbWVudHNQZXJQaXhlbCwgc291cmNlRWxlbWVudHNQZXJS
b3csIGRlc3RpbmF0aW9uRGF0YSwgZGVzdGluYXRpb25FbGVtZW50c1BlclBpeGVsKTsKKyAgICAg
ICAgZG9VbnBhY2tpbmdBbmRQYWNraW5nPHVpbnQxNl90LCB1aW50OF90LCBEZXN0VHlwZSwgdW5w
YWNrQkdSQTE2TGl0dGxlVG9SR0JBOCwgcGFja2luZ0Z1bmM+KHN0YXRpY19jYXN0PGNvbnN0IHVp
bnQxNl90Kj4oc291cmNlRGF0YSksIHdpZHRoLCBoZWlnaHQsIHNvdXJjZUVsZW1lbnRzUGVyUGl4
ZWwsIHNvdXJjZUVsZW1lbnRzUGVyUm93LCBkZXN0aW5hdGlvbkRhdGEsIGRlc3RpbmF0aW9uRWxl
bWVudHNQZXJQaXhlbCk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBjYXNlIEdyYXBoaWNz
Q29udGV4dDNEOjpTb3VyY2VGb3JtYXRCR1JBMTZCaWc6IHsKICAgICAgICAgdW5zaWduZWQgaW50
IHNvdXJjZUVsZW1lbnRzUGVyUGl4ZWwsIHNvdXJjZUVsZW1lbnRzUGVyUm93OwogICAgICAgICBj
b21wdXRlSW5jcmVtZW50UGFyYW1ldGVyczx1aW50MTZfdD4od2lkdGgsIDgsIHNvdXJjZVVucGFj
a0FsaWdubWVudCwgJnNvdXJjZUVsZW1lbnRzUGVyUGl4ZWwsICZzb3VyY2VFbGVtZW50c1BlclJv
dyk7Ci0gICAgICAgIGRvVW5wYWNraW5nQW5kUGFja2luZzx1aW50MTZfdCwgRGVzdFR5cGUsIHVu
cGFja0JHUkExNkJpZ1RvUkdCQTgsIHBhY2tpbmdGdW5jPihzdGF0aWNfY2FzdDxjb25zdCB1aW50
MTZfdCo+KHNvdXJjZURhdGEpLCB3aWR0aCwgaGVpZ2h0LCBzb3VyY2VFbGVtZW50c1BlclBpeGVs
LCBzb3VyY2VFbGVtZW50c1BlclJvdywgZGVzdGluYXRpb25EYXRhLCBkZXN0aW5hdGlvbkVsZW1l
bnRzUGVyUGl4ZWwpOworICAgICAgICBkb1VucGFja2luZ0FuZFBhY2tpbmc8dWludDE2X3QsIHVp
bnQ4X3QsIERlc3RUeXBlLCB1bnBhY2tCR1JBMTZCaWdUb1JHQkE4LCBwYWNraW5nRnVuYz4oc3Rh
dGljX2Nhc3Q8Y29uc3QgdWludDE2X3QqPihzb3VyY2VEYXRhKSwgd2lkdGgsIGhlaWdodCwgc291
cmNlRWxlbWVudHNQZXJQaXhlbCwgc291cmNlRWxlbWVudHNQZXJSb3csIGRlc3RpbmF0aW9uRGF0
YSwgZGVzdGluYXRpb25FbGVtZW50c1BlclBpeGVsKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQog
ICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlNvdXJjZUZvcm1hdFJHQkE1NTUxOiB7CiAgICAg
ICAgIHVuc2lnbmVkIGludCBzb3VyY2VFbGVtZW50c1BlclBpeGVsLCBzb3VyY2VFbGVtZW50c1Bl
clJvdzsKICAgICAgICAgY29tcHV0ZUluY3JlbWVudFBhcmFtZXRlcnM8dWludDE2X3Q+KHdpZHRo
LCAyLCBzb3VyY2VVbnBhY2tBbGlnbm1lbnQsICZzb3VyY2VFbGVtZW50c1BlclBpeGVsLCAmc291
cmNlRWxlbWVudHNQZXJSb3cpOwotICAgICAgICBkb1VucGFja2luZ0FuZFBhY2tpbmc8dWludDE2
X3QsIERlc3RUeXBlLCB1bnBhY2tSR0JBNTU1MVRvUkdCQTgsIHBhY2tpbmdGdW5jPihzdGF0aWNf
Y2FzdDxjb25zdCB1aW50MTZfdCo+KHNvdXJjZURhdGEpLCB3aWR0aCwgaGVpZ2h0LCBzb3VyY2VF
bGVtZW50c1BlclBpeGVsLCBzb3VyY2VFbGVtZW50c1BlclJvdywgZGVzdGluYXRpb25EYXRhLCBk
ZXN0aW5hdGlvbkVsZW1lbnRzUGVyUGl4ZWwpOworICAgICAgICBkb1VucGFja2luZ0FuZFBhY2tp
bmc8dWludDE2X3QsIHVpbnQ4X3QsIERlc3RUeXBlLCB1bnBhY2tSR0JBNTU1MVRvUkdCQTgsIHBh
Y2tpbmdGdW5jPihzdGF0aWNfY2FzdDxjb25zdCB1aW50MTZfdCo+KHNvdXJjZURhdGEpLCB3aWR0
aCwgaGVpZ2h0LCBzb3VyY2VFbGVtZW50c1BlclBpeGVsLCBzb3VyY2VFbGVtZW50c1BlclJvdywg
ZGVzdGluYXRpb25EYXRhLCBkZXN0aW5hdGlvbkVsZW1lbnRzUGVyUGl4ZWwpOwogICAgICAgICBi
cmVhazsKICAgICB9CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6U291cmNlRm9ybWF0UkdC
QTQ0NDQ6IHsKICAgICAgICAgdW5zaWduZWQgaW50IHNvdXJjZUVsZW1lbnRzUGVyUGl4ZWwsIHNv
dXJjZUVsZW1lbnRzUGVyUm93OwogICAgICAgICBjb21wdXRlSW5jcmVtZW50UGFyYW1ldGVyczx1
aW50MTZfdD4od2lkdGgsIDIsIHNvdXJjZVVucGFja0FsaWdubWVudCwgJnNvdXJjZUVsZW1lbnRz
UGVyUGl4ZWwsICZzb3VyY2VFbGVtZW50c1BlclJvdyk7Ci0gICAgICAgIGRvVW5wYWNraW5nQW5k
UGFja2luZzx1aW50MTZfdCwgRGVzdFR5cGUsIHVucGFja1JHQkE0NDQ0VG9SR0JBOCwgcGFja2lu
Z0Z1bmM+KHN0YXRpY19jYXN0PGNvbnN0IHVpbnQxNl90Kj4oc291cmNlRGF0YSksIHdpZHRoLCBo
ZWlnaHQsIHNvdXJjZUVsZW1lbnRzUGVyUGl4ZWwsIHNvdXJjZUVsZW1lbnRzUGVyUm93LCBkZXN0
aW5hdGlvbkRhdGEsIGRlc3RpbmF0aW9uRWxlbWVudHNQZXJQaXhlbCk7CisgICAgICAgIGRvVW5w
YWNraW5nQW5kUGFja2luZzx1aW50MTZfdCwgdWludDhfdCwgRGVzdFR5cGUsIHVucGFja1JHQkE0
NDQ0VG9SR0JBOCwgcGFja2luZ0Z1bmM+KHN0YXRpY19jYXN0PGNvbnN0IHVpbnQxNl90Kj4oc291
cmNlRGF0YSksIHdpZHRoLCBoZWlnaHQsIHNvdXJjZUVsZW1lbnRzUGVyUGl4ZWwsIHNvdXJjZUVs
ZW1lbnRzUGVyUm93LCBkZXN0aW5hdGlvbkRhdGEsIGRlc3RpbmF0aW9uRWxlbWVudHNQZXJQaXhl
bCk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpT
b3VyY2VGb3JtYXRSR0I1NjU6IHsKICAgICAgICAgdW5zaWduZWQgaW50IHNvdXJjZUVsZW1lbnRz
UGVyUGl4ZWwsIHNvdXJjZUVsZW1lbnRzUGVyUm93OwogICAgICAgICBjb21wdXRlSW5jcmVtZW50
UGFyYW1ldGVyczx1aW50MTZfdD4od2lkdGgsIDIsIHNvdXJjZVVucGFja0FsaWdubWVudCwgJnNv
dXJjZUVsZW1lbnRzUGVyUGl4ZWwsICZzb3VyY2VFbGVtZW50c1BlclJvdyk7Ci0gICAgICAgIGRv
VW5wYWNraW5nQW5kUGFja2luZzx1aW50MTZfdCwgRGVzdFR5cGUsIHVucGFja1JHQjU2NVRvUkdC
QTgsIHBhY2tpbmdGdW5jPihzdGF0aWNfY2FzdDxjb25zdCB1aW50MTZfdCo+KHNvdXJjZURhdGEp
LCB3aWR0aCwgaGVpZ2h0LCBzb3VyY2VFbGVtZW50c1BlclBpeGVsLCBzb3VyY2VFbGVtZW50c1Bl
clJvdywgZGVzdGluYXRpb25EYXRhLCBkZXN0aW5hdGlvbkVsZW1lbnRzUGVyUGl4ZWwpOworICAg
ICAgICBkb1VucGFja2luZ0FuZFBhY2tpbmc8dWludDE2X3QsIHVpbnQ4X3QsIERlc3RUeXBlLCB1
bnBhY2tSR0I1NjVUb1JHQkE4LCBwYWNraW5nRnVuYz4oc3RhdGljX2Nhc3Q8Y29uc3QgdWludDE2
X3QqPihzb3VyY2VEYXRhKSwgd2lkdGgsIGhlaWdodCwgc291cmNlRWxlbWVudHNQZXJQaXhlbCwg
c291cmNlRWxlbWVudHNQZXJSb3csIGRlc3RpbmF0aW9uRGF0YSwgZGVzdGluYXRpb25FbGVtZW50
c1BlclBpeGVsKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2UgR3JhcGhpY3NDb250
ZXh0M0Q6OlNvdXJjZUZvcm1hdFI4OiB7CiAgICAgICAgIHVuc2lnbmVkIGludCBzb3VyY2VFbGVt
ZW50c1BlclBpeGVsLCBzb3VyY2VFbGVtZW50c1BlclJvdzsKICAgICAgICAgY29tcHV0ZUluY3Jl
bWVudFBhcmFtZXRlcnM8dWludDhfdD4od2lkdGgsIDEsIHNvdXJjZVVucGFja0FsaWdubWVudCwg
JnNvdXJjZUVsZW1lbnRzUGVyUGl4ZWwsICZzb3VyY2VFbGVtZW50c1BlclJvdyk7Ci0gICAgICAg
IGRvVW5wYWNraW5nQW5kUGFja2luZzx1aW50OF90LCBEZXN0VHlwZSwgdW5wYWNrUjhUb1JHQkE4
LCBwYWNraW5nRnVuYz4oc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KHNvdXJjZURhdGEpLCB3
aWR0aCwgaGVpZ2h0LCBzb3VyY2VFbGVtZW50c1BlclBpeGVsLCBzb3VyY2VFbGVtZW50c1BlclJv
dywgZGVzdGluYXRpb25EYXRhLCBkZXN0aW5hdGlvbkVsZW1lbnRzUGVyUGl4ZWwpOworICAgICAg
ICBkb1VucGFja2luZ0FuZFBhY2tpbmc8dWludDhfdCwgdWludDhfdCwgRGVzdFR5cGUsIHVucGFj
a1I4VG9SR0JBOCwgcGFja2luZ0Z1bmM+KHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihzb3Vy
Y2VEYXRhKSwgd2lkdGgsIGhlaWdodCwgc291cmNlRWxlbWVudHNQZXJQaXhlbCwgc291cmNlRWxl
bWVudHNQZXJSb3csIGRlc3RpbmF0aW9uRGF0YSwgZGVzdGluYXRpb25FbGVtZW50c1BlclBpeGVs
KTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlNv
dXJjZUZvcm1hdFIxNkxpdHRsZTogewogICAgICAgICB1bnNpZ25lZCBpbnQgc291cmNlRWxlbWVu
dHNQZXJQaXhlbCwgc291cmNlRWxlbWVudHNQZXJSb3c7CiAgICAgICAgIGNvbXB1dGVJbmNyZW1l
bnRQYXJhbWV0ZXJzPHVpbnQxNl90Pih3aWR0aCwgMiwgc291cmNlVW5wYWNrQWxpZ25tZW50LCAm
c291cmNlRWxlbWVudHNQZXJQaXhlbCwgJnNvdXJjZUVsZW1lbnRzUGVyUm93KTsKLSAgICAgICAg
ZG9VbnBhY2tpbmdBbmRQYWNraW5nPHVpbnQxNl90LCBEZXN0VHlwZSwgdW5wYWNrUjE2TGl0dGxl
VG9SR0JBOCwgcGFja2luZ0Z1bmM+KHN0YXRpY19jYXN0PGNvbnN0IHVpbnQxNl90Kj4oc291cmNl
RGF0YSksIHdpZHRoLCBoZWlnaHQsIHNvdXJjZUVsZW1lbnRzUGVyUGl4ZWwsIHNvdXJjZUVsZW1l
bnRzUGVyUm93LCBkZXN0aW5hdGlvbkRhdGEsIGRlc3RpbmF0aW9uRWxlbWVudHNQZXJQaXhlbCk7
CisgICAgICAgIGRvVW5wYWNraW5nQW5kUGFja2luZzx1aW50MTZfdCwgdWludDhfdCwgRGVzdFR5
cGUsIHVucGFja1IxNkxpdHRsZVRvUkdCQTgsIHBhY2tpbmdGdW5jPihzdGF0aWNfY2FzdDxjb25z
dCB1aW50MTZfdCo+KHNvdXJjZURhdGEpLCB3aWR0aCwgaGVpZ2h0LCBzb3VyY2VFbGVtZW50c1Bl
clBpeGVsLCBzb3VyY2VFbGVtZW50c1BlclJvdywgZGVzdGluYXRpb25EYXRhLCBkZXN0aW5hdGlv
bkVsZW1lbnRzUGVyUGl4ZWwpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBHcmFw
aGljc0NvbnRleHQzRDo6U291cmNlRm9ybWF0UjE2QmlnOiB7CiAgICAgICAgIHVuc2lnbmVkIGlu
dCBzb3VyY2VFbGVtZW50c1BlclBpeGVsLCBzb3VyY2VFbGVtZW50c1BlclJvdzsKICAgICAgICAg
Y29tcHV0ZUluY3JlbWVudFBhcmFtZXRlcnM8dWludDE2X3Q+KHdpZHRoLCAyLCBzb3VyY2VVbnBh
Y2tBbGlnbm1lbnQsICZzb3VyY2VFbGVtZW50c1BlclBpeGVsLCAmc291cmNlRWxlbWVudHNQZXJS
b3cpOwotICAgICAgICBkb1VucGFja2luZ0FuZFBhY2tpbmc8dWludDE2X3QsIERlc3RUeXBlLCB1
bnBhY2tSMTZCaWdUb1JHQkE4LCBwYWNraW5nRnVuYz4oc3RhdGljX2Nhc3Q8Y29uc3QgdWludDE2
X3QqPihzb3VyY2VEYXRhKSwgd2lkdGgsIGhlaWdodCwgc291cmNlRWxlbWVudHNQZXJQaXhlbCwg
c291cmNlRWxlbWVudHNQZXJSb3csIGRlc3RpbmF0aW9uRGF0YSwgZGVzdGluYXRpb25FbGVtZW50
c1BlclBpeGVsKTsKKyAgICAgICAgZG9VbnBhY2tpbmdBbmRQYWNraW5nPHVpbnQxNl90LCB1aW50
OF90LCBEZXN0VHlwZSwgdW5wYWNrUjE2QmlnVG9SR0JBOCwgcGFja2luZ0Z1bmM+KHN0YXRpY19j
YXN0PGNvbnN0IHVpbnQxNl90Kj4oc291cmNlRGF0YSksIHdpZHRoLCBoZWlnaHQsIHNvdXJjZUVs
ZW1lbnRzUGVyUGl4ZWwsIHNvdXJjZUVsZW1lbnRzUGVyUm93LCBkZXN0aW5hdGlvbkRhdGEsIGRl
c3RpbmF0aW9uRWxlbWVudHNQZXJQaXhlbCk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBj
YXNlIEdyYXBoaWNzQ29udGV4dDNEOjpTb3VyY2VGb3JtYXRSQTg6IHsKICAgICAgICAgdW5zaWdu
ZWQgaW50IHNvdXJjZUVsZW1lbnRzUGVyUGl4ZWwsIHNvdXJjZUVsZW1lbnRzUGVyUm93OwogICAg
ICAgICBjb21wdXRlSW5jcmVtZW50UGFyYW1ldGVyczx1aW50OF90Pih3aWR0aCwgMiwgc291cmNl
VW5wYWNrQWxpZ25tZW50LCAmc291cmNlRWxlbWVudHNQZXJQaXhlbCwgJnNvdXJjZUVsZW1lbnRz
UGVyUm93KTsKLSAgICAgICAgZG9VbnBhY2tpbmdBbmRQYWNraW5nPHVpbnQ4X3QsIERlc3RUeXBl
LCB1bnBhY2tSQThUb1JHQkE4LCBwYWNraW5nRnVuYz4oc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhf
dCo+KHNvdXJjZURhdGEpLCB3aWR0aCwgaGVpZ2h0LCBzb3VyY2VFbGVtZW50c1BlclBpeGVsLCBz
b3VyY2VFbGVtZW50c1BlclJvdywgZGVzdGluYXRpb25EYXRhLCBkZXN0aW5hdGlvbkVsZW1lbnRz
UGVyUGl4ZWwpOworICAgICAgICBkb1VucGFja2luZ0FuZFBhY2tpbmc8dWludDhfdCwgdWludDhf
dCwgRGVzdFR5cGUsIHVucGFja1JBOFRvUkdCQTgsIHBhY2tpbmdGdW5jPihzdGF0aWNfY2FzdDxj
b25zdCB1aW50OF90Kj4oc291cmNlRGF0YSksIHdpZHRoLCBoZWlnaHQsIHNvdXJjZUVsZW1lbnRz
UGVyUGl4ZWwsIHNvdXJjZUVsZW1lbnRzUGVyUm93LCBkZXN0aW5hdGlvbkRhdGEsIGRlc3RpbmF0
aW9uRWxlbWVudHNQZXJQaXhlbCk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBjYXNlIEdy
YXBoaWNzQ29udGV4dDNEOjpTb3VyY2VGb3JtYXRSQTE2TGl0dGxlOiB7CiAgICAgICAgIHVuc2ln
bmVkIGludCBzb3VyY2VFbGVtZW50c1BlclBpeGVsLCBzb3VyY2VFbGVtZW50c1BlclJvdzsKICAg
ICAgICAgY29tcHV0ZUluY3JlbWVudFBhcmFtZXRlcnM8dWludDE2X3Q+KHdpZHRoLCA0LCBzb3Vy
Y2VVbnBhY2tBbGlnbm1lbnQsICZzb3VyY2VFbGVtZW50c1BlclBpeGVsLCAmc291cmNlRWxlbWVu
dHNQZXJSb3cpOwotICAgICAgICBkb1VucGFja2luZ0FuZFBhY2tpbmc8dWludDE2X3QsIERlc3RU
eXBlLCB1bnBhY2tSQTE2TGl0dGxlVG9SR0JBOCwgcGFja2luZ0Z1bmM+KHN0YXRpY19jYXN0PGNv
bnN0IHVpbnQxNl90Kj4oc291cmNlRGF0YSksIHdpZHRoLCBoZWlnaHQsIHNvdXJjZUVsZW1lbnRz
UGVyUGl4ZWwsIHNvdXJjZUVsZW1lbnRzUGVyUm93LCBkZXN0aW5hdGlvbkRhdGEsIGRlc3RpbmF0
aW9uRWxlbWVudHNQZXJQaXhlbCk7CisgICAgICAgIGRvVW5wYWNraW5nQW5kUGFja2luZzx1aW50
MTZfdCwgdWludDhfdCwgRGVzdFR5cGUsIHVucGFja1JBMTZMaXR0bGVUb1JHQkE4LCBwYWNraW5n
RnVuYz4oc3RhdGljX2Nhc3Q8Y29uc3QgdWludDE2X3QqPihzb3VyY2VEYXRhKSwgd2lkdGgsIGhl
aWdodCwgc291cmNlRWxlbWVudHNQZXJQaXhlbCwgc291cmNlRWxlbWVudHNQZXJSb3csIGRlc3Rp
bmF0aW9uRGF0YSwgZGVzdGluYXRpb25FbGVtZW50c1BlclBpeGVsKTsKICAgICAgICAgYnJlYWs7
CiAgICAgfQogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlNvdXJjZUZvcm1hdFJBMTZCaWc6
IHsKICAgICAgICAgdW5zaWduZWQgaW50IHNvdXJjZUVsZW1lbnRzUGVyUGl4ZWwsIHNvdXJjZUVs
ZW1lbnRzUGVyUm93OwogICAgICAgICBjb21wdXRlSW5jcmVtZW50UGFyYW1ldGVyczx1aW50MTZf
dD4od2lkdGgsIDQsIHNvdXJjZVVucGFja0FsaWdubWVudCwgJnNvdXJjZUVsZW1lbnRzUGVyUGl4
ZWwsICZzb3VyY2VFbGVtZW50c1BlclJvdyk7Ci0gICAgICAgIGRvVW5wYWNraW5nQW5kUGFja2lu
Zzx1aW50MTZfdCwgRGVzdFR5cGUsIHVucGFja1JBMTZCaWdUb1JHQkE4LCBwYWNraW5nRnVuYz4o
c3RhdGljX2Nhc3Q8Y29uc3QgdWludDE2X3QqPihzb3VyY2VEYXRhKSwgd2lkdGgsIGhlaWdodCwg
c291cmNlRWxlbWVudHNQZXJQaXhlbCwgc291cmNlRWxlbWVudHNQZXJSb3csIGRlc3RpbmF0aW9u
RGF0YSwgZGVzdGluYXRpb25FbGVtZW50c1BlclBpeGVsKTsKKyAgICAgICAgZG9VbnBhY2tpbmdB
bmRQYWNraW5nPHVpbnQxNl90LCB1aW50OF90LCBEZXN0VHlwZSwgdW5wYWNrUkExNkJpZ1RvUkdC
QTgsIHBhY2tpbmdGdW5jPihzdGF0aWNfY2FzdDxjb25zdCB1aW50MTZfdCo+KHNvdXJjZURhdGEp
LCB3aWR0aCwgaGVpZ2h0LCBzb3VyY2VFbGVtZW50c1BlclBpeGVsLCBzb3VyY2VFbGVtZW50c1Bl
clJvdywgZGVzdGluYXRpb25EYXRhLCBkZXN0aW5hdGlvbkVsZW1lbnRzUGVyUGl4ZWwpOwogICAg
ICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6U291cmNlRm9y
bWF0QVI4OiB7CiAgICAgICAgIHVuc2lnbmVkIGludCBzb3VyY2VFbGVtZW50c1BlclBpeGVsLCBz
b3VyY2VFbGVtZW50c1BlclJvdzsKICAgICAgICAgY29tcHV0ZUluY3JlbWVudFBhcmFtZXRlcnM8
dWludDhfdD4od2lkdGgsIDIsIHNvdXJjZVVucGFja0FsaWdubWVudCwgJnNvdXJjZUVsZW1lbnRz
UGVyUGl4ZWwsICZzb3VyY2VFbGVtZW50c1BlclJvdyk7Ci0gICAgICAgIGRvVW5wYWNraW5nQW5k
UGFja2luZzx1aW50OF90LCBEZXN0VHlwZSwgdW5wYWNrQVI4VG9SR0JBOCwgcGFja2luZ0Z1bmM+
KHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihzb3VyY2VEYXRhKSwgd2lkdGgsIGhlaWdodCwg
c291cmNlRWxlbWVudHNQZXJQaXhlbCwgc291cmNlRWxlbWVudHNQZXJSb3csIGRlc3RpbmF0aW9u
RGF0YSwgZGVzdGluYXRpb25FbGVtZW50c1BlclBpeGVsKTsKKyAgICAgICAgZG9VbnBhY2tpbmdB
bmRQYWNraW5nPHVpbnQ4X3QsIHVpbnQ4X3QsIERlc3RUeXBlLCB1bnBhY2tBUjhUb1JHQkE4LCBw
YWNraW5nRnVuYz4oc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KHNvdXJjZURhdGEpLCB3aWR0
aCwgaGVpZ2h0LCBzb3VyY2VFbGVtZW50c1BlclBpeGVsLCBzb3VyY2VFbGVtZW50c1BlclJvdywg
ZGVzdGluYXRpb25EYXRhLCBkZXN0aW5hdGlvbkVsZW1lbnRzUGVyUGl4ZWwpOwogICAgICAgICBi
cmVhazsKICAgICB9CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6U291cmNlRm9ybWF0QVIx
NkxpdHRsZTogewogICAgICAgICB1bnNpZ25lZCBpbnQgc291cmNlRWxlbWVudHNQZXJQaXhlbCwg
c291cmNlRWxlbWVudHNQZXJSb3c7CiAgICAgICAgIGNvbXB1dGVJbmNyZW1lbnRQYXJhbWV0ZXJz
PHVpbnQxNl90Pih3aWR0aCwgNCwgc291cmNlVW5wYWNrQWxpZ25tZW50LCAmc291cmNlRWxlbWVu
dHNQZXJQaXhlbCwgJnNvdXJjZUVsZW1lbnRzUGVyUm93KTsKLSAgICAgICAgZG9VbnBhY2tpbmdB
bmRQYWNraW5nPHVpbnQxNl90LCBEZXN0VHlwZSwgdW5wYWNrQVIxNkxpdHRsZVRvUkdCQTgsIHBh
Y2tpbmdGdW5jPihzdGF0aWNfY2FzdDxjb25zdCB1aW50MTZfdCo+KHNvdXJjZURhdGEpLCB3aWR0
aCwgaGVpZ2h0LCBzb3VyY2VFbGVtZW50c1BlclBpeGVsLCBzb3VyY2VFbGVtZW50c1BlclJvdywg
ZGVzdGluYXRpb25EYXRhLCBkZXN0aW5hdGlvbkVsZW1lbnRzUGVyUGl4ZWwpOworICAgICAgICBk
b1VucGFja2luZ0FuZFBhY2tpbmc8dWludDE2X3QsIHVpbnQ4X3QsIERlc3RUeXBlLCB1bnBhY2tB
UjE2TGl0dGxlVG9SR0JBOCwgcGFja2luZ0Z1bmM+KHN0YXRpY19jYXN0PGNvbnN0IHVpbnQxNl90
Kj4oc291cmNlRGF0YSksIHdpZHRoLCBoZWlnaHQsIHNvdXJjZUVsZW1lbnRzUGVyUGl4ZWwsIHNv
dXJjZUVsZW1lbnRzUGVyUm93LCBkZXN0aW5hdGlvbkRhdGEsIGRlc3RpbmF0aW9uRWxlbWVudHNQ
ZXJQaXhlbCk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBjYXNlIEdyYXBoaWNzQ29udGV4
dDNEOjpTb3VyY2VGb3JtYXRBUjE2QmlnOiB7CiAgICAgICAgIHVuc2lnbmVkIGludCBzb3VyY2VF
bGVtZW50c1BlclBpeGVsLCBzb3VyY2VFbGVtZW50c1BlclJvdzsKICAgICAgICAgY29tcHV0ZUlu
Y3JlbWVudFBhcmFtZXRlcnM8dWludDE2X3Q+KHdpZHRoLCA0LCBzb3VyY2VVbnBhY2tBbGlnbm1l
bnQsICZzb3VyY2VFbGVtZW50c1BlclBpeGVsLCAmc291cmNlRWxlbWVudHNQZXJSb3cpOwotICAg
ICAgICBkb1VucGFja2luZ0FuZFBhY2tpbmc8dWludDE2X3QsIERlc3RUeXBlLCB1bnBhY2tBUjE2
QmlnVG9SR0JBOCwgcGFja2luZ0Z1bmM+KHN0YXRpY19jYXN0PGNvbnN0IHVpbnQxNl90Kj4oc291
cmNlRGF0YSksIHdpZHRoLCBoZWlnaHQsIHNvdXJjZUVsZW1lbnRzUGVyUGl4ZWwsIHNvdXJjZUVs
ZW1lbnRzUGVyUm93LCBkZXN0aW5hdGlvbkRhdGEsIGRlc3RpbmF0aW9uRWxlbWVudHNQZXJQaXhl
bCk7CisgICAgICAgIGRvVW5wYWNraW5nQW5kUGFja2luZzx1aW50MTZfdCwgdWludDhfdCwgRGVz
dFR5cGUsIHVucGFja0FSMTZCaWdUb1JHQkE4LCBwYWNraW5nRnVuYz4oc3RhdGljX2Nhc3Q8Y29u
c3QgdWludDE2X3QqPihzb3VyY2VEYXRhKSwgd2lkdGgsIGhlaWdodCwgc291cmNlRWxlbWVudHNQ
ZXJQaXhlbCwgc291cmNlRWxlbWVudHNQZXJSb3csIGRlc3RpbmF0aW9uRGF0YSwgZGVzdGluYXRp
b25FbGVtZW50c1BlclBpeGVsKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2UgR3Jh
cGhpY3NDb250ZXh0M0Q6OlNvdXJjZUZvcm1hdEE4OiB7CiAgICAgICAgIHVuc2lnbmVkIGludCBz
b3VyY2VFbGVtZW50c1BlclBpeGVsLCBzb3VyY2VFbGVtZW50c1BlclJvdzsKICAgICAgICAgY29t
cHV0ZUluY3JlbWVudFBhcmFtZXRlcnM8dWludDhfdD4od2lkdGgsIDEsIHNvdXJjZVVucGFja0Fs
aWdubWVudCwgJnNvdXJjZUVsZW1lbnRzUGVyUGl4ZWwsICZzb3VyY2VFbGVtZW50c1BlclJvdyk7
Ci0gICAgICAgIGRvVW5wYWNraW5nQW5kUGFja2luZzx1aW50OF90LCBEZXN0VHlwZSwgdW5wYWNr
QThUb1JHQkE4LCBwYWNraW5nRnVuYz4oc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KHNvdXJj
ZURhdGEpLCB3aWR0aCwgaGVpZ2h0LCBzb3VyY2VFbGVtZW50c1BlclBpeGVsLCBzb3VyY2VFbGVt
ZW50c1BlclJvdywgZGVzdGluYXRpb25EYXRhLCBkZXN0aW5hdGlvbkVsZW1lbnRzUGVyUGl4ZWwp
OworICAgICAgICBkb1VucGFja2luZ0FuZFBhY2tpbmc8dWludDhfdCwgdWludDhfdCwgRGVzdFR5
cGUsIHVucGFja0E4VG9SR0JBOCwgcGFja2luZ0Z1bmM+KHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4
X3QqPihzb3VyY2VEYXRhKSwgd2lkdGgsIGhlaWdodCwgc291cmNlRWxlbWVudHNQZXJQaXhlbCwg
c291cmNlRWxlbWVudHNQZXJSb3csIGRlc3RpbmF0aW9uRGF0YSwgZGVzdGluYXRpb25FbGVtZW50
c1BlclBpeGVsKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2UgR3JhcGhpY3NDb250
ZXh0M0Q6OlNvdXJjZUZvcm1hdEExNkxpdHRsZTogewogICAgICAgICB1bnNpZ25lZCBpbnQgc291
cmNlRWxlbWVudHNQZXJQaXhlbCwgc291cmNlRWxlbWVudHNQZXJSb3c7CiAgICAgICAgIGNvbXB1
dGVJbmNyZW1lbnRQYXJhbWV0ZXJzPHVpbnQxNl90Pih3aWR0aCwgMiwgc291cmNlVW5wYWNrQWxp
Z25tZW50LCAmc291cmNlRWxlbWVudHNQZXJQaXhlbCwgJnNvdXJjZUVsZW1lbnRzUGVyUm93KTsK
LSAgICAgICAgZG9VbnBhY2tpbmdBbmRQYWNraW5nPHVpbnQxNl90LCBEZXN0VHlwZSwgdW5wYWNr
QTE2TGl0dGxlVG9SR0JBOCwgcGFja2luZ0Z1bmM+KHN0YXRpY19jYXN0PGNvbnN0IHVpbnQxNl90
Kj4oc291cmNlRGF0YSksIHdpZHRoLCBoZWlnaHQsIHNvdXJjZUVsZW1lbnRzUGVyUGl4ZWwsIHNv
dXJjZUVsZW1lbnRzUGVyUm93LCBkZXN0aW5hdGlvbkRhdGEsIGRlc3RpbmF0aW9uRWxlbWVudHNQ
ZXJQaXhlbCk7CisgICAgICAgIGRvVW5wYWNraW5nQW5kUGFja2luZzx1aW50MTZfdCwgdWludDhf
dCwgRGVzdFR5cGUsIHVucGFja0ExNkxpdHRsZVRvUkdCQTgsIHBhY2tpbmdGdW5jPihzdGF0aWNf
Y2FzdDxjb25zdCB1aW50MTZfdCo+KHNvdXJjZURhdGEpLCB3aWR0aCwgaGVpZ2h0LCBzb3VyY2VF
bGVtZW50c1BlclBpeGVsLCBzb3VyY2VFbGVtZW50c1BlclJvdywgZGVzdGluYXRpb25EYXRhLCBk
ZXN0aW5hdGlvbkVsZW1lbnRzUGVyUGl4ZWwpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAg
Y2FzZSBHcmFwaGljc0NvbnRleHQzRDo6U291cmNlRm9ybWF0QTE2QmlnOiB7CiAgICAgICAgIHVu
c2lnbmVkIGludCBzb3VyY2VFbGVtZW50c1BlclBpeGVsLCBzb3VyY2VFbGVtZW50c1BlclJvdzsK
ICAgICAgICAgY29tcHV0ZUluY3JlbWVudFBhcmFtZXRlcnM8dWludDE2X3Q+KHdpZHRoLCAyLCBz
b3VyY2VVbnBhY2tBbGlnbm1lbnQsICZzb3VyY2VFbGVtZW50c1BlclBpeGVsLCAmc291cmNlRWxl
bWVudHNQZXJSb3cpOwotICAgICAgICBkb1VucGFja2luZ0FuZFBhY2tpbmc8dWludDE2X3QsIERl
c3RUeXBlLCB1bnBhY2tBMTZCaWdUb1JHQkE4LCBwYWNraW5nRnVuYz4oc3RhdGljX2Nhc3Q8Y29u
c3QgdWludDE2X3QqPihzb3VyY2VEYXRhKSwgd2lkdGgsIGhlaWdodCwgc291cmNlRWxlbWVudHNQ
ZXJQaXhlbCwgc291cmNlRWxlbWVudHNQZXJSb3csIGRlc3RpbmF0aW9uRGF0YSwgZGVzdGluYXRp
b25FbGVtZW50c1BlclBpeGVsKTsKKyAgICAgICAgZG9VbnBhY2tpbmdBbmRQYWNraW5nPHVpbnQx
Nl90LCB1aW50OF90LCBEZXN0VHlwZSwgdW5wYWNrQTE2QmlnVG9SR0JBOCwgcGFja2luZ0Z1bmM+
KHN0YXRpY19jYXN0PGNvbnN0IHVpbnQxNl90Kj4oc291cmNlRGF0YSksIHdpZHRoLCBoZWlnaHQs
IHNvdXJjZUVsZW1lbnRzUGVyUGl4ZWwsIHNvdXJjZUVsZW1lbnRzUGVyUm93LCBkZXN0aW5hdGlv
bkRhdGEsIGRlc3RpbmF0aW9uRWxlbWVudHNQZXJQaXhlbCk7CiAgICAgICAgIGJyZWFrOwogICAg
IH0KICAgICBkZWZhdWx0OgpAQCAtOTc5LDYgKzEwODksNjMgQEAgc3RhdGljIHZvaWQgZG9QYWNr
aW5nKGNvbnN0IHZvaWQqIHNvdXJjZQogICAgIH0KIH0KIAorLy8gVGhpcyBzcGVjaWFsaXplZCBy
b3V0aW5lIGlzIHVzZWQgb25seSBmb3IgZmxvYXRpbmctcG9pbnQgdGV4dHVyZSB1cGxvYWRzLiBJ
dAorLy8gZG9lcyBub3QgbmVlZCB0byBiZSBhcyBnZW5lcmFsIGFzIGRvUGFja2luZywgYWJvdmU7
IGJlY2F1c2UgdGhlcmUgYXJlCisvLyBjdXJyZW50bHkgbm8gbmF0aXZlIGZsb2F0aW5nLXBvaW50
IGltYWdlIGZvcm1hdHMgaW4gV2ViS2l0LCB0aGVyZSBhcmUgb25seSBhCisvLyBmZXcgdXBsb2Fk
IHBhdGhzLgordGVtcGxhdGU8dm9pZCBwYWNraW5nRnVuYyhjb25zdCBmbG9hdCosIGZsb2F0Kik+
CitzdGF0aWMgdm9pZCBkb0Zsb2F0aW5nUG9pbnRQYWNraW5nKGNvbnN0IHZvaWQqIHNvdXJjZURh
dGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdyYXBoaWNzQ29udGV4dDNE
OjpTb3VyY2VEYXRhRm9ybWF0IHNvdXJjZURhdGFGb3JtYXQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCB3aWR0aCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IHNvdXJjZVVucGFja0FsaWdubWVudCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXQqIGRlc3RpbmF0aW9uRGF0YSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGRlc3RpbmF0aW9u
RWxlbWVudHNQZXJQaXhlbCkKK3sKKyAgICBzd2l0Y2ggKHNvdXJjZURhdGFGb3JtYXQpIHsKKyAg
ICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpTb3VyY2VGb3JtYXRSR0JBODogeworICAgICAgICB1
bnNpZ25lZCBpbnQgc291cmNlRWxlbWVudHNQZXJQaXhlbCwgc291cmNlRWxlbWVudHNQZXJSb3c7
CisgICAgICAgIGNvbXB1dGVJbmNyZW1lbnRQYXJhbWV0ZXJzPGZsb2F0Pih3aWR0aCwgNCwgc291
cmNlVW5wYWNrQWxpZ25tZW50LCAmc291cmNlRWxlbWVudHNQZXJQaXhlbCwgJnNvdXJjZUVsZW1l
bnRzUGVyUm93KTsKKyAgICAgICAgQVNTRVJUKCFzb3VyY2VFbGVtZW50c1BlclJvdyk7IC8vIEd1
YXJhbnRlZWQgYmVjYXVzZSBlYWNoIGNvbG9yIGNoYW5uZWwgaXMgc2l6ZW9mKGZsb2F0KSBieXRl
cy4KKyAgICAgICAgY29uc3QgZmxvYXQqIHNvdXJjZSA9IHN0YXRpY19jYXN0PGNvbnN0IGZsb2F0
Kj4oc291cmNlRGF0YSk7CisgICAgICAgIHVuc2lnbmVkIGludCBudW1FbGVtZW50cyA9IHdpZHRo
ICogaGVpZ2h0ICogNDsKKyAgICAgICAgY29uc3QgZmxvYXQqIGVuZFBvaW50ZXIgPSBzb3VyY2Ug
KyBudW1FbGVtZW50czsKKyAgICAgICAgd2hpbGUgKHNvdXJjZSA8IGVuZFBvaW50ZXIpIHsKKyAg
ICAgICAgICAgIHBhY2tpbmdGdW5jKHNvdXJjZSwgZGVzdGluYXRpb25EYXRhKTsKKyAgICAgICAg
ICAgIHNvdXJjZSArPSBzb3VyY2VFbGVtZW50c1BlclBpeGVsOworICAgICAgICAgICAgZGVzdGlu
YXRpb25EYXRhICs9IGRlc3RpbmF0aW9uRWxlbWVudHNQZXJQaXhlbDsKKyAgICAgICAgfQorICAg
ICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6U291cmNlRm9y
bWF0UkdCMzJGOiB7CisgICAgICAgIHVuc2lnbmVkIGludCBzb3VyY2VFbGVtZW50c1BlclBpeGVs
LCBzb3VyY2VFbGVtZW50c1BlclJvdzsKKyAgICAgICAgY29tcHV0ZUluY3JlbWVudFBhcmFtZXRl
cnM8ZmxvYXQ+KHdpZHRoLCAzLCBzb3VyY2VVbnBhY2tBbGlnbm1lbnQsICZzb3VyY2VFbGVtZW50
c1BlclBpeGVsLCAmc291cmNlRWxlbWVudHNQZXJSb3cpOworICAgICAgICBkb1VucGFja2luZ0Fu
ZFBhY2tpbmc8ZmxvYXQsIGZsb2F0LCBmbG9hdCwgdW5wYWNrUkdCMzJGVG9SR0JBMzJGLCBwYWNr
aW5nRnVuYz4oc3RhdGljX2Nhc3Q8Y29uc3QgZmxvYXQqPihzb3VyY2VEYXRhKSwgd2lkdGgsIGhl
aWdodCwgc291cmNlRWxlbWVudHNQZXJQaXhlbCwgc291cmNlRWxlbWVudHNQZXJSb3csIGRlc3Rp
bmF0aW9uRGF0YSwgZGVzdGluYXRpb25FbGVtZW50c1BlclBpeGVsKTsKKyAgICAgICAgYnJlYWs7
CisgICAgfQorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlNvdXJjZUZvcm1hdFIzMkY6IHsK
KyAgICAgICAgdW5zaWduZWQgaW50IHNvdXJjZUVsZW1lbnRzUGVyUGl4ZWwsIHNvdXJjZUVsZW1l
bnRzUGVyUm93OworICAgICAgICBjb21wdXRlSW5jcmVtZW50UGFyYW1ldGVyczxmbG9hdD4od2lk
dGgsIDEsIHNvdXJjZVVucGFja0FsaWdubWVudCwgJnNvdXJjZUVsZW1lbnRzUGVyUGl4ZWwsICZz
b3VyY2VFbGVtZW50c1BlclJvdyk7CisgICAgICAgIGRvVW5wYWNraW5nQW5kUGFja2luZzxmbG9h
dCwgZmxvYXQsIGZsb2F0LCB1bnBhY2tSMzJGVG9SR0JBMzJGLCBwYWNraW5nRnVuYz4oc3RhdGlj
X2Nhc3Q8Y29uc3QgZmxvYXQqPihzb3VyY2VEYXRhKSwgd2lkdGgsIGhlaWdodCwgc291cmNlRWxl
bWVudHNQZXJQaXhlbCwgc291cmNlRWxlbWVudHNQZXJSb3csIGRlc3RpbmF0aW9uRGF0YSwgZGVz
dGluYXRpb25FbGVtZW50c1BlclBpeGVsKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNh
c2UgR3JhcGhpY3NDb250ZXh0M0Q6OlNvdXJjZUZvcm1hdFJBMzJGOiB7CisgICAgICAgIHVuc2ln
bmVkIGludCBzb3VyY2VFbGVtZW50c1BlclBpeGVsLCBzb3VyY2VFbGVtZW50c1BlclJvdzsKKyAg
ICAgICAgY29tcHV0ZUluY3JlbWVudFBhcmFtZXRlcnM8ZmxvYXQ+KHdpZHRoLCAyLCBzb3VyY2VV
bnBhY2tBbGlnbm1lbnQsICZzb3VyY2VFbGVtZW50c1BlclBpeGVsLCAmc291cmNlRWxlbWVudHNQ
ZXJSb3cpOworICAgICAgICBkb1VucGFja2luZ0FuZFBhY2tpbmc8ZmxvYXQsIGZsb2F0LCBmbG9h
dCwgdW5wYWNrUkEzMkZUb1JHQkEzMkYsIHBhY2tpbmdGdW5jPihzdGF0aWNfY2FzdDxjb25zdCBm
bG9hdCo+KHNvdXJjZURhdGEpLCB3aWR0aCwgaGVpZ2h0LCBzb3VyY2VFbGVtZW50c1BlclBpeGVs
LCBzb3VyY2VFbGVtZW50c1BlclJvdywgZGVzdGluYXRpb25EYXRhLCBkZXN0aW5hdGlvbkVsZW1l
bnRzUGVyUGl4ZWwpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBHcmFwaGljc0Nv
bnRleHQzRDo6U291cmNlRm9ybWF0QTMyRjogeworICAgICAgICB1bnNpZ25lZCBpbnQgc291cmNl
RWxlbWVudHNQZXJQaXhlbCwgc291cmNlRWxlbWVudHNQZXJSb3c7CisgICAgICAgIGNvbXB1dGVJ
bmNyZW1lbnRQYXJhbWV0ZXJzPGZsb2F0Pih3aWR0aCwgMSwgc291cmNlVW5wYWNrQWxpZ25tZW50
LCAmc291cmNlRWxlbWVudHNQZXJQaXhlbCwgJnNvdXJjZUVsZW1lbnRzUGVyUm93KTsKKyAgICAg
ICAgZG9VbnBhY2tpbmdBbmRQYWNraW5nPGZsb2F0LCBmbG9hdCwgZmxvYXQsIHVucGFja0EzMkZU
b1JHQkEzMkYsIHBhY2tpbmdGdW5jPihzdGF0aWNfY2FzdDxjb25zdCBmbG9hdCo+KHNvdXJjZURh
dGEpLCB3aWR0aCwgaGVpZ2h0LCBzb3VyY2VFbGVtZW50c1BlclBpeGVsLCBzb3VyY2VFbGVtZW50
c1BlclJvdywgZGVzdGluYXRpb25EYXRhLCBkZXN0aW5hdGlvbkVsZW1lbnRzUGVyUGl4ZWwpOwor
ICAgICAgICBicmVhazsKKyAgICB9CisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisgICAgfQorfQorCiBib29sIEdyYXBoaWNzQ29udGV4dDNEOjpwYWNrUGl4ZWxz
KGNvbnN0IHVpbnQ4X3QqIHNvdXJjZURhdGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdyYXBoaWNzQ29udGV4dDNEOjpTb3VyY2VEYXRhRm9ybWF0IHNvdXJjZURhdGFGb3Jt
YXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCB3aWR0
aCwKQEAgLTExMTMsNiArMTI4MCw4NyBAQCBib29sIEdyYXBoaWNzQ29udGV4dDNEOjpwYWNrUGl4
ZWxzKGNvbnN0CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAgICAgfQorICAgIGNhc2UgRkxP
QVQ6IHsKKyAgICAgICAgLy8gT3BlbkdMIEVTLCBhbmQgdGhlcmVmb3JlIFdlYkdMLCByZXF1aXJl
IHRoYXQgdGhlIGZvcm1hdCBhbmQKKyAgICAgICAgLy8gaW50ZXJuYWxmb3JtYXQgYmUgaWRlbnRp
Y2FsLCB3aGljaCBpbXBsaWVzIHRoYXQgdGhlIHNvdXJjZSBhbmQKKyAgICAgICAgLy8gZGVzdGlu
YXRpb24gZm9ybWF0cyB3aWxsIGJvdGggYmUgZmxvYXRpbmctcG9pbnQgaW4gdGhpcyBicmFuY2gg
LS0gYXQKKyAgICAgICAgLy8gbGVhc3QsIHVudGlsIFdlYktpdCBzdXBwb3J0cyBmbG9hdGluZy1w
b2ludCBpbWFnZSBmb3JtYXRzIG5hdGl2ZWx5LgorICAgICAgICBBU1NFUlQoc291cmNlRGF0YUZv
cm1hdCA9PSBTb3VyY2VGb3JtYXRSR0JBMzJGIHx8IHNvdXJjZURhdGFGb3JtYXQgPT0gU291cmNl
Rm9ybWF0UkdCMzJGCisgICAgICAgICAgICAgICB8fCBzb3VyY2VEYXRhRm9ybWF0ID09IFNvdXJj
ZUZvcm1hdFJBMzJGIHx8IHNvdXJjZURhdGFGb3JtYXQgPT0gU291cmNlRm9ybWF0UjMyRgorICAg
ICAgICAgICAgICAgfHwgc291cmNlRGF0YUZvcm1hdCA9PSBTb3VyY2VGb3JtYXRBMzJGKTsKKyAg
ICAgICAgLy8gQmVjYXVzZSBXZWJLaXQgZG9lc24ndCB1c2UgZmxvYXRpbmctcG9pbnQgY29sb3Ig
Y2hhbm5lbHMgZm9yIGFueXRoaW5nCisgICAgICAgIC8vIGludGVybmFsbHksIHRoZXJlJ3Mgbm8g
Y2hhbmNlIHdlIGhhdmUgdG8gZG8gYSAobG9zc3kpIHVubXVsdGlwbHkKKyAgICAgICAgLy8gb3Bl
cmF0aW9uLgorICAgICAgICBBU1NFUlQoYWxwaGFPcCA9PSBBbHBoYURvTm90aGluZyB8fCBhbHBo
YU9wID09IEFscGhhRG9QcmVtdWx0aXBseSk7CisgICAgICAgIC8vIEZvciB0aGUgc291cmNlIGZv
cm1hdHMgd2l0aCBhbiBldmVuIG51bWJlciBvZiBjaGFubmVscyAoUkdCQTMyRiwKKyAgICAgICAg
Ly8gUkEzMkYpIGl0IGlzIGd1YXJhbnRlZWQgdGhhdCB0aGUgcGl4ZWwgZGF0YSBpcyB0aWdodGx5
IHBhY2tlZCBiZWNhdXNlCisgICAgICAgIC8vIHVucGFjayBhbGlnbm1lbnQgPD0gc2l6ZW9mKGZs
b2F0KSAqIG51bWJlciBvZiBjaGFubmVscy4KKyAgICAgICAgZmxvYXQqIGRlc3RpbmF0aW9uID0g
c3RhdGljX2Nhc3Q8ZmxvYXQqPihkZXN0aW5hdGlvbkRhdGEpOworICAgICAgICBpZiAoYWxwaGFP
cCA9PSBBbHBoYURvTm90aGluZworICAgICAgICAgICAgJiYgKChzb3VyY2VEYXRhRm9ybWF0ID09
IFNvdXJjZUZvcm1hdFJHQkEzMkYgJiYgZGVzdGluYXRpb25Gb3JtYXQgPT0gUkdCQSkKKyAgICAg
ICAgICAgICAgICB8fCAoc291cmNlRGF0YUZvcm1hdCA9PSBTb3VyY2VGb3JtYXRSQTMyRiAmJiBk
ZXN0aW5hdGlvbkZvcm1hdCA9PSBMVU1JTkFOQ0VfQUxQSEEpKSkgeworICAgICAgICAgICAgLy8g
Tm8gY29udmVyc2lvbiBuZWNlc3NhcnkuCisgICAgICAgICAgICBpbnQgbnVtQ2hhbm5lbHMgPSAo
c291cmNlRGF0YUZvcm1hdCA9PSBTb3VyY2VGb3JtYXRSR0JBMzJGID8gNCA6IDIpOworICAgICAg
ICAgICAgbWVtY3B5KGRlc3RpbmF0aW9uRGF0YSwgc291cmNlRGF0YSwgd2lkdGggKiBoZWlnaHQg
KiBudW1DaGFubmVscyAqIHNpemVvZihmbG9hdCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIH0KKyAgICAgICAgc3dpdGNoIChkZXN0aW5hdGlvbkZvcm1hdCkgeworICAgICAgICBjYXNl
IFJHQjoKKyAgICAgICAgICAgIHN3aXRjaCAoYWxwaGFPcCkgeworICAgICAgICAgICAgY2FzZSBB
bHBoYURvTm90aGluZzoKKyAgICAgICAgICAgICAgICBkb0Zsb2F0aW5nUG9pbnRQYWNraW5nPHBh
Y2tSR0JBMzJGVG9SR0IzMkY+KHNvdXJjZURhdGEsIHNvdXJjZURhdGFGb3JtYXQsIHdpZHRoLCBo
ZWlnaHQsIHNvdXJjZVVucGFja0FsaWdubWVudCwgZGVzdGluYXRpb24sIDMpOworICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBBbHBoYURvUHJlbXVsdGlwbHk6CisgICAg
ICAgICAgICAgICAgZG9GbG9hdGluZ1BvaW50UGFja2luZzxwYWNrUkdCQTMyRlRvUkdCMzJGUHJl
bXVsdGlwbHk+KHNvdXJjZURhdGEsIHNvdXJjZURhdGFGb3JtYXQsIHdpZHRoLCBoZWlnaHQsIHNv
dXJjZVVucGFja0FsaWdubWVudCwgZGVzdGluYXRpb24sIDMpOworICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNl
IFJHQkE6CisgICAgICAgICAgICAvLyBBbHBoYURvTm90aGluZyBpcyBoYW5kbGVkIGFib3ZlIHdp
dGggZmFzdCBwYXRoLgorICAgICAgICAgICAgQVNTRVJUKGFscGhhT3AgPT0gQWxwaGFEb1ByZW11
bHRpcGx5KTsKKyAgICAgICAgICAgIGRvRmxvYXRpbmdQb2ludFBhY2tpbmc8cGFja1JHQkEzMkZU
b1JHQkEzMkZQcmVtdWx0aXBseT4oc291cmNlRGF0YSwgc291cmNlRGF0YUZvcm1hdCwgd2lkdGgs
IGhlaWdodCwgc291cmNlVW5wYWNrQWxpZ25tZW50LCBkZXN0aW5hdGlvbiwgNCk7CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgY2FzZSBBTFBIQToKKyAgICAgICAgICAgIC8vIEZyb20gdGhl
IGRlc2t0b3AgT3BlbkdMIGNvbnZlcnNpb24gcnVsZXMgKE9wZW5HTCAyLjEKKyAgICAgICAgICAg
IC8vIHNwZWNpZmljYXRpb24sIFRhYmxlIDMuMTUpLCB0aGUgYWxwaGEgY2hhbm5lbCBpcyBjaG9z
ZW4KKyAgICAgICAgICAgIC8vIGZyb20gdGhlIFJHQkEgZGF0YS4KKyAgICAgICAgICAgIGRvRmxv
YXRpbmdQb2ludFBhY2tpbmc8cGFja1JHQkEzMkZUb0EzMkY+KHNvdXJjZURhdGEsIHNvdXJjZURh
dGFGb3JtYXQsIHdpZHRoLCBoZWlnaHQsIHNvdXJjZVVucGFja0FsaWdubWVudCwgZGVzdGluYXRp
b24sIDEpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgTFVNSU5BTkNFOgorICAg
ICAgICAgICAgLy8gRnJvbSB0aGUgZGVza3RvcCBPcGVuR0wgY29udmVyc2lvbiBydWxlcyAoT3Bl
bkdMIDIuMQorICAgICAgICAgICAgLy8gc3BlY2lmaWNhdGlvbiwgVGFibGUgMy4xNSksIHRoZSBy
ZWQgY2hhbm5lbCBpcyBjaG9zZW4KKyAgICAgICAgICAgIC8vIGZyb20gdGhlIFJHQkEgZGF0YS4K
KyAgICAgICAgICAgIHN3aXRjaCAoYWxwaGFPcCkgeworICAgICAgICAgICAgY2FzZSBBbHBoYURv
Tm90aGluZzoKKyAgICAgICAgICAgICAgICBkb0Zsb2F0aW5nUG9pbnRQYWNraW5nPHBhY2tSR0JB
MzJGVG9SMzJGPihzb3VyY2VEYXRhLCBzb3VyY2VEYXRhRm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBz
b3VyY2VVbnBhY2tBbGlnbm1lbnQsIGRlc3RpbmF0aW9uLCAxKTsKKyAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgIGNhc2UgQWxwaGFEb1ByZW11bHRpcGx5OgorICAgICAgICAgICAg
ICAgIGRvRmxvYXRpbmdQb2ludFBhY2tpbmc8cGFja1JHQkEzMkZUb1IzMkZQcmVtdWx0aXBseT4o
c291cmNlRGF0YSwgc291cmNlRGF0YUZvcm1hdCwgd2lkdGgsIGhlaWdodCwgc291cmNlVW5wYWNr
QWxpZ25tZW50LCBkZXN0aW5hdGlvbiwgMSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgTFVNSU5BTkNF
X0FMUEhBOgorICAgICAgICAgICAgLy8gRnJvbSB0aGUgZGVza3RvcCBPcGVuR0wgY29udmVyc2lv
biBydWxlcyAoT3BlbkdMIDIuMQorICAgICAgICAgICAgLy8gc3BlY2lmaWNhdGlvbiwgVGFibGUg
My4xNSksIHRoZSByZWQgYW5kIGFscGhhIGNoYW5uZWxzCisgICAgICAgICAgICAvLyBhcmUgY2hv
c2VuIGZyb20gdGhlIFJHQkEgZGF0YS4KKyAgICAgICAgICAgIHN3aXRjaCAoYWxwaGFPcCkgewor
ICAgICAgICAgICAgY2FzZSBBbHBoYURvTm90aGluZzoKKyAgICAgICAgICAgICAgICBkb0Zsb2F0
aW5nUG9pbnRQYWNraW5nPHBhY2tSR0JBMzJGVG9SQTMyRj4oc291cmNlRGF0YSwgc291cmNlRGF0
YUZvcm1hdCwgd2lkdGgsIGhlaWdodCwgc291cmNlVW5wYWNrQWxpZ25tZW50LCBkZXN0aW5hdGlv
biwgMik7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIEFscGhhRG9Q
cmVtdWx0aXBseToKKyAgICAgICAgICAgICAgICBkb0Zsb2F0aW5nUG9pbnRQYWNraW5nPHBhY2tS
R0JBMzJGVG9SQTMyRlByZW11bHRpcGx5Pihzb3VyY2VEYXRhLCBzb3VyY2VEYXRhRm9ybWF0LCB3
aWR0aCwgaGVpZ2h0LCBzb3VyY2VVbnBhY2tBbGlnbm1lbnQsIGRlc3RpbmF0aW9uLCAyKTsKKyAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKyAgICB9CiAgICAgfQogICAgIHJldHVybiB0
cnVlOwogfQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQz
RC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250
ZXh0M0QuaAkocmV2aXNpb24gNzM1NjkpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dy
YXBoaWNzQ29udGV4dDNELmgJKHdvcmtpbmcgY29weSkKQEAgLTUzNiw5ICs1MzYsMTEgQEAgcHVi
bGljOgogICAgICAgICBTb3VyY2VGb3JtYXRSR0JBOCA9IDAsCiAgICAgICAgIFNvdXJjZUZvcm1h
dFJHQkExNkxpdHRsZSwKICAgICAgICAgU291cmNlRm9ybWF0UkdCQTE2QmlnLAorICAgICAgICBT
b3VyY2VGb3JtYXRSR0JBMzJGLAogICAgICAgICBTb3VyY2VGb3JtYXRSR0I4LAogICAgICAgICBT
b3VyY2VGb3JtYXRSR0IxNkxpdHRsZSwKICAgICAgICAgU291cmNlRm9ybWF0UkdCMTZCaWcsCisg
ICAgICAgIFNvdXJjZUZvcm1hdFJHQjMyRiwKICAgICAgICAgU291cmNlRm9ybWF0QkdSOCwKICAg
ICAgICAgU291cmNlRm9ybWF0QkdSQTgsCiAgICAgICAgIFNvdXJjZUZvcm1hdEJHUkExNkxpdHRs
ZSwKQEAgLTU1MywxNSArNTU1LDE4IEBAIHB1YmxpYzoKICAgICAgICAgU291cmNlRm9ybWF0Ujgs
CiAgICAgICAgIFNvdXJjZUZvcm1hdFIxNkxpdHRsZSwKICAgICAgICAgU291cmNlRm9ybWF0UjE2
QmlnLAorICAgICAgICBTb3VyY2VGb3JtYXRSMzJGLAogICAgICAgICBTb3VyY2VGb3JtYXRSQTgs
CiAgICAgICAgIFNvdXJjZUZvcm1hdFJBMTZMaXR0bGUsCiAgICAgICAgIFNvdXJjZUZvcm1hdFJB
MTZCaWcsCisgICAgICAgIFNvdXJjZUZvcm1hdFJBMzJGLAogICAgICAgICBTb3VyY2VGb3JtYXRB
UjgsCiAgICAgICAgIFNvdXJjZUZvcm1hdEFSMTZMaXR0bGUsCiAgICAgICAgIFNvdXJjZUZvcm1h
dEFSMTZCaWcsCiAgICAgICAgIFNvdXJjZUZvcm1hdEE4LAogICAgICAgICBTb3VyY2VGb3JtYXRB
MTZMaXR0bGUsCiAgICAgICAgIFNvdXJjZUZvcm1hdEExNkJpZywKKyAgICAgICAgU291cmNlRm9y
bWF0QTMyRiwKICAgICAgICAgU291cmNlRm9ybWF0TnVtRm9ybWF0cwogICAgIH07CiAKSW5kZXg6
IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRXh0ZW5zaW9uczNEQ2hyb21pdW0u
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0V4dGVu
c2lvbnMzRENocm9taXVtLmgJKHJldmlzaW9uIDczNTY5KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9FeHRlbnNpb25zM0RDaHJvbWl1bS5oCSh3b3JraW5nIGNvcHkpCkBA
IC00Miw2ICs0Miw3IEBAIHB1YmxpYzoKIAogICAgIC8vIEV4dGVuc2lvbnMzRCBtZXRob2RzLgog
ICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0cyhjb25zdCBTdHJpbmcmKTsKKyAgICB2aXJ0dWFsIGJv
b2wgZW5zdXJlRW5hYmxlZChjb25zdCBTdHJpbmcmKTsKICAgICB2aXJ0dWFsIGludCBnZXRHcmFw
aGljc1Jlc2V0U3RhdHVzQVJCKCk7CiAgICAgdmlydHVhbCB2b2lkIGJsaXRGcmFtZWJ1ZmZlcihs
b25nIHNyY1gwLCBsb25nIHNyY1kwLCBsb25nIHNyY1gxLCBsb25nIHNyY1kxLCBsb25nIGRzdFgw
LCBsb25nIGRzdFkwLCBsb25nIGRzdFgxLCBsb25nIGRzdFkxLCB1bnNpZ25lZCBsb25nIG1hc2ss
IHVuc2lnbmVkIGxvbmcgZmlsdGVyKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgcmVuZGVyYnVmZmVy
U3RvcmFnZU11bHRpc2FtcGxlKHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25nIHNh
bXBsZXMsIHVuc2lnbmVkIGxvbmcgaW50ZXJuYWxmb3JtYXQsIHVuc2lnbmVkIGxvbmcgd2lkdGgs
IHVuc2lnbmVkIGxvbmcgaGVpZ2h0KSB7IH0KSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbmdsL0V4dGVuc2lvbnMzRE9wZW5HTC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uczNET3BlbkdMLmNwcAkocmV2aXNpb24g
NzM1NjkpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zM0RP
cGVuR0wuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NiwxMCArNzYsMjAgQEAgYm9vbCBFeHRlbnNp
b25zM0RPcGVuR0w6OnN1cHBvcnRzKGNvbnN0IAogICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVF
eHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfZnJhbWVidWZmZXJfYmxpdCIpOwogICAgIGlmIChu
YW1lID09ICJHTF9BTkdMRV9mcmFtZWJ1ZmZlcl9tdWx0aXNhbXBsZSIpCiAgICAgICAgIHJldHVy
biBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0VYVF9mcmFtZWJ1ZmZlcl9tdWx0
aXNhbXBsZSIpOwotICAgICAgICAKKworICAgIC8vIElmIEdMX0FSQl90ZXh0dXJlX2Zsb2F0IGlz
IGF2YWlsYWJsZSB0aGVuIHdlIHJlcG9ydCBHTF9PRVNfdGV4dHVyZV9mbG9hdCBhbmQKKyAgICAv
LyBHTF9PRVNfdGV4dHVyZV9oYWxmX2Zsb2F0IGFzIGF2YWlsYWJsZS4KKyAgICBpZiAobmFtZSA9
PSAiR0xfT0VTX3RleHR1cmVfZmxvYXQiIHx8IG5hbWUgPT0gIkdMX09FU190ZXh0dXJlX2hhbGZf
ZmxvYXQiKQorICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJH
TF9BUkJfdGV4dHVyZV9mbG9hdCIpOworCiAgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9u
cy5jb250YWlucyhuYW1lKTsKIH0KIAorYm9vbCBFeHRlbnNpb25zM0RPcGVuR0w6OmVuc3VyZUVu
YWJsZWQoY29uc3QgU3RyaW5nJiBuYW1lKQoreworICAgIHJldHVybiBzdXBwb3J0cyhuYW1lKTsK
K30KKwogaW50IEV4dGVuc2lvbnMzRE9wZW5HTDo6Z2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQigp
CiB7CiAgICAgcmV0dXJuIEdyYXBoaWNzQ29udGV4dDNEOjpOT19FUlJPUjsKSW5kZXg6IFdlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnMzRE9wZW5HTC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnMzRE9wZW5H
TC5oCShyZXZpc2lvbiA3MzU2OSkKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Blbmds
L0V4dGVuc2lvbnMzRE9wZW5HTC5oCSh3b3JraW5nIGNvcHkpCkBAIC00MCw2ICs0MCw3IEBAIHB1
YmxpYzoKIAogICAgIC8vIEV4dGVuc2lvbnMzRCBtZXRob2RzLgogICAgIHZpcnR1YWwgYm9vbCBz
dXBwb3J0cyhjb25zdCBTdHJpbmcmKTsKKyAgICB2aXJ0dWFsIGJvb2wgZW5zdXJlRW5hYmxlZChj
b25zdCBTdHJpbmcmKTsKICAgICB2aXJ0dWFsIGludCBnZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJC
KCk7CiAgICAgdmlydHVhbCB2b2lkIGJsaXRGcmFtZWJ1ZmZlcihsb25nIHNyY1gwLCBsb25nIHNy
Y1kwLCBsb25nIHNyY1gxLCBsb25nIHNyY1kxLCBsb25nIGRzdFgwLCBsb25nIGRzdFkwLCBsb25n
IGRzdFgxLCBsb25nIGRzdFkxLCB1bnNpZ25lZCBsb25nIG1hc2ssIHVuc2lnbmVkIGxvbmcgZmls
dGVyKTsKICAgICB2aXJ0dWFsIHZvaWQgcmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlKHVu
c2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25nIHNhbXBsZXMsIHVuc2lnbmVkIGxvbmcg
aW50ZXJuYWxmb3JtYXQsIHVuc2lnbmVkIGxvbmcgd2lkdGgsIHVuc2lnbmVkIGxvbmcgaGVpZ2h0
KTsgICAgCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0Nv
bnRleHQzRE9wZW5HTC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0wuY3BwCShyZXZpc2lvbiA3MzU2OSkKKysr
IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdM
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTMyOSw3ICsxMzI5LDE1IEBAIGludCBHcmFwaGljc0Nv
bnRleHQzRDo6dGV4SW1hZ2UyRCh1bnNpZ24KIHsKICAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsK
IAotICAgIDo6Z2xUZXhJbWFnZTJEKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0
aCwgaGVpZ2h0LCBib3JkZXIsIGZvcm1hdCwgdHlwZSwgcGl4ZWxzKTsKKyAgICB1bnNpZ25lZCBv
cGVuR0xJbnRlcm5hbEZvcm1hdCA9IGludGVybmFsZm9ybWF0OworICAgIGlmICh0eXBlID09IEdM
X0ZMT0FUKSB7CisgICAgICAgIGlmIChmb3JtYXQgPT0gR0xfUkdCQSkKKyAgICAgICAgICAgIG9w
ZW5HTEludGVybmFsRm9ybWF0ID0gR0xfUkdCQTMyRl9BUkI7CisgICAgICAgIGVsc2UgaWYgKGZv
cm1hdCA9PSBHTF9SR0IpCisgICAgICAgICAgICBvcGVuR0xJbnRlcm5hbEZvcm1hdCA9IEdMX1JH
QjMyRl9BUkI7CisgICAgfQorCisgICAgOjpnbFRleEltYWdlMkQodGFyZ2V0LCBsZXZlbCwgb3Bl
bkdMSW50ZXJuYWxGb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGJvcmRlciwgZm9ybWF0LCB0eXBlLCBw
aXhlbHMpOwogICAgIHJldHVybiAwOwogfQogCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3F0L0V4dGVuc2lvbnMzRFF0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3F0L0V4dGVuc2lvbnMzRFF0LmNwcAkocmV2aXNpb24gNzM1NjkpCisrKyBXZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0V4dGVuc2lvbnMzRFF0LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNDYsNiArNDYsMTEgQEAgYm9vbCBFeHRlbnNpb25zM0RRdDo6c3VwcG9ydHMoY29uc3Qg
U3RyaQogICAgIHJldHVybiBmYWxzZTsKIH0KIAorYm9vbCBFeHRlbnNpb25zM0RRdDo6ZW5zdXJl
RW5hYmxlZChjb25zdCBTdHJpbmcmIG5hbWUpCit7CisgICAgcmV0dXJuIHN1cHBvcnRzKG5hbWUp
OworfQorCiBpbnQgRXh0ZW5zaW9uczNEUXQ6OmdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIoKQog
ewogICAgIHJldHVybiBHcmFwaGljc0NvbnRleHQzRDo6Tk9fRVJST1I7CkluZGV4OiBXZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3F0L0V4dGVuc2lvbnMzRFF0LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9FeHRlbnNpb25zM0RRdC5oCShyZXZpc2lvbiA3MzU2
OSkKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvRXh0ZW5zaW9uczNEUXQuaAkod29y
a2luZyBjb3B5KQpAQCAtMzYsNiArMzYsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBFeHRlbnNpb25z
M0QgbWV0aG9kcy4KICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHMoY29uc3QgU3RyaW5nJik7Cisg
ICAgdmlydHVhbCBib29sIGVuc3VyZUVuYWJsZWQoY29uc3QgU3RyaW5nJik7CiAgICAgdmlydHVh
bCBpbnQgZ2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQigpOwogCiBwcml2YXRlOgpJbmRleDogV2Vi
S2l0L2Nocm9taXVtL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCShyZXZpc2lvbiA3MzU4MikKKysrIFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHdv
cmtpbmcgY29weSkKQEAgLTEsMyArMSwyNiBAQAorMjAxMC0xMi0wOCAgS2VubmV0aCBSdXNzZWxs
ICA8a2JyQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgSW1wbGVtZW50IGV4dGVuc2lvbiBlbnRyeSBwb2ludHMgYW5kIHJlbW92ZSBF
WFRFTlNJT05TIGVudW0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTQwMzE2CisKKyAgICAgICAgQWRkZWQgc3VwcG9ydCBmb3IgZW5zdXJpbmcgdGhhdCBh
IHBhcnRpY3VsYXIgT3BlbkdMIGV4dGVuc2lvbiBpcworICAgICAgICBlbmFibGVkLgorCisgICAg
ICAgICogcHVibGljL1dlYkdyYXBoaWNzQ29udGV4dDNELmg6CisgICAgICAgICogc3JjL0V4dGVu
c2lvbnMzRENocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnMzRENocm9t
aXVtOjplbnN1cmVFbmFibGVkKToKKyAgICAgICAgKiBzcmMvR3JhcGhpY3NDb250ZXh0M0RDaHJv
bWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpp
bml0aWFsaXplRXh0ZW5zaW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQz
REludGVybmFsOjpzdXBwb3J0c0V4dGVuc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQzREludGVybmFsOjplbnN1cmVFeHRlbnNpb25FbmFibGVkKToKKyAgICAgICAgKiBz
cmMvR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbC5oOgorICAgICAgICAqIHNyYy9XZWJHcmFwaGlj
c0NvbnRleHQzRERlZmF1bHRJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViR3JhcGhpY3ND
b250ZXh0M0REZWZhdWx0SW1wbDo6Z2V0UmVxdWVzdGFibGVFeHRlbnNpb25zQ0hST01JVU0pOgor
ICAgICAgICAoV2ViS2l0OjpXZWJHcmFwaGljc0NvbnRleHQzRERlZmF1bHRJbXBsOjpyZXF1ZXN0
RXh0ZW5zaW9uQ0hST01JVU0pOgorICAgICAgICAqIHNyYy9XZWJHcmFwaGljc0NvbnRleHQzRERl
ZmF1bHRJbXBsLmg6CisKIDIwMTAtMTItMDcgIEJyaWFuIFdlaW5zdGVpbiAgPGJ3ZWluc3RlaW5A
YXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEpvaG4gU3VsbGl2YW4uCkluZGV4OiBX
ZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkdyYXBoaWNzQ29udGV4dDNELmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJHcmFwaGljc0NvbnRleHQzRC5oCShyZXZpc2lv
biA3MzU2OSkKKysrIFdlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViR3JhcGhpY3NDb250ZXh0M0Qu
aAkod29ya2luZyBjb3B5KQpAQCAtMTQwLDYgKzE0MCwxMCBAQCBwdWJsaWM6CiAgICAgLy8gR0xf
Q0hST01JVU1fY29weV90ZXh0dXJlX3RvX3BhcmVudF90ZXh0dXJlCiAgICAgdmlydHVhbCB2b2lk
IGNvcHlUZXh0dXJlVG9QYXJlbnRUZXh0dXJlQ0hST01JVU0odW5zaWduZWQgdGV4dHVyZSwgdW5z
aWduZWQgcGFyZW50VGV4dHVyZSkgPSAwOwogCisgICAgLy8gR0xfQ0hST01JVU1fcmVxdWVzdF9l
eHRlbnNpb24KKyAgICB2aXJ0dWFsIFdlYlN0cmluZyBnZXRSZXF1ZXN0YWJsZUV4dGVuc2lvbnND
SFJPTUlVTSgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdEV4dGVuc2lvbkNIUk9NSVVN
KGNvbnN0IGNoYXIqKSA9IDA7CisKICAgICAvLyBUaGUgZW50cnkgcG9pbnRzIGJlbG93IG1hcCBk
aXJlY3RseSB0byB0aGUgT3BlbkdMIEVTIDIuMCBBUEkuCiAgICAgLy8gU2VlOiBodHRwOi8vd3d3
Lmtocm9ub3Mub3JnL3JlZ2lzdHJ5L2dsZXMvCiAgICAgLy8gYW5kOiBodHRwOi8vd3d3Lmtocm9u
b3Mub3JnL29wZW5nbGVzL3Nkay9kb2NzL21hbi8KSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9zcmMv
RXh0ZW5zaW9uczNEQ2hyb21pdW0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9z
cmMvRXh0ZW5zaW9uczNEQ2hyb21pdW0uY3BwCShyZXZpc2lvbiA3MzU2OSkKKysrIFdlYktpdC9j
aHJvbWl1bS9zcmMvRXh0ZW5zaW9uczNEQ2hyb21pdW0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00
OCw2ICs0OCwxMSBAQCBib29sIEV4dGVuc2lvbnMzRENocm9taXVtOjpzdXBwb3J0cyhjb25zCiAg
ICAgcmV0dXJuIG1faW50ZXJuYWwtPnN1cHBvcnRzRXh0ZW5zaW9uKG5hbWUpOwogfQogCitib29s
IEV4dGVuc2lvbnMzRENocm9taXVtOjplbnN1cmVFbmFibGVkKGNvbnN0IFN0cmluZyYgbmFtZSkK
K3sKKyAgICByZXR1cm4gbV9pbnRlcm5hbC0+ZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZChuYW1lKTsK
K30KKwogaW50IEV4dGVuc2lvbnMzRENocm9taXVtOjpnZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJC
KCkKIHsKICAgICByZXR1cm4gbV9pbnRlcm5hbC0+aXNDb250ZXh0TG9zdCgpID8gc3RhdGljX2Nh
c3Q8aW50PihFeHRlbnNpb25zM0Q6OlVOS05PV05fQ09OVEVYVF9SRVNFVF9BUkIpIDogc3RhdGlj
X2Nhc3Q8aW50PihHcmFwaGljc0NvbnRleHQzRDo6Tk9fRVJST1IpOwpJbmRleDogV2ViS2l0L2No
cm9taXVtL3NyYy9HcmFwaGljc0NvbnRleHQzRENocm9taXVtLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJLaXQvY2hyb21pdW0vc3JjL0dyYXBoaWNzQ29udGV4dDNEQ2hyb21pdW0uY3BwCShyZXZpc2lv
biA3MzU2OSkKKysrIFdlYktpdC9jaHJvbWl1bS9zcmMvR3JhcGhpY3NDb250ZXh0M0RDaHJvbWl1
bS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY4MSwxNyArNjgxLDU0IEBAIEV4dGVuc2lvbnMzRCog
R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDoKICAgICByZXR1cm4gbV9leHRlbnNpb25zLmdldCgp
OwogfQogCi1ib29sIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OnN1cHBvcnRzRXh0ZW5zaW9u
KGNvbnN0IFN0cmluZyYgbmFtZSkKK25hbWVzcGFjZSB7CisKK3ZvaWQgc3BsaXRTdHJpbmdIZWxw
ZXIoY29uc3QgU3RyaW5nJiBzdHIsIEhhc2hTZXQ8U3RyaW5nPiYgc2V0KQoreworICAgIFZlY3Rv
cjxTdHJpbmc+IHN1YnN0cmluZ3M7CisgICAgc3RyLnNwbGl0KCIgIiwgc3Vic3RyaW5ncyk7Cisg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzdWJzdHJpbmdzLnNpemUoKTsgKytpKQorICAgICAg
ICBzZXQuYWRkKHN1YnN0cmluZ3NbaV0pOworfQorCit9IC8vIGFub255bW91cyBuYW1lc3BhY2UK
Kwordm9pZCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjppbml0aWFsaXplRXh0ZW5zaW9ucygp
CiB7CiAgICAgaWYgKCFtX2luaXRpYWxpemVkQXZhaWxhYmxlRXh0ZW5zaW9ucykgewogICAgICAg
ICBTdHJpbmcgZXh0ZW5zaW9uc1N0cmluZyA9IGdldFN0cmluZyhHcmFwaGljc0NvbnRleHQzRDo6
RVhURU5TSU9OUyk7Ci0gICAgICAgIFZlY3RvcjxTdHJpbmc+IGF2YWlsYWJsZUV4dGVuc2lvbnM7
Ci0gICAgICAgIGV4dGVuc2lvbnNTdHJpbmcuc3BsaXQoIiAiLCBhdmFpbGFibGVFeHRlbnNpb25z
KTsKLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBhdmFpbGFibGVFeHRlbnNpb25zLnNp
emUoKTsgKytpKQotICAgICAgICAgICAgbV9hdmFpbGFibGVFeHRlbnNpb25zLmFkZChhdmFpbGFi
bGVFeHRlbnNpb25zW2ldKTsKKyAgICAgICAgc3BsaXRTdHJpbmdIZWxwZXIoZXh0ZW5zaW9uc1N0
cmluZywgbV9lbmFibGVkRXh0ZW5zaW9ucyk7CisKKyAgICAgICAgU3RyaW5nIHJlcXVlc3RhYmxl
RXh0ZW5zaW9uc1N0cmluZyA9IG1faW1wbC0+Z2V0UmVxdWVzdGFibGVFeHRlbnNpb25zQ0hST01J
VU0oKTsKKyAgICAgICAgc3BsaXRTdHJpbmdIZWxwZXIocmVxdWVzdGFibGVFeHRlbnNpb25zU3Ry
aW5nLCBtX3JlcXVlc3RhYmxlRXh0ZW5zaW9ucyk7CisKICAgICAgICAgbV9pbml0aWFsaXplZEF2
YWlsYWJsZUV4dGVuc2lvbnMgPSB0cnVlOwogICAgIH0KLSAgICByZXR1cm4gbV9hdmFpbGFibGVF
eHRlbnNpb25zLmNvbnRhaW5zKG5hbWUpOworfQorCisKK2Jvb2wgR3JhcGhpY3NDb250ZXh0M0RJ
bnRlcm5hbDo6c3VwcG9ydHNFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBuYW1lKQoreworICAgIGlu
aXRpYWxpemVFeHRlbnNpb25zKCk7CisgICAgcmV0dXJuIG1fZW5hYmxlZEV4dGVuc2lvbnMuY29u
dGFpbnMobmFtZSkgfHwgbV9yZXF1ZXN0YWJsZUV4dGVuc2lvbnMuY29udGFpbnMobmFtZSk7Cit9
CisKK2Jvb2wgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6ZW5zdXJlRXh0ZW5zaW9uRW5hYmxl
ZChjb25zdCBTdHJpbmcmIG5hbWUpCit7CisgICAgaW5pdGlhbGl6ZUV4dGVuc2lvbnMoKTsKKwor
ICAgIGlmIChtX2VuYWJsZWRFeHRlbnNpb25zLmNvbnRhaW5zKG5hbWUpKQorICAgICAgICByZXR1
cm4gdHJ1ZTsKKworICAgIGlmIChtX3JlcXVlc3RhYmxlRXh0ZW5zaW9ucy5jb250YWlucyhuYW1l
KSkgeworICAgICAgICBtX2ltcGwtPnJlcXVlc3RFeHRlbnNpb25DSFJPTUlVTShuYW1lLmFzY2lp
KCkuZGF0YSgpKTsKKyAgICAgICAgbV9lbmFibGVkRXh0ZW5zaW9ucy5jbGVhcigpOworICAgICAg
ICBtX3JlcXVlc3RhYmxlRXh0ZW5zaW9ucy5jbGVhcigpOworICAgICAgICBtX2luaXRpYWxpemVk
QXZhaWxhYmxlRXh0ZW5zaW9ucyA9IGZhbHNlOworICAgIH0KKworICAgIGluaXRpYWxpemVFeHRl
bnNpb25zKCk7CisgICAgcmV0dXJuIG1fZW5hYmxlZEV4dGVuc2lvbnMuY29udGFpbnMobmFtZSk7
CiB9CiAKIERFTEVHQVRFX1RPX0lNUExfNFIobWFwQnVmZmVyU3ViRGF0YUNIUk9NSVVNLCB1bnNp
Z25lZCwgaW50LCBpbnQsIHVuc2lnbmVkLCB2b2lkKikKSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9z
cmMvR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJv
bWl1bS9zcmMvR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbC5oCShyZXZpc2lvbiA3MzU2OSkKKysr
IFdlYktpdC9jaHJvbWl1bS9zcmMvR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0yNjUsNiArMjY1LDcgQEAgcHVibGljOgogICAgIC8vIEV4dGVuc2lvbnMzRCBz
dXBwb3J0LgogICAgIEV4dGVuc2lvbnMzRCogZ2V0RXh0ZW5zaW9ucygpOwogICAgIGJvb2wgc3Vw
cG9ydHNFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBuYW1lKTsKKyAgICBib29sIGVuc3VyZUV4dGVu
c2lvbkVuYWJsZWQoY29uc3QgU3RyaW5nJiBuYW1lKTsKIAogICAgIC8vIEVYVF90ZXh0dXJlX2Zv
cm1hdF9CR1JBODg4OAogICAgIGJvb2wgc3VwcG9ydHNCR1JBKCk7CkBAIC0yODUsNyArMjg2LDgg
QEAgcHJpdmF0ZToKICAgICBPd25QdHI8RXh0ZW5zaW9uczNEQ2hyb21pdW0+IG1fZXh0ZW5zaW9u
czsKICAgICBXZWJLaXQ6OldlYlZpZXdJbXBsKiBtX3dlYlZpZXdJbXBsOwogICAgIGJvb2wgbV9p
bml0aWFsaXplZEF2YWlsYWJsZUV4dGVuc2lvbnM7Ci0gICAgSGFzaFNldDxTdHJpbmc+IG1fYXZh
aWxhYmxlRXh0ZW5zaW9uczsKKyAgICBIYXNoU2V0PFN0cmluZz4gbV9lbmFibGVkRXh0ZW5zaW9u
czsKKyAgICBIYXNoU2V0PFN0cmluZz4gbV9yZXF1ZXN0YWJsZUV4dGVuc2lvbnM7CiAjaWYgVVNF
KEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogICAgIFJlZlB0cjxXZWJHTExheWVyQ2hyb21pdW0+
IG1fY29tcG9zaXRpbmdMYXllcjsKICNlbmRpZgpAQCAtMzAxLDYgKzMwMyw4IEBAIHByaXZhdGU6
CiAjaWYgUExBVEZPUk0oQ0cpCiAgICAgdW5zaWduZWQgY2hhciogbV9yZW5kZXJPdXRwdXQ7CiAj
ZW5kaWYKKworICAgIHZvaWQgaW5pdGlhbGl6ZUV4dGVuc2lvbnMoKTsKIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViR3JhcGhpY3NDb250
ZXh0M0REZWZhdWx0SW1wbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJHcmFwaGljc0NvbnRleHQzRERlZmF1bHRJbXBsLmNwcAkocmV2aXNpb24gNzM1NjkpCisrKyBX
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYkdyYXBoaWNzQ29udGV4dDNERGVmYXVsdEltcGwuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC02MjQsNiArNjI0LDE1IEBAIHZvaWQgV2ViR3JhcGhpY3NDb250ZXh0
M0REZWZhdWx0SW1wbDo6Y28KICAgICBnbEJpbmRGcmFtZWJ1ZmZlckVYVChHTF9GUkFNRUJVRkZF
Ul9FWFQsIG1fYm91bmRGQk8pOwogfQogCitXZWJTdHJpbmcgV2ViR3JhcGhpY3NDb250ZXh0M0RE
ZWZhdWx0SW1wbDo6Z2V0UmVxdWVzdGFibGVFeHRlbnNpb25zQ0hST01JVU0oKQoreworICAgIHJl
dHVybiBXZWJTdHJpbmcoKTsKK30KKwordm9pZCBXZWJHcmFwaGljc0NvbnRleHQzRERlZmF1bHRJ
bXBsOjpyZXF1ZXN0RXh0ZW5zaW9uQ0hST01JVU0oY29uc3QgY2hhciopCit7Cit9CisKIC8vIEhl
bHBlciBtYWNyb3MgdG8gcmVkdWNlIHRoZSBhbW91bnQgb2YgY29kZS4KIAogI2RlZmluZSBERUxF
R0FURV9UT19HTChuYW1lLCBnbG5hbWUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFwKSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViR3JhcGhpY3NDb250ZXh0
M0REZWZhdWx0SW1wbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViR3Jh
cGhpY3NDb250ZXh0M0REZWZhdWx0SW1wbC5oCShyZXZpc2lvbiA3MzU2OSkKKysrIFdlYktpdC9j
aHJvbWl1bS9zcmMvV2ViR3JhcGhpY3NDb250ZXh0M0REZWZhdWx0SW1wbC5oCSh3b3JraW5nIGNv
cHkpCkBAIC04NSw2ICs4NSw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgdW5tYXBUZXhT
dWJJbWFnZTJEQ0hST01JVU0oY29uc3Qgdm9pZCopOwogICAgIHZpcnR1YWwgdm9pZCBjb3B5VGV4
dHVyZVRvUGFyZW50VGV4dHVyZUNIUk9NSVVNKHVuc2lnbmVkIHRleHR1cmUsIHVuc2lnbmVkIHBh
cmVudFRleHR1cmUpOwogCisgICAgdmlydHVhbCBXZWJTdHJpbmcgZ2V0UmVxdWVzdGFibGVFeHRl
bnNpb25zQ0hST01JVU0oKTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdEV4dGVuc2lvbkNIUk9N
SVVNKGNvbnN0IGNoYXIqKTsKKwogICAgIHZpcnR1YWwgdm9pZCBhY3RpdmVUZXh0dXJlKHVuc2ln
bmVkIGxvbmcgdGV4dHVyZSk7CiAgICAgdmlydHVhbCB2b2lkIGF0dGFjaFNoYWRlcihXZWJHTElk
IHByb2dyYW0sIFdlYkdMSWQgc2hhZGVyKTsKICAgICB2aXJ0dWFsIHZvaWQgYmluZEF0dHJpYkxv
Y2F0aW9uKFdlYkdMSWQgcHJvZ3JhbSwgdW5zaWduZWQgbG9uZyBpbmRleCwgY29uc3QgY2hhciog
bmFtZSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>76142</attachid>
            <date>2010-12-09 17:20:11 -0800</date>
            <delta_ts>2010-12-09 18:30:08 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-40316-20101209172010.patch</filename>
            <type>text/plain</type>
            <size>91707</size>
            <attacher name="Kenneth Russell">kbr</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3MzY1NSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsODQgQEAKKzIwMTAtMTItMDkgIEtlbm5ldGggUnVzc2VsbCAgPGtickBnb29nbGUu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIElt
cGxlbWVudCBleHRlbnNpb24gZW50cnkgcG9pbnRzIGFuZCByZW1vdmUgRVhURU5TSU9OUyBlbnVt
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MDMxNgor
CisgICAgICAgIEltcGxlbWVudGVkIFdlYkdMUmVuZGVyaW5nQ29udGV4dCdzIGdldFN1cHBvcnRl
ZEV4dGVuc2lvbnMgYW5kCisgICAgICAgIGdldEV4dGVuc2lvbnMgZW50cnkgcG9pbnRzLCBhbmQs
IHRvIHZlcmlmeSB0aGVtLCBhZGRlZCBzdXBwb3J0IGZvcgorICAgICAgICB0aGUgZmlyc3Qgc3Bl
Y2lmaWVkIFdlYkdMIGV4dGVuc2lvbiwgT0VTX3RleHR1cmVfZmxvYXQuIFRoaXMKKyAgICAgICAg
ZXh0ZW5zaW9uIGlzIG5vdyBhZHZlcnRpc2VkIGluIHRoZSBDaHJvbWl1bSBhbmQgV2ViS2l0IHBv
cnRzIHdoZW4KKyAgICAgICAgdGhlIHVuZGVybHlpbmcgaGFyZHdhcmUgc3VwcG9ydHMgaXQuCisK
KyAgICAgICAgVGhlIG5ldyBPRVNfdGV4dHVyZV9mbG9hdCB0ZXN0IGluIHRoZSBXZWJHTCBjb25m
b3JtYW5jZSBzdWl0ZQorICAgICAgICB2ZXJpZmllcyB0aGUgYWxsb2NhdGlvbiBhbmQgcG9wdWxh
dGlvbiBvZiBmbG9hdGluZyBwb2ludCB0ZXh0dXJlcywKKyAgICAgICAgYW5kIHRoZWlyIHVzZSBh
cyByZW5kZXIgdGFyZ2V0cy4gSG93ZXZlciwgYmVjYXVzZSB0aGlzIGV4dGVuc2lvbgorICAgICAg
ICBpcyBvcHRpb25hbCwgaXQgaXMgbm90IGVhc2lseSB0ZXN0YWJsZSB3aXRoIGEgbGF5b3V0IHRl
c3Q7IHRoZXJlCisgICAgICAgIGlzIG9ubHkgb25lIHNldCBvZiBleHBlY3RhdGlvbnMgZm9yIGEg
Z2l2ZW4gdGVzdCwgYW5kIHR3byB3b3VsZCBiZQorICAgICAgICBuZWVkZWQsIG9uZSB3aGVuIHRo
ZSBleHRlbnNpb24gaXMgYXZhaWxhYmxlIGFuZCBvbmUgd2hlbiBpdCBpcyBub3QuCisKKyAgICAg
ICAgVGVzdGVkIHdpdGggdGhlIG9lcy10ZXh0dXJlLWZsb2F0Lmh0bWwgV2ViR0wgY29uZm9ybWFu
Y2UgdGVzdCBpbgorICAgICAgICBDaHJvbWl1bSBhbmQgV2ViS2l0IG9uIE1hYyBPUyBYIG9uIGhh
cmR3YXJlIHRoYXQgc3VwcG9ydHMgdGhlCisgICAgICAgIGV4dGVuc2lvbi4gQWxzbyB2ZXJpZmll
ZCB3aXRoIGEgY29uZmlndXJhdGlvbiB0aGF0IGRvZXMgbm90CisgICAgICAgIGFkdmVydGlzZSB0
aGUgZXh0ZW5zaW9uIHRoYXQgdGhpcyBzYW1lIHRlc3QgcGFzc2VzLgorCisgICAgICAgICogQ01h
a2VMaXN0cy50eHQ6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBH
TlVtYWtlZmlsZS5hbToKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29y
ZS5wcmk6CisgICAgICAgICogV2ViQ29yZS5wcm86CisgICAgICAgICogV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTV2ViR0xSZW5kZXJp
bmdDb250ZXh0Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRvSlMpOgorICAgICAgICAo
V2ViQ29yZTo6SlNXZWJHTFJlbmRlcmluZ0NvbnRleHQ6Om1hcmtDaGlsZHJlbik6CisgICAgICAg
IChXZWJDb3JlOjpKU1dlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0RXh0ZW5zaW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OkpTV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRTdXBwb3J0ZWRFeHRlbnNp
b25zKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhXZWJHTFJlbmRlcmluZ0NvbnRl
eHRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6dG9WOE9iamVjdCk6CisgICAgICAgIChX
ZWJDb3JlOjpWOFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0RXh0ZW5zaW9uQ2FsbGJhY2spOgor
ICAgICAgICAoV2ViQ29yZTo6VjhXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFN1cHBvcnRlZEV4
dGVuc2lvbnNDYWxsYmFjayk6CisgICAgICAgICogaHRtbC9jYW52YXMvT0VTVGV4dHVyZUZsb2F0
LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpPRVNUZXh0dXJlRmxvYXQ6Ok9FU1RleHR1
cmVGbG9hdCk6CisgICAgICAgIChXZWJDb3JlOjpPRVNUZXh0dXJlRmxvYXQ6On5PRVNUZXh0dXJl
RmxvYXQpOgorICAgICAgICAoV2ViQ29yZTo6T0VTVGV4dHVyZUZsb2F0OjpnZXROYW1lKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok9FU1RleHR1cmVGbG9hdDo6Y3JlYXRlKToKKyAgICAgICAgKiBodG1s
L2NhbnZhcy9PRVNUZXh0dXJlRmxvYXQuaDogQWRkZWQuCisgICAgICAgICogaHRtbC9jYW52YXMv
T0VTVGV4dHVyZUZsb2F0LmlkbDogQWRkZWQuCisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xF
eHRlbnNpb24uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldlYkdMRXh0ZW5zaW9uOjpX
ZWJHTEV4dGVuc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTEV4dGVuc2lvbjo6fldlYkdM
RXh0ZW5zaW9uKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTEV4dGVuc2lvbi5oOiBBZGRl
ZC4KKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRFeHRlbnNpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRTdXBwb3J0ZWRFeHRlbnNp
b25zKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6dmFsaWRhdGVU
ZXhGdW5jRm9ybWF0QW5kVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0Nv
bnRleHQ6OnZhbGlkYXRlVGV4RnVuY0RhdGEpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5k
ZXJpbmdDb250ZXh0OjpnZXROdW1iZXJPZkV4dGVuc2lvbnMpOgorICAgICAgICAoV2ViQ29yZTo6
V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRFeHRlbnNpb25OdW1iZXIpOgorICAgICAgICAqIGh0
bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5oOgorICAgICAgICAqIGh0bWwvY2FudmFz
L1dlYkdMUmVuZGVyaW5nQ29udGV4dC5pZGw6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
RXh0ZW5zaW9uczNELmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250
ZXh0M0QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmNvbXB1dGVG
b3JtYXRBbmRUeXBlUGFyYW1ldGVycyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQzRDo6ZXh0cmFjdFRleHR1cmVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OmRvVW5wYWNraW5n
QW5kUGFja2luZyk6CisgICAgICAgIChXZWJDb3JlOjpkb1BhY2tpbmcpOgorICAgICAgICAoV2Vi
Q29yZTo6ZG9GbG9hdGluZ1BvaW50UGFja2luZyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQzRDo6cGFja1BpeGVscyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NDb250ZXh0M0QuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9F
eHRlbnNpb25zM0RDaHJvbWl1bS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5n
bC9FeHRlbnNpb25zM0RPcGVuR0wuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uczNE
T3BlbkdMOjpzdXBwb3J0cyk6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zM0RPcGVuR0w6
OmVuc3VyZUVuYWJsZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRl
bnNpb25zM0RPcGVuR0wuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3Jh
cGhpY3NDb250ZXh0M0RPcGVuR0wuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0M0Q6OnRleEltYWdlMkQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3F0L0V4dGVu
c2lvbnMzRFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnMzRFF0OjplbnN1cmVF
bmFibGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9xdC9FeHRlbnNpb25zM0RRdC5o
OgorCiAyMDEwLTEyLTA5ICBEYW4gQmVybnN0ZWluICA8bWl0ekBhcHBsZS5jb20+CiAKICAgICAg
ICAgUmV2aWV3ZWQgYnkgRGF2ZSBIeWF0dC4KSW5kZXg6IFdlYkNvcmUvQ01ha2VMaXN0cy50eHQK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gNzM2NTUpCisr
KyBXZWJDb3JlL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0yODcsNiArMjg3LDcg
QEAgU0VUKFdlYkNvcmVfSURMX0ZJTEVTCiAgICAgaHRtbC9jYW52YXMvSW50MTZBcnJheS5pZGwK
ICAgICBodG1sL2NhbnZhcy9JbnQzMkFycmF5LmlkbAogICAgIGh0bWwvY2FudmFzL0ludDhBcnJh
eS5pZGwKKyAgICBodG1sL2NhbnZhcy9PRVNUZXh0dXJlRmxvYXQuaWRsCiAgICAgaHRtbC9jYW52
YXMvVWludDE2QXJyYXkuaWRsCiAgICAgaHRtbC9jYW52YXMvVWludDMyQXJyYXkuaWRsCiAgICAg
aHRtbC9jYW52YXMvVWludDhBcnJheS5pZGwKSW5kZXg6IFdlYkNvcmUvRGVyaXZlZFNvdXJjZXMu
bWFrZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UJKHJldmlzaW9u
IDczNjU1KQorKysgV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCSh3b3JraW5nIGNvcHkpCkBA
IC0zMTAsNiArMzEwLDcgQEAgRE9NX0NMQVNTRVMgPSBcCiAgICAgTm90YXRpb24gXAogICAgIE5v
dGlmaWNhdGlvbiBcCiAgICAgTm90aWZpY2F0aW9uQ2VudGVyIFwKKyAgICBPRVNUZXh0dXJlRmxv
YXQgXAogICAgIE92ZXJmbG93RXZlbnQgXAogICAgIFBhZ2VUcmFuc2l0aW9uRXZlbnQgXAogICAg
IFBlcmZvcm1hbmNlIFwKSW5kZXg6IFdlYkNvcmUvR05VbWFrZWZpbGUuYW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQkocmV2aXNpb24gNzM2NTUpCisrKyBXZWJDb3JlL0dO
VW1ha2VmaWxlLmFtCSh3b3JraW5nIGNvcHkpCkBAIC00NzMsNiArNDczLDggQEAgd2ViY29yZV9i
dWlsdF9zb3VyY2VzICs9IFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTTm90aWZpY2F0aW9u
Q2VudGVyLmggXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNOb3RpZmljYXRpb24uY3BwIFwK
IAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTTm90aWZpY2F0aW9uLmggXAorCURlcml2ZWRTb3Vy
Y2VzL1dlYkNvcmUvSlNPRVNUZXh0dXJlRmxvYXQuY3BwIFwKKwlEZXJpdmVkU291cmNlcy9XZWJD
b3JlL0pTT0VTVGV4dHVyZUZsb2F0LmggXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNPdmVy
Zmxvd0V2ZW50LmNwcCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU092ZXJmbG93RXZlbnQu
aCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1BhZ2VUcmFuc2l0aW9uRXZlbnQuY3BwIFwK
QEAgLTE1NDUsNiArMTU0Nyw4IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJV2ViQ29yZS9odG1s
L2NhbnZhcy9JbnQzMkFycmF5LmggXAogCVdlYkNvcmUvaHRtbC9jYW52YXMvSW50OEFycmF5LmNw
cCBcCiAJV2ViQ29yZS9odG1sL2NhbnZhcy9JbnQ4QXJyYXkuaCBcCisJV2ViQ29yZS9odG1sL2Nh
bnZhcy9PRVNUZXh0dXJlRmxvYXQuY3BwIFwKKwlXZWJDb3JlL2h0bWwvY2FudmFzL09FU1RleHR1
cmVGbG9hdC5oIFwKIAlXZWJDb3JlL2h0bWwvY2FudmFzL1VpbnQxNkFycmF5LmNwcCBcCiAJV2Vi
Q29yZS9odG1sL2NhbnZhcy9VaW50MTZBcnJheS5oIFwKIAlXZWJDb3JlL2h0bWwvY2FudmFzL1Vp
bnQzMkFycmF5LmNwcCBcCkluZGV4OiBXZWJDb3JlL1dlYkNvcmUuZ3lwaQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL1dlYkNvcmUuZ3lwaQkocmV2aXNpb24gNzM2NTUpCisrKyBXZWJDb3JlL1dlYkNv
cmUuZ3lwaQkod29ya2luZyBjb3B5KQpAQCAtMjEzLDYgKzIxMyw3IEBACiAgICAgICAgICAgICAn
aHRtbC9jYW52YXMvSW50MTZBcnJheS5pZGwnLAogICAgICAgICAgICAgJ2h0bWwvY2FudmFzL0lu
dDMyQXJyYXkuaWRsJywKICAgICAgICAgICAgICdodG1sL2NhbnZhcy9JbnQ4QXJyYXkuaWRsJywK
KyAgICAgICAgICAgICdodG1sL2NhbnZhcy9PRVNUZXh0dXJlRmxvYXQuaWRsJywKICAgICAgICAg
ICAgICdodG1sL2NhbnZhcy9VaW50MTZBcnJheS5pZGwnLAogICAgICAgICAgICAgJ2h0bWwvY2Fu
dmFzL1VpbnQzMkFycmF5LmlkbCcsCiAgICAgICAgICAgICAnaHRtbC9jYW52YXMvVWludDhBcnJh
eS5pZGwnLApAQCAtMTkxMSw2ICsxOTEyLDggQEAKICAgICAgICAgICAgICdodG1sL2NhbnZhcy9J
bnQ4QXJyYXkuY3BwJywKICAgICAgICAgICAgICdodG1sL2NhbnZhcy9JbnQ4QXJyYXkuaCcsCiAg
ICAgICAgICAgICAnaHRtbC9jYW52YXMvSW50ZWdyYWxUeXBlZEFycmF5QmFzZS5oJywKKyAgICAg
ICAgICAgICdodG1sL2NhbnZhcy9PRVNUZXh0dXJlRmxvYXQuY3BwJywKKyAgICAgICAgICAgICdo
dG1sL2NhbnZhcy9PRVNUZXh0dXJlRmxvYXQuaCcsCiAgICAgICAgICAgICAnaHRtbC9jYW52YXMv
VHlwZWRBcnJheUJhc2UuaCcsCiAgICAgICAgICAgICAnaHRtbC9jYW52YXMvVWludDE2QXJyYXku
Y3BwJywKICAgICAgICAgICAgICdodG1sL2NhbnZhcy9VaW50MTZBcnJheS5oJywKQEAgLTE5MjQs
NiArMTkyNyw4IEBACiAgICAgICAgICAgICAnaHRtbC9jYW52YXMvV2ViR0xDb250ZXh0QXR0cmli
dXRlcy5oJywKICAgICAgICAgICAgICdodG1sL2NhbnZhcy9XZWJHTENvbnRleHRFdmVudC5jcHAn
LAogICAgICAgICAgICAgJ2h0bWwvY2FudmFzL1dlYkdMQ29udGV4dEV2ZW50LmgnLAorICAgICAg
ICAgICAgJ2h0bWwvY2FudmFzL1dlYkdMRXh0ZW5zaW9uLmNwcCcsCisgICAgICAgICAgICAnaHRt
bC9jYW52YXMvV2ViR0xFeHRlbnNpb24uaCcsCiAgICAgICAgICAgICAnaHRtbC9jYW52YXMvV2Vi
R0xGcmFtZWJ1ZmZlci5jcHAnLAogICAgICAgICAgICAgJ2h0bWwvY2FudmFzL1dlYkdMRnJhbWVi
dWZmZXIuaCcsCiAgICAgICAgICAgICAnaHRtbC9jYW52YXMvV2ViR0xHZXRJbmZvLmNwcCcsCklu
ZGV4OiBXZWJDb3JlL1dlYkNvcmUucHJpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS5w
cmkJKHJldmlzaW9uIDczNjU1KQorKysgV2ViQ29yZS9XZWJDb3JlLnByaQkod29ya2luZyBjb3B5
KQpAQCAtMTkxLDYgKzE5MSw3IEBAIElETF9CSU5ESU5HUyArPSBcCiAgICAgaHRtbC9jYW52YXMv
Q2FudmFzUGF0dGVybi5pZGwgXAogICAgIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRl
eHQuaWRsIFwKICAgICBodG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaWRsIFwK
KyAgICBodG1sL2NhbnZhcy9PRVNUZXh0dXJlRmxvYXQuaWRsIFwKICAgICBodG1sL2NhbnZhcy9X
ZWJHTEFjdGl2ZUluZm8uaWRsIFwKICAgICBodG1sL2NhbnZhcy9XZWJHTEJ1ZmZlci5pZGwgXAog
ICAgIGh0bWwvY2FudmFzL1dlYkdMQ29udGV4dEF0dHJpYnV0ZXMuaWRsIFwKSW5kZXg6IFdlYkNv
cmUvV2ViQ29yZS5wcm8KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9XZWJDb3JlLnBybwkocmV2aXNp
b24gNzM2NTUpCisrKyBXZWJDb3JlL1dlYkNvcmUucHJvCSh3b3JraW5nIGNvcHkpCkBAIC0zNzI1
LDYgKzM3MjUsNyBAQCBIRUFERVJTICs9IFwKICAgICAgICAgaHRtbC9jYW52YXMvSW50OEFycmF5
LmggXAogICAgICAgICBodG1sL2NhbnZhcy9XZWJHTENvbnRleHRBdHRyaWJ1dGVzLmggXAogICAg
ICAgICBodG1sL2NhbnZhcy9GbG9hdDMyQXJyYXkuaCBcCisgICAgICAgIGh0bWwvY2FudmFzL1dl
YkdMRXh0ZW5zaW9uLmggXAogICAgICAgICBodG1sL2NhbnZhcy9XZWJHTEZyYW1lYnVmZmVyLmgg
XAogICAgICAgICBodG1sL2NhbnZhcy9XZWJHTEdldEluZm8uaCBcCiAgICAgICAgIGh0bWwvY2Fu
dmFzL0ludDMyQXJyYXkuaCBcCkBAIC0zNzMzLDYgKzM3MzQsNyBAQCBIRUFERVJTICs9IFwKICAg
ICAgICAgaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmggXAogICAgICAgICBodG1s
L2NhbnZhcy9XZWJHTFNoYWRlci5oIFwKICAgICAgICAgaHRtbC9jYW52YXMvSW50MTZBcnJheS5o
IFwKKyAgICAgICAgaHRtbC9jYW52YXMvT0VTVGV4dHVyZUZsb2F0LmggXAogICAgICAgICBodG1s
L2NhbnZhcy9XZWJHTFRleHR1cmUuaCBcCiAgICAgICAgIGh0bWwvY2FudmFzL1dlYkdMVW5pZm9y
bUxvY2F0aW9uLmggXAogICAgICAgICBodG1sL2NhbnZhcy9VaW50OEFycmF5LmggXApAQCAtMzc2
NSw2ICszNzY3LDcgQEAgU09VUkNFUyArPSBcCiAgICAgICAgIGh0bWwvY2FudmFzL0ludDhBcnJh
eS5jcHAgXAogICAgICAgICBodG1sL2NhbnZhcy9XZWJHTENvbnRleHRBdHRyaWJ1dGVzLmNwcCBc
CiAgICAgICAgIGh0bWwvY2FudmFzL0Zsb2F0MzJBcnJheS5jcHAgXAorICAgICAgICBodG1sL2Nh
bnZhcy9XZWJHTEV4dGVuc2lvbi5jcHAgXAogICAgICAgICBodG1sL2NhbnZhcy9XZWJHTEZyYW1l
YnVmZmVyLmNwcCBcCiAgICAgICAgIGh0bWwvY2FudmFzL1dlYkdMR2V0SW5mby5jcHAgXAogICAg
ICAgICBodG1sL2NhbnZhcy9JbnQzMkFycmF5LmNwcCBcCkBAIC0zNzczLDYgKzM3NzYsNyBAQCBT
T1VSQ0VTICs9IFwKICAgICAgICAgaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNw
cCBcCiAgICAgICAgIGh0bWwvY2FudmFzL1dlYkdMU2hhZGVyLmNwcCBcCiAgICAgICAgIGh0bWwv
Y2FudmFzL0ludDE2QXJyYXkuY3BwIFwKKyAgICAgICAgaHRtbC9jYW52YXMvT0VTVGV4dHVyZUZs
b2F0LmNwcCBcCiAgICAgICAgIGh0bWwvY2FudmFzL1dlYkdMVGV4dHVyZS5jcHAgXAogICAgICAg
ICBodG1sL2NhbnZhcy9XZWJHTFVuaWZvcm1Mb2NhdGlvbi5jcHAgXAogICAgICAgICBodG1sL2Nh
bnZhcy9VaW50OEFycmF5LmNwcCBcCkluZGV4OiBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagkocmV2aXNpb24gNzM2NTUpCisrKyBXZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTUyMSw2ICsxNTIxLDEyIEBA
CiAJCTZFNjdEMkE5MTI4MEU4QkQwMDg3NThGNyAvKiBFeHRlbnNpb25zM0QuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFNjdEMkE4MTI4MEU4QkQwMDg3
NThGNyAvKiBFeHRlbnNpb25zM0QuaCAqLzsgfTsKIAkJNkU5NkJCMUMxMTk4NkVFMjAwN0Q5NENE
IC8qIEludGVncmFsVHlwZWRBcnJheUJhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDZFOTZCQjFBMTE5ODZFRTEwMDdEOTRDRCAvKiBJbnRlZ3JhbFR5
cGVkQXJyYXlCYXNlLmggKi87IH07CiAJCTZFOTZCQjFEMTE5ODZFRTIwMDdEOTRDRCAvKiBUeXBl
ZEFycmF5QmFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNkU5NkJCMUIxMTk4NkVFMTAwN0Q5NENEIC8qIFR5cGVkQXJyYXlCYXNlLmggKi87IH07CisJ
CTZFQkYwRTQ4MTJBODkyNjEwMERCMTcwOSAvKiBPRVNUZXh0dXJlRmxvYXQuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkVCRjBFNDUxMkE4OTI2MTAw
REIxNzA5IC8qIE9FU1RleHR1cmVGbG9hdC5jcHAgKi87IH07CisJCTZFQkYwRTQ5MTJBODkyNjEw
MERCMTcwOSAvKiBPRVNUZXh0dXJlRmxvYXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDZFQkYwRTQ2MTJBODkyNjEwMERCMTcwOSAvKiBPRVNUZXh0dXJl
RmxvYXQuaCAqLzsgfTsKKwkJNkVCRjBFNTQxMkE4OTI5ODAwREIxNzA5IC8qIFdlYkdMRXh0ZW5z
aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZF
QkYwRTUyMTJBODkyOTgwMERCMTcwOSAvKiBXZWJHTEV4dGVuc2lvbi5jcHAgKi87IH07CisJCTZF
QkYwRTU1MTJBODkyOTgwMERCMTcwOSAvKiBXZWJHTEV4dGVuc2lvbi5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkVCRjBFNTMxMkE4OTI5ODAwREIxNzA5
IC8qIFdlYkdMRXh0ZW5zaW9uLmggKi87IH07CisJCTZFQkYwRTc2MTJBOTg2ODgwMERCMTcwOSAv
KiBKU09FU1RleHR1cmVGbG9hdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA2RUJGMEU3NDEyQTk4Njg4MDBEQjE3MDkgLyogSlNPRVNUZXh0dXJlRmxv
YXQuY3BwICovOyB9OworCQk2RUJGMEU3NzEyQTk4Njg4MDBEQjE3MDkgLyogSlNPRVNUZXh0dXJl
RmxvYXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZF
QkYwRTc1MTJBOTg2ODgwMERCMTcwOSAvKiBKU09FU1RleHR1cmVGbG9hdC5oICovOyB9OwogCQk2
RUU4QTc3MjEwRjgwM0YzMDA1QTRBMjQgLyogSlNXZWJHTENvbnRleHRBdHRyaWJ1dGVzLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFRThBNzcwMTBG
ODAzRjMwMDVBNEEyNCAvKiBKU1dlYkdMQ29udGV4dEF0dHJpYnV0ZXMuY3BwICovOyB9OwogCQk2
RUU4QTc3MzEwRjgwM0YzMDA1QTRBMjQgLyogSlNXZWJHTENvbnRleHRBdHRyaWJ1dGVzLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RUU4QTc3MTEwRjgw
M0YzMDA1QTRBMjQgLyogSlNXZWJHTENvbnRleHRBdHRyaWJ1dGVzLmggKi87IH07CiAJCTcyNjI2
RTAyMEVGMDIyRkUwMEEwN0UyMCAvKiBGb250RmFzdFBhdGguY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzI2MjZFMDEwRUYwMjJGRTAwQTA3RTIwIC8q
IEZvbnRGYXN0UGF0aC5jcHAgKi87IH07CkBAIC03ODgyLDYgKzc4ODgsMTMgQEAKIAkJNkU2N0Qy
QTgxMjgwRThCRDAwODc1OEY3IC8qIEV4dGVuc2lvbnMzRC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBFeHRlbnNpb25zM0QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNkU5NkJCMUExMTk4NkVFMTAwN0Q5NENEIC8qIEludGVncmFsVHlwZWRBcnJheUJhc2UuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gSW50ZWdyYWxUeXBlZEFycmF5QmFzZS5o
OyBwYXRoID0gY2FudmFzL0ludGVncmFsVHlwZWRBcnJheUJhc2UuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNkU5NkJCMUIxMTk4NkVFMTAwN0Q5NENEIC8qIFR5cGVkQXJyYXlCYXNl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFR5cGVkQXJyYXlCYXNlLmg7IHBh
dGggPSBjYW52YXMvVHlwZWRBcnJheUJhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJNkVCRjBFNDUxMkE4OTI2MTAwREIxNzA5IC8qIE9FU1RleHR1cmVGbG9hdC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBPRVNUZXh0dXJlRmxvYXQuY3BwOyBwYXRo
ID0gY2FudmFzL09FU1RleHR1cmVGbG9hdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTZFQkYwRTQ2MTJBODkyNjEwMERCMTcwOSAvKiBPRVNUZXh0dXJlRmxvYXQuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gT0VTVGV4dHVyZUZsb2F0Lmg7IHBhdGggPSBjYW52
YXMvT0VTVGV4dHVyZUZsb2F0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTZFQkYw
RTQ3MTJBODkyNjEwMERCMTcwOSAvKiBPRVNUZXh0dXJlRmxvYXQuaWRsICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4
dDsgbmFtZSA9IE9FU1RleHR1cmVGbG9hdC5pZGw7IHBhdGggPSBjYW52YXMvT0VTVGV4dHVyZUZs
b2F0LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNkVCRjBFNTIxMkE4OTI5ODAw
REIxNzA5IC8qIFdlYkdMRXh0ZW5zaW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgbmFtZSA9IFdlYkdMRXh0ZW5zaW9uLmNwcDsgcGF0aCA9IGNhbnZhcy9XZWJHTEV4dGVuc2lv
bi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTZFQkYwRTUzMTJBODkyOTgwMERC
MTcwOSAvKiBXZWJHTEV4dGVuc2lvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUg
PSBXZWJHTEV4dGVuc2lvbi5oOyBwYXRoID0gY2FudmFzL1dlYkdMRXh0ZW5zaW9uLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTZFQkYwRTc0MTJBOTg2ODgwMERCMTcwOSAvKiBKU09F
U1RleHR1cmVGbG9hdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBK
U09FU1RleHR1cmVGbG9hdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTZFQkYw
RTc1MTJBOTg2ODgwMERCMTcwOSAvKiBKU09FU1RleHR1cmVGbG9hdC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBKU09FU1RleHR1cmVGbG9hdC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk2RUU4QTc3MDEwRjgwM0YzMDA1QTRBMjQgLyogSlNXZWJHTENvbnRleHRB
dHRyaWJ1dGVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTV2Vi
R0xDb250ZXh0QXR0cmlidXRlcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZF
RThBNzcxMTBGODAzRjMwMDVBNEEyNCAvKiBKU1dlYkdMQ29udGV4dEF0dHJpYnV0ZXMuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNXZWJHTENvbnRleHRBdHRyaWJ1dGVzLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyNjI2RTAxMEVGMDIyRkUwMEEwN0UyMCAv
KiBGb250RmFzdFBhdGguY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
Rm9udEZhc3RQYXRoLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEzMDU1LDYg
KzEzMDY4LDkgQEAKIAkJCQk0OUM3QjlBQzEwNDJEMzJFMDAwOUQ0NDcgLyogSW50OEFycmF5Lmgg
Ki8sCiAJCQkJNDlDN0I5QUQxMDQyRDMyRTAwMDlENDQ3IC8qIEludDhBcnJheS5pZGwgKi8sCiAJ
CQkJNkU5NkJCMUExMTk4NkVFMTAwN0Q5NENEIC8qIEludGVncmFsVHlwZWRBcnJheUJhc2UuaCAq
LywKKwkJCQk2RUJGMEU0NTEyQTg5MjYxMDBEQjE3MDkgLyogT0VTVGV4dHVyZUZsb2F0LmNwcCAq
LywKKwkJCQk2RUJGMEU0NjEyQTg5MjYxMDBEQjE3MDkgLyogT0VTVGV4dHVyZUZsb2F0LmggKi8s
CisJCQkJNkVCRjBFNDcxMkE4OTI2MTAwREIxNzA5IC8qIE9FU1RleHR1cmVGbG9hdC5pZGwgKi8s
CiAJCQkJNkU5NkJCMUIxMTk4NkVFMTAwN0Q5NENEIC8qIFR5cGVkQXJyYXlCYXNlLmggKi8sCiAJ
CQkJNDlFRUNEREMxMDUwM0MyMzAwMDk5RkFCIC8qIFVpbnQxNkFycmF5LmNwcCAqLywKIAkJCQk0
OUVFQ0RERDEwNTAzQzI0MDAwOTlGQUIgLyogVWludDE2QXJyYXkuaCAqLywKQEAgLTEzMDc2LDYg
KzEzMDkyLDggQEAKIAkJCQk5M0Y2RjFFQTEyN0Y3MEIxMDA1NUNCMDYgLyogV2ViR0xDb250ZXh0
RXZlbnQuY3BwICovLAogCQkJCTkzRjZGMUVCMTI3RjcwQjEwMDU1Q0IwNiAvKiBXZWJHTENvbnRl
eHRFdmVudC5oICovLAogCQkJCTkzRjZGMUVDMTI3RjcwQjEwMDU1Q0IwNiAvKiBXZWJHTENvbnRl
eHRFdmVudC5pZGwgKi8sCisJCQkJNkVCRjBFNTIxMkE4OTI5ODAwREIxNzA5IC8qIFdlYkdMRXh0
ZW5zaW9uLmNwcCAqLywKKwkJCQk2RUJGMEU1MzEyQTg5Mjk4MDBEQjE3MDkgLyogV2ViR0xFeHRl
bnNpb24uaCAqLywKIAkJCQk0OUM3QjlBRTEwNDJEMzJFMDAwOUQ0NDcgLyogV2ViR0xGcmFtZWJ1
ZmZlci5jcHAgKi8sCiAJCQkJNDlDN0I5QUYxMDQyRDMyRTAwMDlENDQ3IC8qIFdlYkdMRnJhbWVi
dWZmZXIuaCAqLywKIAkJCQk0OUM3QjlCMDEwNDJEMzJFMDAwOUQ0NDcgLyogV2ViR0xGcmFtZWJ1
ZmZlci5pZGwgKi8sCkBAIC0xNTkzMiw2ICsxNTk1MCw4IEBACiAJCQkJNDlDN0I5ODMxMDQyRDJE
MzAwMDlENDQ3IC8qIEpTSW50OEFycmF5LmggKi8sCiAJCQkJRTQ0NjE0MTAwQ0Q2ODI2OTAwRkFE
QTc1IC8qIEpTTWVkaWFFcnJvci5jcHAgKi8sCiAJCQkJRTQ0NjE0MTEwQ0Q2ODI2OTAwRkFEQTc1
IC8qIEpTTWVkaWFFcnJvci5oICovLAorCQkJCTZFQkYwRTc0MTJBOTg2ODgwMERCMTcwOSAvKiBK
U09FU1RleHR1cmVGbG9hdC5jcHAgKi8sCisJCQkJNkVCRjBFNzUxMkE5ODY4ODAwREIxNzA5IC8q
IEpTT0VTVGV4dHVyZUZsb2F0LmggKi8sCiAJCQkJQkNFRjQ1RjMwRTY4N0I1QzAwMUMxMjg3IC8q
IEpTVGV4dE1ldHJpY3MuY3BwICovLAogCQkJCUJDRUY0NUY0MEU2ODdCNUMwMDFDMTI4NyAvKiBK
U1RleHRNZXRyaWNzLmggKi8sCiAJCQkJRTQ0NjE0MTIwQ0Q2ODI2OTAwRkFEQTc1IC8qIEpTVGlt
ZVJhbmdlcy5jcHAgKi8sCkBAIC0yMjE2MCw2ICsyMjE4MCw5IEBACiAJCQkJRkRBMTVFQ0ExMkIw
M0Y1MDAwM0E1ODNBIC8qIEpTUmVhbHRpbWVBbmFseXNlck5vZGUuaCBpbiBIZWFkZXJzICovLAog
CQkJCUZEQTE1RUNFMTJCMDNGNjEwMDNBNTgzQSAvKiBKU0phdmFTY3JpcHRBdWRpb05vZGUuaCBp
biBIZWFkZXJzICovLAogCQkJCUZEQTE1RUQyMTJCMDNGOTQwMDNBNTgzQSAvKiBKU0RlbGF5Tm9k
ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNkVCRjBFNDkxMkE4OTI2MTAwREIxNzA5IC8qIE9FU1Rl
eHR1cmVGbG9hdC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNkVCRjBFNTUxMkE4OTI5ODAwREIxNzA5
IC8qIFdlYkdMRXh0ZW5zaW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQk2RUJGMEU3NzEyQTk4Njg4
MDBEQjE3MDkgLyogSlNPRVNUZXh0dXJlRmxvYXQuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJ
CXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMjQ4MjYs
NiArMjQ4NDksOSBAQAogCQkJCUZEQTE1RUQxMTJCMDNGOTQwMDNBNTgzQSAvKiBKU0RlbGF5Tm9k
ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0OTRCQzQwRDEyQUVERDlFMDA3NDNCRDIgLyogVHJh
bnNmb3JtYXRpb25NYXRyaXhDQS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzUxMTU2RTEyQjE3
NDlDMDBDOTY3NTQgLyogU2Nyb2xsQW5pbWF0b3JNYWMubW0gaW4gU291cmNlcyAqLywKKwkJCQk2
RUJGMEU0ODEyQTg5MjYxMDBEQjE3MDkgLyogT0VTVGV4dHVyZUZsb2F0LmNwcCBpbiBTb3VyY2Vz
ICovLAorCQkJCTZFQkYwRTU0MTJBODkyOTgwMERCMTcwOSAvKiBXZWJHTEV4dGVuc2lvbi5jcHAg
aW4gU291cmNlcyAqLywKKwkJCQk2RUJGMEU3NjEyQTk4Njg4MDBEQjE3MDkgLyogSlNPRVNUZXh0
dXJlRmxvYXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1l
bnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pzL0pT
V2ViR0xSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTV2ViR0xSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcAkocmV2aXNpb24gNzM2
NTUpCisrKyBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2ViR0xSZW5kZXJpbmdDb250ZXh0Q3VzdG9t
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgIkpTSFRNTENh
bnZhc0VsZW1lbnQuaCIKICNpbmNsdWRlICJKU0hUTUxJbWFnZUVsZW1lbnQuaCIKICNpbmNsdWRl
ICJKU0ltYWdlRGF0YS5oIgorI2luY2x1ZGUgIkpTT0VTVGV4dHVyZUZsb2F0LmgiCiAjaW5jbHVk
ZSAiSlNXZWJHTEJ1ZmZlci5oIgogI2luY2x1ZGUgIkpTRmxvYXQzMkFycmF5LmgiCiAjaW5jbHVk
ZSAiSlNXZWJHTEZyYW1lYnVmZmVyLmgiCkBAIC00Nyw4ICs0OCwxMCBAQAogI2luY2x1ZGUgIkpT
VWludDhBcnJheS5oIgogI2luY2x1ZGUgIkpTV2ViS2l0Q1NTTWF0cml4LmgiCiAjaW5jbHVkZSAi
Tm90SW1wbGVtZW50ZWQuaCIKKyNpbmNsdWRlICJPRVNUZXh0dXJlRmxvYXQuaCIKICNpbmNsdWRl
ICJXZWJHTEJ1ZmZlci5oIgogI2luY2x1ZGUgIkZsb2F0MzJBcnJheS5oIgorI2luY2x1ZGUgIldl
YkdMRXh0ZW5zaW9uLmgiCiAjaW5jbHVkZSAiV2ViR0xGcmFtZWJ1ZmZlci5oIgogI2luY2x1ZGUg
IldlYkdMR2V0SW5mby5oIgogI2luY2x1ZGUgIkludDMyQXJyYXkuaCIKQEAgLTE2MSw2ICsxNjQs
MjcgQEAgZW51bSBXaGljaFByb2dyYW1DYWxsIHsKICAgICBrUHJvZ3JhbVBhcmFtZXRlciwga1Vu
aWZvcm0KIH07CiAKK3N0YXRpYyBKU1ZhbHVlIHRvSlMoRXhlY1N0YXRlKiBleGVjLCBKU0RPTUds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBXZWJHTEV4dGVuc2lvbiogZXh0ZW5zaW9uKQorewor
ICAgIGlmICghZXh0ZW5zaW9uKQorICAgICAgICByZXR1cm4ganNOdWxsKCk7CisgICAgc3dpdGNo
IChleHRlbnNpb24tPmdldE5hbWUoKSkgeworICAgIGNhc2UgV2ViR0xFeHRlbnNpb246Ok9FU1Rl
eHR1cmVGbG9hdE5hbWU6CisgICAgICAgIHJldHVybiB0b0pTKGV4ZWMsIGdsb2JhbE9iamVjdCwg
c3RhdGljX2Nhc3Q8T0VTVGV4dHVyZUZsb2F0Kj4oZXh0ZW5zaW9uKSk7CisgICAgfQorICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBqc051bGwoKTsKK30KKwordm9pZCBKU1dl
YkdMUmVuZGVyaW5nQ29udGV4dDo6bWFya0NoaWxkcmVuKE1hcmtTdGFjayYgbWFya1N0YWNrKQor
eworICAgIEJhc2U6Om1hcmtDaGlsZHJlbihtYXJrU3RhY2spOworCisgICAgV2ViR0xSZW5kZXJp
bmdDb250ZXh0KiBjb250ZXh0ID0gc3RhdGljX2Nhc3Q8V2ViR0xSZW5kZXJpbmdDb250ZXh0Kj4o
aW1wbCgpKTsKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IGNvbnRleHQtPmdldE51bWJlck9mRXh0
ZW5zaW9ucygpOyArK2kpCisgICAgICAgIG1hcmtET01PYmplY3RXcmFwcGVyKG1hcmtTdGFjaywg
KkhlYXA6OmhlYXAodGhpcyktPmdsb2JhbERhdGEoKSwgY29udGV4dC0+Z2V0RXh0ZW5zaW9uTnVt
YmVyKGkpKTsKK30KKwogSlNWYWx1ZSBKU1dlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0QXR0YWNo
ZWRTaGFkZXJzKEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3Vu
dCgpIDwgMSkKQEAgLTE4Niw2ICsyMTAsMTkgQEAgSlNWYWx1ZSBKU1dlYkdMUmVuZGVyaW5nQ29u
dGV4dDo6Z2V0QXR0YQogICAgIHJldHVybiBjb25zdHJ1Y3RBcnJheShleGVjLCBsaXN0KTsKIH0K
IAorSlNWYWx1ZSBKU1dlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0RXh0ZW5zaW9uKEV4ZWNTdGF0
ZSogZXhlYykKK3sKKyAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpIDwgMSkKKyAgICAgICAg
cmV0dXJuIHRocm93U3ludGF4RXJyb3IoZXhlYyk7CisKKyAgICBXZWJHTFJlbmRlcmluZ0NvbnRl
eHQqIGNvbnRleHQgPSBzdGF0aWNfY2FzdDxXZWJHTFJlbmRlcmluZ0NvbnRleHQqPihpbXBsKCkp
OworICAgIGNvbnN0IFN0cmluZyYgbmFtZSA9IHVzdHJpbmdUb1N0cmluZyhleGVjLT5hcmd1bWVu
dCgwKS50b1N0cmluZyhleGVjKSk7CisgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAg
ICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKyAgICBXZWJHTEV4dGVuc2lvbiogZXh0ZW5zaW9u
ID0gY29udGV4dC0+Z2V0RXh0ZW5zaW9uKG5hbWUpOworICAgIHJldHVybiB0b0pTKGV4ZWMsIGds
b2JhbE9iamVjdCgpLCBleHRlbnNpb24pOworfQorCiBKU1ZhbHVlIEpTV2ViR0xSZW5kZXJpbmdD
b250ZXh0OjpnZXRCdWZmZXJQYXJhbWV0ZXIoRXhlY1N0YXRlKiBleGVjKQogewogICAgIHJldHVy
biBnZXRPYmplY3RQYXJhbWV0ZXIodGhpcywgZXhlYywga0J1ZmZlcik7CkBAIC0yODAsNiArMzE3
LDE2IEBAIEpTVmFsdWUgSlNXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFNoYWQKICAgICByZXR1
cm4gdG9KUyhleGVjLCBnbG9iYWxPYmplY3QoKSwgaW5mbyk7CiB9CiAKK0pTVmFsdWUgSlNXZWJH
TFJlbmRlcmluZ0NvbnRleHQ6OmdldFN1cHBvcnRlZEV4dGVuc2lvbnMoRXhlY1N0YXRlKiBleGVj
KQoreworICAgIFdlYkdMUmVuZGVyaW5nQ29udGV4dCogY29udGV4dCA9IHN0YXRpY19jYXN0PFdl
YkdMUmVuZGVyaW5nQ29udGV4dCo+KGltcGwoKSk7CisgICAgVmVjdG9yPFN0cmluZz4gdmFsdWUg
PSBjb250ZXh0LT5nZXRTdXBwb3J0ZWRFeHRlbnNpb25zKCk7CisgICAgTWFya2VkQXJndW1lbnRC
dWZmZXIgbGlzdDsKKyAgICBmb3IgKHNpemVfdCBpaSA9IDA7IGlpIDwgdmFsdWUuc2l6ZSgpOyAr
K2lpKQorICAgICAgICBsaXN0LmFwcGVuZChqc1N0cmluZyhleGVjLCB2YWx1ZVtpaV0pKTsKKyAg
ICByZXR1cm4gY29uc3RydWN0QXJyYXkoZXhlYywgbGlzdCk7Cit9CisKIEpTVmFsdWUgSlNXZWJH
TFJlbmRlcmluZ0NvbnRleHQ6OmdldFRleFBhcmFtZXRlcihFeGVjU3RhdGUqIGV4ZWMpCiB7CiAg
ICAgcmV0dXJuIGdldE9iamVjdFBhcmFtZXRlcih0aGlzLCBleGVjLCBrVGV4dHVyZSk7CkluZGV4
OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFdlYkdMUmVuZGVyaW5nQ29udGV4dEN1c3Rv
bS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhXZWJHTFJl
bmRlcmluZ0NvbnRleHRDdXN0b20uY3BwCShyZXZpc2lvbiA3MzY1NSkKKysrIFdlYkNvcmUvYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4V2ViR0xSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNDEsNiArNDEsNyBAQAogI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CiAK
ICNpbmNsdWRlICJWOEJpbmRpbmcuaCIKKyNpbmNsdWRlICJWOEJpbmRpbmdNYWNyb3MuaCIKICNp
bmNsdWRlICJWOEFycmF5QnVmZmVyVmlldy5oIgogI2luY2x1ZGUgIlY4V2ViR0xCdWZmZXIuaCIK
ICNpbmNsdWRlICJWOEludDhBcnJheS5oIgpAQCAtNjAsNiArNjEsNyBAQAogI2luY2x1ZGUgIlY4
SFRNTEltYWdlRWxlbWVudC5oIgogI2luY2x1ZGUgIlY4SFRNTFZpZGVvRWxlbWVudC5oIgogI2lu
Y2x1ZGUgIlY4SW1hZ2VEYXRhLmgiCisjaW5jbHVkZSAiVjhPRVNUZXh0dXJlRmxvYXQuaCIKICNp
bmNsdWRlICJWOFByb3h5LmgiCiAjaW5jbHVkZSAiV2ViR0xSZW5kZXJpbmdDb250ZXh0LmgiCiAK
QEAgLTE1MSw2ICsxNTMsMjEgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4T2Jq
ZWN0KAogICAgIH0KIH0KIAorc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4T2JqZWN0
KFdlYkdMRXh0ZW5zaW9uKiBleHRlbnNpb24sIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY29udGV4
dE9iamVjdCkKK3sKKyAgICBpZiAoIWV4dGVuc2lvbikKKyAgICAgICAgcmV0dXJuIHY4OjpOdWxs
KCk7CisgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGV4dGVuc2lvbk9iamVjdDsKKyAgICBzd2l0
Y2ggKGV4dGVuc2lvbi0+Z2V0TmFtZSgpKSB7CisgICAgY2FzZSBXZWJHTEV4dGVuc2lvbjo6T0VT
VGV4dHVyZUZsb2F0TmFtZToKKyAgICAgICAgZXh0ZW5zaW9uT2JqZWN0ID0gdG9WOChzdGF0aWNf
Y2FzdDxPRVNUZXh0dXJlRmxvYXQqPihleHRlbnNpb24pKTsKKyAgICAgICAgYnJlYWs7CisgICAg
fQorICAgIEFTU0VSVCghZXh0ZW5zaW9uT2JqZWN0LklzRW1wdHkoKSk7CisgICAgVjhET01XcmFw
cGVyOjpzZXRIaWRkZW5SZWZlcmVuY2UoY29udGV4dE9iamVjdCwgZXh0ZW5zaW9uT2JqZWN0KTsK
KyAgICByZXR1cm4gZXh0ZW5zaW9uT2JqZWN0OworfQorCiBlbnVtIE9iamVjdFR5cGUgewogICAg
IGtCdWZmZXIsIGtSZW5kZXJidWZmZXIsIGtUZXh0dXJlLCBrVmVydGV4QXR0cmliCiB9OwpAQCAt
MjQzLDYgKzI2MCwxOSBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhXZWJHTFJlbmRlcmluZ0Nv
CiAgICAgcmV0dXJuIGdldE9iamVjdFBhcmFtZXRlcihhcmdzLCBrQnVmZmVyKTsKIH0KIAordjg6
OkhhbmRsZTx2ODo6VmFsdWU+IFY4V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRFeHRlbnNpb25D
YWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQoreworICAgIElOQ19TVEFUUygiRE9N
LldlYkdMUmVuZGVyaW5nQ29udGV4dC5nZXRFeHRlbnNpb25DYWxsYmFjaygpIik7CisgICAgV2Vi
R0xSZW5kZXJpbmdDb250ZXh0KiBpbXAgPSBWOFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dG9OYXRp
dmUoYXJncy5Ib2xkZXIoKSk7CisgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPCAxKSB7CisgICAgICAg
IFY4UHJveHk6OnNldERPTUV4Y2VwdGlvbihTWU5UQVhfRVJSKTsKKyAgICAgICAgcmV0dXJuIG5v
dEhhbmRsZWRCeUludGVyY2VwdG9yKCk7CisgICAgfQorICAgIFNUUklOR19UT19WOFBBUkFNRVRF
Ul9FWENFUFRJT05fQkxPQ0soVjhQYXJhbWV0ZXI8PiwgbmFtZSwgYXJnc1swXSk7CisgICAgV2Vi
R0xFeHRlbnNpb24qIGV4dGVuc2lvbiA9IGltcC0+Z2V0RXh0ZW5zaW9uKG5hbWUpOworICAgIHJl
dHVybiB0b1Y4T2JqZWN0KGV4dGVuc2lvbiwgYXJncy5Ib2xkZXIoKSk7Cit9CisKIHY4OjpIYW5k
bGU8djg6OlZhbHVlPiBWOFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0RnJhbWVidWZmZXJBdHRh
Y2htZW50UGFyYW1ldGVyQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAg
ICBJTkNfU1RBVFMoIkRPTS5XZWJHTFJlbmRlcmluZ0NvbnRleHQuZ2V0RnJhbWVidWZmZXJBdHRh
Y2htZW50UGFyYW1ldGVyKCkiKTsKQEAgLTM0MSw2ICszNzEsMTcgQEAgdjg6OkhhbmRsZTx2ODo6
VmFsdWU+IFY4V2ViR0xSZW5kZXJpbmdDbwogICAgIHJldHVybiB0b1Y4T2JqZWN0KGluZm8pOwog
fQogCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFN1
cHBvcnRlZEV4dGVuc2lvbnNDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQorewor
ICAgIElOQ19TVEFUUygiRE9NLldlYkdMUmVuZGVyaW5nQ29udGV4dC5nZXRTdXBwb3J0ZWRFeHRl
bnNpb25zQ2FsbGJhY2soKSIpOworICAgIFdlYkdMUmVuZGVyaW5nQ29udGV4dCogaW1wID0gVjhX
ZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOworICAgIFZlY3Rv
cjxTdHJpbmc+IHZhbHVlID0gaW1wLT5nZXRTdXBwb3J0ZWRFeHRlbnNpb25zKCk7CisgICAgdjg6
OkxvY2FsPHY4OjpBcnJheT4gYXJyYXkgPSB2ODo6QXJyYXk6Ok5ldyh2YWx1ZS5zaXplKCkpOwor
ICAgIGZvciAoc2l6ZV90IGlpID0gMDsgaWkgPCB2YWx1ZS5zaXplKCk7ICsraWkpCisgICAgICAg
IGFycmF5LT5TZXQodjg6OkludGVnZXI6Ok5ldyhpaSksIHY4OjpTdHJpbmc6Ok5ldyhmcm9tV2Vi
Q29yZVN0cmluZyh2YWx1ZVtpaV0pLCB2YWx1ZVtpaV0ubGVuZ3RoKCkpKTsKKyAgICByZXR1cm4g
YXJyYXk7Cit9CisKIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFdlYkdMUmVuZGVyaW5nQ29udGV4
dDo6Z2V0VGV4UGFyYW1ldGVyQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsK
ICAgICBJTkNfU1RBVFMoIkRPTS5XZWJHTFJlbmRlcmluZ0NvbnRleHQuZ2V0VGV4UGFyYW1ldGVy
KCkiKTsKSW5kZXg6IFdlYkNvcmUvaHRtbC9jYW52YXMvT0VTVGV4dHVyZUZsb2F0LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvY2FudmFzL09FU1RleHR1cmVGbG9hdC5jcHAJKHJldmlz
aW9uIDApCisrKyBXZWJDb3JlL2h0bWwvY2FudmFzL09FU1RleHR1cmVGbG9hdC5jcHAJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsNTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJ
UyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNp
ZiBFTkFCTEUoM0RfQ0FOVkFTKQorCisjaW5jbHVkZSAiT0VTVGV4dHVyZUZsb2F0LmgiCisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworT0VTVGV4dHVyZUZsb2F0OjpPRVNUZXh0dXJlRmxvYXQoKSA6
IFdlYkdMRXh0ZW5zaW9uKCkKK3sKK30KKworT0VTVGV4dHVyZUZsb2F0Ojp+T0VTVGV4dHVyZUZs
b2F0KCkKK3sKK30KKworV2ViR0xFeHRlbnNpb246OkV4dGVuc2lvbk5hbWUgT0VTVGV4dHVyZUZs
b2F0OjpnZXROYW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT0VTVGV4dHVyZUZsb2F0TmFtZTsK
K30KKworUGFzc1JlZlB0cjxPRVNUZXh0dXJlRmxvYXQ+IE9FU1RleHR1cmVGbG9hdDo6Y3JlYXRl
KCkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IE9FU1RleHR1cmVGbG9hdCk7Cit9CisKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRSgzRF9DQU5WQVMpCkluZGV4
OiBXZWJDb3JlL2h0bWwvY2FudmFzL09FU1RleHR1cmVGbG9hdC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvaHRtbC9jYW52YXMvT0VTVGV4dHVyZUZsb2F0LmgJKHJldmlzaW9uIDApCisrKyBXZWJD
b3JlL2h0bWwvY2FudmFzL09FU1RleHR1cmVGbG9hdC5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDQ4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAq
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2lmbmRlZiBPRVNUZXh0dXJlRmxvYXRfaAorI2RlZmluZSBPRVNUZXh0
dXJlRmxvYXRfaAorCisjaW5jbHVkZSAiV2ViR0xFeHRlbnNpb24uaCIKKyNpbmNsdWRlIDx3dGYv
UGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworY2xhc3MgT0VTVGV4dHVyZUZsb2F0IDogcHVibGljIFdlYkdMRXh0ZW5zaW9u
IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxPRVNUZXh0dXJlRmxvYXQ+IGNyZWF0
ZSgpOworCisgICAgdmlydHVhbCB+T0VTVGV4dHVyZUZsb2F0KCk7CisgICAgdmlydHVhbCBFeHRl
bnNpb25OYW1lIGdldE5hbWUoKSBjb25zdDsKKworcHJpdmF0ZToKKyAgICBPRVNUZXh0dXJlRmxv
YXQoKTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIE9FU1RleHR1
cmVGbG9hdF9oCkluZGV4OiBXZWJDb3JlL2h0bWwvY2FudmFzL09FU1RleHR1cmVGbG9hdC5pZGwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL2NhbnZhcy9PRVNUZXh0dXJlRmxvYXQuaWRsCShy
ZXZpc2lvbiAwKQorKysgV2ViQ29yZS9odG1sL2NhbnZhcy9PRVNUZXh0dXJlRmxvYXQuaWRsCShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDI5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAi
QVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAq
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworbW9kdWxlIGh0bWwgeworICAgIGlu
dGVyZmFjZSBbQ29uZGl0aW9uYWw9M0RfQ0FOVkFTLCBPbWl0Q29uc3RydWN0b3JdIE9FU1RleHR1
cmVGbG9hdCB7CisgICAgfTsKK30KSW5kZXg6IFdlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xFeHRl
bnNpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xFeHRlbnNp
b24uY3BwCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEV4dGVuc2lv
bi5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJ
QlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisKKyNpZiBFTkFCTEUoM0RfQ0FOVkFTKQorCisjaW5jbHVkZSAiV2ViR0xFeHRlbnNp
b24uaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitXZWJHTEV4dGVuc2lvbjo6V2ViR0xFeHRl
bnNpb24oKQoreworfQorCitXZWJHTEV4dGVuc2lvbjo6fldlYkdMRXh0ZW5zaW9uKCkKK3sKK30K
KworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKDNEX0NBTlZBUykK
SW5kZXg6IFdlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xFeHRlbnNpb24uaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRXh0ZW5zaW9uLmgJKHJldmlzaW9uIDApCisrKyBX
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRXh0ZW5zaW9uLmgJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsNDkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQor
ICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICog
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYkdMRXh0ZW5zaW9uX2gKKyNkZWZpbmUgV2ViR0xF
eHRlbnNpb25faAorCisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitjbGFzcyBXZWJHTEV4dGVuc2lvbiA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYkdM
RXh0ZW5zaW9uPiB7CitwdWJsaWM6CisgICAgLy8gRXh0ZW5zaW9uIG5hbWVzIGFyZSBuZWVkZWQg
dG8gcHJvcGVybHkgd3JhcCBpbnN0YW5jZXMgaW4gSmF2YVNjcmlwdCBvYmplY3RzLgorICAgIGVu
dW0gRXh0ZW5zaW9uTmFtZSB7CisgICAgICAgIE9FU1RleHR1cmVGbG9hdE5hbWUKKyAgICB9Owor
CisgICAgdmlydHVhbCB+V2ViR0xFeHRlbnNpb24oKTsKKyAgICB2aXJ0dWFsIEV4dGVuc2lvbk5h
bWUgZ2V0TmFtZSgpIGNvbnN0ID0gMDsKKworcHJvdGVjdGVkOgorICAgIFdlYkdMRXh0ZW5zaW9u
KCk7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBXZWJHTEV4dGVu
c2lvbl9oCkluZGV4OiBXZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRl
eHQuY3BwCShyZXZpc2lvbiA3MzY1NSkKKysrIFdlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5k
ZXJpbmdDb250ZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDMsNiArNDMsNyBAQAogI2luY2x1
ZGUgIkltYWdlRGF0YS5oIgogI2luY2x1ZGUgIkludFNpemUuaCIKICNpbmNsdWRlICJOb3RJbXBs
ZW1lbnRlZC5oIgorI2luY2x1ZGUgIk9FU1RleHR1cmVGbG9hdC5oIgogI2luY2x1ZGUgIlJlbmRl
ckJveC5oIgogI2luY2x1ZGUgIlJlbmRlckxheWVyLmgiCiAjaW5jbHVkZSAiVWludDE2QXJyYXku
aCIKQEAgLTE0NjIsNiArMTQ2MywyMCBAQCB1bnNpZ25lZCBsb25nIFdlYkdMUmVuZGVyaW5nQ29u
dGV4dDo6Z2V0CiAgICAgcmV0dXJuIG1fY29udGV4dC0+Z2V0RXJyb3IoKTsKIH0KIAorV2ViR0xF
eHRlbnNpb24qIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0RXh0ZW5zaW9uKGNvbnN0IFN0cmlu
ZyYgbmFtZSkKK3sKKyAgICBpZiAobmFtZSA9PSAiT0VTX3RleHR1cmVfZmxvYXQiCisgICAgICAg
ICYmIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLT5zdXBwb3J0cygiR0xfT0VTX3RleHR1cmVf
ZmxvYXQiKSkgeworICAgICAgICBpZiAoIW1fb2VzVGV4dHVyZUZsb2F0KSB7CisgICAgICAgICAg
ICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS0+ZW5zdXJlRW5hYmxlZCgiR0xfT0VTX3RleHR1
cmVfZmxvYXQiKTsKKyAgICAgICAgICAgIG1fb2VzVGV4dHVyZUZsb2F0ID0gT0VTVGV4dHVyZUZs
b2F0OjpjcmVhdGUoKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gbV9vZXNUZXh0dXJlRmxv
YXQuZ2V0KCk7CisgICAgfQorCisgICAgcmV0dXJuIDA7Cit9CisKIFdlYkdMR2V0SW5mbyBXZWJH
TFJlbmRlcmluZ0NvbnRleHQ6OmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcih1bnNp
Z25lZCBsb25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBhdHRhY2htZW50LCB1bnNpZ25lZCBsb25n
IHBuYW1lLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBVTlVTRURfUEFSQU0oZWMpOwpAQCAt
MTg1Nyw2ICsxODcyLDE0IEBAIFN0cmluZyBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFNoYWRl
clMKICAgICByZXR1cm4gbV9jb250ZXh0LT5nZXRTaGFkZXJTb3VyY2Uob2JqZWN0T3JaZXJvKHNo
YWRlcikpOwogfQogCitWZWN0b3I8U3RyaW5nPiBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFN1
cHBvcnRlZEV4dGVuc2lvbnMoKQoreworICAgIFZlY3RvcjxTdHJpbmc+IHJlc3VsdDsKKyAgICBp
ZiAobV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCktPnN1cHBvcnRzKCJHTF9PRVNfdGV4dHVyZV9m
bG9hdCIpKQorICAgICAgICByZXN1bHQuYXBwZW5kKCJPRVNfdGV4dHVyZV9mbG9hdCIpOworICAg
IHJldHVybiByZXN1bHQ7Cit9CisKIFdlYkdMR2V0SW5mbyBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6
OmdldFRleFBhcmFtZXRlcih1bnNpZ25lZCBsb25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBwbmFt
ZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgVU5VU0VEX1BBUkFNKGVjKTsKQEAgLTM1OTYs
NiArMzYxOSwxMSBAQCBib29sIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dmFsaWRhdGVUZXhGCiAg
ICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6VU5TSUdORURfU0hPUlRfNF80XzRfNDoKICAgICBj
YXNlIEdyYXBoaWNzQ29udGV4dDNEOjpVTlNJR05FRF9TSE9SVF81XzVfNV8xOgogICAgICAgICBi
cmVhazsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpGTE9BVDoKKyAgICAgICAgaWYgKG1f
b2VzVGV4dHVyZUZsb2F0KQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIG1fY29udGV4dC0+
c3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfRU5VTSk7CisgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICBkZWZhdWx0OgogICAgICAgICBtX2NvbnRleHQtPnN5bnRo
ZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX0VOVU0pOwogICAgICAgICBy
ZXR1cm4gZmFsc2U7CkBAIC0zNjA2LDE0ICszNjM0LDE2IEBAIGJvb2wgV2ViR0xSZW5kZXJpbmdD
b250ZXh0Ojp2YWxpZGF0ZVRleEYKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpBTFBIQToK
ICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpMVU1JTkFOQ0U6CiAgICAgY2FzZSBHcmFwaGlj
c0NvbnRleHQzRDo6TFVNSU5BTkNFX0FMUEhBOgotICAgICAgICBpZiAodHlwZSAhPSBHcmFwaGlj
c0NvbnRleHQzRDo6VU5TSUdORURfQllURSkgeworICAgICAgICBpZiAodHlwZSAhPSBHcmFwaGlj
c0NvbnRleHQzRDo6VU5TSUdORURfQllURQorICAgICAgICAgICAgJiYgdHlwZSAhPSBHcmFwaGlj
c0NvbnRleHQzRDo6RkxPQVQpIHsKICAgICAgICAgICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdM
RXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfT1BFUkFUSU9OKTsKICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICAgICAgfQogICAgICAgICBicmVhazsKICAgICBjYXNlIEdyYXBo
aWNzQ29udGV4dDNEOjpSR0I6CiAgICAgICAgIGlmICh0eXBlICE9IEdyYXBoaWNzQ29udGV4dDNE
OjpVTlNJR05FRF9CWVRFCi0gICAgICAgICAgICAmJiB0eXBlICE9IEdyYXBoaWNzQ29udGV4dDNE
OjpVTlNJR05FRF9TSE9SVF81XzZfNSkgeworICAgICAgICAgICAgJiYgdHlwZSAhPSBHcmFwaGlj
c0NvbnRleHQzRDo6VU5TSUdORURfU0hPUlRfNV82XzUKKyAgICAgICAgICAgICYmIHR5cGUgIT0g
R3JhcGhpY3NDb250ZXh0M0Q6OkZMT0FUKSB7CiAgICAgICAgICAgICBtX2NvbnRleHQtPnN5bnRo
ZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX09QRVJBVElPTik7CiAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KQEAgLTM2MjEsNyArMzY1MSw4IEBAIGJv
b2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp2YWxpZGF0ZVRleEYKICAgICBjYXNlIEdyYXBoaWNz
Q29udGV4dDNEOjpSR0JBOgogICAgICAgICBpZiAodHlwZSAhPSBHcmFwaGljc0NvbnRleHQzRDo6
VU5TSUdORURfQllURQogICAgICAgICAgICAgJiYgdHlwZSAhPSBHcmFwaGljc0NvbnRleHQzRDo6
VU5TSUdORURfU0hPUlRfNF80XzRfNAotICAgICAgICAgICAgJiYgdHlwZSAhPSBHcmFwaGljc0Nv
bnRleHQzRDo6VU5TSUdORURfU0hPUlRfNV81XzVfMSkgeworICAgICAgICAgICAgJiYgdHlwZSAh
PSBHcmFwaGljc0NvbnRleHQzRDo6VU5TSUdORURfU0hPUlRfNV81XzVfMQorICAgICAgICAgICAg
JiYgdHlwZSAhPSBHcmFwaGljc0NvbnRleHQzRDo6RkxPQVQpIHsKICAgICAgICAgICAgIG1fY29u
dGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfT1BFUkFU
SU9OKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQpAQCAtMzcxMCw2ICsz
NzQxLDEyIEBAIGJvb2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp2YWxpZGF0ZVRleEYKICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogICAgICAgICBicmVhazsKKyAgICBjYXNl
IEdyYXBoaWNzQ29udGV4dDNEOjpGTE9BVDogLy8gT0VTX3RleHR1cmVfZmxvYXQKKyAgICAgICAg
aWYgKCFwaXhlbHMtPmlzRmxvYXRBcnJheSgpKSB7CisgICAgICAgICAgICBtX2NvbnRleHQtPnN5
bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX09QRVJBVElPTik7Cisg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CiAgICAg
ZGVmYXVsdDoKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQpAQCAtNDA3OSw2
ICs0MTE2LDIyIEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpyZXN0b3JlU3RhdGUKICAg
ICBtX2NvbnRleHQtPmJpbmRCdWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkFSUkFZX0JVRkZFUiwg
b2JqZWN0T3JaZXJvKG1fYm91bmRBcnJheUJ1ZmZlci5nZXQoKSkpOwogfQogCitpbnQgV2ViR0xS
ZW5kZXJpbmdDb250ZXh0OjpnZXROdW1iZXJPZkV4dGVuc2lvbnMoKQoreworICAgIHJldHVybiAo
bV9vZXNUZXh0dXJlRmxvYXQgPyAxIDogMCk7Cit9CisKK1dlYkdMRXh0ZW5zaW9uKiBXZWJHTFJl
bmRlcmluZ0NvbnRleHQ6OmdldEV4dGVuc2lvbk51bWJlcihpbnQgaSkKK3sKKyAgICBpZiAobV9v
ZXNUZXh0dXJlRmxvYXQpIHsKKyAgICAgICAgaWYgKCFpKQorICAgICAgICAgICAgcmV0dXJuIG1f
b2VzVGV4dHVyZUZsb2F0LmdldCgpOworICAgICAgICAtLWk7CisgICAgfQorICAgIC8vIFNpbWls
YXIgdGVzdHMgZm9yIG90aGVyIGV4dGVuc2lvbnMgd291bGQgZ28gaGVyZS4KKyAgICByZXR1cm4g
MDsKK30KKwogV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpMUlVJbWFnZUJ1ZmZlckNhY2hlOjpMUlVJ
bWFnZUJ1ZmZlckNhY2hlKGludCBjYXBhY2l0eSkKICAgICA6IG1fYnVmZmVycyhuZXcgT3duUHRy
PEltYWdlQnVmZmVyPltjYXBhY2l0eV0pCiAgICAgLCBtX2NhcGFjaXR5KGNhcGFjaXR5KQpJbmRl
eDogV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5oCShyZXZpc2lv
biA3MzY1NSkKKysrIFdlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTQzLDYgKzQzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xh
c3MgV2ViR0xBY3RpdmVJbmZvOwogY2xhc3MgV2ViR0xCdWZmZXI7CiBjbGFzcyBXZWJHTENvbnRl
eHRBdHRyaWJ1dGVzOworY2xhc3MgV2ViR0xFeHRlbnNpb247CiBjbGFzcyBXZWJHTEZyYW1lYnVm
ZmVyOwogY2xhc3MgV2ViR0xPYmplY3Q7CiBjbGFzcyBXZWJHTFByb2dyYW07CkBAIC01NSw2ICs1
Niw3IEBAIGNsYXNzIEhUTUxWaWRlb0VsZW1lbnQ7CiBjbGFzcyBJbWFnZUJ1ZmZlcjsKIGNsYXNz
IEltYWdlRGF0YTsKIGNsYXNzIEludFNpemU7CitjbGFzcyBPRVNUZXh0dXJlRmxvYXQ7CiAKIGNs
YXNzIFdlYkdMUmVuZGVyaW5nQ29udGV4dCA6IHB1YmxpYyBDYW52YXNSZW5kZXJpbmdDb250ZXh0
IHsKIHB1YmxpYzoKQEAgLTE0NSw2ICsxNDcsOCBAQCBwdWJsaWM6CiAKICAgICB1bnNpZ25lZCBs
b25nIGdldEVycm9yKCk7CiAKKyAgICBXZWJHTEV4dGVuc2lvbiogZ2V0RXh0ZW5zaW9uKGNvbnN0
IFN0cmluZyYgbmFtZSk7CisKICAgICBXZWJHTEdldEluZm8gZ2V0RnJhbWVidWZmZXJBdHRhY2ht
ZW50UGFyYW1ldGVyKHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25nIGF0dGFjaG1l
bnQsIHVuc2lnbmVkIGxvbmcgcG5hbWUsIEV4Y2VwdGlvbkNvZGUmKTsKIAogICAgIFdlYkdMR2V0
SW5mbyBnZXRQYXJhbWV0ZXIodW5zaWduZWQgbG9uZyBwbmFtZSwgRXhjZXB0aW9uQ29kZSYpOwpA
QCAtMTY0LDYgKzE2OCw4IEBAIHB1YmxpYzoKIAogICAgIFN0cmluZyBnZXRTaGFkZXJTb3VyY2Uo
V2ViR0xTaGFkZXIqLCBFeGNlcHRpb25Db2RlJik7CiAKKyAgICBWZWN0b3I8U3RyaW5nPiBnZXRT
dXBwb3J0ZWRFeHRlbnNpb25zKCk7CisKICAgICBXZWJHTEdldEluZm8gZ2V0VGV4UGFyYW1ldGVy
KHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25nIHBuYW1lLCBFeGNlcHRpb25Db2Rl
Jik7CiAKICAgICBXZWJHTEdldEluZm8gZ2V0VW5pZm9ybShXZWJHTFByb2dyYW0qLCBjb25zdCBX
ZWJHTFVuaWZvcm1Mb2NhdGlvbiosIEV4Y2VwdGlvbkNvZGUmKTsKQEAgLTI5Miw2ICsyOTgsMTAg
QEAgcHVibGljOgogCiAgICAgdm9pZCByZW1vdmVPYmplY3QoV2ViR0xPYmplY3QqKTsKIAorICAg
IC8vIEhlbHBlcnMgZm9yIEpTQyBiaW5kaW5ncy4KKyAgICBpbnQgZ2V0TnVtYmVyT2ZFeHRlbnNp
b25zKCk7CisgICAgV2ViR0xFeHRlbnNpb24qIGdldEV4dGVuc2lvbk51bWJlcihpbnQgaSk7CisK
ICAgcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgV2ViR0xPYmplY3Q7CiAKQEAgLTQ1Niw2ICs0
NjYsOSBAQCBwdWJsaWM6CiAgICAgYm9vbCBtX2lzUmVzb3VyY2VTYWZlOwogICAgIGJvb2wgbV9p
c0RlcHRoU3RlbmNpbFN1cHBvcnRlZDsKIAorICAgIC8vIEVuYWJsZWQgZXh0ZW5zaW9uIG9iamVj
dHMuCisgICAgUmVmUHRyPE9FU1RleHR1cmVGbG9hdD4gbV9vZXNUZXh0dXJlRmxvYXQ7CisKICAg
ICAvLyBIZWxwZXJzIGZvciBnZXRQYXJhbWV0ZXIgYW5kIG90aGVycwogICAgIFdlYkdMR2V0SW5m
byBnZXRCb29sZWFuUGFyYW1ldGVyKHVuc2lnbmVkIGxvbmcgcG5hbWUpOwogICAgIFdlYkdMR2V0
SW5mbyBnZXRCb29sZWFuQXJyYXlQYXJhbWV0ZXIodW5zaWduZWQgbG9uZyBwbmFtZSk7CkluZGV4
OiBXZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5pZGwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuaWRsCShyZXZp
c2lvbiA3MzY1NSkKKysrIFdlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0
LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjksNiArMjksNyBAQCBtb2R1bGUgaHRtbCB7CiAgICAg
ICAgIENvbmRpdGlvbmFsPTNEX0NBTlZBUywKICAgICAgICAgSW50ZXJmYWNlVVVJRD05OGZiNDhh
ZS03MjE2LTQ4OWMtODYyYi04ZTEyMTdmYzQ0NDMsCiAgICAgICAgIEltcGxlbWVudGF0aW9uVVVJ
RD1hYjRmMDc4MS0xNTJmLTQ1MGUtOTU0Ni01YjM5ODc0OTFhNTQsCisgICAgICAgIEN1c3RvbU1h
cmtGdW5jdGlvbiwKICAgICAgICAgRG9udENoZWNrRW51bXMKICAgICBdIFdlYkdMUmVuZGVyaW5n
Q29udGV4dCA6IENhbnZhc1JlbmRlcmluZ0NvbnRleHQgewogCkBAIC0yODcsNyArMjg4LDYgQEAg
bW9kdWxlIGh0bWwgewogICAgICAgICBjb25zdCB1bnNpZ25lZCBpbnQgVkVORE9SICAgICAgICAg
ICAgICAgICAgICAgICAgID0gMHgxRjAwOwogICAgICAgICBjb25zdCB1bnNpZ25lZCBpbnQgUkVO
REVSRVIgICAgICAgICAgICAgICAgICAgICAgID0gMHgxRjAxOwogICAgICAgICBjb25zdCB1bnNp
Z25lZCBpbnQgVkVSU0lPTiAgICAgICAgICAgICAgICAgICAgICAgID0gMHgxRjAyOwotICAgICAg
ICBjb25zdCB1bnNpZ25lZCBpbnQgRVhURU5TSU9OUyAgICAgICAgICAgICAgICAgICAgID0gMHgx
RjAzOwogCiAgICAgICAgIC8qIFRleHR1cmVNYWdGaWx0ZXIgKi8KICAgICAgICAgY29uc3QgdW5z
aWduZWQgaW50IE5FQVJFU1QgICAgICAgICAgICAgICAgICAgICAgICA9IDB4MjYwMDsKQEAgLTUz
NSw2ICs1MzUsOSBAQCBtb2R1bGUgaHRtbCB7CiAKICAgICAgICAgW1N0cmljdFR5cGVDaGVja2lu
Z10gdW5zaWduZWQgbG9uZyBnZXRFcnJvcigpOwogCisgICAgICAgIC8vIG9iamVjdCBnZXRFeHRl
bnNpb24oaW4gRE9NU3RyaW5nIG5hbWUpOworICAgICAgICBbU3RyaWN0VHlwZUNoZWNraW5nLCBD
dXN0b21dIHZvaWQgZ2V0RXh0ZW5zaW9uKGluIERPTVN0cmluZyBuYW1lKTsKKwogICAgICAgICAv
LyBhbnkgZ2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyKGluIHVuc2lnbmVkIGxvbmcg
dGFyZ2V0LCBpbiB1bnNpZ25lZCBsb25nIGF0dGFjaG1lbnQsIGluIHVuc2lnbmVkIGxvbmcgcG5h
bWUpIHJhaXNlcyhET01FeGNlcHRpb24pOwogICAgICAgICBbU3RyaWN0VHlwZUNoZWNraW5nLCBD
dXN0b21dIHZvaWQgZ2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyKCk7CiAgICAgICAg
IC8vIGFueSBnZXRQYXJhbWV0ZXIoaW4gdW5zaWduZWQgbG9uZyBwbmFtZSkgcmFpc2VzKERPTUV4
Y2VwdGlvbik7CkBAIC01NTQsNiArNTU3LDkgQEAgbW9kdWxlIGh0bWwgewogCiAgICAgICAgIFtT
dHJpY3RUeXBlQ2hlY2tpbmcsIENvbnZlcnROdWxsU3RyaW5nVG89TnVsbF0gRE9NU3RyaW5nICAg
IGdldFNoYWRlclNvdXJjZShpbiBXZWJHTFNoYWRlciBzaGFkZXIpIHJhaXNlcyhET01FeGNlcHRp
b24pOwogCisgICAgICAgIC8vIERPTVN0cmluZ1tdIGdldFN1cHBvcnRlZEV4dGVuc2lvbnMoKQor
ICAgICAgICBbU3RyaWN0VHlwZUNoZWNraW5nLCBDdXN0b21dIHZvaWQgZ2V0U3VwcG9ydGVkRXh0
ZW5zaW9ucygpOworCiAgICAgICAgIC8vIGFueSBnZXRUZXhQYXJhbWV0ZXIoaW4gdW5zaWduZWQg
bG9uZyB0YXJnZXQsIGluIHVuc2lnbmVkIGxvbmcgcG5hbWUpIHJhaXNlcyhET01FeGNlcHRpb24p
OwogICAgICAgICBbU3RyaWN0VHlwZUNoZWNraW5nLCBDdXN0b21dIHZvaWQgZ2V0VGV4UGFyYW1l
dGVyKCk7CiAKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRXh0ZW5zaW9uczNELmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9FeHRlbnNpb25zM0QuaAko
cmV2aXNpb24gNzM2NTUpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0V4dGVuc2lvbnMz
RC5oCSh3b3JraW5nIGNvcHkpCkBAIC01MCwxMSArNTAsMTcgQEAgcHVibGljOgogICAgIC8vICAg
R0xfQVJCX3RleHR1cmVfbm9uX3Bvd2VyX29mX3R3byAvIEdMX09FU190ZXh0dXJlX25wb3QKICAg
ICAvLyAgIEdMX0VYVF9wYWNrZWRfZGVwdGhfc3RlbmNpbCAvIEdMX09FU19wYWNrZWRfZGVwdGhf
c3RlbmNpbAogICAgIC8vICAgR0xfQU5HTEVfZnJhbWVidWZmZXJfYmxpdCAvIEdMX0FOR0xFX2Zy
YW1lYnVmZmVyX211bHRpc2FtcGxlCisgICAgLy8gICBHTF9PRVNfdGV4dHVyZV9mbG9hdAogCiAg
ICAgLy8gVGFrZXMgZnVsbCBuYW1lIG9mIGV4dGVuc2lvbjsgZm9yIGV4YW1wbGUsCiAgICAgLy8g
IkdMX0VYVF90ZXh0dXJlX2Zvcm1hdF9CR1JBODg4OCIuCiAgICAgdmlydHVhbCBib29sIHN1cHBv
cnRzKGNvbnN0IFN0cmluZyYpID0gMDsKIAorICAgIC8vIENlcnRhaW4gT3BlbkdMIGFuZCBXZWJH
TCBpbXBsZW1lbnRhdGlvbnMgbWF5IHN1cHBvcnQgZW5hYmxpbmcKKyAgICAvLyBleHRlbnNpb25z
IGxhemlseS4gVGhpcyBtZXRob2QgbWF5IG9ubHkgYmUgY2FsbGVkIHdpdGgKKyAgICAvLyBleHRl
bnNpb24gbmFtZXMgZm9yIHdoaWNoIHN1cHBvcnRzIHJldHVybnMgdHJ1ZS4KKyAgICB2aXJ0dWFs
IHZvaWQgZW5zdXJlRW5hYmxlZChjb25zdCBTdHJpbmcmKSA9IDA7CisKICAgICBlbnVtIEV4dGVu
c2lvbnNFbnVtVHlwZSB7CiAgICAgICAgIC8vIEdMX0VYVF90ZXh0dXJlX2Zvcm1hdF9CR1JBODg4
OCBlbnVtcwogICAgICAgICBCR1JBX0VYVCA9IDB4ODBFMSwKSW5kZXg6IFdlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuY3BwCShyZXZpc2lvbiA3MzY1NSkK
KysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC04Niw2ICs4Niw5IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0M0Q6OmNvbXB1
dGVGb3JtYXRBbmQKICAgICAgICAgKmNvbXBvbmVudHNQZXJQaXhlbCA9IDE7CiAgICAgICAgICpi
eXRlc1BlckNvbXBvbmVudCA9IHNpemVvZih1bnNpZ25lZCBzaG9ydCk7CiAgICAgICAgIGJyZWFr
OworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OkZMT0FUOiAvLyBPRVNfdGV4dHVyZV9mbG9h
dAorICAgICAgICAqYnl0ZXNQZXJDb21wb25lbnQgPSBzaXplb2YoZmxvYXQpOworICAgICAgICBi
cmVhazsKICAgICBkZWZhdWx0OgogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQpAQCAtMTg4
LDYgKzE5MSwyNyBAQCBib29sIEdyYXBoaWNzQ29udGV4dDNEOjpleHRyYWN0VGV4dHVyZURhCiAg
ICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgfQogICAgICAgICBicmVh
azsKKyAgICBjYXNlIEZMT0FUOiAvLyBPRVNfdGV4dHVyZV9mbG9hdAorICAgICAgICBzd2l0Y2gg
KGZvcm1hdCkgeworICAgICAgICBjYXNlIFJHQkE6CisgICAgICAgICAgICBzb3VyY2VEYXRhRm9y
bWF0ID0gU291cmNlRm9ybWF0UkdCQTMyRjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBj
YXNlIFJHQjoKKyAgICAgICAgICAgIHNvdXJjZURhdGFGb3JtYXQgPSBTb3VyY2VGb3JtYXRSR0Iz
MkY7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBBTFBIQToKKyAgICAgICAgICAg
IHNvdXJjZURhdGFGb3JtYXQgPSBTb3VyY2VGb3JtYXRBMzJGOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIGNhc2UgTFVNSU5BTkNFOgorICAgICAgICAgICAgc291cmNlRGF0YUZvcm1hdCA9
IFNvdXJjZUZvcm1hdFIzMkY7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBMVU1J
TkFOQ0VfQUxQSEE6CisgICAgICAgICAgICBzb3VyY2VEYXRhRm9ybWF0ID0gU291cmNlRm9ybWF0
UkEzMkY7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICB9CisgICAgICAgIGJyZWFrOwogICAgIGNh
c2UgVU5TSUdORURfU0hPUlRfNV81XzVfMToKICAgICAgICAgc291cmNlRGF0YUZvcm1hdCA9IFNv
dXJjZUZvcm1hdFJHQkE1NTUxOwogICAgICAgICBicmVhazsKQEAgLTUwMSw2ICs1MjUsMzggQEAg
dm9pZCB1bnBhY2tBMTZCaWdUb1JHQkE4KGNvbnN0IHVpbnQxNl90KgogICAgIGRlc3RpbmF0aW9u
WzNdID0gY29udmVydENvbG9yMTZCaWdUbzgoc291cmNlWzBdKTsKIH0KIAordm9pZCB1bnBhY2tS
R0IzMkZUb1JHQkEzMkYoY29uc3QgZmxvYXQqIHNvdXJjZSwgZmxvYXQqIGRlc3RpbmF0aW9uKQor
eworICAgIGRlc3RpbmF0aW9uWzBdID0gc291cmNlWzBdOworICAgIGRlc3RpbmF0aW9uWzFdID0g
c291cmNlWzFdOworICAgIGRlc3RpbmF0aW9uWzJdID0gc291cmNlWzJdOworICAgIGRlc3RpbmF0
aW9uWzNdID0gMTsKK30KKwordm9pZCB1bnBhY2tSMzJGVG9SR0JBMzJGKGNvbnN0IGZsb2F0KiBz
b3VyY2UsIGZsb2F0KiBkZXN0aW5hdGlvbikKK3sKKyAgICBkZXN0aW5hdGlvblswXSA9IHNvdXJj
ZVswXTsKKyAgICBkZXN0aW5hdGlvblsxXSA9IHNvdXJjZVswXTsKKyAgICBkZXN0aW5hdGlvblsy
XSA9IHNvdXJjZVswXTsKKyAgICBkZXN0aW5hdGlvblszXSA9IDE7Cit9CisKK3ZvaWQgdW5wYWNr
UkEzMkZUb1JHQkEzMkYoY29uc3QgZmxvYXQqIHNvdXJjZSwgZmxvYXQqIGRlc3RpbmF0aW9uKQor
eworICAgIGRlc3RpbmF0aW9uWzBdID0gc291cmNlWzBdOworICAgIGRlc3RpbmF0aW9uWzFdID0g
c291cmNlWzBdOworICAgIGRlc3RpbmF0aW9uWzJdID0gc291cmNlWzBdOworICAgIGRlc3RpbmF0
aW9uWzNdID0gc291cmNlWzFdOworfQorCit2b2lkIHVucGFja0EzMkZUb1JHQkEzMkYoY29uc3Qg
ZmxvYXQqIHNvdXJjZSwgZmxvYXQqIGRlc3RpbmF0aW9uKQoreworICAgIGRlc3RpbmF0aW9uWzBd
ID0gMDsKKyAgICBkZXN0aW5hdGlvblsxXSA9IDA7CisgICAgZGVzdGluYXRpb25bMl0gPSAwOwor
ICAgIGRlc3RpbmF0aW9uWzNdID0gc291cmNlWzBdOworfQorCiAvLy0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIC8v
IFBpeGVsIHBhY2tpbmcgcm91dGluZXMuCiAvLwpAQCAtNzEzLDE0ICs3NjksNjggQEAgdm9pZCBw
YWNrUkdCQThUb1Vuc2lnbmVkU2hvcnQ1NjVVbm11bHRpcAogICAgICAgICAgICAgICAgICAgICB8
ICgoc291cmNlQiAmIDB4RjgpID4+IDMpKTsKIH0KIAordm9pZCBwYWNrUkdCQTMyRlRvUkdCMzJG
KGNvbnN0IGZsb2F0KiBzb3VyY2UsIGZsb2F0KiBkZXN0aW5hdGlvbikKK3sKKyAgICBkZXN0aW5h
dGlvblswXSA9IHNvdXJjZVswXTsKKyAgICBkZXN0aW5hdGlvblsxXSA9IHNvdXJjZVsxXTsKKyAg
ICBkZXN0aW5hdGlvblsyXSA9IHNvdXJjZVsyXTsKK30KKwordm9pZCBwYWNrUkdCQTMyRlRvUkdC
MzJGUHJlbXVsdGlwbHkoY29uc3QgZmxvYXQqIHNvdXJjZSwgZmxvYXQqIGRlc3RpbmF0aW9uKQor
eworICAgIGZsb2F0IHNjYWxlRmFjdG9yID0gc291cmNlWzNdOworICAgIGRlc3RpbmF0aW9uWzBd
ID0gc291cmNlWzBdICogc2NhbGVGYWN0b3I7CisgICAgZGVzdGluYXRpb25bMV0gPSBzb3VyY2Vb
MV0gKiBzY2FsZUZhY3RvcjsKKyAgICBkZXN0aW5hdGlvblsyXSA9IHNvdXJjZVsyXSAqIHNjYWxl
RmFjdG9yOworfQorCit2b2lkIHBhY2tSR0JBMzJGVG9SR0JBMzJGUHJlbXVsdGlwbHkoY29uc3Qg
ZmxvYXQqIHNvdXJjZSwgZmxvYXQqIGRlc3RpbmF0aW9uKQoreworICAgIGZsb2F0IHNjYWxlRmFj
dG9yID0gc291cmNlWzNdOworICAgIGRlc3RpbmF0aW9uWzBdID0gc291cmNlWzBdICogc2NhbGVG
YWN0b3I7CisgICAgZGVzdGluYXRpb25bMV0gPSBzb3VyY2VbMV0gKiBzY2FsZUZhY3RvcjsKKyAg
ICBkZXN0aW5hdGlvblsyXSA9IHNvdXJjZVsyXSAqIHNjYWxlRmFjdG9yOworICAgIGRlc3RpbmF0
aW9uWzNdID0gc291cmNlWzNdOworfQorCit2b2lkIHBhY2tSR0JBMzJGVG9BMzJGKGNvbnN0IGZs
b2F0KiBzb3VyY2UsIGZsb2F0KiBkZXN0aW5hdGlvbikKK3sKKyAgICBkZXN0aW5hdGlvblswXSA9
IHNvdXJjZVszXTsKK30KKwordm9pZCBwYWNrUkdCQTMyRlRvUjMyRihjb25zdCBmbG9hdCogc291
cmNlLCBmbG9hdCogZGVzdGluYXRpb24pCit7CisgICAgZGVzdGluYXRpb25bMF0gPSBzb3VyY2Vb
MF07Cit9CisKK3ZvaWQgcGFja1JHQkEzMkZUb1IzMkZQcmVtdWx0aXBseShjb25zdCBmbG9hdCog
c291cmNlLCBmbG9hdCogZGVzdGluYXRpb24pCit7CisgICAgZmxvYXQgc2NhbGVGYWN0b3IgPSBz
b3VyY2VbM107CisgICAgZGVzdGluYXRpb25bMF0gPSBzb3VyY2VbMF0gKiBzY2FsZUZhY3RvcjsK
K30KKworCit2b2lkIHBhY2tSR0JBMzJGVG9SQTMyRihjb25zdCBmbG9hdCogc291cmNlLCBmbG9h
dCogZGVzdGluYXRpb24pCit7CisgICAgZGVzdGluYXRpb25bMF0gPSBzb3VyY2VbMF07CisgICAg
ZGVzdGluYXRpb25bMV0gPSBzb3VyY2VbM107Cit9CisKK3ZvaWQgcGFja1JHQkEzMkZUb1JBMzJG
UHJlbXVsdGlwbHkoY29uc3QgZmxvYXQqIHNvdXJjZSwgZmxvYXQqIGRlc3RpbmF0aW9uKQorewor
ICAgIGZsb2F0IHNjYWxlRmFjdG9yID0gc291cmNlWzNdOworICAgIGRlc3RpbmF0aW9uWzBdID0g
c291cmNlWzBdICogc2NhbGVGYWN0b3I7CisgICAgZGVzdGluYXRpb25bMV0gPSBzY2FsZUZhY3Rv
cjsKK30KKwogfSAvLyBhbm9ueW1vdXMgbmFtZXNwYWNlCiAKIC8vIFRoaXMgaXMgdXNlZCB3aGVu
ZXZlciB1bnBhY2tpbmcgaXMgbmVjZXNzYXJ5OyBpLmUuLCB0aGUgc291cmNlIGRhdGEKLS8vIGlz
IG5vdCBpbiBSR0JBOCBmb3JtYXQsIG9yIHRoZSB1bnBhY2sgYWxpZ25tZW50IHNwZWNpZmllcyB0
aGF0IHJvd3MKLS8vIGFyZSBub3QgdGlnaHRseSBwYWNrZWQuCi10ZW1wbGF0ZTx0eXBlbmFtZSBT
b3VyY2VUeXBlLCB0eXBlbmFtZSBEZXN0VHlwZSwKLSAgICAgICAgIHZvaWQgdW5wYWNraW5nRnVu
Yyhjb25zdCBTb3VyY2VUeXBlKiwgdWludDhfdCopLAotICAgICAgICAgdm9pZCBwYWNraW5nRnVu
Yyhjb25zdCB1aW50OF90KiwgRGVzdFR5cGUqKT4KKy8vIGlzIG5vdCBpbiBSR0JBOC9SR0JBMzJG
IGZvcm1hdCwgb3IgdGhlIHVucGFjayBhbGlnbm1lbnQgc3BlY2lmaWVzCisvLyB0aGF0IHJvd3Mg
YXJlIG5vdCB0aWdodGx5IHBhY2tlZC4KK3RlbXBsYXRlPHR5cGVuYW1lIFNvdXJjZVR5cGUsIHR5
cGVuYW1lIEludGVybWVkaWF0ZVR5cGUsIHR5cGVuYW1lIERlc3RUeXBlLAorICAgICAgICAgdm9p
ZCB1bnBhY2tpbmdGdW5jKGNvbnN0IFNvdXJjZVR5cGUqLCBJbnRlcm1lZGlhdGVUeXBlKiksCisg
ICAgICAgICB2b2lkIHBhY2tpbmdGdW5jKGNvbnN0IEludGVybWVkaWF0ZVR5cGUqLCBEZXN0VHlw
ZSopPgogc3RhdGljIHZvaWQgZG9VbnBhY2tpbmdBbmRQYWNraW5nKGNvbnN0IFNvdXJjZVR5cGUq
IHNvdXJjZURhdGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQg
aW50IHdpZHRoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGlu
dCBoZWlnaHQsCkBAIC03MzIsNyArODQyLDcgQEAgc3RhdGljIHZvaWQgZG9VbnBhY2tpbmdBbmRQ
YWNraW5nKGNvbnN0IAogICAgIGlmICghc291cmNlRWxlbWVudHNQZXJSb3cpIHsKICAgICAgICAg
dW5zaWduZWQgaW50IG51bUVsZW1lbnRzID0gd2lkdGggKiBoZWlnaHQgKiBzb3VyY2VFbGVtZW50
c1BlclBpeGVsOwogICAgICAgICBjb25zdCBTb3VyY2VUeXBlKiBlbmRQb2ludGVyID0gc291cmNl
RGF0YSArIG51bUVsZW1lbnRzOwotICAgICAgICB1aW50OF90IHRlbXBvcmFyeVJHQkFEYXRhWzRd
OworICAgICAgICBJbnRlcm1lZGlhdGVUeXBlIHRlbXBvcmFyeVJHQkFEYXRhWzRdOwogICAgICAg
ICB3aGlsZSAoc291cmNlRGF0YSA8IGVuZFBvaW50ZXIpIHsKICAgICAgICAgICAgIHVucGFja2lu
Z0Z1bmMoc291cmNlRGF0YSwgdGVtcG9yYXJ5UkdCQURhdGEpOwogICAgICAgICAgICAgcGFja2lu
Z0Z1bmModGVtcG9yYXJ5UkdCQURhdGEsIGRlc3RpbmF0aW9uRGF0YSk7CkBAIC03NDAsNyArODUw
LDcgQEAgc3RhdGljIHZvaWQgZG9VbnBhY2tpbmdBbmRQYWNraW5nKGNvbnN0IAogICAgICAgICAg
ICAgZGVzdGluYXRpb25EYXRhICs9IGRlc3RpbmF0aW9uRWxlbWVudHNQZXJQaXhlbDsKICAgICAg
ICAgfQogICAgIH0gZWxzZSB7Ci0gICAgICAgIHVpbnQ4X3QgdGVtcG9yYXJ5UkdCQURhdGFbNF07
CisgICAgICAgIEludGVybWVkaWF0ZVR5cGUgdGVtcG9yYXJ5UkdCQURhdGFbNF07CiAgICAgICAg
IGZvciAodW5zaWduZWQgaW50IHkgPSAwOyB5IDwgaGVpZ2h0OyArK3kpIHsKICAgICAgICAgICAg
IGNvbnN0IFNvdXJjZVR5cGUqIGN1cnJlbnRTb3VyY2UgPSBzb3VyY2VEYXRhOwogICAgICAgICAg
ICAgZm9yICh1bnNpZ25lZCBpbnQgeCA9IDA7IHggPCB3aWR0aDsgKyt4KSB7CkBAIC04MDIsMTc2
ICs5MTIsMTc2IEBAIHN0YXRpYyB2b2lkIGRvUGFja2luZyhjb25zdCB2b2lkKiBzb3VyY2UKICAg
ICAgICAgICAgICAgICBkZXN0aW5hdGlvbkRhdGEgKz0gZGVzdGluYXRpb25FbGVtZW50c1BlclBp
eGVsOwogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgZG9VbnBh
Y2tpbmdBbmRQYWNraW5nPHVpbnQ4X3QsIERlc3RUeXBlLCB1bnBhY2tSR0JBOFRvUkdCQTgsIHBh
Y2tpbmdGdW5jPihzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oc291cmNlRGF0YSksIHdpZHRo
LCBoZWlnaHQsIHNvdXJjZUVsZW1lbnRzUGVyUGl4ZWwsIHNvdXJjZUVsZW1lbnRzUGVyUm93LCBk
ZXN0aW5hdGlvbkRhdGEsIGRlc3RpbmF0aW9uRWxlbWVudHNQZXJQaXhlbCk7CisgICAgICAgICAg
ICBkb1VucGFja2luZ0FuZFBhY2tpbmc8dWludDhfdCwgdWludDhfdCwgRGVzdFR5cGUsIHVucGFj
a1JHQkE4VG9SR0JBOCwgcGFja2luZ0Z1bmM+KHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihz
b3VyY2VEYXRhKSwgd2lkdGgsIGhlaWdodCwgc291cmNlRWxlbWVudHNQZXJQaXhlbCwgc291cmNl
RWxlbWVudHNQZXJSb3csIGRlc3RpbmF0aW9uRGF0YSwgZGVzdGluYXRpb25FbGVtZW50c1BlclBp
eGVsKTsKICAgICAgICAgfQogICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBHcmFwaGlj
c0NvbnRleHQzRDo6U291cmNlRm9ybWF0UkdCQTE2TGl0dGxlOiB7CiAgICAgICAgIHVuc2lnbmVk
IGludCBzb3VyY2VFbGVtZW50c1BlclBpeGVsLCBzb3VyY2VFbGVtZW50c1BlclJvdzsKICAgICAg
ICAgY29tcHV0ZUluY3JlbWVudFBhcmFtZXRlcnM8dWludDE2X3Q+KHdpZHRoLCA4LCBzb3VyY2VV
bnBhY2tBbGlnbm1lbnQsICZzb3VyY2VFbGVtZW50c1BlclBpeGVsLCAmc291cmNlRWxlbWVudHNQ
ZXJSb3cpOwotICAgICAgICBkb1VucGFja2luZ0FuZFBhY2tpbmc8dWludDE2X3QsIERlc3RUeXBl
LCB1bnBhY2tSR0JBMTZMaXR0bGVUb1JHQkE4LCBwYWNraW5nRnVuYz4oc3RhdGljX2Nhc3Q8Y29u
c3QgdWludDE2X3QqPihzb3VyY2VEYXRhKSwgd2lkdGgsIGhlaWdodCwgc291cmNlRWxlbWVudHNQ
ZXJQaXhlbCwgc291cmNlRWxlbWVudHNQZXJSb3csIGRlc3RpbmF0aW9uRGF0YSwgZGVzdGluYXRp
b25FbGVtZW50c1BlclBpeGVsKTsKKyAgICAgICAgZG9VbnBhY2tpbmdBbmRQYWNraW5nPHVpbnQx
Nl90LCB1aW50OF90LCBEZXN0VHlwZSwgdW5wYWNrUkdCQTE2TGl0dGxlVG9SR0JBOCwgcGFja2lu
Z0Z1bmM+KHN0YXRpY19jYXN0PGNvbnN0IHVpbnQxNl90Kj4oc291cmNlRGF0YSksIHdpZHRoLCBo
ZWlnaHQsIHNvdXJjZUVsZW1lbnRzUGVyUGl4ZWwsIHNvdXJjZUVsZW1lbnRzUGVyUm93LCBkZXN0
aW5hdGlvbkRhdGEsIGRlc3RpbmF0aW9uRWxlbWVudHNQZXJQaXhlbCk7CiAgICAgICAgIGJyZWFr
OwogICAgIH0KICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpTb3VyY2VGb3JtYXRSR0JBMTZC
aWc6IHsKICAgICAgICAgdW5zaWduZWQgaW50IHNvdXJjZUVsZW1lbnRzUGVyUGl4ZWwsIHNvdXJj
ZUVsZW1lbnRzUGVyUm93OwogICAgICAgICBjb21wdXRlSW5jcmVtZW50UGFyYW1ldGVyczx1aW50
MTZfdD4od2lkdGgsIDgsIHNvdXJjZVVucGFja0FsaWdubWVudCwgJnNvdXJjZUVsZW1lbnRzUGVy
UGl4ZWwsICZzb3VyY2VFbGVtZW50c1BlclJvdyk7Ci0gICAgICAgIGRvVW5wYWNraW5nQW5kUGFj
a2luZzx1aW50MTZfdCwgRGVzdFR5cGUsIHVucGFja1JHQkExNkJpZ1RvUkdCQTgsIHBhY2tpbmdG
dW5jPihzdGF0aWNfY2FzdDxjb25zdCB1aW50MTZfdCo+KHNvdXJjZURhdGEpLCB3aWR0aCwgaGVp
Z2h0LCBzb3VyY2VFbGVtZW50c1BlclBpeGVsLCBzb3VyY2VFbGVtZW50c1BlclJvdywgZGVzdGlu
YXRpb25EYXRhLCBkZXN0aW5hdGlvbkVsZW1lbnRzUGVyUGl4ZWwpOworICAgICAgICBkb1VucGFj
a2luZ0FuZFBhY2tpbmc8dWludDE2X3QsIHVpbnQ4X3QsIERlc3RUeXBlLCB1bnBhY2tSR0JBMTZC
aWdUb1JHQkE4LCBwYWNraW5nRnVuYz4oc3RhdGljX2Nhc3Q8Y29uc3QgdWludDE2X3QqPihzb3Vy
Y2VEYXRhKSwgd2lkdGgsIGhlaWdodCwgc291cmNlRWxlbWVudHNQZXJQaXhlbCwgc291cmNlRWxl
bWVudHNQZXJSb3csIGRlc3RpbmF0aW9uRGF0YSwgZGVzdGluYXRpb25FbGVtZW50c1BlclBpeGVs
KTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlNv
dXJjZUZvcm1hdFJHQjg6IHsKICAgICAgICAgdW5zaWduZWQgaW50IHNvdXJjZUVsZW1lbnRzUGVy
UGl4ZWwsIHNvdXJjZUVsZW1lbnRzUGVyUm93OwogICAgICAgICBjb21wdXRlSW5jcmVtZW50UGFy
YW1ldGVyczx1aW50OF90Pih3aWR0aCwgMywgc291cmNlVW5wYWNrQWxpZ25tZW50LCAmc291cmNl
RWxlbWVudHNQZXJQaXhlbCwgJnNvdXJjZUVsZW1lbnRzUGVyUm93KTsKLSAgICAgICAgZG9VbnBh
Y2tpbmdBbmRQYWNraW5nPHVpbnQ4X3QsIERlc3RUeXBlLCB1bnBhY2tSR0I4VG9SR0JBOCwgcGFj
a2luZ0Z1bmM+KHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihzb3VyY2VEYXRhKSwgd2lkdGgs
IGhlaWdodCwgc291cmNlRWxlbWVudHNQZXJQaXhlbCwgc291cmNlRWxlbWVudHNQZXJSb3csIGRl
c3RpbmF0aW9uRGF0YSwgZGVzdGluYXRpb25FbGVtZW50c1BlclBpeGVsKTsKKyAgICAgICAgZG9V
bnBhY2tpbmdBbmRQYWNraW5nPHVpbnQ4X3QsIHVpbnQ4X3QsIERlc3RUeXBlLCB1bnBhY2tSR0I4
VG9SR0JBOCwgcGFja2luZ0Z1bmM+KHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihzb3VyY2VE
YXRhKSwgd2lkdGgsIGhlaWdodCwgc291cmNlRWxlbWVudHNQZXJQaXhlbCwgc291cmNlRWxlbWVu
dHNQZXJSb3csIGRlc3RpbmF0aW9uRGF0YSwgZGVzdGluYXRpb25FbGVtZW50c1BlclBpeGVsKTsK
ICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlNvdXJj
ZUZvcm1hdFJHQjE2TGl0dGxlOiB7CiAgICAgICAgIHVuc2lnbmVkIGludCBzb3VyY2VFbGVtZW50
c1BlclBpeGVsLCBzb3VyY2VFbGVtZW50c1BlclJvdzsKICAgICAgICAgY29tcHV0ZUluY3JlbWVu
dFBhcmFtZXRlcnM8dWludDE2X3Q+KHdpZHRoLCA2LCBzb3VyY2VVbnBhY2tBbGlnbm1lbnQsICZz
b3VyY2VFbGVtZW50c1BlclBpeGVsLCAmc291cmNlRWxlbWVudHNQZXJSb3cpOwotICAgICAgICBk
b1VucGFja2luZ0FuZFBhY2tpbmc8dWludDE2X3QsIERlc3RUeXBlLCB1bnBhY2tSR0IxNkxpdHRs
ZVRvUkdCQTgsIHBhY2tpbmdGdW5jPihzdGF0aWNfY2FzdDxjb25zdCB1aW50MTZfdCo+KHNvdXJj
ZURhdGEpLCB3aWR0aCwgaGVpZ2h0LCBzb3VyY2VFbGVtZW50c1BlclBpeGVsLCBzb3VyY2VFbGVt
ZW50c1BlclJvdywgZGVzdGluYXRpb25EYXRhLCBkZXN0aW5hdGlvbkVsZW1lbnRzUGVyUGl4ZWwp
OworICAgICAgICBkb1VucGFja2luZ0FuZFBhY2tpbmc8dWludDE2X3QsIHVpbnQ4X3QsIERlc3RU
eXBlLCB1bnBhY2tSR0IxNkxpdHRsZVRvUkdCQTgsIHBhY2tpbmdGdW5jPihzdGF0aWNfY2FzdDxj
b25zdCB1aW50MTZfdCo+KHNvdXJjZURhdGEpLCB3aWR0aCwgaGVpZ2h0LCBzb3VyY2VFbGVtZW50
c1BlclBpeGVsLCBzb3VyY2VFbGVtZW50c1BlclJvdywgZGVzdGluYXRpb25EYXRhLCBkZXN0aW5h
dGlvbkVsZW1lbnRzUGVyUGl4ZWwpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBH
cmFwaGljc0NvbnRleHQzRDo6U291cmNlRm9ybWF0UkdCMTZCaWc6IHsKICAgICAgICAgdW5zaWdu
ZWQgaW50IHNvdXJjZUVsZW1lbnRzUGVyUGl4ZWwsIHNvdXJjZUVsZW1lbnRzUGVyUm93OwogICAg
ICAgICBjb21wdXRlSW5jcmVtZW50UGFyYW1ldGVyczx1aW50MTZfdD4od2lkdGgsIDYsIHNvdXJj
ZVVucGFja0FsaWdubWVudCwgJnNvdXJjZUVsZW1lbnRzUGVyUGl4ZWwsICZzb3VyY2VFbGVtZW50
c1BlclJvdyk7Ci0gICAgICAgIGRvVW5wYWNraW5nQW5kUGFja2luZzx1aW50MTZfdCwgRGVzdFR5
cGUsIHVucGFja1JHQjE2QmlnVG9SR0JBOCwgcGFja2luZ0Z1bmM+KHN0YXRpY19jYXN0PGNvbnN0
IHVpbnQxNl90Kj4oc291cmNlRGF0YSksIHdpZHRoLCBoZWlnaHQsIHNvdXJjZUVsZW1lbnRzUGVy
UGl4ZWwsIHNvdXJjZUVsZW1lbnRzUGVyUm93LCBkZXN0aW5hdGlvbkRhdGEsIGRlc3RpbmF0aW9u
RWxlbWVudHNQZXJQaXhlbCk7CisgICAgICAgIGRvVW5wYWNraW5nQW5kUGFja2luZzx1aW50MTZf
dCwgdWludDhfdCwgRGVzdFR5cGUsIHVucGFja1JHQjE2QmlnVG9SR0JBOCwgcGFja2luZ0Z1bmM+
KHN0YXRpY19jYXN0PGNvbnN0IHVpbnQxNl90Kj4oc291cmNlRGF0YSksIHdpZHRoLCBoZWlnaHQs
IHNvdXJjZUVsZW1lbnRzUGVyUGl4ZWwsIHNvdXJjZUVsZW1lbnRzUGVyUm93LCBkZXN0aW5hdGlv
bkRhdGEsIGRlc3RpbmF0aW9uRWxlbWVudHNQZXJQaXhlbCk7CiAgICAgICAgIGJyZWFrOwogICAg
IH0KICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpTb3VyY2VGb3JtYXRCR1I4OiB7CiAgICAg
ICAgIHVuc2lnbmVkIGludCBzb3VyY2VFbGVtZW50c1BlclBpeGVsLCBzb3VyY2VFbGVtZW50c1Bl
clJvdzsKICAgICAgICAgY29tcHV0ZUluY3JlbWVudFBhcmFtZXRlcnM8dWludDhfdD4od2lkdGgs
IDMsIHNvdXJjZVVucGFja0FsaWdubWVudCwgJnNvdXJjZUVsZW1lbnRzUGVyUGl4ZWwsICZzb3Vy
Y2VFbGVtZW50c1BlclJvdyk7Ci0gICAgICAgIGRvVW5wYWNraW5nQW5kUGFja2luZzx1aW50OF90
LCBEZXN0VHlwZSwgdW5wYWNrQkdSOFRvUkdCQTgsIHBhY2tpbmdGdW5jPihzdGF0aWNfY2FzdDxj
b25zdCB1aW50OF90Kj4oc291cmNlRGF0YSksIHdpZHRoLCBoZWlnaHQsIHNvdXJjZUVsZW1lbnRz
UGVyUGl4ZWwsIHNvdXJjZUVsZW1lbnRzUGVyUm93LCBkZXN0aW5hdGlvbkRhdGEsIGRlc3RpbmF0
aW9uRWxlbWVudHNQZXJQaXhlbCk7CisgICAgICAgIGRvVW5wYWNraW5nQW5kUGFja2luZzx1aW50
OF90LCB1aW50OF90LCBEZXN0VHlwZSwgdW5wYWNrQkdSOFRvUkdCQTgsIHBhY2tpbmdGdW5jPihz
dGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oc291cmNlRGF0YSksIHdpZHRoLCBoZWlnaHQsIHNv
dXJjZUVsZW1lbnRzUGVyUGl4ZWwsIHNvdXJjZUVsZW1lbnRzUGVyUm93LCBkZXN0aW5hdGlvbkRh
dGEsIGRlc3RpbmF0aW9uRWxlbWVudHNQZXJQaXhlbCk7CiAgICAgICAgIGJyZWFrOwogICAgIH0K
ICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpTb3VyY2VGb3JtYXRBUkdCODogewogICAgICAg
ICB1bnNpZ25lZCBpbnQgc291cmNlRWxlbWVudHNQZXJQaXhlbCwgc291cmNlRWxlbWVudHNQZXJS
b3c7CiAgICAgICAgIGNvbXB1dGVJbmNyZW1lbnRQYXJhbWV0ZXJzPHVpbnQ4X3Q+KHdpZHRoLCA0
LCBzb3VyY2VVbnBhY2tBbGlnbm1lbnQsICZzb3VyY2VFbGVtZW50c1BlclBpeGVsLCAmc291cmNl
RWxlbWVudHNQZXJSb3cpOwotICAgICAgICBkb1VucGFja2luZ0FuZFBhY2tpbmc8dWludDhfdCwg
RGVzdFR5cGUsIHVucGFja0FSR0I4VG9SR0JBOCwgcGFja2luZ0Z1bmM+KHN0YXRpY19jYXN0PGNv
bnN0IHVpbnQ4X3QqPihzb3VyY2VEYXRhKSwgd2lkdGgsIGhlaWdodCwgc291cmNlRWxlbWVudHNQ
ZXJQaXhlbCwgc291cmNlRWxlbWVudHNQZXJSb3csIGRlc3RpbmF0aW9uRGF0YSwgZGVzdGluYXRp
b25FbGVtZW50c1BlclBpeGVsKTsKKyAgICAgICAgZG9VbnBhY2tpbmdBbmRQYWNraW5nPHVpbnQ4
X3QsIHVpbnQ4X3QsIERlc3RUeXBlLCB1bnBhY2tBUkdCOFRvUkdCQTgsIHBhY2tpbmdGdW5jPihz
dGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oc291cmNlRGF0YSksIHdpZHRoLCBoZWlnaHQsIHNv
dXJjZUVsZW1lbnRzUGVyUGl4ZWwsIHNvdXJjZUVsZW1lbnRzUGVyUm93LCBkZXN0aW5hdGlvbkRh
dGEsIGRlc3RpbmF0aW9uRWxlbWVudHNQZXJQaXhlbCk7CiAgICAgICAgIGJyZWFrOwogICAgIH0K
ICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpTb3VyY2VGb3JtYXRBUkdCMTZMaXR0bGU6IHsK
ICAgICAgICAgdW5zaWduZWQgaW50IHNvdXJjZUVsZW1lbnRzUGVyUGl4ZWwsIHNvdXJjZUVsZW1l
bnRzUGVyUm93OwogICAgICAgICBjb21wdXRlSW5jcmVtZW50UGFyYW1ldGVyczx1aW50MTZfdD4o
d2lkdGgsIDgsIHNvdXJjZVVucGFja0FsaWdubWVudCwgJnNvdXJjZUVsZW1lbnRzUGVyUGl4ZWws
ICZzb3VyY2VFbGVtZW50c1BlclJvdyk7Ci0gICAgICAgIGRvVW5wYWNraW5nQW5kUGFja2luZzx1
aW50MTZfdCwgRGVzdFR5cGUsIHVucGFja0FSR0IxNkxpdHRsZVRvUkdCQTgsIHBhY2tpbmdGdW5j
PihzdGF0aWNfY2FzdDxjb25zdCB1aW50MTZfdCo+KHNvdXJjZURhdGEpLCB3aWR0aCwgaGVpZ2h0
LCBzb3VyY2VFbGVtZW50c1BlclBpeGVsLCBzb3VyY2VFbGVtZW50c1BlclJvdywgZGVzdGluYXRp
b25EYXRhLCBkZXN0aW5hdGlvbkVsZW1lbnRzUGVyUGl4ZWwpOworICAgICAgICBkb1VucGFja2lu
Z0FuZFBhY2tpbmc8dWludDE2X3QsIHVpbnQ4X3QsIERlc3RUeXBlLCB1bnBhY2tBUkdCMTZMaXR0
bGVUb1JHQkE4LCBwYWNraW5nRnVuYz4oc3RhdGljX2Nhc3Q8Y29uc3QgdWludDE2X3QqPihzb3Vy
Y2VEYXRhKSwgd2lkdGgsIGhlaWdodCwgc291cmNlRWxlbWVudHNQZXJQaXhlbCwgc291cmNlRWxl
bWVudHNQZXJSb3csIGRlc3RpbmF0aW9uRGF0YSwgZGVzdGluYXRpb25FbGVtZW50c1BlclBpeGVs
KTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlNv
dXJjZUZvcm1hdEFSR0IxNkJpZzogewogICAgICAgICB1bnNpZ25lZCBpbnQgc291cmNlRWxlbWVu
dHNQZXJQaXhlbCwgc291cmNlRWxlbWVudHNQZXJSb3c7CiAgICAgICAgIGNvbXB1dGVJbmNyZW1l
bnRQYXJhbWV0ZXJzPHVpbnQxNl90Pih3aWR0aCwgOCwgc291cmNlVW5wYWNrQWxpZ25tZW50LCAm
c291cmNlRWxlbWVudHNQZXJQaXhlbCwgJnNvdXJjZUVsZW1lbnRzUGVyUm93KTsKLSAgICAgICAg
ZG9VbnBhY2tpbmdBbmRQYWNraW5nPHVpbnQxNl90LCBEZXN0VHlwZSwgdW5wYWNrQVJHQjE2Qmln
VG9SR0JBOCwgcGFja2luZ0Z1bmM+KHN0YXRpY19jYXN0PGNvbnN0IHVpbnQxNl90Kj4oc291cmNl
RGF0YSksIHdpZHRoLCBoZWlnaHQsIHNvdXJjZUVsZW1lbnRzUGVyUGl4ZWwsIHNvdXJjZUVsZW1l
bnRzUGVyUm93LCBkZXN0aW5hdGlvbkRhdGEsIGRlc3RpbmF0aW9uRWxlbWVudHNQZXJQaXhlbCk7
CisgICAgICAgIGRvVW5wYWNraW5nQW5kUGFja2luZzx1aW50MTZfdCwgdWludDhfdCwgRGVzdFR5
cGUsIHVucGFja0FSR0IxNkJpZ1RvUkdCQTgsIHBhY2tpbmdGdW5jPihzdGF0aWNfY2FzdDxjb25z
dCB1aW50MTZfdCo+KHNvdXJjZURhdGEpLCB3aWR0aCwgaGVpZ2h0LCBzb3VyY2VFbGVtZW50c1Bl
clBpeGVsLCBzb3VyY2VFbGVtZW50c1BlclJvdywgZGVzdGluYXRpb25EYXRhLCBkZXN0aW5hdGlv
bkVsZW1lbnRzUGVyUGl4ZWwpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBHcmFw
aGljc0NvbnRleHQzRDo6U291cmNlRm9ybWF0QUJHUjg6IHsKICAgICAgICAgdW5zaWduZWQgaW50
IHNvdXJjZUVsZW1lbnRzUGVyUGl4ZWwsIHNvdXJjZUVsZW1lbnRzUGVyUm93OwogICAgICAgICBj
b21wdXRlSW5jcmVtZW50UGFyYW1ldGVyczx1aW50OF90Pih3aWR0aCwgNCwgc291cmNlVW5wYWNr
QWxpZ25tZW50LCAmc291cmNlRWxlbWVudHNQZXJQaXhlbCwgJnNvdXJjZUVsZW1lbnRzUGVyUm93
KTsKLSAgICAgICAgZG9VbnBhY2tpbmdBbmRQYWNraW5nPHVpbnQ4X3QsIERlc3RUeXBlLCB1bnBh
Y2tBQkdSOFRvUkdCQTgsIHBhY2tpbmdGdW5jPihzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4o
c291cmNlRGF0YSksIHdpZHRoLCBoZWlnaHQsIHNvdXJjZUVsZW1lbnRzUGVyUGl4ZWwsIHNvdXJj
ZUVsZW1lbnRzUGVyUm93LCBkZXN0aW5hdGlvbkRhdGEsIGRlc3RpbmF0aW9uRWxlbWVudHNQZXJQ
aXhlbCk7CisgICAgICAgIGRvVW5wYWNraW5nQW5kUGFja2luZzx1aW50OF90LCB1aW50OF90LCBE
ZXN0VHlwZSwgdW5wYWNrQUJHUjhUb1JHQkE4LCBwYWNraW5nRnVuYz4oc3RhdGljX2Nhc3Q8Y29u
c3QgdWludDhfdCo+KHNvdXJjZURhdGEpLCB3aWR0aCwgaGVpZ2h0LCBzb3VyY2VFbGVtZW50c1Bl
clBpeGVsLCBzb3VyY2VFbGVtZW50c1BlclJvdywgZGVzdGluYXRpb25EYXRhLCBkZXN0aW5hdGlv
bkVsZW1lbnRzUGVyUGl4ZWwpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBHcmFw
aGljc0NvbnRleHQzRDo6U291cmNlRm9ybWF0QkdSQTg6IHsKICAgICAgICAgdW5zaWduZWQgaW50
IHNvdXJjZUVsZW1lbnRzUGVyUGl4ZWwsIHNvdXJjZUVsZW1lbnRzUGVyUm93OwogICAgICAgICBj
b21wdXRlSW5jcmVtZW50UGFyYW1ldGVyczx1aW50OF90Pih3aWR0aCwgNCwgc291cmNlVW5wYWNr
QWxpZ25tZW50LCAmc291cmNlRWxlbWVudHNQZXJQaXhlbCwgJnNvdXJjZUVsZW1lbnRzUGVyUm93
KTsKLSAgICAgICAgZG9VbnBhY2tpbmdBbmRQYWNraW5nPHVpbnQ4X3QsIERlc3RUeXBlLCB1bnBh
Y2tCR1JBOFRvUkdCQTgsIHBhY2tpbmdGdW5jPihzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4o
c291cmNlRGF0YSksIHdpZHRoLCBoZWlnaHQsIHNvdXJjZUVsZW1lbnRzUGVyUGl4ZWwsIHNvdXJj
ZUVsZW1lbnRzUGVyUm93LCBkZXN0aW5hdGlvbkRhdGEsIGRlc3RpbmF0aW9uRWxlbWVudHNQZXJQ
aXhlbCk7CisgICAgICAgIGRvVW5wYWNraW5nQW5kUGFja2luZzx1aW50OF90LCB1aW50OF90LCBE
ZXN0VHlwZSwgdW5wYWNrQkdSQThUb1JHQkE4LCBwYWNraW5nRnVuYz4oc3RhdGljX2Nhc3Q8Y29u
c3QgdWludDhfdCo+KHNvdXJjZURhdGEpLCB3aWR0aCwgaGVpZ2h0LCBzb3VyY2VFbGVtZW50c1Bl
clBpeGVsLCBzb3VyY2VFbGVtZW50c1BlclJvdywgZGVzdGluYXRpb25EYXRhLCBkZXN0aW5hdGlv
bkVsZW1lbnRzUGVyUGl4ZWwpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBHcmFw
aGljc0NvbnRleHQzRDo6U291cmNlRm9ybWF0QkdSQTE2TGl0dGxlOiB7CiAgICAgICAgIHVuc2ln
bmVkIGludCBzb3VyY2VFbGVtZW50c1BlclBpeGVsLCBzb3VyY2VFbGVtZW50c1BlclJvdzsKICAg
ICAgICAgY29tcHV0ZUluY3JlbWVudFBhcmFtZXRlcnM8dWludDE2X3Q+KHdpZHRoLCA4LCBzb3Vy
Y2VVbnBhY2tBbGlnbm1lbnQsICZzb3VyY2VFbGVtZW50c1BlclBpeGVsLCAmc291cmNlRWxlbWVu
dHNQZXJSb3cpOwotICAgICAgICBkb1VucGFja2luZ0FuZFBhY2tpbmc8dWludDE2X3QsIERlc3RU
eXBlLCB1bnBhY2tCR1JBMTZMaXR0bGVUb1JHQkE4LCBwYWNraW5nRnVuYz4oc3RhdGljX2Nhc3Q8
Y29uc3QgdWludDE2X3QqPihzb3VyY2VEYXRhKSwgd2lkdGgsIGhlaWdodCwgc291cmNlRWxlbWVu
dHNQZXJQaXhlbCwgc291cmNlRWxlbWVudHNQZXJSb3csIGRlc3RpbmF0aW9uRGF0YSwgZGVzdGlu
YXRpb25FbGVtZW50c1BlclBpeGVsKTsKKyAgICAgICAgZG9VbnBhY2tpbmdBbmRQYWNraW5nPHVp
bnQxNl90LCB1aW50OF90LCBEZXN0VHlwZSwgdW5wYWNrQkdSQTE2TGl0dGxlVG9SR0JBOCwgcGFj
a2luZ0Z1bmM+KHN0YXRpY19jYXN0PGNvbnN0IHVpbnQxNl90Kj4oc291cmNlRGF0YSksIHdpZHRo
LCBoZWlnaHQsIHNvdXJjZUVsZW1lbnRzUGVyUGl4ZWwsIHNvdXJjZUVsZW1lbnRzUGVyUm93LCBk
ZXN0aW5hdGlvbkRhdGEsIGRlc3RpbmF0aW9uRWxlbWVudHNQZXJQaXhlbCk7CiAgICAgICAgIGJy
ZWFrOwogICAgIH0KICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpTb3VyY2VGb3JtYXRCR1JB
MTZCaWc6IHsKICAgICAgICAgdW5zaWduZWQgaW50IHNvdXJjZUVsZW1lbnRzUGVyUGl4ZWwsIHNv
dXJjZUVsZW1lbnRzUGVyUm93OwogICAgICAgICBjb21wdXRlSW5jcmVtZW50UGFyYW1ldGVyczx1
aW50MTZfdD4od2lkdGgsIDgsIHNvdXJjZVVucGFja0FsaWdubWVudCwgJnNvdXJjZUVsZW1lbnRz
UGVyUGl4ZWwsICZzb3VyY2VFbGVtZW50c1BlclJvdyk7Ci0gICAgICAgIGRvVW5wYWNraW5nQW5k
UGFja2luZzx1aW50MTZfdCwgRGVzdFR5cGUsIHVucGFja0JHUkExNkJpZ1RvUkdCQTgsIHBhY2tp
bmdGdW5jPihzdGF0aWNfY2FzdDxjb25zdCB1aW50MTZfdCo+KHNvdXJjZURhdGEpLCB3aWR0aCwg
aGVpZ2h0LCBzb3VyY2VFbGVtZW50c1BlclBpeGVsLCBzb3VyY2VFbGVtZW50c1BlclJvdywgZGVz
dGluYXRpb25EYXRhLCBkZXN0aW5hdGlvbkVsZW1lbnRzUGVyUGl4ZWwpOworICAgICAgICBkb1Vu
cGFja2luZ0FuZFBhY2tpbmc8dWludDE2X3QsIHVpbnQ4X3QsIERlc3RUeXBlLCB1bnBhY2tCR1JB
MTZCaWdUb1JHQkE4LCBwYWNraW5nRnVuYz4oc3RhdGljX2Nhc3Q8Y29uc3QgdWludDE2X3QqPihz
b3VyY2VEYXRhKSwgd2lkdGgsIGhlaWdodCwgc291cmNlRWxlbWVudHNQZXJQaXhlbCwgc291cmNl
RWxlbWVudHNQZXJSb3csIGRlc3RpbmF0aW9uRGF0YSwgZGVzdGluYXRpb25FbGVtZW50c1BlclBp
eGVsKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6
OlNvdXJjZUZvcm1hdFJHQkE1NTUxOiB7CiAgICAgICAgIHVuc2lnbmVkIGludCBzb3VyY2VFbGVt
ZW50c1BlclBpeGVsLCBzb3VyY2VFbGVtZW50c1BlclJvdzsKICAgICAgICAgY29tcHV0ZUluY3Jl
bWVudFBhcmFtZXRlcnM8dWludDE2X3Q+KHdpZHRoLCAyLCBzb3VyY2VVbnBhY2tBbGlnbm1lbnQs
ICZzb3VyY2VFbGVtZW50c1BlclBpeGVsLCAmc291cmNlRWxlbWVudHNQZXJSb3cpOwotICAgICAg
ICBkb1VucGFja2luZ0FuZFBhY2tpbmc8dWludDE2X3QsIERlc3RUeXBlLCB1bnBhY2tSR0JBNTU1
MVRvUkdCQTgsIHBhY2tpbmdGdW5jPihzdGF0aWNfY2FzdDxjb25zdCB1aW50MTZfdCo+KHNvdXJj
ZURhdGEpLCB3aWR0aCwgaGVpZ2h0LCBzb3VyY2VFbGVtZW50c1BlclBpeGVsLCBzb3VyY2VFbGVt
ZW50c1BlclJvdywgZGVzdGluYXRpb25EYXRhLCBkZXN0aW5hdGlvbkVsZW1lbnRzUGVyUGl4ZWwp
OworICAgICAgICBkb1VucGFja2luZ0FuZFBhY2tpbmc8dWludDE2X3QsIHVpbnQ4X3QsIERlc3RU
eXBlLCB1bnBhY2tSR0JBNTU1MVRvUkdCQTgsIHBhY2tpbmdGdW5jPihzdGF0aWNfY2FzdDxjb25z
dCB1aW50MTZfdCo+KHNvdXJjZURhdGEpLCB3aWR0aCwgaGVpZ2h0LCBzb3VyY2VFbGVtZW50c1Bl
clBpeGVsLCBzb3VyY2VFbGVtZW50c1BlclJvdywgZGVzdGluYXRpb25EYXRhLCBkZXN0aW5hdGlv
bkVsZW1lbnRzUGVyUGl4ZWwpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBHcmFw
aGljc0NvbnRleHQzRDo6U291cmNlRm9ybWF0UkdCQTQ0NDQ6IHsKICAgICAgICAgdW5zaWduZWQg
aW50IHNvdXJjZUVsZW1lbnRzUGVyUGl4ZWwsIHNvdXJjZUVsZW1lbnRzUGVyUm93OwogICAgICAg
ICBjb21wdXRlSW5jcmVtZW50UGFyYW1ldGVyczx1aW50MTZfdD4od2lkdGgsIDIsIHNvdXJjZVVu
cGFja0FsaWdubWVudCwgJnNvdXJjZUVsZW1lbnRzUGVyUGl4ZWwsICZzb3VyY2VFbGVtZW50c1Bl
clJvdyk7Ci0gICAgICAgIGRvVW5wYWNraW5nQW5kUGFja2luZzx1aW50MTZfdCwgRGVzdFR5cGUs
IHVucGFja1JHQkE0NDQ0VG9SR0JBOCwgcGFja2luZ0Z1bmM+KHN0YXRpY19jYXN0PGNvbnN0IHVp
bnQxNl90Kj4oc291cmNlRGF0YSksIHdpZHRoLCBoZWlnaHQsIHNvdXJjZUVsZW1lbnRzUGVyUGl4
ZWwsIHNvdXJjZUVsZW1lbnRzUGVyUm93LCBkZXN0aW5hdGlvbkRhdGEsIGRlc3RpbmF0aW9uRWxl
bWVudHNQZXJQaXhlbCk7CisgICAgICAgIGRvVW5wYWNraW5nQW5kUGFja2luZzx1aW50MTZfdCwg
dWludDhfdCwgRGVzdFR5cGUsIHVucGFja1JHQkE0NDQ0VG9SR0JBOCwgcGFja2luZ0Z1bmM+KHN0
YXRpY19jYXN0PGNvbnN0IHVpbnQxNl90Kj4oc291cmNlRGF0YSksIHdpZHRoLCBoZWlnaHQsIHNv
dXJjZUVsZW1lbnRzUGVyUGl4ZWwsIHNvdXJjZUVsZW1lbnRzUGVyUm93LCBkZXN0aW5hdGlvbkRh
dGEsIGRlc3RpbmF0aW9uRWxlbWVudHNQZXJQaXhlbCk7CiAgICAgICAgIGJyZWFrOwogICAgIH0K
ICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpTb3VyY2VGb3JtYXRSR0I1NjU6IHsKICAgICAg
ICAgdW5zaWduZWQgaW50IHNvdXJjZUVsZW1lbnRzUGVyUGl4ZWwsIHNvdXJjZUVsZW1lbnRzUGVy
Um93OwogICAgICAgICBjb21wdXRlSW5jcmVtZW50UGFyYW1ldGVyczx1aW50MTZfdD4od2lkdGgs
IDIsIHNvdXJjZVVucGFja0FsaWdubWVudCwgJnNvdXJjZUVsZW1lbnRzUGVyUGl4ZWwsICZzb3Vy
Y2VFbGVtZW50c1BlclJvdyk7Ci0gICAgICAgIGRvVW5wYWNraW5nQW5kUGFja2luZzx1aW50MTZf
dCwgRGVzdFR5cGUsIHVucGFja1JHQjU2NVRvUkdCQTgsIHBhY2tpbmdGdW5jPihzdGF0aWNfY2Fz
dDxjb25zdCB1aW50MTZfdCo+KHNvdXJjZURhdGEpLCB3aWR0aCwgaGVpZ2h0LCBzb3VyY2VFbGVt
ZW50c1BlclBpeGVsLCBzb3VyY2VFbGVtZW50c1BlclJvdywgZGVzdGluYXRpb25EYXRhLCBkZXN0
aW5hdGlvbkVsZW1lbnRzUGVyUGl4ZWwpOworICAgICAgICBkb1VucGFja2luZ0FuZFBhY2tpbmc8
dWludDE2X3QsIHVpbnQ4X3QsIERlc3RUeXBlLCB1bnBhY2tSR0I1NjVUb1JHQkE4LCBwYWNraW5n
RnVuYz4oc3RhdGljX2Nhc3Q8Y29uc3QgdWludDE2X3QqPihzb3VyY2VEYXRhKSwgd2lkdGgsIGhl
aWdodCwgc291cmNlRWxlbWVudHNQZXJQaXhlbCwgc291cmNlRWxlbWVudHNQZXJSb3csIGRlc3Rp
bmF0aW9uRGF0YSwgZGVzdGluYXRpb25FbGVtZW50c1BlclBpeGVsKTsKICAgICAgICAgYnJlYWs7
CiAgICAgfQogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlNvdXJjZUZvcm1hdFI4OiB7CiAg
ICAgICAgIHVuc2lnbmVkIGludCBzb3VyY2VFbGVtZW50c1BlclBpeGVsLCBzb3VyY2VFbGVtZW50
c1BlclJvdzsKICAgICAgICAgY29tcHV0ZUluY3JlbWVudFBhcmFtZXRlcnM8dWludDhfdD4od2lk
dGgsIDEsIHNvdXJjZVVucGFja0FsaWdubWVudCwgJnNvdXJjZUVsZW1lbnRzUGVyUGl4ZWwsICZz
b3VyY2VFbGVtZW50c1BlclJvdyk7Ci0gICAgICAgIGRvVW5wYWNraW5nQW5kUGFja2luZzx1aW50
OF90LCBEZXN0VHlwZSwgdW5wYWNrUjhUb1JHQkE4LCBwYWNraW5nRnVuYz4oc3RhdGljX2Nhc3Q8
Y29uc3QgdWludDhfdCo+KHNvdXJjZURhdGEpLCB3aWR0aCwgaGVpZ2h0LCBzb3VyY2VFbGVtZW50
c1BlclBpeGVsLCBzb3VyY2VFbGVtZW50c1BlclJvdywgZGVzdGluYXRpb25EYXRhLCBkZXN0aW5h
dGlvbkVsZW1lbnRzUGVyUGl4ZWwpOworICAgICAgICBkb1VucGFja2luZ0FuZFBhY2tpbmc8dWlu
dDhfdCwgdWludDhfdCwgRGVzdFR5cGUsIHVucGFja1I4VG9SR0JBOCwgcGFja2luZ0Z1bmM+KHN0
YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihzb3VyY2VEYXRhKSwgd2lkdGgsIGhlaWdodCwgc291
cmNlRWxlbWVudHNQZXJQaXhlbCwgc291cmNlRWxlbWVudHNQZXJSb3csIGRlc3RpbmF0aW9uRGF0
YSwgZGVzdGluYXRpb25FbGVtZW50c1BlclBpeGVsKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQog
ICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlNvdXJjZUZvcm1hdFIxNkxpdHRsZTogewogICAg
ICAgICB1bnNpZ25lZCBpbnQgc291cmNlRWxlbWVudHNQZXJQaXhlbCwgc291cmNlRWxlbWVudHNQ
ZXJSb3c7CiAgICAgICAgIGNvbXB1dGVJbmNyZW1lbnRQYXJhbWV0ZXJzPHVpbnQxNl90Pih3aWR0
aCwgMiwgc291cmNlVW5wYWNrQWxpZ25tZW50LCAmc291cmNlRWxlbWVudHNQZXJQaXhlbCwgJnNv
dXJjZUVsZW1lbnRzUGVyUm93KTsKLSAgICAgICAgZG9VbnBhY2tpbmdBbmRQYWNraW5nPHVpbnQx
Nl90LCBEZXN0VHlwZSwgdW5wYWNrUjE2TGl0dGxlVG9SR0JBOCwgcGFja2luZ0Z1bmM+KHN0YXRp
Y19jYXN0PGNvbnN0IHVpbnQxNl90Kj4oc291cmNlRGF0YSksIHdpZHRoLCBoZWlnaHQsIHNvdXJj
ZUVsZW1lbnRzUGVyUGl4ZWwsIHNvdXJjZUVsZW1lbnRzUGVyUm93LCBkZXN0aW5hdGlvbkRhdGEs
IGRlc3RpbmF0aW9uRWxlbWVudHNQZXJQaXhlbCk7CisgICAgICAgIGRvVW5wYWNraW5nQW5kUGFj
a2luZzx1aW50MTZfdCwgdWludDhfdCwgRGVzdFR5cGUsIHVucGFja1IxNkxpdHRsZVRvUkdCQTgs
IHBhY2tpbmdGdW5jPihzdGF0aWNfY2FzdDxjb25zdCB1aW50MTZfdCo+KHNvdXJjZURhdGEpLCB3
aWR0aCwgaGVpZ2h0LCBzb3VyY2VFbGVtZW50c1BlclBpeGVsLCBzb3VyY2VFbGVtZW50c1BlclJv
dywgZGVzdGluYXRpb25EYXRhLCBkZXN0aW5hdGlvbkVsZW1lbnRzUGVyUGl4ZWwpOwogICAgICAg
ICBicmVhazsKICAgICB9CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6U291cmNlRm9ybWF0
UjE2QmlnOiB7CiAgICAgICAgIHVuc2lnbmVkIGludCBzb3VyY2VFbGVtZW50c1BlclBpeGVsLCBz
b3VyY2VFbGVtZW50c1BlclJvdzsKICAgICAgICAgY29tcHV0ZUluY3JlbWVudFBhcmFtZXRlcnM8
dWludDE2X3Q+KHdpZHRoLCAyLCBzb3VyY2VVbnBhY2tBbGlnbm1lbnQsICZzb3VyY2VFbGVtZW50
c1BlclBpeGVsLCAmc291cmNlRWxlbWVudHNQZXJSb3cpOwotICAgICAgICBkb1VucGFja2luZ0Fu
ZFBhY2tpbmc8dWludDE2X3QsIERlc3RUeXBlLCB1bnBhY2tSMTZCaWdUb1JHQkE4LCBwYWNraW5n
RnVuYz4oc3RhdGljX2Nhc3Q8Y29uc3QgdWludDE2X3QqPihzb3VyY2VEYXRhKSwgd2lkdGgsIGhl
aWdodCwgc291cmNlRWxlbWVudHNQZXJQaXhlbCwgc291cmNlRWxlbWVudHNQZXJSb3csIGRlc3Rp
bmF0aW9uRGF0YSwgZGVzdGluYXRpb25FbGVtZW50c1BlclBpeGVsKTsKKyAgICAgICAgZG9VbnBh
Y2tpbmdBbmRQYWNraW5nPHVpbnQxNl90LCB1aW50OF90LCBEZXN0VHlwZSwgdW5wYWNrUjE2Qmln
VG9SR0JBOCwgcGFja2luZ0Z1bmM+KHN0YXRpY19jYXN0PGNvbnN0IHVpbnQxNl90Kj4oc291cmNl
RGF0YSksIHdpZHRoLCBoZWlnaHQsIHNvdXJjZUVsZW1lbnRzUGVyUGl4ZWwsIHNvdXJjZUVsZW1l
bnRzUGVyUm93LCBkZXN0aW5hdGlvbkRhdGEsIGRlc3RpbmF0aW9uRWxlbWVudHNQZXJQaXhlbCk7
CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpTb3Vy
Y2VGb3JtYXRSQTg6IHsKICAgICAgICAgdW5zaWduZWQgaW50IHNvdXJjZUVsZW1lbnRzUGVyUGl4
ZWwsIHNvdXJjZUVsZW1lbnRzUGVyUm93OwogICAgICAgICBjb21wdXRlSW5jcmVtZW50UGFyYW1l
dGVyczx1aW50OF90Pih3aWR0aCwgMiwgc291cmNlVW5wYWNrQWxpZ25tZW50LCAmc291cmNlRWxl
bWVudHNQZXJQaXhlbCwgJnNvdXJjZUVsZW1lbnRzUGVyUm93KTsKLSAgICAgICAgZG9VbnBhY2tp
bmdBbmRQYWNraW5nPHVpbnQ4X3QsIERlc3RUeXBlLCB1bnBhY2tSQThUb1JHQkE4LCBwYWNraW5n
RnVuYz4oc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KHNvdXJjZURhdGEpLCB3aWR0aCwgaGVp
Z2h0LCBzb3VyY2VFbGVtZW50c1BlclBpeGVsLCBzb3VyY2VFbGVtZW50c1BlclJvdywgZGVzdGlu
YXRpb25EYXRhLCBkZXN0aW5hdGlvbkVsZW1lbnRzUGVyUGl4ZWwpOworICAgICAgICBkb1VucGFj
a2luZ0FuZFBhY2tpbmc8dWludDhfdCwgdWludDhfdCwgRGVzdFR5cGUsIHVucGFja1JBOFRvUkdC
QTgsIHBhY2tpbmdGdW5jPihzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oc291cmNlRGF0YSks
IHdpZHRoLCBoZWlnaHQsIHNvdXJjZUVsZW1lbnRzUGVyUGl4ZWwsIHNvdXJjZUVsZW1lbnRzUGVy
Um93LCBkZXN0aW5hdGlvbkRhdGEsIGRlc3RpbmF0aW9uRWxlbWVudHNQZXJQaXhlbCk7CiAgICAg
ICAgIGJyZWFrOwogICAgIH0KICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpTb3VyY2VGb3Jt
YXRSQTE2TGl0dGxlOiB7CiAgICAgICAgIHVuc2lnbmVkIGludCBzb3VyY2VFbGVtZW50c1BlclBp
eGVsLCBzb3VyY2VFbGVtZW50c1BlclJvdzsKICAgICAgICAgY29tcHV0ZUluY3JlbWVudFBhcmFt
ZXRlcnM8dWludDE2X3Q+KHdpZHRoLCA0LCBzb3VyY2VVbnBhY2tBbGlnbm1lbnQsICZzb3VyY2VF
bGVtZW50c1BlclBpeGVsLCAmc291cmNlRWxlbWVudHNQZXJSb3cpOwotICAgICAgICBkb1VucGFj
a2luZ0FuZFBhY2tpbmc8dWludDE2X3QsIERlc3RUeXBlLCB1bnBhY2tSQTE2TGl0dGxlVG9SR0JB
OCwgcGFja2luZ0Z1bmM+KHN0YXRpY19jYXN0PGNvbnN0IHVpbnQxNl90Kj4oc291cmNlRGF0YSks
IHdpZHRoLCBoZWlnaHQsIHNvdXJjZUVsZW1lbnRzUGVyUGl4ZWwsIHNvdXJjZUVsZW1lbnRzUGVy
Um93LCBkZXN0aW5hdGlvbkRhdGEsIGRlc3RpbmF0aW9uRWxlbWVudHNQZXJQaXhlbCk7CisgICAg
ICAgIGRvVW5wYWNraW5nQW5kUGFja2luZzx1aW50MTZfdCwgdWludDhfdCwgRGVzdFR5cGUsIHVu
cGFja1JBMTZMaXR0bGVUb1JHQkE4LCBwYWNraW5nRnVuYz4oc3RhdGljX2Nhc3Q8Y29uc3QgdWlu
dDE2X3QqPihzb3VyY2VEYXRhKSwgd2lkdGgsIGhlaWdodCwgc291cmNlRWxlbWVudHNQZXJQaXhl
bCwgc291cmNlRWxlbWVudHNQZXJSb3csIGRlc3RpbmF0aW9uRGF0YSwgZGVzdGluYXRpb25FbGVt
ZW50c1BlclBpeGVsKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2UgR3JhcGhpY3ND
b250ZXh0M0Q6OlNvdXJjZUZvcm1hdFJBMTZCaWc6IHsKICAgICAgICAgdW5zaWduZWQgaW50IHNv
dXJjZUVsZW1lbnRzUGVyUGl4ZWwsIHNvdXJjZUVsZW1lbnRzUGVyUm93OwogICAgICAgICBjb21w
dXRlSW5jcmVtZW50UGFyYW1ldGVyczx1aW50MTZfdD4od2lkdGgsIDQsIHNvdXJjZVVucGFja0Fs
aWdubWVudCwgJnNvdXJjZUVsZW1lbnRzUGVyUGl4ZWwsICZzb3VyY2VFbGVtZW50c1BlclJvdyk7
Ci0gICAgICAgIGRvVW5wYWNraW5nQW5kUGFja2luZzx1aW50MTZfdCwgRGVzdFR5cGUsIHVucGFj
a1JBMTZCaWdUb1JHQkE4LCBwYWNraW5nRnVuYz4oc3RhdGljX2Nhc3Q8Y29uc3QgdWludDE2X3Qq
Pihzb3VyY2VEYXRhKSwgd2lkdGgsIGhlaWdodCwgc291cmNlRWxlbWVudHNQZXJQaXhlbCwgc291
cmNlRWxlbWVudHNQZXJSb3csIGRlc3RpbmF0aW9uRGF0YSwgZGVzdGluYXRpb25FbGVtZW50c1Bl
clBpeGVsKTsKKyAgICAgICAgZG9VbnBhY2tpbmdBbmRQYWNraW5nPHVpbnQxNl90LCB1aW50OF90
LCBEZXN0VHlwZSwgdW5wYWNrUkExNkJpZ1RvUkdCQTgsIHBhY2tpbmdGdW5jPihzdGF0aWNfY2Fz
dDxjb25zdCB1aW50MTZfdCo+KHNvdXJjZURhdGEpLCB3aWR0aCwgaGVpZ2h0LCBzb3VyY2VFbGVt
ZW50c1BlclBpeGVsLCBzb3VyY2VFbGVtZW50c1BlclJvdywgZGVzdGluYXRpb25EYXRhLCBkZXN0
aW5hdGlvbkVsZW1lbnRzUGVyUGl4ZWwpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2Fz
ZSBHcmFwaGljc0NvbnRleHQzRDo6U291cmNlRm9ybWF0QVI4OiB7CiAgICAgICAgIHVuc2lnbmVk
IGludCBzb3VyY2VFbGVtZW50c1BlclBpeGVsLCBzb3VyY2VFbGVtZW50c1BlclJvdzsKICAgICAg
ICAgY29tcHV0ZUluY3JlbWVudFBhcmFtZXRlcnM8dWludDhfdD4od2lkdGgsIDIsIHNvdXJjZVVu
cGFja0FsaWdubWVudCwgJnNvdXJjZUVsZW1lbnRzUGVyUGl4ZWwsICZzb3VyY2VFbGVtZW50c1Bl
clJvdyk7Ci0gICAgICAgIGRvVW5wYWNraW5nQW5kUGFja2luZzx1aW50OF90LCBEZXN0VHlwZSwg
dW5wYWNrQVI4VG9SR0JBOCwgcGFja2luZ0Z1bmM+KHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3Qq
Pihzb3VyY2VEYXRhKSwgd2lkdGgsIGhlaWdodCwgc291cmNlRWxlbWVudHNQZXJQaXhlbCwgc291
cmNlRWxlbWVudHNQZXJSb3csIGRlc3RpbmF0aW9uRGF0YSwgZGVzdGluYXRpb25FbGVtZW50c1Bl
clBpeGVsKTsKKyAgICAgICAgZG9VbnBhY2tpbmdBbmRQYWNraW5nPHVpbnQ4X3QsIHVpbnQ4X3Qs
IERlc3RUeXBlLCB1bnBhY2tBUjhUb1JHQkE4LCBwYWNraW5nRnVuYz4oc3RhdGljX2Nhc3Q8Y29u
c3QgdWludDhfdCo+KHNvdXJjZURhdGEpLCB3aWR0aCwgaGVpZ2h0LCBzb3VyY2VFbGVtZW50c1Bl
clBpeGVsLCBzb3VyY2VFbGVtZW50c1BlclJvdywgZGVzdGluYXRpb25EYXRhLCBkZXN0aW5hdGlv
bkVsZW1lbnRzUGVyUGl4ZWwpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBHcmFw
aGljc0NvbnRleHQzRDo6U291cmNlRm9ybWF0QVIxNkxpdHRsZTogewogICAgICAgICB1bnNpZ25l
ZCBpbnQgc291cmNlRWxlbWVudHNQZXJQaXhlbCwgc291cmNlRWxlbWVudHNQZXJSb3c7CiAgICAg
ICAgIGNvbXB1dGVJbmNyZW1lbnRQYXJhbWV0ZXJzPHVpbnQxNl90Pih3aWR0aCwgNCwgc291cmNl
VW5wYWNrQWxpZ25tZW50LCAmc291cmNlRWxlbWVudHNQZXJQaXhlbCwgJnNvdXJjZUVsZW1lbnRz
UGVyUm93KTsKLSAgICAgICAgZG9VbnBhY2tpbmdBbmRQYWNraW5nPHVpbnQxNl90LCBEZXN0VHlw
ZSwgdW5wYWNrQVIxNkxpdHRsZVRvUkdCQTgsIHBhY2tpbmdGdW5jPihzdGF0aWNfY2FzdDxjb25z
dCB1aW50MTZfdCo+KHNvdXJjZURhdGEpLCB3aWR0aCwgaGVpZ2h0LCBzb3VyY2VFbGVtZW50c1Bl
clBpeGVsLCBzb3VyY2VFbGVtZW50c1BlclJvdywgZGVzdGluYXRpb25EYXRhLCBkZXN0aW5hdGlv
bkVsZW1lbnRzUGVyUGl4ZWwpOworICAgICAgICBkb1VucGFja2luZ0FuZFBhY2tpbmc8dWludDE2
X3QsIHVpbnQ4X3QsIERlc3RUeXBlLCB1bnBhY2tBUjE2TGl0dGxlVG9SR0JBOCwgcGFja2luZ0Z1
bmM+KHN0YXRpY19jYXN0PGNvbnN0IHVpbnQxNl90Kj4oc291cmNlRGF0YSksIHdpZHRoLCBoZWln
aHQsIHNvdXJjZUVsZW1lbnRzUGVyUGl4ZWwsIHNvdXJjZUVsZW1lbnRzUGVyUm93LCBkZXN0aW5h
dGlvbkRhdGEsIGRlc3RpbmF0aW9uRWxlbWVudHNQZXJQaXhlbCk7CiAgICAgICAgIGJyZWFrOwog
ICAgIH0KICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpTb3VyY2VGb3JtYXRBUjE2QmlnOiB7
CiAgICAgICAgIHVuc2lnbmVkIGludCBzb3VyY2VFbGVtZW50c1BlclBpeGVsLCBzb3VyY2VFbGVt
ZW50c1BlclJvdzsKICAgICAgICAgY29tcHV0ZUluY3JlbWVudFBhcmFtZXRlcnM8dWludDE2X3Q+
KHdpZHRoLCA0LCBzb3VyY2VVbnBhY2tBbGlnbm1lbnQsICZzb3VyY2VFbGVtZW50c1BlclBpeGVs
LCAmc291cmNlRWxlbWVudHNQZXJSb3cpOwotICAgICAgICBkb1VucGFja2luZ0FuZFBhY2tpbmc8
dWludDE2X3QsIERlc3RUeXBlLCB1bnBhY2tBUjE2QmlnVG9SR0JBOCwgcGFja2luZ0Z1bmM+KHN0
YXRpY19jYXN0PGNvbnN0IHVpbnQxNl90Kj4oc291cmNlRGF0YSksIHdpZHRoLCBoZWlnaHQsIHNv
dXJjZUVsZW1lbnRzUGVyUGl4ZWwsIHNvdXJjZUVsZW1lbnRzUGVyUm93LCBkZXN0aW5hdGlvbkRh
dGEsIGRlc3RpbmF0aW9uRWxlbWVudHNQZXJQaXhlbCk7CisgICAgICAgIGRvVW5wYWNraW5nQW5k
UGFja2luZzx1aW50MTZfdCwgdWludDhfdCwgRGVzdFR5cGUsIHVucGFja0FSMTZCaWdUb1JHQkE4
LCBwYWNraW5nRnVuYz4oc3RhdGljX2Nhc3Q8Y29uc3QgdWludDE2X3QqPihzb3VyY2VEYXRhKSwg
d2lkdGgsIGhlaWdodCwgc291cmNlRWxlbWVudHNQZXJQaXhlbCwgc291cmNlRWxlbWVudHNQZXJS
b3csIGRlc3RpbmF0aW9uRGF0YSwgZGVzdGluYXRpb25FbGVtZW50c1BlclBpeGVsKTsKICAgICAg
ICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlNvdXJjZUZvcm1h
dEE4OiB7CiAgICAgICAgIHVuc2lnbmVkIGludCBzb3VyY2VFbGVtZW50c1BlclBpeGVsLCBzb3Vy
Y2VFbGVtZW50c1BlclJvdzsKICAgICAgICAgY29tcHV0ZUluY3JlbWVudFBhcmFtZXRlcnM8dWlu
dDhfdD4od2lkdGgsIDEsIHNvdXJjZVVucGFja0FsaWdubWVudCwgJnNvdXJjZUVsZW1lbnRzUGVy
UGl4ZWwsICZzb3VyY2VFbGVtZW50c1BlclJvdyk7Ci0gICAgICAgIGRvVW5wYWNraW5nQW5kUGFj
a2luZzx1aW50OF90LCBEZXN0VHlwZSwgdW5wYWNrQThUb1JHQkE4LCBwYWNraW5nRnVuYz4oc3Rh
dGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KHNvdXJjZURhdGEpLCB3aWR0aCwgaGVpZ2h0LCBzb3Vy
Y2VFbGVtZW50c1BlclBpeGVsLCBzb3VyY2VFbGVtZW50c1BlclJvdywgZGVzdGluYXRpb25EYXRh
LCBkZXN0aW5hdGlvbkVsZW1lbnRzUGVyUGl4ZWwpOworICAgICAgICBkb1VucGFja2luZ0FuZFBh
Y2tpbmc8dWludDhfdCwgdWludDhfdCwgRGVzdFR5cGUsIHVucGFja0E4VG9SR0JBOCwgcGFja2lu
Z0Z1bmM+KHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihzb3VyY2VEYXRhKSwgd2lkdGgsIGhl
aWdodCwgc291cmNlRWxlbWVudHNQZXJQaXhlbCwgc291cmNlRWxlbWVudHNQZXJSb3csIGRlc3Rp
bmF0aW9uRGF0YSwgZGVzdGluYXRpb25FbGVtZW50c1BlclBpeGVsKTsKICAgICAgICAgYnJlYWs7
CiAgICAgfQogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlNvdXJjZUZvcm1hdEExNkxpdHRs
ZTogewogICAgICAgICB1bnNpZ25lZCBpbnQgc291cmNlRWxlbWVudHNQZXJQaXhlbCwgc291cmNl
RWxlbWVudHNQZXJSb3c7CiAgICAgICAgIGNvbXB1dGVJbmNyZW1lbnRQYXJhbWV0ZXJzPHVpbnQx
Nl90Pih3aWR0aCwgMiwgc291cmNlVW5wYWNrQWxpZ25tZW50LCAmc291cmNlRWxlbWVudHNQZXJQ
aXhlbCwgJnNvdXJjZUVsZW1lbnRzUGVyUm93KTsKLSAgICAgICAgZG9VbnBhY2tpbmdBbmRQYWNr
aW5nPHVpbnQxNl90LCBEZXN0VHlwZSwgdW5wYWNrQTE2TGl0dGxlVG9SR0JBOCwgcGFja2luZ0Z1
bmM+KHN0YXRpY19jYXN0PGNvbnN0IHVpbnQxNl90Kj4oc291cmNlRGF0YSksIHdpZHRoLCBoZWln
aHQsIHNvdXJjZUVsZW1lbnRzUGVyUGl4ZWwsIHNvdXJjZUVsZW1lbnRzUGVyUm93LCBkZXN0aW5h
dGlvbkRhdGEsIGRlc3RpbmF0aW9uRWxlbWVudHNQZXJQaXhlbCk7CisgICAgICAgIGRvVW5wYWNr
aW5nQW5kUGFja2luZzx1aW50MTZfdCwgdWludDhfdCwgRGVzdFR5cGUsIHVucGFja0ExNkxpdHRs
ZVRvUkdCQTgsIHBhY2tpbmdGdW5jPihzdGF0aWNfY2FzdDxjb25zdCB1aW50MTZfdCo+KHNvdXJj
ZURhdGEpLCB3aWR0aCwgaGVpZ2h0LCBzb3VyY2VFbGVtZW50c1BlclBpeGVsLCBzb3VyY2VFbGVt
ZW50c1BlclJvdywgZGVzdGluYXRpb25EYXRhLCBkZXN0aW5hdGlvbkVsZW1lbnRzUGVyUGl4ZWwp
OwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6U291
cmNlRm9ybWF0QTE2QmlnOiB7CiAgICAgICAgIHVuc2lnbmVkIGludCBzb3VyY2VFbGVtZW50c1Bl
clBpeGVsLCBzb3VyY2VFbGVtZW50c1BlclJvdzsKICAgICAgICAgY29tcHV0ZUluY3JlbWVudFBh
cmFtZXRlcnM8dWludDE2X3Q+KHdpZHRoLCAyLCBzb3VyY2VVbnBhY2tBbGlnbm1lbnQsICZzb3Vy
Y2VFbGVtZW50c1BlclBpeGVsLCAmc291cmNlRWxlbWVudHNQZXJSb3cpOwotICAgICAgICBkb1Vu
cGFja2luZ0FuZFBhY2tpbmc8dWludDE2X3QsIERlc3RUeXBlLCB1bnBhY2tBMTZCaWdUb1JHQkE4
LCBwYWNraW5nRnVuYz4oc3RhdGljX2Nhc3Q8Y29uc3QgdWludDE2X3QqPihzb3VyY2VEYXRhKSwg
d2lkdGgsIGhlaWdodCwgc291cmNlRWxlbWVudHNQZXJQaXhlbCwgc291cmNlRWxlbWVudHNQZXJS
b3csIGRlc3RpbmF0aW9uRGF0YSwgZGVzdGluYXRpb25FbGVtZW50c1BlclBpeGVsKTsKKyAgICAg
ICAgZG9VbnBhY2tpbmdBbmRQYWNraW5nPHVpbnQxNl90LCB1aW50OF90LCBEZXN0VHlwZSwgdW5w
YWNrQTE2QmlnVG9SR0JBOCwgcGFja2luZ0Z1bmM+KHN0YXRpY19jYXN0PGNvbnN0IHVpbnQxNl90
Kj4oc291cmNlRGF0YSksIHdpZHRoLCBoZWlnaHQsIHNvdXJjZUVsZW1lbnRzUGVyUGl4ZWwsIHNv
dXJjZUVsZW1lbnRzUGVyUm93LCBkZXN0aW5hdGlvbkRhdGEsIGRlc3RpbmF0aW9uRWxlbWVudHNQ
ZXJQaXhlbCk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBkZWZhdWx0OgpAQCAtOTc5LDYg
KzEwODksNjMgQEAgc3RhdGljIHZvaWQgZG9QYWNraW5nKGNvbnN0IHZvaWQqIHNvdXJjZQogICAg
IH0KIH0KIAorLy8gVGhpcyBzcGVjaWFsaXplZCByb3V0aW5lIGlzIHVzZWQgb25seSBmb3IgZmxv
YXRpbmctcG9pbnQgdGV4dHVyZSB1cGxvYWRzLiBJdAorLy8gZG9lcyBub3QgbmVlZCB0byBiZSBh
cyBnZW5lcmFsIGFzIGRvUGFja2luZywgYWJvdmU7IGJlY2F1c2UgdGhlcmUgYXJlCisvLyBjdXJy
ZW50bHkgbm8gbmF0aXZlIGZsb2F0aW5nLXBvaW50IGltYWdlIGZvcm1hdHMgaW4gV2ViS2l0LCB0
aGVyZSBhcmUgb25seSBhCisvLyBmZXcgdXBsb2FkIHBhdGhzLgordGVtcGxhdGU8dm9pZCBwYWNr
aW5nRnVuYyhjb25zdCBmbG9hdCosIGZsb2F0Kik+CitzdGF0aWMgdm9pZCBkb0Zsb2F0aW5nUG9p
bnRQYWNraW5nKGNvbnN0IHZvaWQqIHNvdXJjZURhdGEsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdyYXBoaWNzQ29udGV4dDNEOjpTb3VyY2VEYXRhRm9ybWF0IHNvdXJjZURh
dGFGb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGlu
dCB3aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50
IGhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50
IHNvdXJjZVVucGFja0FsaWdubWVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZmxvYXQqIGRlc3RpbmF0aW9uRGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdW5zaWduZWQgaW50IGRlc3RpbmF0aW9uRWxlbWVudHNQZXJQaXhlbCkKK3sKKyAgICBz
d2l0Y2ggKHNvdXJjZURhdGFGb3JtYXQpIHsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpT
b3VyY2VGb3JtYXRSR0JBODogeworICAgICAgICB1bnNpZ25lZCBpbnQgc291cmNlRWxlbWVudHNQ
ZXJQaXhlbCwgc291cmNlRWxlbWVudHNQZXJSb3c7CisgICAgICAgIGNvbXB1dGVJbmNyZW1lbnRQ
YXJhbWV0ZXJzPGZsb2F0Pih3aWR0aCwgNCwgc291cmNlVW5wYWNrQWxpZ25tZW50LCAmc291cmNl
RWxlbWVudHNQZXJQaXhlbCwgJnNvdXJjZUVsZW1lbnRzUGVyUm93KTsKKyAgICAgICAgQVNTRVJU
KCFzb3VyY2VFbGVtZW50c1BlclJvdyk7IC8vIEd1YXJhbnRlZWQgYmVjYXVzZSBlYWNoIGNvbG9y
IGNoYW5uZWwgaXMgc2l6ZW9mKGZsb2F0KSBieXRlcy4KKyAgICAgICAgY29uc3QgZmxvYXQqIHNv
dXJjZSA9IHN0YXRpY19jYXN0PGNvbnN0IGZsb2F0Kj4oc291cmNlRGF0YSk7CisgICAgICAgIHVu
c2lnbmVkIGludCBudW1FbGVtZW50cyA9IHdpZHRoICogaGVpZ2h0ICogNDsKKyAgICAgICAgY29u
c3QgZmxvYXQqIGVuZFBvaW50ZXIgPSBzb3VyY2UgKyBudW1FbGVtZW50czsKKyAgICAgICAgd2hp
bGUgKHNvdXJjZSA8IGVuZFBvaW50ZXIpIHsKKyAgICAgICAgICAgIHBhY2tpbmdGdW5jKHNvdXJj
ZSwgZGVzdGluYXRpb25EYXRhKTsKKyAgICAgICAgICAgIHNvdXJjZSArPSBzb3VyY2VFbGVtZW50
c1BlclBpeGVsOworICAgICAgICAgICAgZGVzdGluYXRpb25EYXRhICs9IGRlc3RpbmF0aW9uRWxl
bWVudHNQZXJQaXhlbDsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2Fz
ZSBHcmFwaGljc0NvbnRleHQzRDo6U291cmNlRm9ybWF0UkdCMzJGOiB7CisgICAgICAgIHVuc2ln
bmVkIGludCBzb3VyY2VFbGVtZW50c1BlclBpeGVsLCBzb3VyY2VFbGVtZW50c1BlclJvdzsKKyAg
ICAgICAgY29tcHV0ZUluY3JlbWVudFBhcmFtZXRlcnM8ZmxvYXQ+KHdpZHRoLCAzLCBzb3VyY2VV
bnBhY2tBbGlnbm1lbnQsICZzb3VyY2VFbGVtZW50c1BlclBpeGVsLCAmc291cmNlRWxlbWVudHNQ
ZXJSb3cpOworICAgICAgICBkb1VucGFja2luZ0FuZFBhY2tpbmc8ZmxvYXQsIGZsb2F0LCBmbG9h
dCwgdW5wYWNrUkdCMzJGVG9SR0JBMzJGLCBwYWNraW5nRnVuYz4oc3RhdGljX2Nhc3Q8Y29uc3Qg
ZmxvYXQqPihzb3VyY2VEYXRhKSwgd2lkdGgsIGhlaWdodCwgc291cmNlRWxlbWVudHNQZXJQaXhl
bCwgc291cmNlRWxlbWVudHNQZXJSb3csIGRlc3RpbmF0aW9uRGF0YSwgZGVzdGluYXRpb25FbGVt
ZW50c1BlclBpeGVsKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgR3JhcGhpY3ND
b250ZXh0M0Q6OlNvdXJjZUZvcm1hdFIzMkY6IHsKKyAgICAgICAgdW5zaWduZWQgaW50IHNvdXJj
ZUVsZW1lbnRzUGVyUGl4ZWwsIHNvdXJjZUVsZW1lbnRzUGVyUm93OworICAgICAgICBjb21wdXRl
SW5jcmVtZW50UGFyYW1ldGVyczxmbG9hdD4od2lkdGgsIDEsIHNvdXJjZVVucGFja0FsaWdubWVu
dCwgJnNvdXJjZUVsZW1lbnRzUGVyUGl4ZWwsICZzb3VyY2VFbGVtZW50c1BlclJvdyk7CisgICAg
ICAgIGRvVW5wYWNraW5nQW5kUGFja2luZzxmbG9hdCwgZmxvYXQsIGZsb2F0LCB1bnBhY2tSMzJG
VG9SR0JBMzJGLCBwYWNraW5nRnVuYz4oc3RhdGljX2Nhc3Q8Y29uc3QgZmxvYXQqPihzb3VyY2VE
YXRhKSwgd2lkdGgsIGhlaWdodCwgc291cmNlRWxlbWVudHNQZXJQaXhlbCwgc291cmNlRWxlbWVu
dHNQZXJSb3csIGRlc3RpbmF0aW9uRGF0YSwgZGVzdGluYXRpb25FbGVtZW50c1BlclBpeGVsKTsK
KyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlNvdXJj
ZUZvcm1hdFJBMzJGOiB7CisgICAgICAgIHVuc2lnbmVkIGludCBzb3VyY2VFbGVtZW50c1BlclBp
eGVsLCBzb3VyY2VFbGVtZW50c1BlclJvdzsKKyAgICAgICAgY29tcHV0ZUluY3JlbWVudFBhcmFt
ZXRlcnM8ZmxvYXQ+KHdpZHRoLCAyLCBzb3VyY2VVbnBhY2tBbGlnbm1lbnQsICZzb3VyY2VFbGVt
ZW50c1BlclBpeGVsLCAmc291cmNlRWxlbWVudHNQZXJSb3cpOworICAgICAgICBkb1VucGFja2lu
Z0FuZFBhY2tpbmc8ZmxvYXQsIGZsb2F0LCBmbG9hdCwgdW5wYWNrUkEzMkZUb1JHQkEzMkYsIHBh
Y2tpbmdGdW5jPihzdGF0aWNfY2FzdDxjb25zdCBmbG9hdCo+KHNvdXJjZURhdGEpLCB3aWR0aCwg
aGVpZ2h0LCBzb3VyY2VFbGVtZW50c1BlclBpeGVsLCBzb3VyY2VFbGVtZW50c1BlclJvdywgZGVz
dGluYXRpb25EYXRhLCBkZXN0aW5hdGlvbkVsZW1lbnRzUGVyUGl4ZWwpOworICAgICAgICBicmVh
azsKKyAgICB9CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6U291cmNlRm9ybWF0QTMyRjog
eworICAgICAgICB1bnNpZ25lZCBpbnQgc291cmNlRWxlbWVudHNQZXJQaXhlbCwgc291cmNlRWxl
bWVudHNQZXJSb3c7CisgICAgICAgIGNvbXB1dGVJbmNyZW1lbnRQYXJhbWV0ZXJzPGZsb2F0Pih3
aWR0aCwgMSwgc291cmNlVW5wYWNrQWxpZ25tZW50LCAmc291cmNlRWxlbWVudHNQZXJQaXhlbCwg
JnNvdXJjZUVsZW1lbnRzUGVyUm93KTsKKyAgICAgICAgZG9VbnBhY2tpbmdBbmRQYWNraW5nPGZs
b2F0LCBmbG9hdCwgZmxvYXQsIHVucGFja0EzMkZUb1JHQkEzMkYsIHBhY2tpbmdGdW5jPihzdGF0
aWNfY2FzdDxjb25zdCBmbG9hdCo+KHNvdXJjZURhdGEpLCB3aWR0aCwgaGVpZ2h0LCBzb3VyY2VF
bGVtZW50c1BlclBpeGVsLCBzb3VyY2VFbGVtZW50c1BlclJvdywgZGVzdGluYXRpb25EYXRhLCBk
ZXN0aW5hdGlvbkVsZW1lbnRzUGVyUGl4ZWwpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAg
ZGVmYXVsdDoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQorfQorCiBib29s
IEdyYXBoaWNzQ29udGV4dDNEOjpwYWNrUGl4ZWxzKGNvbnN0IHVpbnQ4X3QqIHNvdXJjZURhdGEs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdyYXBoaWNzQ29udGV4dDNEOjpT
b3VyY2VEYXRhRm9ybWF0IHNvdXJjZURhdGFGb3JtYXQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHVuc2lnbmVkIGludCB3aWR0aCwKQEAgLTExMTMsNiArMTI4MCw4NyBAQCBi
b29sIEdyYXBoaWNzQ29udGV4dDNEOjpwYWNrUGl4ZWxzKGNvbnN0CiAgICAgICAgIH0KICAgICAg
ICAgYnJlYWs7CiAgICAgfQorICAgIGNhc2UgRkxPQVQ6IHsKKyAgICAgICAgLy8gT3BlbkdMIEVT
LCBhbmQgdGhlcmVmb3JlIFdlYkdMLCByZXF1aXJlIHRoYXQgdGhlIGZvcm1hdCBhbmQKKyAgICAg
ICAgLy8gaW50ZXJuYWxmb3JtYXQgYmUgaWRlbnRpY2FsLCB3aGljaCBpbXBsaWVzIHRoYXQgdGhl
IHNvdXJjZSBhbmQKKyAgICAgICAgLy8gZGVzdGluYXRpb24gZm9ybWF0cyB3aWxsIGJvdGggYmUg
ZmxvYXRpbmctcG9pbnQgaW4gdGhpcyBicmFuY2ggLS0gYXQKKyAgICAgICAgLy8gbGVhc3QsIHVu
dGlsIFdlYktpdCBzdXBwb3J0cyBmbG9hdGluZy1wb2ludCBpbWFnZSBmb3JtYXRzIG5hdGl2ZWx5
LgorICAgICAgICBBU1NFUlQoc291cmNlRGF0YUZvcm1hdCA9PSBTb3VyY2VGb3JtYXRSR0JBMzJG
IHx8IHNvdXJjZURhdGFGb3JtYXQgPT0gU291cmNlRm9ybWF0UkdCMzJGCisgICAgICAgICAgICAg
ICB8fCBzb3VyY2VEYXRhRm9ybWF0ID09IFNvdXJjZUZvcm1hdFJBMzJGIHx8IHNvdXJjZURhdGFG
b3JtYXQgPT0gU291cmNlRm9ybWF0UjMyRgorICAgICAgICAgICAgICAgfHwgc291cmNlRGF0YUZv
cm1hdCA9PSBTb3VyY2VGb3JtYXRBMzJGKTsKKyAgICAgICAgLy8gQmVjYXVzZSBXZWJLaXQgZG9l
c24ndCB1c2UgZmxvYXRpbmctcG9pbnQgY29sb3IgY2hhbm5lbHMgZm9yIGFueXRoaW5nCisgICAg
ICAgIC8vIGludGVybmFsbHksIHRoZXJlJ3Mgbm8gY2hhbmNlIHdlIGhhdmUgdG8gZG8gYSAobG9z
c3kpIHVubXVsdGlwbHkKKyAgICAgICAgLy8gb3BlcmF0aW9uLgorICAgICAgICBBU1NFUlQoYWxw
aGFPcCA9PSBBbHBoYURvTm90aGluZyB8fCBhbHBoYU9wID09IEFscGhhRG9QcmVtdWx0aXBseSk7
CisgICAgICAgIC8vIEZvciB0aGUgc291cmNlIGZvcm1hdHMgd2l0aCBhbiBldmVuIG51bWJlciBv
ZiBjaGFubmVscyAoUkdCQTMyRiwKKyAgICAgICAgLy8gUkEzMkYpIGl0IGlzIGd1YXJhbnRlZWQg
dGhhdCB0aGUgcGl4ZWwgZGF0YSBpcyB0aWdodGx5IHBhY2tlZCBiZWNhdXNlCisgICAgICAgIC8v
IHVucGFjayBhbGlnbm1lbnQgPD0gc2l6ZW9mKGZsb2F0KSAqIG51bWJlciBvZiBjaGFubmVscy4K
KyAgICAgICAgZmxvYXQqIGRlc3RpbmF0aW9uID0gc3RhdGljX2Nhc3Q8ZmxvYXQqPihkZXN0aW5h
dGlvbkRhdGEpOworICAgICAgICBpZiAoYWxwaGFPcCA9PSBBbHBoYURvTm90aGluZworICAgICAg
ICAgICAgJiYgKChzb3VyY2VEYXRhRm9ybWF0ID09IFNvdXJjZUZvcm1hdFJHQkEzMkYgJiYgZGVz
dGluYXRpb25Gb3JtYXQgPT0gUkdCQSkKKyAgICAgICAgICAgICAgICB8fCAoc291cmNlRGF0YUZv
cm1hdCA9PSBTb3VyY2VGb3JtYXRSQTMyRiAmJiBkZXN0aW5hdGlvbkZvcm1hdCA9PSBMVU1JTkFO
Q0VfQUxQSEEpKSkgeworICAgICAgICAgICAgLy8gTm8gY29udmVyc2lvbiBuZWNlc3NhcnkuCisg
ICAgICAgICAgICBpbnQgbnVtQ2hhbm5lbHMgPSAoc291cmNlRGF0YUZvcm1hdCA9PSBTb3VyY2VG
b3JtYXRSR0JBMzJGID8gNCA6IDIpOworICAgICAgICAgICAgbWVtY3B5KGRlc3RpbmF0aW9uRGF0
YSwgc291cmNlRGF0YSwgd2lkdGggKiBoZWlnaHQgKiBudW1DaGFubmVscyAqIHNpemVvZihmbG9h
dCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgc3dpdGNoIChkZXN0
aW5hdGlvbkZvcm1hdCkgeworICAgICAgICBjYXNlIFJHQjoKKyAgICAgICAgICAgIHN3aXRjaCAo
YWxwaGFPcCkgeworICAgICAgICAgICAgY2FzZSBBbHBoYURvTm90aGluZzoKKyAgICAgICAgICAg
ICAgICBkb0Zsb2F0aW5nUG9pbnRQYWNraW5nPHBhY2tSR0JBMzJGVG9SR0IzMkY+KHNvdXJjZURh
dGEsIHNvdXJjZURhdGFGb3JtYXQsIHdpZHRoLCBoZWlnaHQsIHNvdXJjZVVucGFja0FsaWdubWVu
dCwgZGVzdGluYXRpb24sIDMpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
Y2FzZSBBbHBoYURvUHJlbXVsdGlwbHk6CisgICAgICAgICAgICAgICAgZG9GbG9hdGluZ1BvaW50
UGFja2luZzxwYWNrUkdCQTMyRlRvUkdCMzJGUHJlbXVsdGlwbHk+KHNvdXJjZURhdGEsIHNvdXJj
ZURhdGFGb3JtYXQsIHdpZHRoLCBoZWlnaHQsIHNvdXJjZVVucGFja0FsaWdubWVudCwgZGVzdGlu
YXRpb24sIDMpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgZGVmYXVsdDoK
KyAgICAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFJHQkE6CisgICAgICAgICAgICAvLyBBbHBo
YURvTm90aGluZyBpcyBoYW5kbGVkIGFib3ZlIHdpdGggZmFzdCBwYXRoLgorICAgICAgICAgICAg
QVNTRVJUKGFscGhhT3AgPT0gQWxwaGFEb1ByZW11bHRpcGx5KTsKKyAgICAgICAgICAgIGRvRmxv
YXRpbmdQb2ludFBhY2tpbmc8cGFja1JHQkEzMkZUb1JHQkEzMkZQcmVtdWx0aXBseT4oc291cmNl
RGF0YSwgc291cmNlRGF0YUZvcm1hdCwgd2lkdGgsIGhlaWdodCwgc291cmNlVW5wYWNrQWxpZ25t
ZW50LCBkZXN0aW5hdGlvbiwgNCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBB
TFBIQToKKyAgICAgICAgICAgIC8vIEZyb20gdGhlIGRlc2t0b3AgT3BlbkdMIGNvbnZlcnNpb24g
cnVsZXMgKE9wZW5HTCAyLjEKKyAgICAgICAgICAgIC8vIHNwZWNpZmljYXRpb24sIFRhYmxlIDMu
MTUpLCB0aGUgYWxwaGEgY2hhbm5lbCBpcyBjaG9zZW4KKyAgICAgICAgICAgIC8vIGZyb20gdGhl
IFJHQkEgZGF0YS4KKyAgICAgICAgICAgIGRvRmxvYXRpbmdQb2ludFBhY2tpbmc8cGFja1JHQkEz
MkZUb0EzMkY+KHNvdXJjZURhdGEsIHNvdXJjZURhdGFGb3JtYXQsIHdpZHRoLCBoZWlnaHQsIHNv
dXJjZVVucGFja0FsaWdubWVudCwgZGVzdGluYXRpb24sIDEpOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIGNhc2UgTFVNSU5BTkNFOgorICAgICAgICAgICAgLy8gRnJvbSB0aGUgZGVza3Rv
cCBPcGVuR0wgY29udmVyc2lvbiBydWxlcyAoT3BlbkdMIDIuMQorICAgICAgICAgICAgLy8gc3Bl
Y2lmaWNhdGlvbiwgVGFibGUgMy4xNSksIHRoZSByZWQgY2hhbm5lbCBpcyBjaG9zZW4KKyAgICAg
ICAgICAgIC8vIGZyb20gdGhlIFJHQkEgZGF0YS4KKyAgICAgICAgICAgIHN3aXRjaCAoYWxwaGFP
cCkgeworICAgICAgICAgICAgY2FzZSBBbHBoYURvTm90aGluZzoKKyAgICAgICAgICAgICAgICBk
b0Zsb2F0aW5nUG9pbnRQYWNraW5nPHBhY2tSR0JBMzJGVG9SMzJGPihzb3VyY2VEYXRhLCBzb3Vy
Y2VEYXRhRm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBzb3VyY2VVbnBhY2tBbGlnbm1lbnQsIGRlc3Rp
bmF0aW9uLCAxKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgQWxw
aGFEb1ByZW11bHRpcGx5OgorICAgICAgICAgICAgICAgIGRvRmxvYXRpbmdQb2ludFBhY2tpbmc8
cGFja1JHQkEzMkZUb1IzMkZQcmVtdWx0aXBseT4oc291cmNlRGF0YSwgc291cmNlRGF0YUZvcm1h
dCwgd2lkdGgsIGhlaWdodCwgc291cmNlVW5wYWNrQWxpZ25tZW50LCBkZXN0aW5hdGlvbiwgMSk7
CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAg
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgfQorICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGNhc2UgTFVNSU5BTkNFX0FMUEhBOgorICAgICAgICAgICAgLy8gRnJv
bSB0aGUgZGVza3RvcCBPcGVuR0wgY29udmVyc2lvbiBydWxlcyAoT3BlbkdMIDIuMQorICAgICAg
ICAgICAgLy8gc3BlY2lmaWNhdGlvbiwgVGFibGUgMy4xNSksIHRoZSByZWQgYW5kIGFscGhhIGNo
YW5uZWxzCisgICAgICAgICAgICAvLyBhcmUgY2hvc2VuIGZyb20gdGhlIFJHQkEgZGF0YS4KKyAg
ICAgICAgICAgIHN3aXRjaCAoYWxwaGFPcCkgeworICAgICAgICAgICAgY2FzZSBBbHBoYURvTm90
aGluZzoKKyAgICAgICAgICAgICAgICBkb0Zsb2F0aW5nUG9pbnRQYWNraW5nPHBhY2tSR0JBMzJG
VG9SQTMyRj4oc291cmNlRGF0YSwgc291cmNlRGF0YUZvcm1hdCwgd2lkdGgsIGhlaWdodCwgc291
cmNlVW5wYWNrQWxpZ25tZW50LCBkZXN0aW5hdGlvbiwgMik7CisgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICBjYXNlIEFscGhhRG9QcmVtdWx0aXBseToKKyAgICAgICAgICAgICAg
ICBkb0Zsb2F0aW5nUG9pbnRQYWNraW5nPHBhY2tSR0JBMzJGVG9SQTMyRlByZW11bHRpcGx5Pihz
b3VyY2VEYXRhLCBzb3VyY2VEYXRhRm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBzb3VyY2VVbnBhY2tB
bGlnbm1lbnQsIGRlc3RpbmF0aW9uLCAyKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBicmVh
azsKKyAgICB9CiAgICAgfQogICAgIHJldHVybiB0cnVlOwogfQpJbmRleDogV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaAkocmV2aXNpb24gNzM2NTUpCisr
KyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmgJKHdvcmtpbmcg
Y29weSkKQEAgLTUzNiw5ICs1MzYsMTEgQEAgcHVibGljOgogICAgICAgICBTb3VyY2VGb3JtYXRS
R0JBOCA9IDAsCiAgICAgICAgIFNvdXJjZUZvcm1hdFJHQkExNkxpdHRsZSwKICAgICAgICAgU291
cmNlRm9ybWF0UkdCQTE2QmlnLAorICAgICAgICBTb3VyY2VGb3JtYXRSR0JBMzJGLAogICAgICAg
ICBTb3VyY2VGb3JtYXRSR0I4LAogICAgICAgICBTb3VyY2VGb3JtYXRSR0IxNkxpdHRsZSwKICAg
ICAgICAgU291cmNlRm9ybWF0UkdCMTZCaWcsCisgICAgICAgIFNvdXJjZUZvcm1hdFJHQjMyRiwK
ICAgICAgICAgU291cmNlRm9ybWF0QkdSOCwKICAgICAgICAgU291cmNlRm9ybWF0QkdSQTgsCiAg
ICAgICAgIFNvdXJjZUZvcm1hdEJHUkExNkxpdHRsZSwKQEAgLTU1MywxNSArNTU1LDE4IEBAIHB1
YmxpYzoKICAgICAgICAgU291cmNlRm9ybWF0UjgsCiAgICAgICAgIFNvdXJjZUZvcm1hdFIxNkxp
dHRsZSwKICAgICAgICAgU291cmNlRm9ybWF0UjE2QmlnLAorICAgICAgICBTb3VyY2VGb3JtYXRS
MzJGLAogICAgICAgICBTb3VyY2VGb3JtYXRSQTgsCiAgICAgICAgIFNvdXJjZUZvcm1hdFJBMTZM
aXR0bGUsCiAgICAgICAgIFNvdXJjZUZvcm1hdFJBMTZCaWcsCisgICAgICAgIFNvdXJjZUZvcm1h
dFJBMzJGLAogICAgICAgICBTb3VyY2VGb3JtYXRBUjgsCiAgICAgICAgIFNvdXJjZUZvcm1hdEFS
MTZMaXR0bGUsCiAgICAgICAgIFNvdXJjZUZvcm1hdEFSMTZCaWcsCiAgICAgICAgIFNvdXJjZUZv
cm1hdEE4LAogICAgICAgICBTb3VyY2VGb3JtYXRBMTZMaXR0bGUsCiAgICAgICAgIFNvdXJjZUZv
cm1hdEExNkJpZywKKyAgICAgICAgU291cmNlRm9ybWF0QTMyRiwKICAgICAgICAgU291cmNlRm9y
bWF0TnVtRm9ybWF0cwogICAgIH07CiAKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vRXh0ZW5zaW9uczNEQ2hyb21pdW0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0V4dGVuc2lvbnMzRENocm9taXVtLmgJKHJldmlzaW9u
IDczNjU1KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9FeHRlbnNpb25z
M0RDaHJvbWl1bS5oCSh3b3JraW5nIGNvcHkpCkBAIC00Miw2ICs0Miw3IEBAIHB1YmxpYzoKIAog
ICAgIC8vIEV4dGVuc2lvbnMzRCBtZXRob2RzLgogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0cyhj
b25zdCBTdHJpbmcmKTsKKyAgICB2aXJ0dWFsIHZvaWQgZW5zdXJlRW5hYmxlZChjb25zdCBTdHJp
bmcmKTsKICAgICB2aXJ0dWFsIGludCBnZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJCKCk7CiAgICAg
dmlydHVhbCB2b2lkIGJsaXRGcmFtZWJ1ZmZlcihsb25nIHNyY1gwLCBsb25nIHNyY1kwLCBsb25n
IHNyY1gxLCBsb25nIHNyY1kxLCBsb25nIGRzdFgwLCBsb25nIGRzdFkwLCBsb25nIGRzdFgxLCBs
b25nIGRzdFkxLCB1bnNpZ25lZCBsb25nIG1hc2ssIHVuc2lnbmVkIGxvbmcgZmlsdGVyKSB7IH0K
ICAgICB2aXJ0dWFsIHZvaWQgcmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlKHVuc2lnbmVk
IGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25nIHNhbXBsZXMsIHVuc2lnbmVkIGxvbmcgaW50ZXJu
YWxmb3JtYXQsIHVuc2lnbmVkIGxvbmcgd2lkdGgsIHVuc2lnbmVkIGxvbmcgaGVpZ2h0KSB7IH0K
SW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnMzRE9wZW5H
TC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0
ZW5zaW9uczNET3BlbkdMLmNwcAkocmV2aXNpb24gNzM2NTUpCisrKyBXZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zM0RPcGVuR0wuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC03NiwxMCArNzYsMjAgQEAgYm9vbCBFeHRlbnNpb25zM0RPcGVuR0w6OnN1cHBvcnRzKGNvbnN0
IAogICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRf
ZnJhbWVidWZmZXJfYmxpdCIpOwogICAgIGlmIChuYW1lID09ICJHTF9BTkdMRV9mcmFtZWJ1ZmZl
cl9tdWx0aXNhbXBsZSIpCiAgICAgICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29u
dGFpbnMoIkdMX0VYVF9mcmFtZWJ1ZmZlcl9tdWx0aXNhbXBsZSIpOwotICAgICAgICAKKworICAg
IC8vIElmIEdMX0FSQl90ZXh0dXJlX2Zsb2F0IGlzIGF2YWlsYWJsZSB0aGVuIHdlIHJlcG9ydCBH
TF9PRVNfdGV4dHVyZV9mbG9hdCBhbmQKKyAgICAvLyBHTF9PRVNfdGV4dHVyZV9oYWxmX2Zsb2F0
IGFzIGF2YWlsYWJsZS4KKyAgICBpZiAobmFtZSA9PSAiR0xfT0VTX3RleHR1cmVfZmxvYXQiIHx8
IG5hbWUgPT0gIkdMX09FU190ZXh0dXJlX2hhbGZfZmxvYXQiKQorICAgICAgICByZXR1cm4gbV9h
dmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9BUkJfdGV4dHVyZV9mbG9hdCIpOworCiAg
ICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucyhuYW1lKTsKIH0KIAordm9p
ZCBFeHRlbnNpb25zM0RPcGVuR0w6OmVuc3VyZUVuYWJsZWQoY29uc3QgU3RyaW5nJiBuYW1lKQor
eworICAgIEFTU0VSVChzdXBwb3J0cyhuYW1lKSk7Cit9CisKIGludCBFeHRlbnNpb25zM0RPcGVu
R0w6OmdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIoKQogewogICAgIHJldHVybiBHcmFwaGljc0Nv
bnRleHQzRDo6Tk9fRVJST1I7CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5n
bC9FeHRlbnNpb25zM0RPcGVuR0wuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbC9FeHRlbnNpb25zM0RPcGVuR0wuaAkocmV2aXNpb24gNzM2NTUpCisrKyBX
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zM0RPcGVuR0wuaAkod29y
a2luZyBjb3B5KQpAQCAtNDAsNiArNDAsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBFeHRlbnNpb25z
M0QgbWV0aG9kcy4KICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHMoY29uc3QgU3RyaW5nJik7Cisg
ICAgdmlydHVhbCB2b2lkIGVuc3VyZUVuYWJsZWQoY29uc3QgU3RyaW5nJik7CiAgICAgdmlydHVh
bCBpbnQgZ2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQigpOwogICAgIHZpcnR1YWwgdm9pZCBibGl0
RnJhbWVidWZmZXIobG9uZyBzcmNYMCwgbG9uZyBzcmNZMCwgbG9uZyBzcmNYMSwgbG9uZyBzcmNZ
MSwgbG9uZyBkc3RYMCwgbG9uZyBkc3RZMCwgbG9uZyBkc3RYMSwgbG9uZyBkc3RZMSwgdW5zaWdu
ZWQgbG9uZyBtYXNrLCB1bnNpZ25lZCBsb25nIGZpbHRlcik7CiAgICAgdmlydHVhbCB2b2lkIHJl
bmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZSh1bnNpZ25lZCBsb25nIHRhcmdldCwgdW5zaWdu
ZWQgbG9uZyBzYW1wbGVzLCB1bnNpZ25lZCBsb25nIGludGVybmFsZm9ybWF0LCB1bnNpZ25lZCBs
b25nIHdpZHRoLCB1bnNpZ25lZCBsb25nIGhlaWdodCk7ICAgIApJbmRleDogV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0wuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNE
T3BlbkdMLmNwcAkocmV2aXNpb24gNzM2NTUpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEz
MjksNyArMTMyOSwxNSBAQCBpbnQgR3JhcGhpY3NDb250ZXh0M0Q6OnRleEltYWdlMkQodW5zaWdu
CiB7CiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CiAKLSAgICA6OmdsVGV4SW1hZ2UyRCh0YXJn
ZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgYm9yZGVyLCBmb3JtYXQs
IHR5cGUsIHBpeGVscyk7CisgICAgdW5zaWduZWQgb3BlbkdMSW50ZXJuYWxGb3JtYXQgPSBpbnRl
cm5hbGZvcm1hdDsKKyAgICBpZiAodHlwZSA9PSBHTF9GTE9BVCkgeworICAgICAgICBpZiAoZm9y
bWF0ID09IEdMX1JHQkEpCisgICAgICAgICAgICBvcGVuR0xJbnRlcm5hbEZvcm1hdCA9IEdMX1JH
QkEzMkZfQVJCOworICAgICAgICBlbHNlIGlmIChmb3JtYXQgPT0gR0xfUkdCKQorICAgICAgICAg
ICAgb3BlbkdMSW50ZXJuYWxGb3JtYXQgPSBHTF9SR0IzMkZfQVJCOworICAgIH0KKworICAgIDo6
Z2xUZXhJbWFnZTJEKHRhcmdldCwgbGV2ZWwsIG9wZW5HTEludGVybmFsRm9ybWF0LCB3aWR0aCwg
aGVpZ2h0LCBib3JkZXIsIGZvcm1hdCwgdHlwZSwgcGl4ZWxzKTsKICAgICByZXR1cm4gMDsKIH0K
IApJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9FeHRlbnNpb25zM0RRdC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9FeHRlbnNpb25zM0RR
dC5jcHAJKHJldmlzaW9uIDczNjU1KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9F
eHRlbnNpb25zM0RRdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDYgKzQ2LDExIEBAIGJvb2wg
RXh0ZW5zaW9uczNEUXQ6OnN1cHBvcnRzKGNvbnN0IFN0cmkKICAgICByZXR1cm4gZmFsc2U7CiB9
CiAKK3ZvaWQgRXh0ZW5zaW9uczNEUXQ6OmVuc3VyZUVuYWJsZWQoY29uc3QgU3RyaW5nJiBuYW1l
KQoreworICAgIEFTU0VSVChzdXBwb3J0cyhuYW1lKSk7Cit9CisKIGludCBFeHRlbnNpb25zM0RR
dDo6Z2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQigpCiB7CiAgICAgcmV0dXJuIEdyYXBoaWNzQ29u
dGV4dDNEOjpOT19FUlJPUjsKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvRXh0
ZW5zaW9uczNEUXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0
L0V4dGVuc2lvbnMzRFF0LmgJKHJldmlzaW9uIDczNjU1KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9xdC9FeHRlbnNpb25zM0RRdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw2ICszNiw3
IEBAIHB1YmxpYzoKIAogICAgIC8vIEV4dGVuc2lvbnMzRCBtZXRob2RzLgogICAgIHZpcnR1YWwg
Ym9vbCBzdXBwb3J0cyhjb25zdCBTdHJpbmcmKTsKKyAgICB2aXJ0dWFsIHZvaWQgZW5zdXJlRW5h
YmxlZChjb25zdCBTdHJpbmcmKTsKICAgICB2aXJ0dWFsIGludCBnZXRHcmFwaGljc1Jlc2V0U3Rh
dHVzQVJCKCk7CiAKIHByaXZhdGU6CkluZGV4OiBXZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHJldmlzaW9uIDczNjU1KQor
KysgV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI2
IEBACisyMDEwLTEyLTA5ICBLZW5uZXRoIFJ1c3NlbGwgIDxrYnJAZ29vZ2xlLmNvbT4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1lbnQgZXh0
ZW5zaW9uIGVudHJ5IHBvaW50cyBhbmQgcmVtb3ZlIEVYVEVOU0lPTlMgZW51bQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDAzMTYKKworICAgICAgICBB
ZGRlZCBzdXBwb3J0IGZvciBlbnN1cmluZyB0aGF0IGEgcGFydGljdWxhciBPcGVuR0wgZXh0ZW5z
aW9uIGlzCisgICAgICAgIGVuYWJsZWQuCisKKyAgICAgICAgKiBwdWJsaWMvV2ViR3JhcGhpY3ND
b250ZXh0M0QuaDoKKyAgICAgICAgKiBzcmMvRXh0ZW5zaW9uczNEQ2hyb21pdW0uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uczNEQ2hyb21pdW06OmVuc3VyZUVuYWJsZWQpOgorICAg
ICAgICAqIHNyYy9HcmFwaGljc0NvbnRleHQzRENocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmluaXRpYWxpemVFeHRlbnNpb25zKToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OnN1cHBvcnRzRXh0ZW5z
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmVuc3Vy
ZUV4dGVuc2lvbkVuYWJsZWQpOgorICAgICAgICAqIHNyYy9HcmFwaGljc0NvbnRleHQzREludGVy
bmFsLmg6CisgICAgICAgICogc3JjL1dlYkdyYXBoaWNzQ29udGV4dDNERGVmYXVsdEltcGwuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJHcmFwaGljc0NvbnRleHQzRERlZmF1bHRJbXBsOjpnZXRS
ZXF1ZXN0YWJsZUV4dGVuc2lvbnNDSFJPTUlVTSk6CisgICAgICAgIChXZWJLaXQ6OldlYkdyYXBo
aWNzQ29udGV4dDNERGVmYXVsdEltcGw6OnJlcXVlc3RFeHRlbnNpb25DSFJPTUlVTSk6CisgICAg
ICAgICogc3JjL1dlYkdyYXBoaWNzQ29udGV4dDNERGVmYXVsdEltcGwuaDoKKwogMjAxMC0xMi0w
OSAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5jb20+CiAKICAgICAgICAg
VW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjczNjE2LgpJbmRleDogV2ViS2l0L2Nocm9taXVtL3B1
YmxpYy9XZWJHcmFwaGljc0NvbnRleHQzRC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1
bS9wdWJsaWMvV2ViR3JhcGhpY3NDb250ZXh0M0QuaAkocmV2aXNpb24gNzM2NTUpCisrKyBXZWJL
aXQvY2hyb21pdW0vcHVibGljL1dlYkdyYXBoaWNzQ29udGV4dDNELmgJKHdvcmtpbmcgY29weSkK
QEAgLTE0MCw2ICsxNDAsMTAgQEAgcHVibGljOgogICAgIC8vIEdMX0NIUk9NSVVNX2NvcHlfdGV4
dHVyZV90b19wYXJlbnRfdGV4dHVyZQogICAgIHZpcnR1YWwgdm9pZCBjb3B5VGV4dHVyZVRvUGFy
ZW50VGV4dHVyZUNIUk9NSVVNKHVuc2lnbmVkIHRleHR1cmUsIHVuc2lnbmVkIHBhcmVudFRleHR1
cmUpID0gMDsKIAorICAgIC8vIEdMX0NIUk9NSVVNX3JlcXVlc3RfZXh0ZW5zaW9uCisgICAgdmly
dHVhbCBXZWJTdHJpbmcgZ2V0UmVxdWVzdGFibGVFeHRlbnNpb25zQ0hST01JVU0oKSA9IDA7Cisg
ICAgdmlydHVhbCB2b2lkIHJlcXVlc3RFeHRlbnNpb25DSFJPTUlVTShjb25zdCBjaGFyKikgPSAw
OworCiAgICAgLy8gVGhlIGVudHJ5IHBvaW50cyBiZWxvdyBtYXAgZGlyZWN0bHkgdG8gdGhlIE9w
ZW5HTCBFUyAyLjAgQVBJLgogICAgIC8vIFNlZTogaHR0cDovL3d3dy5raHJvbm9zLm9yZy9yZWdp
c3RyeS9nbGVzLwogICAgIC8vIGFuZDogaHR0cDovL3d3dy5raHJvbm9zLm9yZy9vcGVuZ2xlcy9z
ZGsvZG9jcy9tYW4vCkluZGV4OiBXZWJLaXQvY2hyb21pdW0vc3JjL0V4dGVuc2lvbnMzRENocm9t
aXVtLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vc3JjL0V4dGVuc2lvbnMzRENo
cm9taXVtLmNwcAkocmV2aXNpb24gNzM2NTUpCisrKyBXZWJLaXQvY2hyb21pdW0vc3JjL0V4dGVu
c2lvbnMzRENocm9taXVtLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDgsNiArNDgsMTUgQEAgYm9v
bCBFeHRlbnNpb25zM0RDaHJvbWl1bTo6c3VwcG9ydHMoY29ucwogICAgIHJldHVybiBtX2ludGVy
bmFsLT5zdXBwb3J0c0V4dGVuc2lvbihuYW1lKTsKIH0KIAordm9pZCBFeHRlbnNpb25zM0RDaHJv
bWl1bTo6ZW5zdXJlRW5hYmxlZChjb25zdCBTdHJpbmcmIG5hbWUpCit7CisjaWZuZGVmIE5ERUJV
RworICAgIGJvb2wgcmVzdWx0ID0KKyNlbmRpZgorICAgICAgICBtX2ludGVybmFsLT5lbnN1cmVF
eHRlbnNpb25FbmFibGVkKG5hbWUpOworICAgIEFTU0VSVChyZXN1bHQpOworfQorCiBpbnQgRXh0
ZW5zaW9uczNEQ2hyb21pdW06OmdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIoKQogewogICAgIHJl
dHVybiBtX2ludGVybmFsLT5pc0NvbnRleHRMb3N0KCkgPyBzdGF0aWNfY2FzdDxpbnQ+KEV4dGVu
c2lvbnMzRDo6VU5LTk9XTl9DT05URVhUX1JFU0VUX0FSQikgOiBzdGF0aWNfY2FzdDxpbnQ+KEdy
YXBoaWNzQ29udGV4dDNEOjpOT19FUlJPUik7CkluZGV4OiBXZWJLaXQvY2hyb21pdW0vc3JjL0dy
YXBoaWNzQ29udGV4dDNEQ2hyb21pdW0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1
bS9zcmMvR3JhcGhpY3NDb250ZXh0M0RDaHJvbWl1bS5jcHAJKHJldmlzaW9uIDczNjU1KQorKysg
V2ViS2l0L2Nocm9taXVtL3NyYy9HcmFwaGljc0NvbnRleHQzRENocm9taXVtLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNjgxLDE3ICs2ODEsNTQgQEAgRXh0ZW5zaW9uczNEKiBHcmFwaGljc0NvbnRl
eHQzREludGVybmFsOgogICAgIHJldHVybiBtX2V4dGVuc2lvbnMuZ2V0KCk7CiB9CiAKLWJvb2wg
R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6c3VwcG9ydHNFeHRlbnNpb24oY29uc3QgU3RyaW5n
JiBuYW1lKQorbmFtZXNwYWNlIHsKKwordm9pZCBzcGxpdFN0cmluZ0hlbHBlcihjb25zdCBTdHJp
bmcmIHN0ciwgSGFzaFNldDxTdHJpbmc+JiBzZXQpCit7CisgICAgVmVjdG9yPFN0cmluZz4gc3Vi
c3RyaW5nczsKKyAgICBzdHIuc3BsaXQoIiAiLCBzdWJzdHJpbmdzKTsKKyAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IHN1YnN0cmluZ3Muc2l6ZSgpOyArK2kpCisgICAgICAgIHNldC5hZGQoc3Vi
c3RyaW5nc1tpXSk7Cit9CisKK30gLy8gYW5vbnltb3VzIG5hbWVzcGFjZQorCit2b2lkIEdyYXBo
aWNzQ29udGV4dDNESW50ZXJuYWw6OmluaXRpYWxpemVFeHRlbnNpb25zKCkKIHsKICAgICBpZiAo
IW1faW5pdGlhbGl6ZWRBdmFpbGFibGVFeHRlbnNpb25zKSB7CiAgICAgICAgIFN0cmluZyBleHRl
bnNpb25zU3RyaW5nID0gZ2V0U3RyaW5nKEdyYXBoaWNzQ29udGV4dDNEOjpFWFRFTlNJT05TKTsK
LSAgICAgICAgVmVjdG9yPFN0cmluZz4gYXZhaWxhYmxlRXh0ZW5zaW9uczsKLSAgICAgICAgZXh0
ZW5zaW9uc1N0cmluZy5zcGxpdCgiICIsIGF2YWlsYWJsZUV4dGVuc2lvbnMpOwotICAgICAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IGF2YWlsYWJsZUV4dGVuc2lvbnMuc2l6ZSgpOyArK2kpCi0g
ICAgICAgICAgICBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuYWRkKGF2YWlsYWJsZUV4dGVuc2lvbnNb
aV0pOworICAgICAgICBzcGxpdFN0cmluZ0hlbHBlcihleHRlbnNpb25zU3RyaW5nLCBtX2VuYWJs
ZWRFeHRlbnNpb25zKTsKKworICAgICAgICBTdHJpbmcgcmVxdWVzdGFibGVFeHRlbnNpb25zU3Ry
aW5nID0gbV9pbXBsLT5nZXRSZXF1ZXN0YWJsZUV4dGVuc2lvbnNDSFJPTUlVTSgpOworICAgICAg
ICBzcGxpdFN0cmluZ0hlbHBlcihyZXF1ZXN0YWJsZUV4dGVuc2lvbnNTdHJpbmcsIG1fcmVxdWVz
dGFibGVFeHRlbnNpb25zKTsKKwogICAgICAgICBtX2luaXRpYWxpemVkQXZhaWxhYmxlRXh0ZW5z
aW9ucyA9IHRydWU7CiAgICAgfQotICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29u
dGFpbnMobmFtZSk7Cit9CisKKworYm9vbCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpzdXBw
b3J0c0V4dGVuc2lvbihjb25zdCBTdHJpbmcmIG5hbWUpCit7CisgICAgaW5pdGlhbGl6ZUV4dGVu
c2lvbnMoKTsKKyAgICByZXR1cm4gbV9lbmFibGVkRXh0ZW5zaW9ucy5jb250YWlucyhuYW1lKSB8
fCBtX3JlcXVlc3RhYmxlRXh0ZW5zaW9ucy5jb250YWlucyhuYW1lKTsKK30KKworYm9vbCBHcmFw
aGljc0NvbnRleHQzREludGVybmFsOjplbnN1cmVFeHRlbnNpb25FbmFibGVkKGNvbnN0IFN0cmlu
ZyYgbmFtZSkKK3sKKyAgICBpbml0aWFsaXplRXh0ZW5zaW9ucygpOworCisgICAgaWYgKG1fZW5h
YmxlZEV4dGVuc2lvbnMuY29udGFpbnMobmFtZSkpCisgICAgICAgIHJldHVybiB0cnVlOworCisg
ICAgaWYgKG1fcmVxdWVzdGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKG5hbWUpKSB7CisgICAgICAg
IG1faW1wbC0+cmVxdWVzdEV4dGVuc2lvbkNIUk9NSVVNKG5hbWUuYXNjaWkoKS5kYXRhKCkpOwor
ICAgICAgICBtX2VuYWJsZWRFeHRlbnNpb25zLmNsZWFyKCk7CisgICAgICAgIG1fcmVxdWVzdGFi
bGVFeHRlbnNpb25zLmNsZWFyKCk7CisgICAgICAgIG1faW5pdGlhbGl6ZWRBdmFpbGFibGVFeHRl
bnNpb25zID0gZmFsc2U7CisgICAgfQorCisgICAgaW5pdGlhbGl6ZUV4dGVuc2lvbnMoKTsKKyAg
ICByZXR1cm4gbV9lbmFibGVkRXh0ZW5zaW9ucy5jb250YWlucyhuYW1lKTsKIH0KIAogREVMRUdB
VEVfVE9fSU1QTF80UihtYXBCdWZmZXJTdWJEYXRhQ0hST01JVU0sIHVuc2lnbmVkLCBpbnQsIGlu
dCwgdW5zaWduZWQsIHZvaWQqKQpJbmRleDogV2ViS2l0L2Nocm9taXVtL3NyYy9HcmFwaGljc0Nv
bnRleHQzREludGVybmFsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2Nocm9taXVtL3NyYy9HcmFw
aGljc0NvbnRleHQzREludGVybmFsLmgJKHJldmlzaW9uIDczNjU1KQorKysgV2ViS2l0L2Nocm9t
aXVtL3NyYy9HcmFwaGljc0NvbnRleHQzREludGVybmFsLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2
NSw2ICsyNjUsNyBAQCBwdWJsaWM6CiAgICAgLy8gRXh0ZW5zaW9uczNEIHN1cHBvcnQuCiAgICAg
RXh0ZW5zaW9uczNEKiBnZXRFeHRlbnNpb25zKCk7CiAgICAgYm9vbCBzdXBwb3J0c0V4dGVuc2lv
bihjb25zdCBTdHJpbmcmIG5hbWUpOworICAgIGJvb2wgZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZChj
b25zdCBTdHJpbmcmIG5hbWUpOwogCiAgICAgLy8gRVhUX3RleHR1cmVfZm9ybWF0X0JHUkE4ODg4
CiAgICAgYm9vbCBzdXBwb3J0c0JHUkEoKTsKQEAgLTI4NSw3ICsyODYsOCBAQCBwcml2YXRlOgog
ICAgIE93blB0cjxFeHRlbnNpb25zM0RDaHJvbWl1bT4gbV9leHRlbnNpb25zOwogICAgIFdlYktp
dDo6V2ViVmlld0ltcGwqIG1fd2ViVmlld0ltcGw7CiAgICAgYm9vbCBtX2luaXRpYWxpemVkQXZh
aWxhYmxlRXh0ZW5zaW9uczsKLSAgICBIYXNoU2V0PFN0cmluZz4gbV9hdmFpbGFibGVFeHRlbnNp
b25zOworICAgIEhhc2hTZXQ8U3RyaW5nPiBtX2VuYWJsZWRFeHRlbnNpb25zOworICAgIEhhc2hT
ZXQ8U3RyaW5nPiBtX3JlcXVlc3RhYmxlRXh0ZW5zaW9uczsKICNpZiBVU0UoQUNDRUxFUkFURURf
Q09NUE9TSVRJTkcpCiAgICAgUmVmUHRyPFdlYkdMTGF5ZXJDaHJvbWl1bT4gbV9jb21wb3NpdGlu
Z0xheWVyOwogI2VuZGlmCkBAIC0zMDEsNiArMzAzLDggQEAgcHJpdmF0ZToKICNpZiBQTEFURk9S
TShDRykKICAgICB1bnNpZ25lZCBjaGFyKiBtX3JlbmRlck91dHB1dDsKICNlbmRpZgorCisgICAg
dm9pZCBpbml0aWFsaXplRXh0ZW5zaW9ucygpOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpJbmRleDogV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJHcmFwaGljc0NvbnRleHQzRERlZmF1bHRJ
bXBsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vc3JjL1dlYkdyYXBoaWNzQ29u
dGV4dDNERGVmYXVsdEltcGwuY3BwCShyZXZpc2lvbiA3MzY1NSkKKysrIFdlYktpdC9jaHJvbWl1
bS9zcmMvV2ViR3JhcGhpY3NDb250ZXh0M0REZWZhdWx0SW1wbC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTYyNCw2ICs2MjQsMTUgQEAgdm9pZCBXZWJHcmFwaGljc0NvbnRleHQzRERlZmF1bHRJbXBs
OjpjbwogICAgIGdsQmluZEZyYW1lYnVmZmVyRVhUKEdMX0ZSQU1FQlVGRkVSX0VYVCwgbV9ib3Vu
ZEZCTyk7CiB9CiAKK1dlYlN0cmluZyBXZWJHcmFwaGljc0NvbnRleHQzRERlZmF1bHRJbXBsOjpn
ZXRSZXF1ZXN0YWJsZUV4dGVuc2lvbnNDSFJPTUlVTSgpCit7CisgICAgcmV0dXJuIFdlYlN0cmlu
ZygpOworfQorCit2b2lkIFdlYkdyYXBoaWNzQ29udGV4dDNERGVmYXVsdEltcGw6OnJlcXVlc3RF
eHRlbnNpb25DSFJPTUlVTShjb25zdCBjaGFyKikKK3sKK30KKwogLy8gSGVscGVyIG1hY3JvcyB0
byByZWR1Y2UgdGhlIGFtb3VudCBvZiBjb2RlLgogCiAjZGVmaW5lIERFTEVHQVRFX1RPX0dMKG5h
bWUsIGdsbmFtZSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXApJ
bmRleDogV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJHcmFwaGljc0NvbnRleHQzRERlZmF1bHRJbXBs
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJHcmFwaGljc0NvbnRleHQz
RERlZmF1bHRJbXBsLmgJKHJldmlzaW9uIDczNjU1KQorKysgV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJHcmFwaGljc0NvbnRleHQzRERlZmF1bHRJbXBsLmgJKHdvcmtpbmcgY29weSkKQEAgLTg1LDYg
Kzg1LDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCB1bm1hcFRleFN1YkltYWdlMkRDSFJP
TUlVTShjb25zdCB2b2lkKik7CiAgICAgdmlydHVhbCB2b2lkIGNvcHlUZXh0dXJlVG9QYXJlbnRU
ZXh0dXJlQ0hST01JVU0odW5zaWduZWQgdGV4dHVyZSwgdW5zaWduZWQgcGFyZW50VGV4dHVyZSk7
CiAKKyAgICB2aXJ0dWFsIFdlYlN0cmluZyBnZXRSZXF1ZXN0YWJsZUV4dGVuc2lvbnNDSFJPTUlV
TSgpOworICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0RXh0ZW5zaW9uQ0hST01JVU0oY29uc3QgY2hh
ciopOworCiAgICAgdmlydHVhbCB2b2lkIGFjdGl2ZVRleHR1cmUodW5zaWduZWQgbG9uZyB0ZXh0
dXJlKTsKICAgICB2aXJ0dWFsIHZvaWQgYXR0YWNoU2hhZGVyKFdlYkdMSWQgcHJvZ3JhbSwgV2Vi
R0xJZCBzaGFkZXIpOwogICAgIHZpcnR1YWwgdm9pZCBiaW5kQXR0cmliTG9jYXRpb24oV2ViR0xJ
ZCBwcm9ncmFtLCB1bnNpZ25lZCBsb25nIGluZGV4LCBjb25zdCBjaGFyKiBuYW1lKTsK
</data>
<flag name="review"
          id="67031"
          type_id="1"
          status="+"
          setter="jamesr"
    />
    <flag name="commit-queue"
          id="67032"
          type_id="3"
          status="-"
          setter="kbr"
    />
          </attachment>
      

    </bug>

</bugzilla>